/* ==========================================================================
   Protocol for Business Solutions — Design System
   One stylesheet, both directions. Layout uses CSS logical properties so the
   Arabic (RTL) and English (LTR) builds share identical rules.
   ========================================================================== */

/* ------------------------------------------------------------- 1. Tokens */
:root{
  /* Brand */
  --navy:#1C2551;
  --navy-deep:#141B3C;
  --navy-ink:#0F1531;
  --blue:#3988C4;
  --blue-dark:#2B6C9E;
  --blue-pale:#E8F1F9;
  /* Text grey: 5.4:1 on white and >=4.9:1 on the tinted sections. The previous
     #8D9399 was 3.1:1 on white, which put
     every hint, note and field label below the readable floor. */
  --grey:#656B74;
  --grey-line:#8D9399;
  --ink:#1B1F2A;
  --body:#43485A;
  --line:#E2E7EF;
  --line-soft:#EEF1F6;
  --paper:#FFFFFF;
  --paper-alt:#F5F7FA;
  --sand:#F7F5F0;

  /* Rice World */
  --rice-navy:#16204A;
  --rice-navy-2:#0E1735;
  --gold:#C09A5B;
  --gold-light:#DCBE8A;
  --gold-pale:#F8F3E9;

  /* Hafizah */
  --maroon:#7C1523;
  --maroon-deep:#570D18;
  --maroon-gold:#C9A227;
  --maroon-pale:#FBF3F2;

  /* Type */
  --f-sans:"Alexandria","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --f-serif:"Source Serif 4","Times New Roman",Georgia,serif;

  /* Space & shape */
  --container:1240px;
  --gutter:clamp(1.25rem,4vw,2.5rem);
  --section:clamp(3.5rem,7vw,6.5rem);
  --r-sm:4px;
  --r:8px;
  --r-lg:14px;
  --shadow:0 1px 2px rgba(28,37,81,.05),0 12px 32px -18px rgba(28,37,81,.35);
  --shadow-lift:0 2px 4px rgba(28,37,81,.06),0 24px 50px -24px rgba(28,37,81,.45);
  --header-h:74px;
}

/* --------------------------------------------------------------- 2. Base */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 16px)}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation-duration:.001ms!important;transition-duration:.001ms!important}}
body{
  margin:0;background:var(--paper);color:var(--body);
  font-family:var(--f-sans);font-size:clamp(15.5px,.55vw + 14.4px,17px);
  font-weight:300;line-height:1.75;-webkit-font-smoothing:antialiased;
}
html[dir="rtl"] body{line-height:1.95;font-weight:300}
img{max-width:100%;display:block}
a{color:var(--blue-dark);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4,h5{color:var(--navy);font-weight:700;line-height:1.2;margin:0 0 .6em;letter-spacing:-.01em}
html[dir="rtl"] h1,html[dir="rtl"] h2,html[dir="rtl"] h3,html[dir="rtl"] h4{letter-spacing:0;line-height:1.45}
h1{font-size:clamp(2.1rem,4.4vw,3.5rem)}
h2{font-size:clamp(1.6rem,2.8vw,2.4rem)}
h3{font-size:clamp(1.1rem,1.5vw,1.35rem)}
p{margin:0 0 1.1em}
ul{margin:0;padding:0;list-style:none}
:focus-visible{outline:3px solid var(--blue);outline-offset:3px;border-radius:2px}
.container{max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter)}
.narrow{max-width:860px}
.section{padding-block:var(--section)}
.section--tight{padding-block:calc(var(--section) * .6)}
.section--alt{background:var(--paper-alt)}
.section--sand{background:var(--sand)}
.section--navy{background:var(--navy-deep);color:#C9CFE4}
.section--navy h2,.section--navy h3{color:#fff}
.skip{position:absolute;inset-block-start:-100px;inset-inline-start:1rem;z-index:200;background:var(--navy);color:#fff;padding:.7rem 1.2rem;border-radius:var(--r)}
.skip:focus{inset-block-start:1rem}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* --------------------------------------------------- 3. Shared text bits */
.kicker{
  display:block;font-size:.7rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;
  color:var(--blue-dark);margin-block-end:1rem;
}
html[dir="rtl"] .kicker{letter-spacing:0;font-size:.8rem}
.kicker::after{content:"";display:block;width:44px;height:3px;background:var(--blue);margin-block-start:.85rem}
.kicker--plain::after{display:none}
.lead{font-size:clamp(1.05rem,1.3vw,1.22rem);color:var(--ink);font-weight:300;line-height:1.65}
html[dir="rtl"] .lead{line-height:1.85}
.note-text{color:var(--grey);font-size:.86rem;line-height:1.7}
.eyebrow{color:var(--grey);font-size:.8rem;letter-spacing:.12em;text-transform:uppercase}

/* ------------------------------------------------------------ 4. Buttons */
.btn{
  display:inline-flex;align-items:center;gap:.6rem;padding:.85rem 1.6rem;border-radius:var(--r);
  font-size:.92rem;font-weight:600;line-height:1.2;border:1.5px solid transparent;cursor:pointer;
  transition:background .18s ease,color .18s ease,border-color .18s ease,transform .18s ease;
  text-align:center;
}
.btn:hover{text-decoration:none;transform:translateY(-1px)}
.btn--primary{background:var(--blue-dark);color:#fff;border-color:var(--blue-dark)}
.btn--primary:hover{background:var(--navy);border-color:var(--navy);color:#fff}
.btn--navy{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn--navy:hover{background:var(--navy-deep);color:#fff}
.btn--ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.55)}
.btn--ghost:hover{background:rgba(255,255,255,.12);color:#fff}
.section .btn--ghost,.ctaband--light .btn--ghost{color:var(--navy);border-color:var(--line)}
.section .btn--ghost:hover{background:var(--paper-alt);color:var(--navy)}
.btn--gold{background:var(--gold);color:#1B1508;border-color:var(--gold)}
.btn--gold:hover{background:var(--gold-light);color:#1B1508}
.btn--ghost-gold{background:transparent;color:var(--gold-light);border-color:rgba(192,154,91,.6)}
.btn--ghost-gold:hover{background:rgba(192,154,91,.14);color:var(--gold-light)}
.btn--maroon{background:var(--maroon);color:#fff;border-color:var(--maroon)}
.btn--maroon:hover{background:var(--maroon-deep);color:#fff}
.btn-row{display:flex;flex-wrap:wrap;gap:.75rem;margin-block-start:2rem}
.arrow{display:inline-block;transition:transform .18s ease}
html[dir="rtl"] .arrow{transform:scaleX(-1)}
.textlink{display:inline-flex;align-items:center;gap:.5rem;font-weight:600;color:var(--blue-dark);font-size:.95rem}
.textlink:hover .arrow{transform:translateX(3px)}
html[dir="rtl"] .textlink:hover .arrow{transform:scaleX(-1) translateX(3px)}

/* ------------------------------------------------------------- 5. Header */
.header{position:sticky;inset-block-start:0;z-index:100;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-block-end:1px solid var(--line)}
.header__bar{display:flex;align-items:center;gap:1.25rem;min-height:var(--header-h)}
.logo{display:flex;align-items:center;gap:.7rem;flex:0 0 auto}
.logo img{height:38px;width:auto}
.logo:hover{text-decoration:none}
.nav{display:flex;align-items:center;gap:.15rem;margin-inline-start:auto}
.nav__item{position:relative}
.nav__link{
  display:inline-flex;align-items:center;gap:.35rem;padding:.6rem .7rem;border-radius:var(--r-sm);
  color:var(--navy);font-size:.9rem;font-weight:500;white-space:nowrap;
}
.nav__link:hover{background:var(--paper-alt);text-decoration:none}
.nav__link[aria-current="page"]{color:var(--blue-dark);font-weight:700}
/* The CTA is a filled navy pill: it keeps white text even when it is the
   page you are on, or the label disappears into its own background. */
.nav__link--cta[aria-current="page"]{color:#fff}
.nav__link--accent{color:#7C5A1F}
.nav__link--accent::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--gold)}
.nav__link--cta{background:var(--navy);color:#fff;padding-inline:1.1rem}
.nav__link--cta:hover{background:var(--navy-deep);color:#fff}
.caret{width:9px;height:9px;border-inline-end:1.6px solid currentColor;border-block-end:1.6px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.6}
.langswitch{margin-inline-start:.4rem;border:1.5px solid var(--line);border-radius:var(--r-sm);padding:.45rem .8rem;font-size:.82rem;font-weight:600;color:var(--navy)}
.langswitch:hover{background:var(--paper-alt);text-decoration:none}
.iconbtn{display:none;background:none;border:1.5px solid var(--line);border-radius:var(--r-sm);padding:.5rem .7rem;color:var(--navy);font-size:.85rem;font-weight:600;cursor:pointer}
.searchbtn{display:inline-flex;align-items:center;gap:.4rem}

/* Mega menu */
.mega{
  position:absolute;inset-block-start:100%;inset-inline-start:50%;transform:translateX(-50%);
  width:min(940px,90vw);background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--shadow-lift);padding:2rem;display:none;z-index:120;
}
html[dir="rtl"] .mega{transform:translateX(50%)}
.nav__item:hover>.mega,.nav__item:focus-within>.mega,.mega.is-open{display:block}
.mega__head{display:flex;flex-wrap:wrap;gap:.75rem;align-items:baseline;justify-content:space-between;border-block-end:1px solid var(--line);padding-block-end:1rem;margin-block-end:1.4rem}
.mega__head strong{color:var(--navy);font-size:1.05rem}
.mega__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem}
.mega__col h4{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--grey);margin-block-end:.9rem}
html[dir="rtl"] .mega__col h4{letter-spacing:0;font-size:.82rem}
.mega__col li{margin-block-end:.55rem}
.mega__col a{color:var(--ink);font-size:.88rem;line-height:1.5;display:block}
.mega__col a:hover{color:var(--blue-dark)}

/* Mobile nav */
.mobilenav{display:none;position:fixed;inset:var(--header-h) 0 0;background:#fff;z-index:99;overflow-y:auto;padding:1.5rem var(--gutter) 4rem}
.mobilenav.is-open{display:block}
.mobilenav a{display:block;padding:.85rem 0;border-block-end:1px solid var(--line-soft);color:var(--navy);font-weight:500}
.mobilenav details>summary{padding:.85rem 0;border-block-end:1px solid var(--line-soft);color:var(--navy);font-weight:500;cursor:pointer;list-style:none;display:flex;justify-content:space-between}
.mobilenav details>summary::-webkit-details-marker{display:none}
.mobilenav details>summary::after{content:"+";color:var(--blue)}
.mobilenav details[open]>summary::after{content:"–"}
.mobilenav details a{padding-inline-start:1rem;font-size:.9rem;font-weight:400;color:var(--body)}
@media (max-width:1100px){
  .nav{display:none}
  .iconbtn{display:inline-flex}
  .header__bar{gap:.6rem}
  .langswitch{margin-inline-start:auto}
}
/* Small phones: the full wordmark + search + language + menu icons don't
   fit at 34px logo height once the viewport drops under ~480px — shrink the
   logo further and tighten spacing so nothing pushes past the edge. */
@media (max-width:480px){
  .container{padding-inline:14px}
  .header__bar{gap:.35rem}
  .langswitch{padding:.4rem .55rem;font-size:.74rem;margin-inline-start:.15rem}
  .iconbtn{padding:.4rem .5rem;font-size:.78rem}
}

/* Search overlay */
.searchpanel{display:none;border-block-start:1px solid var(--line);background:#fff;padding-block:1.2rem}
.searchpanel.is-open{display:block}
.searchpanel input{width:100%;padding:.9rem 1rem;border:1.5px solid var(--line);border-radius:var(--r);font:inherit;font-size:1rem}
.searchresults{margin-block-start:1rem;max-height:50vh;overflow:auto}
.searchresults a{display:block;padding:.7rem .2rem;border-block-end:1px solid var(--line-soft)}
.searchresults small{display:block;color:var(--grey);font-size:.8rem}

/* ---------------------------------------------------------- 6. Home hero */
.hero{position:relative;background:var(--navy-deep);color:#C8CEE3;overflow:hidden;isolation:isolate}
.hero__bg{position:absolute;inset:0;z-index:-2}
.hero__bg img{width:100%;height:100%;object-fit:cover;opacity:.28}
.hero::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(120deg,var(--navy-ink) 12%,rgba(20,27,60,.94) 48%,rgba(57,136,196,.28) 100%)}
.hero__inner{padding-block:clamp(4.5rem,10vw,8rem);max-width:900px}
.hero h1{color:#fff;margin-block-end:1.4rem}
.hero h1 span{display:block;color:#8FC0E6}
.hero .kicker{color:#8FC0E6}
.hero .kicker::after{background:#8FC0E6}
.hero .lead{color:#C8CEE3;max-width:660px}
.hero__lines{position:absolute;inset-block-start:0;inset-inline-end:0;width:46%;height:100%;opacity:.35;z-index:-1;pointer-events:none}

/* Hero background video */
.hero__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:.9}
.hero__video-fallback{display:none;position:absolute;inset:0}
.hero__video-fallback .imgslot{height:100%;border-radius:0;min-height:0}
.hero__video-fallback img{opacity:.28}
/* The floating "Talk to Protocol" button is fixed to the trailing bottom
   corner, so the motion toggle takes the leading one and the two never meet. */
.hero__motion-toggle{
  position:absolute;z-index:5;inset-block-end:1.4rem;inset-inline-start:1.4rem;
  width:40px;height:40px;border-radius:50%;border:1.5px solid rgba(255,255,255,.4);
  background:rgba(15,21,49,.55);display:flex;align-items:center;justify-content:center;
  cursor:pointer;backdrop-filter:blur(4px);padding:0}
.hero__motion-toggle:hover{background:rgba(15,21,49,.78)}
.hero__motion-icon[data-icon-pause]{width:10px;height:12px;position:relative}
.hero__motion-icon[data-icon-pause]::before,.hero__motion-icon[data-icon-pause]::after{
  content:"";position:absolute;inset-block-start:0;width:3px;height:12px;background:#fff;border-radius:1px}
.hero__motion-icon[data-icon-pause]::before{inset-inline-start:0}
.hero__motion-icon[data-icon-pause]::after{inset-inline-end:0}
.hero__motion-icon[data-icon-play]{
  width:0;height:0;border-style:solid;border-width:6px 0 6px 10px;
  border-color:transparent transparent transparent #fff;margin-inline-start:2px}
@media (prefers-reduced-motion:reduce){
  .hero__video,.hero__motion-toggle{display:none}
  .hero__video-fallback{display:block}
}
@media (max-width:560px){.hero__motion-toggle{inset-block-end:1rem;inset-inline-start:1rem;width:34px;height:34px}}

/* Stats */
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-block-start:1px solid rgba(255,255,255,.14)}
.stats--light{border-color:var(--line)}
.stats__item{padding:2rem 1.5rem;border-inline-end:1px solid rgba(255,255,255,.14)}
.stats--light .stats__item{border-color:var(--line)}
.stats__item:last-child{border-inline-end:0}
.stats__value{font-size:clamp(1.7rem,3vw,2.3rem);font-weight:300;color:#fff;line-height:1;letter-spacing:.02em}
.stats--light .stats__value{color:var(--navy)}
.stats__label{font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:#8FA2C4;margin-block-start:.7rem}
html[dir="rtl"] .stats__label{letter-spacing:0;font-size:.85rem}
.stats--light .stats__label{color:var(--grey)}
@media (max-width:760px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stats__item:nth-child(2n){border-inline-end:0}}

/* -------------------------------------------------------- 7. Page heroes */
.pagehero{padding-block:clamp(3rem,6vw,5rem) clamp(2rem,4vw,3rem);border-block-end:1px solid var(--line)}
.pagehero__inner{max-width:900px}
.pagehero--dark{background:var(--navy-deep);border-color:transparent;color:#C8CEE3;position:relative;overflow:hidden}
.pagehero--dark h1{color:#fff}
.pagehero--dark .lead{color:#C8CEE3}
.pagehero--dark .kicker{color:#8FC0E6}
.pagehero--dark .kicker::after{background:#8FC0E6}
.pagehero__num{position:absolute;inset-block-start:50%;inset-inline-end:4%;transform:translateY(-50%);
  font-size:clamp(7rem,16vw,13rem);font-weight:800;color:rgba(255,255,255,.055);line-height:1;pointer-events:none}
.pagehero--rice{background:var(--rice-navy);color:#CBD2E6}
.pagehero--rice h1{color:#fff;font-family:var(--f-serif);font-weight:600}
html[dir="rtl"] .pagehero--rice h1{font-family:var(--f-sans);font-weight:700}
.pagehero--rice .lead{color:#C3CADF}
.pagehero--rice .kicker{color:var(--gold-light)}
.pagehero--rice .kicker::after{background:var(--gold)}

/* Breadcrumbs */
.crumbs{padding-block:.9rem;border-block-end:1px solid var(--line-soft);font-size:.82rem;color:var(--grey)}
.crumbs ol{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:0;padding:0;list-style:none}
.crumbs li::after{content:"›";margin-inline-start:.5rem;color:var(--line)}
html[dir="rtl"] .crumbs li::after{content:"‹"}
.crumbs li:last-child::after{display:none}
.crumbs a{color:var(--grey)}
.crumbs a:hover{color:var(--blue-dark)}
.crumbs--rice{background:var(--rice-navy-2);border-color:rgba(255,255,255,.08);color:#8E9AC0}
.crumbs--rice a{color:#8E9AC0}
.crumbs--rice a:hover{color:var(--gold-light)}
.crumbs--rice li::after{color:rgba(255,255,255,.25)}

/* ------------------------------------------------------------ 8. Content */
.prose{max-width:820px}
.prose p{margin-block-end:1.15em}
.prose .lead{margin-block-end:1.4em}
.grid{display:grid;gap:1.25rem}
.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:980px){.grid--3,.grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:680px){.grid--2,.grid--3,.grid--4{grid-template-columns:1fr}}
.blockhead{max-width:820px;margin-block-end:2.5rem}
.blockhead .lead{margin-block-end:0}

/* Cards */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:1.75rem;transition:border-color .2s,box-shadow .2s,transform .2s;position:relative}
.card h2,.card h3{margin-block-end:.6rem}
.card p{margin:0;font-size:.94rem;color:var(--body)}
a.card{display:block;color:inherit}
a.card:hover{text-decoration:none;border-color:var(--blue);box-shadow:var(--shadow);transform:translateY(-2px)}
.card__n{font-size:.78rem;font-weight:700;letter-spacing:.12em;color:var(--blue-dark);display:block;margin-block-end:.8rem}
.card__go{margin-block-start:1.1rem;font-size:.85rem;font-weight:600;color:var(--blue-dark);display:inline-flex;gap:.4rem;align-items:center}
.card--pillar{padding:2rem;border-inline-start:3px solid var(--blue)}
.card--number .card__n{font-size:1.6rem;font-weight:300;color:var(--blue-dark);letter-spacing:0}
.card--dark{background:var(--navy-deep);border-color:transparent;color:#B9C1DA}
.card--dark h2,.card--dark h3{color:#fff}
.card--dark p{color:#B9C1DA}
.card--dark .card__n{color:#8FC0E6}
.card--tile{background:var(--paper-alt);border-color:transparent;padding:1.4rem 1.5rem;display:flex;align-items:center;min-height:96px}
.card--tile h2,.card--tile h3{margin:0;font-size:1rem;font-weight:600}
.card--sector{background:linear-gradient(135deg,var(--navy) 0%,var(--blue-dark) 100%);border-color:transparent;min-height:130px;display:flex;align-items:flex-end;padding:1.5rem}
.card--sector h2,.card--sector h3{color:#fff;margin:0;font-size:1.05rem}
.card--spec{background:var(--paper-alt);border-color:transparent;padding:1.35rem 1.5rem}
.card--spec h2,.card--spec h3{font-size:.98rem;margin-block-end:.35rem}
.card--spec p{font-size:.88rem;color:var(--grey)}
.card--practice{border-color:var(--line);padding:1.5rem}
.card--practice h2,.card--practice h3{font-size:1rem}
.card--practice p{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--grey)}
html[dir="rtl"] .card--practice p{letter-spacing:0;text-transform:none;font-size:.85rem}
.card--practice.is-accent{border-color:var(--gold);background:var(--gold-pale)}
.card--reason{border:0;border-block-start:2px solid var(--blue);border-radius:0;padding:1.5rem 0 0;background:none}
.card--riceline{background:#fff;border-color:var(--line);border-inline-start:3px solid var(--gold);border-radius:var(--r)}
.card--maroon{background:var(--maroon-pale);border-color:rgba(124,21,35,.18)}
.card--maroon h2,.card--maroon h3{color:var(--maroon)}

/* Two-column lists */
.lists{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2.5rem}
@media (max-width:760px){.lists{grid-template-columns:1fr;gap:2rem}}
.lists h2,.lists h3{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--grey);border-block-end:1px solid var(--line);padding-block-end:.9rem;margin-block-end:1.2rem}
html[dir="rtl"] .lists h2,html[dir="rtl"] .lists h3{letter-spacing:0;font-size:.9rem;text-transform:none;color:var(--blue-dark);font-weight:600}
.ticklist li{position:relative;padding-inline-start:1.4rem;margin-block-end:.75rem;font-size:.95rem;color:var(--ink)}
.ticklist li::before{content:"";position:absolute;inset-inline-start:0;inset-block-start:.62em;width:7px;height:7px;border-radius:50%;background:var(--blue)}

/* Steps */
.steps{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1.25rem;margin-block-start:2.5rem}
@media (max-width:1000px){.steps{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:620px){.steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
.step{border-block-start:2px solid var(--navy);padding-block-start:1.1rem}
.step__n{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;
  background:var(--navy);color:#fff;font-size:.78rem;font-weight:700;margin-block-end:.9rem;transform:translateY(-2.35rem)}
.step__n + h3{margin-block-start:-1.6rem}
.step h3{font-size:1rem;margin-block-end:.45rem}
.step p{font-size:.86rem;color:var(--body);margin:0}
.steps--gold .step{border-color:var(--gold)}
.steps--gold .step__n{background:var(--gold);color:#1B1508}
.stepnotes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem;margin-block-start:3rem;padding-block-start:2rem;border-block-start:1px solid var(--line)}
@media (max-width:820px){.stepnotes{grid-template-columns:1fr;gap:1.5rem}}
.stepnotes h4{font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--blue-dark);margin-block-end:.6rem}
html[dir="rtl"] .stepnotes h4{letter-spacing:0;font-size:.9rem;text-transform:none}
.steps--gold ~ .stepnotes h4,.stepnotes--gold h4{color:#8A6A2E}
.stepnotes p{font-size:.88rem;margin:0}

/* Method table */
.method{border-block-start:1px solid var(--line)}
.method__row{display:grid;grid-template-columns:200px 1fr 1fr 1fr;gap:1.5rem;padding-block:1.9rem;border-block-end:1px solid var(--line);align-items:start}
@media (max-width:1000px){.method__row{grid-template-columns:1fr 1fr;gap:1.2rem}.method__stage{grid-column:1/-1}}
@media (max-width:620px){.method__row{grid-template-columns:1fr}}
.method__stage{display:flex;align-items:baseline;gap:.8rem}
.method__stage span{font-size:1.5rem;font-weight:300;color:var(--blue-dark)}
.method__stage h3{margin:0;font-size:1.2rem}
.method dt{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--grey);margin-block-end:.45rem}
html[dir="rtl"] .method dt{letter-spacing:0;font-size:.82rem;text-transform:none}
.method dd{margin:0;font-size:.92rem;color:var(--ink)}
.method dd.is-deliverable{color:var(--blue-dark);font-weight:600}

/* Callouts */
.callout{border-radius:var(--r-lg);padding:1.9rem 2.1rem;margin-block:2.5rem}
.callout h3{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;margin-block-end:.8rem}
html[dir="rtl"] .callout h3{letter-spacing:0;font-size:.95rem;text-transform:none}
.callout p{margin:0;font-size:1rem}
.callout--navy{background:var(--navy);color:#C8CEE3}
.callout--navy h3{color:#8FC0E6}
.callout--sand{background:var(--sand);border-inline-start:3px solid var(--blue)}
.callout--sand h3{color:var(--blue-dark)}
.callout--blue{background:var(--blue-pale);text-align:center}
.callout--blue p{color:var(--navy);font-size:clamp(1.05rem,1.6vw,1.3rem);line-height:1.6}
.callout--gold{background:var(--gold-pale);border-inline-start:3px solid var(--gold)}
.callout--gold h3{color:#8A6A2E}
.callout--maroon{background:var(--maroon);color:#fff;text-align:center}
.callout--maroon p{font-weight:600;letter-spacing:.02em}
.note{color:var(--grey);font-size:.86rem;border-inline-start:2px solid var(--line);padding-inline-start:1rem;margin-block:1.5rem}
.pricenote{color:var(--grey);font-size:.83rem;border-block-start:1px solid var(--line);padding-block-start:1.2rem;margin-block-start:2rem}

/* Image slots */
.imgslot{position:relative;margin:0;overflow:hidden;border-radius:var(--r-lg);background:
  linear-gradient(135deg,var(--navy) 0%,var(--blue-dark) 55%,var(--blue) 100%);
  display:flex;align-items:center;justify-content:center;min-height:180px;min-width:0;width:100%}
.imgslot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2}
.imgslot__tag{position:relative;z-index:1;color:rgba(255,255,255,.72);font-size:.72rem;letter-spacing:.1em;
  text-align:center;padding:1rem;line-height:1.7}
.imgslot__tag b{display:block;font-size:.8rem;letter-spacing:.02em;color:#fff;font-weight:600}
.ratio-16x9{aspect-ratio:16/9}
.ratio-4x3{aspect-ratio:4/3}
.ratio-3x2{aspect-ratio:3/2}
.ratio-1x1{aspect-ratio:1/1}
.ratio-band{aspect-ratio:32/9;min-height:220px}
.imgslot--round{border-radius:50%;aspect-ratio:1/1}
.imgslot--sand{background:linear-gradient(135deg,#E9E2D3,#CBB68C)}
.imageband figcaption{color:var(--grey);font-size:.85rem;margin-block-start:.9rem;text-align:center}

/* Practice hero (specialised practice band) */
.practice{position:relative;background:var(--navy-deep);color:#B9C1DA;border-radius:var(--r-lg);overflow:hidden;margin-block:3.5rem 2rem}
.practice__img{position:absolute;inset:0}
.practice__img .imgslot{height:100%;border-radius:0;min-height:0}
.practice__img::after{content:"";position:absolute;inset:0;z-index:3;background:linear-gradient(to bottom,rgba(15,21,49,.35) 0%,rgba(15,21,49,.88) 62%,var(--navy-deep) 100%)}
.practice__body{position:relative;z-index:4;padding:clamp(3rem,7vw,6rem) clamp(1.5rem,4vw,3.5rem) clamp(2rem,4vw,3rem);max-width:900px}
.practice__body h2{color:#fff}
.practice__body .kicker{color:#8FC0E6}
.practice__body .kicker::after{background:#8FC0E6}
.practice__body p{color:#C0C8E0;margin:0;font-size:1.02rem}

/* Reach map */
.reach__map{margin-block:2.5rem;background:var(--paper-alt);border-radius:var(--r-lg);padding:1.5rem}
.reach--dark .reach__map{background:rgba(255,255,255,.04)}
.reach__map svg{width:100%;height:auto;display:block}
.reachcols{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1.5rem;border-block-start:1px solid var(--line);padding-block-start:1.6rem}
.reach--dark .reachcols{border-color:rgba(255,255,255,.14)}
@media (max-width:900px){.reachcols{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.reachcols{grid-template-columns:1fr}}
.reachcols h2,.reachcols h3,.reachcols h4{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--grey);margin-block-end:.7rem}
html[dir="rtl"] .reachcols h2,html[dir="rtl"] .reachcols h3,html[dir="rtl"] .reachcols h4{letter-spacing:0;font-size:.85rem;text-transform:none}
.reachcols li{font-size:.92rem;color:var(--ink);margin-block-end:.3rem}
.reach--dark .reachcols li{color:#C8CEE3}
.reach--dark .reachcols h2,.reach--dark .reachcols h3,.reach--dark .reachcols h4{color:#8FA2C4}

/* Tables */
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff}
table.data{width:100%;border-collapse:collapse;font-size:.88rem;min-width:820px}
table.data th{background:var(--navy);color:#fff;text-align:start;padding:1rem;font-weight:600;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}
html[dir="rtl"] table.data th{letter-spacing:0;font-size:.85rem;text-transform:none}
table.data td{padding:1rem;border-block-start:1px solid var(--line-soft);vertical-align:top;color:var(--ink)}
table.data tbody tr:nth-child(even) td{background:var(--paper-alt)}
@media (max-width:820px){
  .tablewrap{border:0;background:none;overflow:visible}
  table.data{min-width:0}
  table.data thead{display:none}
  table.data tr{display:block;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;margin-block-end:1rem;padding:.5rem 1rem}
  table.data tbody tr:nth-child(even) td{background:none}
  table.data td{display:flex;gap:1rem;justify-content:space-between;border-block-start:1px solid var(--line-soft);padding:.7rem 0}
  table.data tr td:first-child{border-block-start:0}
  table.data td::before{content:attr(data-label);font-weight:600;color:var(--grey);font-size:.78rem;flex:0 0 40%}
}

/* Spec tables (rice quality) */
.spectables{display:grid;grid-template-columns:1fr 1fr 320px;gap:2.5rem}
@media (max-width:1050px){.spectables{grid-template-columns:1fr 1fr}.spectables__aside{grid-column:1/-1}}
@media (max-width:680px){.spectables{grid-template-columns:1fr}}
.spectable h2,.spectable h3{font-size:.95rem;border-block-end:1px solid var(--line);padding-block-end:.8rem}
.spectable dl{margin:0}
.spectable div{display:flex;justify-content:space-between;gap:1rem;padding-block:.75rem;border-block-end:1px solid var(--line-soft)}
.spectable dt{font-size:.85rem;color:var(--grey);margin:0;flex:0 0 auto}
.spectable dd{margin:0;font-size:.85rem;font-weight:600;color:var(--ink);text-align:end}
.spectables__aside{background:var(--paper-alt);border-radius:var(--r-lg);padding:1.6rem}
.spectables__aside h3{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--blue-dark)}
html[dir="rtl"] .spectables__aside h3{letter-spacing:0;font-size:.95rem;text-transform:none}
.spectables__aside p{font-size:.87rem}

/* Variety cards */
.varietygroup{display:grid;grid-template-columns:300px 1fr;gap:2.5rem;align-items:start;margin-block:3.5rem}
@media (max-width:940px){.varietygroup{grid-template-columns:1fr;gap:1.5rem}}
.varietygroup__side{background:var(--rice-navy);color:#C3CADF;border-radius:var(--r-lg);padding:2rem;position:relative;overflow:hidden}
.varietygroup__side h2{color:#fff;font-size:1.9rem;margin-block-end:1rem;font-family:var(--f-serif);font-weight:600}
html[dir="rtl"] .varietygroup__side h2{font-family:var(--f-sans);font-weight:700}
.varietygroup__side .kicker{color:var(--gold-light)}
.varietygroup__side .kicker::after{background:var(--gold)}
.varietygroup__side p{font-size:.9rem;color:#B7BFD8}
.varietygroup__grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem}
@media (max-width:760px){.varietygroup__grid{grid-template-columns:1fr}}
.variety__badge{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:#8A6A2E;font-weight:600}
html[dir="rtl"] .variety__badge{letter-spacing:0;font-size:.82rem;text-transform:none}
.variety h3{margin-block:.6rem .5rem;font-size:1.15rem}
.variety p{font-size:.9rem}
.variety .imgslot{width:130px;height:130px;border-radius:50%;
  background:linear-gradient(135deg,#E7DCC6,#C9B48C);margin-block-end:1.1rem}
.variety .imgslot__tag{color:rgba(60,45,20,.75)}
.variety .imgslot__tag b{color:#3C2D14}
.variety dl{margin:1.2rem 0 0;border-block-start:1px solid var(--line)}
.variety dl div{display:flex;justify-content:space-between;gap:1rem;padding-block:.6rem;border-block-end:1px solid var(--line-soft)}
.variety dt{font-size:.82rem;color:var(--grey);margin:0}
.variety dd{margin:0;font-size:.82rem;font-weight:600;color:var(--navy);text-align:end;max-width:60%}
.additional{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1.5rem}
@media (max-width:1000px){.additional{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:680px){.additional{grid-template-columns:repeat(2,minmax(0,1fr))}}
.additional h3{font-size:1rem;margin-block:1rem .5rem}
.additional p{font-size:.85rem}
.additional .imgslot{aspect-ratio:1/1;border-radius:50%;background:linear-gradient(135deg,#E7DCC6,#C9B48C)}
.additional .imgslot__tag{color:rgba(60,45,20,.75)}
.additional .imgslot__tag b{color:#3C2D14}

/* Rice categories */
.card--ricecat{padding:0;border:0;background:none}
.card--ricecat .imgslot{margin-block-end:1.3rem;background:linear-gradient(135deg,#E7DCC6,#C9B48C)}
.card--ricecat .imgslot__tag{color:rgba(60,45,20,.75)}
.card--ricecat .imgslot__tag b{color:#3C2D14}
.card--ricecat .card__n{color:#8A6A2E;letter-spacing:.14em;text-transform:uppercase;font-size:.72rem}
html[dir="rtl"] .card--ricecat .card__n{letter-spacing:0;text-transform:none;font-size:.85rem}
.card--ricecat h2,.card--ricecat h3{font-size:1.5rem;font-family:var(--f-serif);font-weight:600}
html[dir="rtl"] .card--ricecat h3{font-family:var(--f-sans);font-weight:700}
.card--ricenav{border-inline-start:3px solid var(--gold)}
.card--ricenav.is-accent{background:var(--maroon-pale);border-color:var(--maroon)}
.card--ricenav.is-accent h2,.card--ricenav.is-accent h3{color:var(--maroon)}

/* Rice feature (home) */
.ricefeature{position:relative;background:var(--rice-navy);color:#C3CADF;overflow:hidden;isolation:isolate}
.ricefeature__bg{position:absolute;inset:0;z-index:-2}
.ricefeature__bg .imgslot{height:100%;border-radius:0;min-height:0}
.ricefeature::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(105deg,var(--rice-navy-2) 30%,rgba(14,23,53,.86) 58%,rgba(192,154,91,.22) 100%)}
.ricefeature__inner{padding-block:clamp(3.5rem,8vw,6rem);max-width:660px}
.ricefeature h2{color:#fff;font-family:var(--f-serif);font-weight:600;font-size:clamp(2rem,3.6vw,3rem)}
html[dir="rtl"] .ricefeature h2{font-family:var(--f-sans);font-weight:700}
.ricefeature .kicker{color:var(--gold-light)}
.ricefeature .kicker::after{background:var(--gold)}
.ricefeature__lead{color:var(--gold-light);font-weight:600;letter-spacing:.04em;margin-block-end:1.2rem}

/* Rice hero */
.ricehero{position:relative;background:var(--rice-navy);color:#C3CADF;overflow:hidden;isolation:isolate}
.ricehero__bg{position:absolute;inset:0;z-index:-2}
.ricehero__bg .imgslot{height:100%;border-radius:0;min-height:0}
.ricehero::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(100deg,var(--rice-navy-2) 25%,rgba(14,23,53,.9) 55%,rgba(14,23,53,.55) 100%)}
.ricehero__inner{padding-block:clamp(4rem,9vw,7.5rem);max-width:820px;position:relative}
.ricehero__frame{position:absolute;inset:1.5rem;border:1px solid rgba(192,154,91,.32);pointer-events:none;z-index:1}
.ricehero h1{color:#fff;font-family:var(--f-serif);font-weight:600;font-size:clamp(2.4rem,5.5vw,4.2rem);line-height:1.05}
html[dir="rtl"] .ricehero h1{font-family:var(--f-sans);font-weight:700;line-height:1.3}
.ricehero h1 span{display:block;color:var(--gold-light)}
.ricehero .kicker{color:var(--gold-light)}
.ricehero .kicker::after{background:var(--gold)}
.ricehero__lead{font-weight:600;color:#fff;font-size:1.05rem;margin-block-end:1.4rem}
.ricehero__note{border-block-start:1px solid rgba(192,154,91,.35);padding-block-start:1.2rem;color:var(--gold-light);font-size:.9rem;max-width:520px}

/* Hafizah */
/* The pack is maroon and gold. On a maroon ground it disappears into its own
   background, so the hero uses the approved Rice Portfolio palette — navy,
   grain gold, rice cream — and lets the product carry the brand colour. */
.hafizahhero{position:relative;overflow:hidden;color:#CFD6E8;
  background:radial-gradient(120% 100% at 78% 50%,#222C5E 0%,var(--navy) 42%,var(--navy-ink) 100%)}
/* a soft gold halo behind the pack, so it lifts off the navy rather than
   sitting flat on it */
.hafizahhero::before{content:"";position:absolute;inset-block:0;inset-inline-end:0;
  inline-size:58%;background:radial-gradient(closest-side,rgba(185,143,74,.30),transparent 72%);
  pointer-events:none}
.hafizahhero__inner{display:grid;grid-template-columns:1fr minmax(0,520px);
  gap:clamp(2rem,5vw,4rem);align-items:center;
  padding-block:clamp(3rem,7vw,5.5rem);position:relative}
@media (max-width:860px){.hafizahhero__inner{grid-template-columns:1fr}}
.hafizahhero h1{color:#fff;font-size:clamp(2.2rem,4.5vw,3.4rem);margin-block-end:.9rem}
.hafizahhero .kicker{color:var(--gold-light)}
.hafizahhero .kicker::after{background:var(--gold)}
.hafizahhero__sub{color:var(--gold-light);font-weight:600;font-size:1.08rem;max-inline-size:34ch}
.hafizahhero__note{color:#AEB7D2;font-size:.92rem;margin-block-start:1.1rem;max-inline-size:46ch}
/* The pack sits on the ground itself — no panel, no border, no tinted box. */
.hafizahhero__pack .imgslot{background:transparent;border:0;aspect-ratio:auto;
  min-height:0;border-radius:0;overflow:visible}
.hafizahhero__pack img{width:100%;height:auto;object-fit:contain;
  filter:drop-shadow(0 26px 42px rgba(0,0,0,.45))}
body.world-hafizah .kicker{color:var(--maroon)}
body.world-hafizah .kicker::after{background:var(--maroon-gold)}

/* Packaging chips */
.chips{display:flex;flex-wrap:wrap;gap:.6rem;margin-block-end:2.5rem}
.chip{padding:.5rem 1.1rem;border-radius:var(--r-sm);font-size:.85rem;font-weight:600;background:var(--rice-navy);color:#fff}
.chip--material{background:#fff;color:var(--navy);border:1.5px solid var(--line)}
.packfeature{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:2.5rem;align-items:start}
@media (max-width:940px){.packfeature{grid-template-columns:1fr}}
.packfeature__main .imgslot{background:linear-gradient(135deg,#F3E8D8,#DCC49B);aspect-ratio:4/3;margin-block-end:1.4rem}
.packfeature__main .imgslot__tag{color:rgba(60,45,20,.75)}
.packfeature__main .imgslot__tag b{color:#3C2D14}
.packfeature__main h2,.packfeature__main h3{color:var(--maroon)}
.packgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}
@media (max-width:760px){.packgrid{grid-template-columns:1fr}}
.packgrid .imgslot{aspect-ratio:4/3;margin-block-end:.9rem;background:linear-gradient(135deg,#EDE6DA,#CFC3AC)}
.packgrid .imgslot__tag{color:rgba(60,45,20,.75)}
.packgrid .imgslot__tag b{color:#3C2D14}
.packgrid h4{font-size:.98rem;color:var(--navy);margin-block-end:.4rem}
.packgrid p{font-size:.86rem;margin:0}

/* Quote band */
.quoteband{position:relative;overflow:hidden;isolation:isolate;background:var(--rice-navy-2);padding-block:clamp(3rem,7vw,5rem)}
.quoteband__bg{position:absolute;inset:0;z-index:-2}
.quoteband__bg .imgslot{height:100%;border-radius:0;min-height:0}
.quoteband::after{content:"";position:absolute;inset:0;z-index:-1;background:rgba(14,23,53,.78)}
.quoteband p{color:#fff;font-size:clamp(1.15rem,2.2vw,1.7rem);line-height:1.5;max-width:900px;margin:0;font-family:var(--f-serif)}
html[dir="rtl"] .quoteband p{font-family:var(--f-sans);line-height:1.75}

/* GM message */
.gm{display:grid;grid-template-columns:280px 1fr;gap:3rem;align-items:start}
@media (max-width:860px){.gm{grid-template-columns:1fr;gap:1.75rem}}
.gm__aside .imgslot{aspect-ratio:3/4;background:linear-gradient(135deg,var(--navy),var(--blue-dark))}
.gm__sig{margin-block-start:1.5rem;border-block-start:1px solid var(--line);padding-block-start:1.2rem}
.gm__sig strong{display:block;color:var(--navy);font-size:1rem}
.gm__sig span{color:var(--grey);font-size:.85rem}

/* Vision / mission */
.vm{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem}
@media (max-width:860px){.vm{grid-template-columns:1fr}}
.vm__card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:2rem}
.vm__card h3{font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;color:var(--blue-dark)}
html[dir="rtl"] .vm__card h3{letter-spacing:0;font-size:.95rem;text-transform:none}
.vm__card p:first-of-type{font-size:clamp(1.05rem,1.5vw,1.22rem);color:var(--navy);line-height:1.6;font-weight:400}
.vm__card p:last-child{margin:0;font-size:.9rem;color:var(--grey)}
.promise{margin-block-start:2.5rem;background:var(--navy-deep);border-radius:var(--r-lg);padding:2.5rem;text-align:center;color:#fff}
.promise h3{color:#8FC0E6;font-size:.78rem;letter-spacing:.2em;text-transform:uppercase}
html[dir="rtl"] .promise h3{letter-spacing:0;font-size:.95rem;text-transform:none}
.promise p{font-size:clamp(1.15rem,2vw,1.6rem);line-height:1.5;margin:0;color:#fff}

/* Downloads */
.downloads{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}
@media (max-width:900px){.downloads{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.downloads{grid-template-columns:1fr}}
.download{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1.1rem 1.3rem;color:var(--navy);font-size:.9rem;font-weight:500}
.download:hover{border-color:var(--blue);text-decoration:none}
.download span{font-size:.7rem;letter-spacing:.1em;color:var(--grey);border:1px solid var(--line);border-radius:3px;padding:.15rem .4rem}

/* Expandable module slot */

/* Rice cross-link */
.ricecross{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.5rem;
  background:var(--rice-navy);border-radius:var(--r-lg);padding:2rem;margin-block:2.5rem}
.ricecross h3{color:#fff;margin:0 0 .4rem;font-size:1.2rem}
.ricecross p{color:#B7BFD8;margin:0;font-size:.92rem;max-width:560px}

/* CTA band */
.ctaband{background:var(--navy-deep);color:#C8CEE3;padding-block:clamp(3rem,6vw,4.5rem)}
.ctaband h2{color:#fff;max-width:760px}
.ctaband p{max-width:680px}
.ctaband--gold{background:linear-gradient(115deg,var(--rice-navy-2),var(--rice-navy) 65%,#2A2036)}
.ctaband--gold .kicker{color:var(--gold-light)}
.ctaband--gold .kicker::after{background:var(--gold)}

/* ------------------------------------------------------------- 9. Forms */
.form{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(1.5rem,3vw,2.5rem)}
.form fieldset{border:0;padding:0;margin:0 0 2rem}
.form legend{font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--blue-dark);font-weight:600;padding:0;margin-block-end:1.2rem;width:100%;border-block-end:1px solid var(--line);padding-block-end:.8rem}
html[dir="rtl"] .form legend{letter-spacing:0;font-size:.92rem;text-transform:none}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}
@media (max-width:680px){.fields{grid-template-columns:1fr}}
.field--full{grid-column:1/-1}
.field label{display:block;font-size:.85rem;font-weight:600;color:var(--navy);margin-block-end:.4rem}
.field .req{color:var(--blue-dark);margin-inline-start:.2rem}
.field .opt{color:var(--grey);font-weight:400;font-size:.78rem;margin-inline-start:.35rem}
.field input,.field select,.field textarea{
  width:100%;padding:.8rem .95rem;border:1.5px solid var(--line);border-radius:var(--r);
  font:inherit;font-size:.94rem;color:var(--ink);background:#fff;transition:border-color .15s
}
.field textarea{min-height:130px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px rgba(57,136,196,.15)}
.field input[type="file"]{padding:.6rem;background:var(--paper-alt);border-style:dashed}
.field .hint{display:block;color:var(--grey);font-size:.8rem;margin-block-start:.4rem}
.field .err{display:none;color:#B3261E;font-size:.8rem;margin-block-start:.35rem}
.field.is-invalid input,.field.is-invalid select,.field.is-invalid textarea{border-color:#B3261E}
.field.is-invalid .err{display:block}
.checkfield{display:flex;gap:.7rem;align-items:flex-start}
.checkfield input{width:18px;height:18px;flex:0 0 auto;margin-block-start:.25rem}
.checkfield label{font-weight:400;font-size:.88rem;color:var(--body);margin:0}
.hp{position:absolute;inset-inline-start:-9999px;width:1px;height:1px;overflow:hidden}
.formmsg{display:none;border-radius:var(--r);padding:1.1rem 1.3rem;margin-block-end:1.5rem;font-size:.92rem}
.formmsg.is-error{display:block;background:#FDECEA;color:#8C1D18;border:1px solid #F3C6C1}
.formsuccess{display:none;background:var(--blue-pale);border:1px solid #BBDBF2;border-radius:var(--r-lg);padding:2rem;color:var(--navy)}
.formsuccess.is-visible{display:block}
.form--gold legend{color:#8A6A2E}
.form--gold .field input:focus,.form--gold .field select:focus,.form--gold .field textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(192,154,91,.2)}
.form--maroon legend{color:var(--maroon)}
.form--maroon .field input:focus,.form--maroon .field textarea:focus,.form--maroon .field select:focus{border-color:var(--maroon);box-shadow:0 0 0 3px rgba(124,21,35,.14)}

/* Contact info */
.contactgrid{display:grid;grid-template-columns:1fr 1fr;gap:3rem}
@media (max-width:820px){.contactgrid{grid-template-columns:1fr;gap:2rem}}
.infolist h2,.infolist h3{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--grey);margin-block-end:1.2rem}
html[dir="rtl"] .infolist h2,html[dir="rtl"] .infolist h3{letter-spacing:0;font-size:.9rem;text-transform:none}
.infolist div{padding-block:1rem;border-block-end:1px solid var(--line-soft)}
.infolist dt{font-size:.82rem;font-weight:700;color:var(--navy);margin-block-end:.25rem}
.infolist dd{margin:0;font-size:.94rem;color:var(--body)}

/* Legal */
.legal h2{font-size:1.2rem;margin-block:2.2rem .7rem}
.legal h2:first-child{margin-block-start:0}
.legal p{font-size:.95rem}

/* -------------------------------------------------------- 10. Utilities */
.floatcta{position:fixed;inset-block-end:1.5rem;inset-inline-end:1.5rem;z-index:90;
  background:var(--navy);color:#fff;border-radius:100px;padding:.8rem 1.4rem;font-size:.85rem;font-weight:600;
  box-shadow:var(--shadow-lift);display:inline-flex;align-items:center;gap:.5rem}
.floatcta:hover{background:var(--blue);color:#fff;text-decoration:none}
body.world-rice .floatcta{background:var(--gold);color:#1B1508}
body.world-hafizah .floatcta{background:var(--maroon)}
.totop{position:fixed;inset-block-end:1.5rem;inset-inline-start:1.5rem;z-index:90;width:44px;height:44px;border-radius:50%;
  background:#fff;border:1px solid var(--line);color:var(--navy);display:none;align-items:center;justify-content:center;
  cursor:pointer;box-shadow:var(--shadow);font-size:1.1rem}
.totop.is-visible{display:inline-flex}
@media (max-width:560px){.floatcta{inset-block-end:1rem;inset-inline-end:1rem;padding:.7rem 1.1rem;font-size:.8rem}.totop{inset-block-end:1rem;inset-inline-start:1rem}}
@media (max-width:480px){.floatcta{padding:.6rem .9rem;font-size:.74rem;gap:.35rem;border-radius:100px}.floatcta .arrow{display:none}}

/* ------------------------------------------------------------ 11. Footer */
.footer{background:var(--navy-ink);color:#98A2C0;padding-block:clamp(3rem,6vw,4.5rem) 2rem;font-size:.9rem}
.footer__top{display:grid;grid-template-columns:1.4fr 1fr 1.2fr 1fr;gap:2.5rem;padding-block-end:2.5rem;border-block-end:1px solid rgba(255,255,255,.1)}
@media (max-width:980px){.footer__top{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.footer__top{grid-template-columns:1fr;gap:2rem}}
/* The footer column headings are h2 so that heading order does not skip a
   level; they keep the small uppercase label look they have always had. */
.footer h4,.footer__head{color:#fff;font-size:.72rem;font-weight:700;line-height:1.3;
  letter-spacing:.16em;text-transform:uppercase;margin:0 0 1.1rem}
html[dir="rtl"] .footer h4,html[dir="rtl"] .footer__head{
  letter-spacing:0;font-size:.88rem;text-transform:none}
.footer a{color:#98A2C0}
.footer a:hover{color:#fff}
.footer li{margin-block-end:.5rem;line-height:1.5}
.footer__brand img{height:40px;margin-block-end:1.2rem}
.footer__brand p{font-size:.88rem;line-height:1.7;max-width:340px}
.footer__tag{color:var(--blue-light,#8FC0E6);font-weight:600;margin-block-start:1rem}
.footer__bottom{display:flex;flex-wrap:wrap;gap:1rem 2rem;align-items:center;justify-content:space-between;padding-block-start:1.8rem;font-size:.82rem}
.footer__legal{display:flex;flex-wrap:wrap;gap:1.2rem}
.footer__social{color:#6E789A;font-size:.8rem;margin-block-start:1rem}
.footer__lang{border:1px solid rgba(255,255,255,.22);border-radius:var(--r-sm);padding:.35rem .8rem;font-weight:600}

/* ------------------------------------------------ artwork from the profiles */
.ratio-free{aspect-ratio:auto}
.ratio-free img{position:static;width:100%;height:auto;object-fit:contain}
.ratio-pack{aspect-ratio:3/4}
.ratio-pack img,.hafizahhero__pack img,.packfeature__main img,.packgrid img{object-fit:contain}
.imgslot--sand,.card--ricecat .imgslot,.additional .imgslot,.variety .imgslot,
.packfeature__main .imgslot,.packgrid .imgslot{background:var(--sand)}
.reach__map{padding:0;background:transparent;overflow:hidden}
.reach--dark .reach__map{background:transparent}
.reach__map .imgslot{border-radius:var(--r-lg)}
.gm__mark{aspect-ratio:3/4;border-radius:var(--r-lg);display:grid;place-items:center;
  background:linear-gradient(150deg,var(--navy),var(--blue-dark))}
.gm__mark img{width:46%;max-width:150px;height:auto;opacity:.92}
.logo img{height:44px;width:auto}
.footer__brand img{height:40px;width:auto}
@media(max-width:900px){.logo img{height:34px}}
@media(max-width:480px){.logo img{height:23px}}

/* ------------------------------------------------ rice variety filtering */
.varietyfilter__row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-block-end:.75rem}
.varietyfilter__label{font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;
  color:var(--grey);min-inline-size:7.5ch}
.chip{font:inherit;font-size:.85rem;line-height:1;padding:.5rem .95rem;border-radius:100px;
  border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;
  transition:background .15s ease,border-color .15s ease,color .15s ease}
.chip:hover{border-color:var(--blue);color:var(--blue-dark)}
.chip:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.chip.is-on{background:var(--navy);border-color:var(--navy);color:#fff}
.varietyfilter__empty{margin-block-start:.5rem;font-weight:600}
.varietyfilter__note{margin-block-start:.75rem;max-inline-size:72ch}
.variety__order{display:inline-flex;align-items:center;gap:.4rem;margin-block-start:1rem;
  font-size:.88rem;font-weight:600;color:var(--blue-dark);text-decoration:none;
  border-block-end:1px solid transparent}
.variety__order:hover{border-block-end-color:currentColor}
.variety__order:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.variety__order .arrow{transition:transform .18s ease}
.variety__order:hover .arrow{transform:translateX(3px)}
[dir="rtl"] .variety__order:hover .arrow{transform:translateX(-3px)}
@media (max-width:560px){
  .varietyfilter__label{min-inline-size:100%;margin-block-end:.15rem}
  .chip{font-size:.8rem;padding:.45rem .8rem}
}

/* ---------------------------------------- representative images on cards */
/* The aspect box belongs to the figure, so the card overrides the figure's
   ratio class rather than the <img> inside it — otherwise the image renders
   at one ratio inside a box shaped to another and gets clipped. */

/* Pillar cards: a banner above the heading, bleeding to the card edges.
   Negative insets cancel the card padding without needing a wrapper. */
.card--pillar{overflow:hidden}
.card--pillar .imgslot.card__img{
  aspect-ratio:16/7;min-height:0;
  margin-block-start:-2rem;margin-inline:-2rem;margin-block-end:1.5rem;
  margin-inline-start:calc(-2rem - 3px);
  border-radius:var(--r-lg) var(--r-lg) 0 0}
.card--pillar .imgslot.card__img img{width:100%;height:100%;object-fit:cover}

/* Tile cards are a single row: a small square thumbnail, then the label. */
.card--tile{gap:1rem}
.card--tile .imgslot.card__img{
  flex:0 0 auto;inline-size:64px;block-size:64px;aspect-ratio:1/1;
  min-height:0;border-radius:var(--r-sm)}
.card--tile .imgslot.card__img img{width:100%;height:100%;object-fit:cover}

/* Sector cards keep their navy gradient; the photograph sits behind it so the
   white heading keeps its contrast. */
.card--sector{position:relative;overflow:hidden;isolation:isolate}
.card--sector .imgslot.card__img{
  position:absolute;inset:0;margin:0;aspect-ratio:auto;min-height:0;
  border-radius:inherit;z-index:-2}
.card--sector .imgslot.card__img img{width:100%;height:100%;object-fit:cover}
.card--sector::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;
  background:linear-gradient(135deg,rgba(28,37,81,.92) 0%,rgba(43,108,158,.78) 100%)}
a.card--sector:hover::before{
  background:linear-gradient(135deg,rgba(28,37,81,.84) 0%,rgba(43,108,158,.66) 100%)}

@media (max-width:560px){
  .card--pillar .imgslot.card__img{
    margin-block-start:-1.75rem;margin-inline:-1.75rem;
    margin-inline-start:calc(-1.75rem - 3px)}
}

/* -------------------------------------------- page hero with a photograph */
.pagehero--img{position:relative;overflow:hidden;isolation:isolate;border-color:transparent;
  background:var(--navy-deep);color:#C8CEE3;
  padding-block:clamp(3.5rem,7vw,6rem) clamp(2.5rem,5vw,4rem)}
.pagehero--img h1{color:#fff}
.pagehero--img .lead{color:#C8CEE3}
.pagehero--img .kicker{color:#8FC0E6}
.pagehero--img .kicker::after{background:#8FC0E6}
.pagehero__bg{position:absolute;inset:0;z-index:-2}
.pagehero__bg .imgslot{block-size:100%;inline-size:100%;aspect-ratio:auto;min-height:0;
  border-radius:0;background:none}
.pagehero__bg img{width:100%;height:100%;object-fit:cover}
/* The scrim is strongest where the text sits, so the photograph stays visible
   on the far side without ever competing with the heading. */
.pagehero--img::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(to var(--scrim-to,right),
    rgba(15,21,49,.94) 0%,rgba(15,21,49,.86) 45%,rgba(20,27,60,.62) 100%)}
[dir="rtl"] .pagehero--img::after{--scrim-to:left}
.pagehero--img.pagehero--rice::after{
  background:linear-gradient(to var(--scrim-to,right),
    rgba(22,32,74,.94) 0%,rgba(22,32,74,.86) 45%,rgba(14,23,53,.6) 100%)}

/* ------------------------------- video backdrop inside the Rice World hero */
/* The rice hero already lays a navy-to-transparent gradient over its backdrop,
   so the video does not need the extra dimming the navy hero applies. */
.ricehero .hero__video{opacity:1}
.ricehero .hero__video-fallback img{opacity:1}
.ricehero .hero__motion-toggle{
  border-color:rgba(220,190,138,.45);background:rgba(14,23,53,.6)}
.ricehero .hero__motion-toggle:hover{background:rgba(14,23,53,.82)}

/* ============================================================ method path */
/* Six stages as one connected path. The list is the source of truth: with no
   JavaScript every panel stays open and the page reads as the full method.
   Each <li> is display:contents so the node and its detail panel are both
   direct grid items — that is what lets an open panel span the whole row
   instead of being trapped in one column. */
.path{list-style:none;margin:0;padding:0;position:relative;
  display:grid;grid-template-columns:repeat(6,minmax(0,1fr));row-gap:.5rem}
.path__step{display:contents}

.path__node{grid-row:1;position:relative;
  display:flex;flex-direction:column;align-items:center;gap:.5rem;
  font:inherit;text-align:center;background:none;border:0;cursor:pointer;
  padding:0 .6rem 1.25rem;color:inherit;inline-size:100%}

/* the line joining the stages, drawn behind the markers */
.path__node::before{content:"";position:absolute;inset-block-start:26px;
  inset-inline-start:0;inline-size:100%;block-size:2px;background:var(--line);z-index:0}
.path__step:first-child .path__node::before{inset-inline-start:50%;inline-size:50%}
.path__step:last-child .path__node::before{inline-size:50%}

.path__marker{position:relative;z-index:1;
  display:grid;place-items:center;inline-size:54px;block-size:54px;
  border-radius:50%;background:#fff;border:2px solid var(--line);color:var(--blue-dark);
  transition:border-color .2s ease,background .2s ease,color .2s ease}
.path__icon{display:block}
.path__n{font-size:.72rem;font-weight:700;letter-spacing:.12em;color:var(--grey)}
.path__title{font-size:1.02rem;font-weight:600;color:var(--ink);line-height:1.25}
.path__summary{font-size:.84rem;color:var(--body);line-height:1.4;max-inline-size:20ch}

.path__node:hover .path__marker{border-color:var(--blue);background:var(--blue-pale)}
.path__node:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:var(--r-sm)}
.path__node[aria-expanded="true"] .path__marker{
  background:var(--navy);border-color:var(--navy);color:#fff}
.path__node[aria-expanded="true"] .path__title{color:var(--navy)}

/* The open stage's detail spans the full width beneath the path. */
.path__detail{grid-column:1/-1;
  background:var(--paper-alt);border-radius:var(--r-lg);padding:1.6rem 1.75rem}
.path__detail dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;margin:0}
.path__detail dt{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--grey);margin-block-end:.45rem}
.path__detail dd{margin:0;font-size:.92rem;color:var(--ink);line-height:1.55}
.path__detail dd.is-deliverable{color:var(--blue-dark);font-weight:600}

@media (max-width:900px){
  /* Vertical path: markers run down the leading edge with the line between. */
  .path{display:block}
  .path__step{display:block;position:relative}
  .path__node{display:grid;grid-template-columns:54px 1fr;gap:0 1rem;
    grid-template-areas:"marker n" "marker title" "marker summary";
    text-align:start;padding:.75rem 0;align-items:center}
  .path__node::before{inset-block-start:0;inset-block-end:0;
    inset-inline-start:26px;inline-size:2px;block-size:100%}
  /* The desktop first/last rules trim the line to half a cell and are more
     specific than the generic mobile rule above, so the vertical line has to
     restate its own width and offset here or it stays a wide horizontal bar. */
  .path__step:first-child .path__node::before{
    inset-block-start:26px;block-size:calc(100% - 26px);
    inset-inline-start:26px;inline-size:2px}
  .path__step:last-child .path__node::before{
    block-size:26px;inset-inline-start:26px;inline-size:2px}
  .path__marker{grid-area:marker}
  .path__n{grid-area:n;text-align:start}
  .path__title{grid-area:title;text-align:start}
  .path__summary{grid-area:summary;text-align:start;max-inline-size:none}
  .path__detail{margin-inline-start:calc(54px + 1rem);margin-block-end:1.25rem;padding:1.25rem}
  .path__detail dl{grid-template-columns:1fr;gap:1rem}
}

/* An author display rule outranks the UA's [hidden]{display:none}, which is
   how a "hidden" element ends up visible. State it once, for the whole sheet. */
[hidden]{display:none!important}

/* ------------------------------------------------------ stepped long form */
/* The indicator and the Back/Next bar only appear once the script has taken
   over; until then the form is one page with a single Submit. */
.formsteps{list-style:none;display:flex;flex-wrap:wrap;gap:.35rem 1.5rem;
  margin:0 0 2rem;padding:0 0 1.25rem;border-block-end:1px solid var(--line)}
.formsteps__dot{display:flex;align-items:center;gap:.55rem;font-size:.82rem;
  color:var(--grey);cursor:default}
.formsteps__num{display:grid;place-items:center;inline-size:26px;block-size:26px;
  border-radius:50%;border:1.5px solid var(--line);font-size:.76rem;font-weight:700;
  background:#fff;flex:0 0 auto}
.formsteps__dot.is-current{color:var(--ink);font-weight:600}
.formsteps__dot.is-current .formsteps__num{
  background:var(--navy);border-color:var(--navy);color:#fff}
.formsteps__dot.is-done{color:var(--blue-dark);cursor:pointer}
.formsteps__dot.is-done .formsteps__num{
  border-color:var(--blue);color:var(--blue)}
.formsteps__dot.is-done:hover .formsteps__num{background:var(--blue-pale)}

.formnav{display:flex;gap:.75rem;align-items:center;margin-block-start:1.75rem}
.formnav [hidden]{display:none!important}

.form--gold .formsteps__dot.is-current .formsteps__num{
  background:var(--rice-navy);border-color:var(--rice-navy)}
.form--gold .formsteps__dot.is-done{color:var(--gold)}
.form--gold .formsteps__dot.is-done .formsteps__num{border-color:var(--gold);color:var(--gold)}

@media (max-width:560px){
  .formsteps{gap:.3rem 1rem;font-size:.78rem}
  .formsteps__name{display:none}
  .formsteps__dot{gap:0}
}

/* ============================================================ pack gallery */
.gallery{display:grid;gap:1.25rem;justify-items:center}
.gallery__main{inline-size:100%;max-inline-size:640px}
.gallery__frame{margin:0}
.gallery__frame .imgslot{
  background:linear-gradient(160deg,var(--maroon-pale) 0%,#fff 60%);
  border:1px solid rgba(124,21,35,.12);aspect-ratio:4/3;min-height:0}
.gallery__frame .imgslot img{object-fit:contain;padding:1.25rem}
.gallery__frame figcaption{
  margin-block-start:.75rem;text-align:center;font-size:.86rem;color:var(--body)}
.gallery__zoom{font:inherit;font-size:.85rem;font-weight:600;color:var(--maroon);
  background:none;border:0;border-block-end:1px solid currentColor;
  padding:0 0 2px;cursor:pointer}
.gallery__zoom:focus-visible{outline:2px solid var(--maroon);outline-offset:3px}
.gallery__thumbs{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}
.gallery__thumb{padding:0;border:2px solid var(--line);border-radius:var(--r-sm);
  background:#fff;cursor:pointer;inline-size:76px;block-size:76px;overflow:hidden}
.gallery__thumb .imgslot{block-size:100%;min-height:0;border-radius:0;
  background:#fff;aspect-ratio:1/1}
.gallery__thumb .imgslot img{object-fit:contain;padding:.3rem}
.gallery__thumb:hover{border-color:var(--maroon-gold)}
.gallery__thumb.is-on{border-color:var(--maroon)}
.gallery__thumb:focus-visible{outline:2px solid var(--maroon);outline-offset:2px}

/* Enlarged view. Opened only by the script, so it never traps a visitor
   who cannot close it. */
.lightbox{position:fixed;inset:0;z-index:200;display:grid;place-items:center;
  background:rgba(15,21,49,.92);padding:clamp(1rem,4vw,3rem)}
.lightbox img{max-inline-size:100%;max-block-size:80vh;object-fit:contain;
  background:#fff;border-radius:var(--r-lg);padding:1rem}
.lightbox__caption{color:#E6E9F2;font-size:.9rem;margin-block-start:1rem;text-align:center}
.lightbox__close{position:absolute;inset-block-start:1.25rem;inset-inline-end:1.25rem;
  font:inherit;font-size:.85rem;color:#fff;background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.35);border-radius:100px;padding:.5rem 1.1rem;cursor:pointer}
.lightbox__close:hover{background:rgba(255,255,255,.22)}
.lightbox__close:focus-visible{outline:2px solid #fff;outline-offset:2px}

@media (max-width:560px){
  .gallery__thumb{inline-size:62px;block-size:62px}
  .gallery__frame .imgslot img{padding:.75rem}
}
/* Before the script runs the gallery is a simple stack of every view; once it
   does, the views share one frame and the thumbnails choose between them. */
.gallery:not(.is-enhanced) .gallery__main{display:grid;gap:1.5rem}


/* -------------------------------- accent and muted text on the dark bands */
/* --blue-dark and --grey are chosen for contrast against white. On the navy
   sections they fall to ~3:1, so those bands restate them at the light end. */
.ctaband .kicker,.section--navy .kicker,.reach--dark .kicker,.pagehero--img .kicker{
  color:#8FC0E6}
.ctaband .kicker::after,.section--navy .kicker::after,.reach--dark .kicker::after{
  background:#8FC0E6}
.ctaband .note-text,.section--navy .note-text,.reach--dark .note-text,
.ctaband--gold .note-text{color:#B9C1DA}
.ctaband--gold .kicker{color:var(--gold-light)}
.ctaband--gold .kicker::after{background:var(--gold-light)}

/* Category label on a search result, beside the page name. */
.searchresult__cat{display:inline-block;margin-inline-start:.6rem;
  font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--blue-dark);background:var(--blue-pale);
  border-radius:100px;padding:.18rem .55rem;vertical-align:.1em}
html[dir="rtl"] .searchresult__cat{letter-spacing:0;font-size:.72rem;text-transform:none}

/* The homepage carries the same method path; its "full method" link sits
   clear of the open stage panel below it. */
.methodstrip__more{margin-block-start:2rem}
.section--alt .path__detail{background:#fff}

@media (max-width:860px){
  /* Stacked: the wording first, the pack beneath it. */
  .hafizahhero__inner{grid-template-columns:1fr;gap:2rem;text-align:start}
  .hafizahhero__pack{max-inline-size:400px;margin-inline:auto}
  .hafizahhero::before{inline-size:100%;inset-block-start:40%}
}

/* A telephone number is a left-to-right run whatever the page direction. The
   dir attribute isolates it in modern browsers; this states it outright so the
   digit groups can never be reordered by the surrounding Arabic paragraph. */
.tel{direction:ltr;unicode-bidi:isolate;display:inline-block}
