/* ============================================================
   Solar Smart Irrigation — Showcase microsite
   SJK Tukau · PBL STEM Bersepadu Daerah Miri 2026
   Mobile-first, scan-to-view. Shares the booth panel palette.
   ============================================================ */

/* Fonts load via <link rel="preconnect"> + parallel <link rel="stylesheet"> in
   index.html <head>. @import here would serialize the request chain (slower on
   the booth's cellular QR-scan traffic), so it was moved out. */

:root{
  --ink:#0F172A; --ink-soft:#334155; --mute:#64748B; --faint:#94A3B8;
  --paper:#FBFBF8; --line:#ECEFF3; --card:#FFFFFF;
  --leaf-50:#F0FDF4; --leaf-100:#DCFCE7; --leaf-300:#86EFAC; --leaf-500:#22C55E; --leaf-600:#16A34A; --leaf-700:#15803D; --leaf-900:#14532D;
  --sun-50:#FEFCE8; --sun-100:#FEF9C3; --sun-300:#FDE047; --sun-400:#FACC15; --sun-500:#EAB308; --sun-700:#A16207;
  --sky-50:#F0F9FF; --sky-100:#E0F2FE; --sky-400:#38BDF8; --sky-500:#0EA5E9; --sky-600:#0284C7; --sky-700:#0369A1;
  --soil-100:#FDE68A; --soil-500:#B45309; --soil-700:#854D0E;
  --shadow:0 1px 2px rgba(15,23,42,.04),0 14px 34px -14px rgba(15,23,42,.20); --shadow-sm:0 1px 2px rgba(15,23,42,.04),0 6px 16px -8px rgba(15,23,42,.10);
  --r:20px; --r-sm:14px;
  --ease:cubic-bezier(.16,1,.3,1); --bounce:cubic-bezier(.34,1.42,.64,1);
  --maxw:700px;
}

*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
body{font-family:'Outfit','Noto Sans SC',system-ui,-apple-system,sans-serif;color:var(--ink);background:var(--paper);line-height:1.6;overflow-x:hidden;}
h1,h2,h3,h4,footer .big{font-family:'Cabinet Grotesk','Noto Sans SC',system-ui,sans-serif;}
img{max-width:100%;display:block;}
a{color:var(--sky-700);text-decoration:none;}

/* ---------- layout ---------- */
section{padding:64px 22px;}
.wrap{max-width:var(--maxw);margin:0 auto;}
.kicker{font-size:12px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--leaf-600);margin-bottom:12px;}
h2.title{font-size:32px;font-weight:900;line-height:1.08;letter-spacing:-.02em;margin-bottom:10px;text-wrap:balance;}
h2.title .accent{color:var(--leaf-600);}
.lead{font-size:17px;color:var(--ink-soft);text-wrap:pretty;}

/* ---------- reveal animation ---------- */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .6s ease,transform .6s ease;}
.reveal.in{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none;}}

/* ---------- top progress + skip ---------- */
.progress{position:fixed;top:0;left:0;height:3px;width:100%;transform-origin:left;transform:scaleX(0);background:linear-gradient(90deg,var(--leaf-500),var(--sun-400));z-index:50;transition:transform .1s linear;will-change:transform;}

/* ---------- HERO ---------- */
.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:flex-start;
  background:radial-gradient(120% 90% at 80% -10%,var(--sun-100),transparent 55%),radial-gradient(120% 80% at -10% 110%,var(--sky-100),transparent 50%),linear-gradient(180deg,#fff,var(--leaf-50));
  padding:48px 22px;position:relative;text-align:left;}
.hero .badge{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:99px;padding:7px 14px;font-size:12px;font-weight:700;color:var(--leaf-700);width:max-content;margin-bottom:24px;}
.hero h1{font-size:clamp(38px,10vw,58px);font-weight:900;line-height:.98;letter-spacing:-.03em;text-wrap:balance;}
.hero h1 .l1{color:var(--leaf-700);} .hero h1 .l2{color:var(--sun-500);} .hero h1 .l3{color:var(--sky-600);} .hero h1 .l4{color:var(--ink);}
.hero-photo{position:relative;width:100%;max-width:600px;aspect-ratio:3/2;margin:2px 0 24px;border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow);background:var(--leaf-100);}
.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;}
.hero-photo figcaption{position:absolute;left:10px;bottom:10px;background:rgba(15,23,42,.5);color:#fff;font-size:12px;font-weight:600;padding:5px 11px;border-radius:99px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);}
.hero .bm{font-size:18px;font-weight:600;color:var(--mute);margin-top:12px;}
.hero .dq{margin-top:26px;border:1px solid var(--line);background:rgba(255,255,255,.72);backdrop-filter:blur(4px);border-radius:14px;padding:18px 20px;box-shadow:var(--shadow-sm);}
.hero .dq .l{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--sun-700);}
.hero .dq .q{font-size:20px;font-weight:800;margin-top:4px;}
.hero .chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px;}
.hero-quiz{display:inline-flex;align-items:center;gap:8px;margin-top:20px;background:var(--leaf-100);color:var(--leaf-700);border:1px solid var(--leaf-300);border-radius:99px;padding:10px 18px;font-weight:800;font-size:14px;box-shadow:var(--shadow-sm);transition:transform .15s var(--ease),filter .15s ease;width:max-content;max-width:100%;}
.hero-quiz:hover{filter:brightness(1.02);transform:translateY(-1px);}
.quizcta{position:relative;overflow:hidden;border-radius:var(--r);padding:44px 32px;text-align:center;background:linear-gradient(150deg,var(--leaf-500),var(--leaf-700));color:#fff;box-shadow:var(--shadow);}
.quizcta::after{content:"";position:absolute;width:220px;height:220px;border-radius:50%;background:rgba(255,255,255,.10);top:-90px;right:-70px;pointer-events:none;}
.quizcta .eyebrow{position:relative;font-size:12px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.85);margin-bottom:12px;}
.quizcta h2{position:relative;font-size:30px;font-weight:900;letter-spacing:-.02em;line-height:1.06;margin-bottom:12px;color:#fff;}
.quizcta p{position:relative;font-size:16px;color:rgba(255,255,255,.92);max-width:520px;margin:0 auto 26px;line-height:1.6;}
.quizcta-btn{position:relative;display:inline-flex;align-items:center;gap:9px;background:#fff;color:var(--leaf-700);font-weight:800;font-size:17px;border-radius:99px;padding:15px 32px;box-shadow:0 14px 28px -10px rgba(0,0,0,.35);transition:transform .15s var(--ease),filter .15s ease;}
.quizcta-btn:hover{transform:translateY(-2px);filter:brightness(1.02);}
.scroll-cue{margin-top:36px;display:flex;align-items:center;gap:8px;color:var(--mute);font-size:13px;font-weight:600;}
.scroll-cue .dot{width:26px;height:42px;border:2px solid var(--faint);border-radius:14px;position:relative;}
.scroll-cue .dot::after{content:"";position:absolute;left:50%;top:8px;width:4px;height:8px;border-radius:2px;background:var(--faint);transform:translateX(-50%);animation:scroll 1.6s ease-in-out infinite;}
@keyframes scroll{0%{opacity:0;transform:translate(-50%,0);}40%{opacity:1;}80%{opacity:0;transform:translate(-50%,12px);}100%{opacity:0;}}

/* ---------- chips ---------- */
.chip{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:99px;font-weight:700;font-size:13px;}
.chip-leaf{background:var(--leaf-100);color:var(--leaf-700);}
.chip-sun{background:var(--sun-100);color:var(--sun-700);}
.chip-sky{background:var(--sky-100);color:var(--sky-700);}
.chip-soil{background:var(--soil-100);color:var(--soil-700);}

/* ---------- alt section bg ---------- */
.bg-tint{background:linear-gradient(180deg,var(--leaf-50),#fff);}
.bg-ink{background:var(--ink);color:#fff;}
.bg-ink .lead{color:#CBD5E1;} .bg-ink h2.title{color:#fff;} .bg-ink .kicker{color:var(--leaf-300);}

/* ---------- cards / media ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px;box-shadow:var(--shadow-sm);}
.photo-ph{border:2px dashed var(--leaf-500);background:var(--leaf-50);border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--leaf-700);text-align:center;padding:34px 20px;font-weight:600;}
.photo-ph .ic{font-size:34px;margin-bottom:8px;}
.photo-ph .cap{font-size:12px;color:var(--mute);font-weight:500;margin-top:6px;}

/* video */
.video-frame{position:relative;width:100%;aspect-ratio:16/9;border-radius:16px;overflow:hidden;background:#0B1220;box-shadow:var(--shadow);}
.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.video-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#cbd5e1;text-align:center;gap:10px;padding:20px;}
.video-ph .play{width:64px;height:64px;border-radius:50%;background:rgba(255,255,255,.12);border:2px solid rgba(255,255,255,.4);display:flex;align-items:center;justify-content:center;font-size:24px;}

/* ---------- IDEAL ---------- */
.ideal{display:flex;flex-direction:column;gap:14px;}
.istep{display:flex;gap:14px;}
.istep .ltr{flex:none;width:48px;height:48px;border-radius:50%;color:#fff;font-weight:900;font-size:22px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm),inset 0 2px 4px rgba(255,255,255,.4),inset 0 -3px 7px rgba(0,0,0,.14);}
.b-i{background:var(--leaf-600);} .b-d{background:var(--leaf-700);} .b-e{background:var(--sun-500);} .b-a{background:var(--sky-600);} .b-l{background:var(--soil-500);}
.istep .body h3{font-size:18px;font-weight:800;}
.istep .body h3 small{font-weight:600;color:var(--mute);font-size:13px;margin-left:4px;}
.istep .body p{font-size:15px;color:var(--ink-soft);margin-top:4px;}
.istep .edt{display:inline-block;margin-top:7px;font-size:11px;font-weight:700;color:var(--sky-700);background:var(--sky-50);padding:3px 9px;border-radius:99px;}

/* ---------- how it works diagram ---------- */
.flowchain{display:flex;flex-direction:column;gap:10px;margin-top:8px;}
.fnode{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow-sm);}
.fnode .fic{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;flex:none;box-shadow:inset 0 1px 2px rgba(255,255,255,.55),inset 0 -2px 5px rgba(0,0,0,.07);}
.fnode .ft{font-weight:800;font-size:15px;} .fnode .fs{font-size:13px;color:var(--mute);}
.farrow{text-align:center;color:var(--faint);font-size:18px;line-height:1;}

/* ---------- SIMULATOR ---------- */
.sim{background:linear-gradient(180deg,#0B1220,#111A2E);color:#E2E8F0;border-radius:22px;padding:24px;box-shadow:var(--shadow);}
.sim h3{font-size:19px;font-weight:800;color:#fff;}
.sim .hint{font-size:13px;color:#94A3B8;margin-top:4px;}
.soil-vis{height:90px;border-radius:14px;margin:20px 0 8px;position:relative;overflow:hidden;transition:background .25s ease;border:1px solid rgba(255,255,255,.08);}
.soil-vis .probe{position:absolute;left:50%;top:8px;bottom:8px;width:6px;border-radius:3px;background:linear-gradient(#fbbf24,#d97706);transform:translateX(-50%);box-shadow:0 0 0 2px rgba(0,0,0,.2);}
.drop{position:absolute;top:6px;width:9px;height:12px;border-radius:0 50% 50% 50%;background:var(--sky-400);transform:translateY(0) rotate(45deg);opacity:0;will-change:transform,opacity;}
.sim.on .drop{animation:fall 1s linear infinite;}
/* animate transform (compositor) not top (layout/paint) */
@keyframes fall{0%{opacity:0;transform:translateY(0) rotate(45deg);}20%{opacity:.9;}100%{opacity:0;transform:translateY(64px) rotate(45deg);}}
.readout{display:flex;justify-content:space-between;align-items:center;margin-top:6px;}
.readout .val{font-size:34px;font-weight:900;font-variant-numeric:tabular-nums;}
.readout .lab{font-size:12px;color:#94A3B8;font-weight:600;text-transform:uppercase;letter-spacing:.08em;}
.pump-pill{font-weight:800;font-size:15px;padding:8px 16px;border-radius:99px;display:inline-flex;align-items:center;gap:8px;}
.pump-on{background:var(--leaf-500);color:#062b14;}
.pump-off{background:rgba(148,163,184,.18);color:#94A3B8;}
.slider-wrap{margin-top:18px;position:relative;}
.track-marks{position:relative;height:22px;margin-bottom:-6px;font-size:10px;color:#94A3B8;}
.track-marks .band{position:absolute;top:6px;height:8px;background:rgba(250,204,21,.25);border-radius:4px;}
.track-marks .m{position:absolute;transform:translateX(-50%);top:-2px;font-weight:700;}
input[type=range]{-webkit-appearance:none;width:100%;height:10px;border-radius:6px;background:linear-gradient(90deg,#1d4ed8,#0ea5e9 38%,#facc15 62%,#b45309);outline:none;}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:30px;height:30px;border-radius:50%;background:#fff;border:3px solid var(--sky-500);box-shadow:0 2px 8px rgba(0,0,0,.4);cursor:pointer;}
input[type=range]::-moz-range-thumb{width:30px;height:30px;border-radius:50%;background:#fff;border:3px solid var(--sky-500);cursor:pointer;}
.sim-ends{display:flex;justify-content:space-between;font-size:12px;color:#94A3B8;margin-top:6px;font-weight:600;}
.sim-explain{margin-top:18px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:14px 16px;font-size:14px;line-height:1.5;}
.sim-explain b{color:#fff;}
.sim-code{margin-top:14px;background:#020617;border-radius:12px;padding:14px 16px;font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:12.5px;line-height:1.6;color:#94A3B8;overflow-x:auto;}
.sim-code .k{color:#f472b6;} .sim-code .n{color:#fbbf24;} .sim-code .c{color:#475569;} .sim-code .hl{color:#86efac;}

/* ---------- subjects grid ---------- */
.subj-grid{display:grid;grid-template-columns:1fr;gap:12px;}
.subj{display:flex;gap:13px;align-items:flex-start;}
.subj .si{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:21px;flex:none;box-shadow:inset 0 1px 2px rgba(255,255,255,.55),inset 0 -2px 5px rgba(0,0,0,.07);}
.subj h3{font-size:16px;font-weight:800;} .subj h3 .tag{font-size:11px;font-weight:700;padding:2px 7px;border-radius:6px;margin-left:6px;vertical-align:middle;}
.tag-stem{background:var(--leaf-100);color:var(--leaf-700);} .tag-non{background:var(--sky-100);color:var(--sky-700);}
.subj p{font-size:14px;color:var(--ink-soft);margin-top:2px;}

/* ---------- data / bars ---------- */
.bars{display:flex;flex-direction:column;gap:11px;margin-top:8px;}
.bar-row{display:grid;grid-template-columns:96px 1fr 54px;align-items:center;gap:10px;font-size:13px;}
.bar-row .lab{font-weight:600;color:var(--ink-soft);}
.bar-track{display:block;height:22px;background:var(--leaf-100);border-radius:6px;overflow:hidden;}
.bar-fill{display:block;height:100%;min-width:4px;border-radius:6px;}
.bar-row .num{font-weight:800;font-variant-numeric:tabular-nums;text-align:right;}
.thr-note{font-size:13px;color:var(--mute);margin-top:14px;}

/* ---------- cost ---------- */
.cost-total{display:flex;align-items:baseline;gap:10px;margin:6px 0 16px;}
.cost-total .rm{font-size:40px;font-weight:900;color:var(--leaf-700);}
.cost-total .sub{font-size:14px;color:var(--mute);}
.cost-list{font-size:14px;color:var(--ink-soft);}
.cost-list li{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px dashed var(--line);}
.cost-list li:last-child{border:0;}
.eco-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px;}
.eco-card{background:var(--leaf-50);border:1px solid var(--leaf-100);border-radius:14px;padding:16px;}
.eco-card .ei{font-size:24px;} .eco-card h3{font-size:14px;font-weight:800;margin:6px 0 2px;} .eco-card p{font-size:12.5px;color:var(--ink-soft);}

/* ---------- team / footer ---------- */
.team-grid{display:flex;flex-wrap:wrap;gap:12px;}
.team-card{flex:1;min-width:104px;text-align:center;background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 12px;box-shadow:var(--shadow-sm);}
.team-card .av{width:56px;height:56px;border-radius:50%;margin:0 auto 10px;background:var(--leaf-100);display:flex;align-items:center;justify-content:center;font-size:24px;}
.team-card .r{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);}
.team-card .n{font-size:17px;font-weight:800;margin-top:3px;}
footer{background:var(--ink);color:#94A3B8;padding:40px 22px;text-align:center;font-size:13px;}
footer .big{color:#fff;font-weight:800;font-size:16px;margin-bottom:8px;}
footer .theme{color:var(--leaf-300);font-style:italic;margin-top:10px;}

/* ---------- desktop niceties ---------- */
@media(min-width:760px){
  section{padding:92px 22px;}
  h2.title{font-size:40px;}
  .subj-grid{grid-template-columns:1fr 1fr;}
  .hero h1{font-size:66px;}
}

/* ============================================================
   v2 — living corn, challenge, flow, gallery, photos, feedback
   ============================================================ */

/* A: living corn + weather in the simulator soil */
/* continuous-health SVG corn: one --health (0..1) drives droop + colour (colours
   are set in JS for universal support; droop eases via transform transitions). */
@property --health{syntax:'<number>';inherits:true;initial-value:1;}
.soil-vis{height:120px;}
.soil-vis .corn{
  --health:1;
  --droop:calc((1 - var(--health)) * 20deg);
  --leaf-lite:#86EFAC;--leaf-dark:#16A34A;--husk-lite:#DCFCE7;--husk-dark:#15803D;
  position:absolute;left:32%;bottom:2px;transform:translateX(-50%);z-index:2;overflow:visible;
  transition:--health .45s ease;
  filter:saturate(calc(.55 + var(--health)*.45));
}
/* gradient stop colours set via CSS — var() is unreliable inside SVG stop-color
   ATTRIBUTES (Safari renders them black -> invisible corn on the dark box). */
.soil-vis .corn .st-leaf-lite{stop-color:var(--leaf-lite);}
.soil-vis .corn .st-leaf-dark{stop-color:var(--leaf-dark);}
.soil-vis .corn .st-husk-lite{stop-color:var(--husk-lite);}
.soil-vis .corn .st-husk-dark{stop-color:var(--husk-dark);}
.soil-vis .corn .plant{transform-box:view-box;transform-origin:50% 100%;transform:rotate(var(--droop));transition:transform .45s ease;}
.soil-vis .corn .leaf{transform-box:fill-box;transition:transform .45s ease;}
.soil-vis .corn .leaf-l1{transform-origin:0% 50%;transform:rotate(calc(var(--droop) *  1.6));}
.soil-vis .corn .leaf-r1{transform-origin:100% 50%;transform:rotate(calc(var(--droop) * -1.6));}
.soil-vis .corn .leaf-l2{transform-origin:0% 50%;transform:rotate(calc(var(--droop) *  1.2));}
.soil-vis .corn .leaf-r2{transform-origin:100% 50%;transform:rotate(calc(var(--droop) * -1.2));}
.soil-vis .corn .leaf-l3{transform-origin:0% 50%;transform:rotate(calc(var(--droop) *  0.8));}
.soil-vis .corn .leaf-r3{transform-origin:100% 50%;transform:rotate(calc(var(--droop) * -0.8));}
.soil-vis .corn .cob{transform-box:fill-box;transform-origin:50% 0%;transform:rotate(calc(var(--droop) * 0.6));transition:transform .45s ease;}
.soil-vis .corn .mound{fill:rgba(0,0,0,.28);}
.soil-vis .corn .kernels circle{fill:var(--sun-300);}
.soil-vis .corn .silk{stroke:var(--sun-400);stroke-width:1.4;stroke-linecap:round;fill:none;}
.soil-vis .corn .tassel path{stroke:var(--leaf-dark);stroke-width:1.6;stroke-linecap:round;}
.soil-vis .corn .rain{opacity:0;}
.soil-vis .corn.watering .rain{opacity:1;}
.soil-vis .corn .rdrop{fill:var(--sky-400);opacity:0;}
.soil-vis .corn.watering .plant{animation:cornSip 1.6s ease-in-out infinite;}
@keyframes cornSip{0%,100%{transform:rotate(var(--droop)) translateY(0);}50%{transform:rotate(var(--droop)) translateY(-3px) scaleY(1.015);}}
.soil-vis .corn.watering .r1{animation:cornDrop 1.1s linear infinite;}
.soil-vis .corn.watering .r2{animation:cornDrop 1.1s linear .35s infinite;}
.soil-vis .corn.watering .r3{animation:cornDrop 1.1s linear .7s infinite;}
@keyframes cornDrop{0%{opacity:0;transform:translateY(0);}15%{opacity:.95;}100%{opacity:0;transform:translateY(86px);}}
@media (prefers-reduced-motion:reduce){
  .soil-vis .corn,.soil-vis .corn .plant,.soil-vis .corn .leaf,.soil-vis .corn .cob{transition:none;}
  .soil-vis .corn.watering .plant{animation:none;transform:rotate(var(--droop));}
  .soil-vis .corn.watering .rdrop{animation:none;}
  .soil-vis .corn.watering .rain{opacity:1;}
}
.soil-vis .weather{position:absolute;right:10px;top:8px;font-size:20px;z-index:2;}
.challenge{margin-top:18px;display:flex;flex-wrap:wrap;align-items:center;gap:12px;}
.challenge button{background:var(--sun-400);color:#3a2a00;border:0;border-radius:12px;padding:10px 18px;font-weight:800;font-size:14px;cursor:pointer;}
.challenge button:disabled{opacity:.55;cursor:default;}
.challenge-msg{font-size:13px;color:#cbd5e1;font-weight:600;}

/* A: flow diagram pulse when pump is on */
.flowchain.flowing .farrow{color:var(--leaf-500);animation:flowpulse .9s ease-in-out infinite;}
@keyframes flowpulse{0%,100%{opacity:.3;transform:translateY(-2px);}50%{opacity:1;transform:translateY(3px);}}

/* B: team avatars + Encik photo (injected only when the file loads) */
.team-card .av{position:relative;overflow:hidden;}
.av-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%;}
.av.has-photo{color:transparent;}
.team-card .av.has-photo{width:100%;height:auto;aspect-ratio:3/4;border-radius:14px;margin:0 auto 10px;background:var(--leaf-50);}
.team-card .av.has-photo .av-img{border-radius:14px;}
.photo-ph{position:relative;overflow:hidden;}
.ph-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.photo-ph.has-photo{padding:0;border-style:solid;aspect-ratio:16/9;}
.photo-ph.has-photo .ic,.photo-ph.has-photo>div{display:none;}

/* B: build-journey gallery (horizontal swipe) */
.gallery{display:flex;gap:14px;overflow-x:auto;padding-bottom:12px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;}
.gcard{flex:0 0 78%;max-width:300px;scroll-snap-align:start;}
.gimg{aspect-ratio:4/3;border-radius:14px;overflow:hidden;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm);display:flex;align-items:center;justify-content:center;}
.gimg img{width:100%;height:100%;object-fit:cover;}
.gimg.ph{background:var(--leaf-50);border:2px dashed var(--leaf-300);}
.gic{font-size:30px;opacity:.55;}
.gcard figcaption{font-size:13px;font-weight:600;color:var(--ink-soft);margin-top:9px;line-height:1.4;}
@media(min-width:760px){.gcard{flex-basis:46%;}}

/* D: feedback widgets */
.fb-grid{display:grid;grid-template-columns:1fr;gap:14px;margin:6px 0 14px;}
@media(min-width:560px){.fb-grid{grid-template-columns:1.5fr 1fr;}}
.fb-rate h3,.fb-react h3,.fb-book h3{font-size:15px;font-weight:800;margin-bottom:12px;}
.bm-q{font-weight:600;color:var(--mute);font-size:13px;}
.stars{display:flex;gap:8px;margin:2px 0 12px;}
.star{background:none;border:0;padding:4px;min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;line-height:1;font-size:30px;color:#D4D4D8;cursor:pointer;transition:transform .12s ease,color .12s ease;}
.star.on{color:var(--sun-400);}
.star:hover,.star:focus-visible{transform:scale(1.14);outline:none;}
.star:focus-visible{color:var(--sun-500);}
.fb-stat{font-weight:800;color:var(--leaf-700);font-variant-numeric:tabular-nums;}
.fb-visits{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;}
.big-num{font-size:46px;font-weight:900;line-height:1;color:var(--leaf-600);font-variant-numeric:tabular-nums;}
.fb-cap{font-size:13px;font-weight:600;color:var(--mute);}
.fb-react{margin-bottom:14px;}
.emoji-wall{display:flex;flex-wrap:wrap;gap:8px;}
.emoji{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:44px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:8px 13px;font-size:19px;cursor:pointer;transition:transform .1s ease,border-color .1s ease;}
.emoji:hover{transform:translateY(-2px);border-color:var(--leaf-300);}
.emoji span{font-size:12px;color:var(--mute);font-variant-numeric:tabular-nums;}
.emoji.active{border-color:var(--leaf-500);background:var(--leaf-50);}
.emoji.active span{color:var(--leaf-700);font-weight:700;}
.emoji:focus-visible,.fb-book button:focus-visible{outline:2px solid var(--sky-500);outline-offset:2px;}
.fb-book input,.fb-book textarea{width:100%;padding:11px 13px;margin-bottom:10px;border:1px solid var(--line);border-radius:12px;background:var(--paper);font:inherit;}
.fb-book textarea{min-height:74px;resize:vertical;}
.fb-row{display:flex;align-items:center;gap:14px;}
.fb-book button{background:var(--leaf-600);color:#fff;border:0;border-radius:12px;padding:11px 24px;font-weight:800;font-size:15px;cursor:pointer;}
.fb-book button:hover{background:var(--leaf-700);}
.fb-note{font-size:13px;color:var(--mute);}
/* ===== message wall — botanical depth garden (horizontal strolling bed) ===== */
.gardenrow{position:relative;height:272px;margin-top:18px;border-radius:18px;overflow:hidden;
  background:linear-gradient(180deg,var(--sky-50),var(--leaf-50) 56%);box-shadow:var(--shadow-sm);isolation:isolate;}
@media(min-width:900px){.gardenrow{height:300px;}}

/* layer 0: SVG scenery (sun + hills) — never scrolls. CSS-driven stops only (Safari black-stop gotcha). */
.gardenrow .scenery{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;}
.scenery .st-sun-a{stop-color:var(--sun-100);}
.scenery .st-sun-b{stop-color:var(--sun-50);}
.scenery .st-sun-t{stop-color:var(--sun-50);stop-opacity:0;}
.scenery .hill-back{fill:var(--sky-100);opacity:.7;}
.scenery .hill-front{fill:var(--leaf-100);}
.scenery .sun{transform-origin:center;animation:sun-breath 12s ease-in-out infinite;}

/* layer 1: tilled-soil ridge pinned to bottom (on-brand leaf tokens, no brown) */
.gardenrow::before{content:"";position:absolute;left:0;right:0;bottom:0;height:60px;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,var(--leaf-300) 0,var(--leaf-100) 3px,var(--leaf-100) 100%),
    repeating-linear-gradient(90deg,transparent 0 11px,rgba(20,83,45,.05) 11px 12px);
  box-shadow:inset 0 6px 14px -8px rgba(20,83,45,.35),inset 0 2px 0 rgba(255,255,255,.5);}

/* layer 2: the scroller (#msgList) */
.bed{position:relative;z-index:2;height:100%;display:flex;align-items:flex-end;gap:18px;
  padding:18px 22px 0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;
  scroll-padding-inline:22px;-webkit-overflow-scrolling:touch;scrollbar-width:none;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 24px,#000 calc(100% - 40px),transparent 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 24px,#000 calc(100% - 40px),transparent 100%);}
.bed::-webkit-scrollbar{display:none;}
@media(min-width:900px){.bed{padding:18px 12% 0;scrollbar-width:thin;}.bed::-webkit-scrollbar{display:block;height:6px;}.bed::-webkit-scrollbar-thumb{background:var(--line);border-radius:6px;}}

/* a plant = card on a curved stalk, bottom-aligned onto the soil */
.sprout{flex:0 0 clamp(208px,72vw,250px);scroll-snap-align:center;display:flex;flex-direction:column;
  align-items:center;justify-content:flex-end;height:100%;padding-bottom:28px;position:relative;
  transform-origin:bottom center;}

/* depth via 3-cycle: front crisp+tall, mid scaled, back small+pale (NO blur — keeps CJK crisp) */
.sprout:nth-of-type(3n+2){transform:scale(.94);}
.sprout:nth-of-type(3n){transform:scale(.88);opacity:.92;}
.sprout.h-1 .stalk{height:46px;} .sprout.h-2 .stalk{height:64px;} .sprout.h-3 .stalk{height:86px;}

/* seed-packet leaf card */
.bloom{position:relative;width:100%;background:var(--card);border:1px solid var(--leaf-300);
  border-radius:16px 16px 16px 5px;padding:11px 13px 9px 16px;min-height:84px;
  display:flex;flex-direction:column;gap:7px;
  box-shadow:var(--shadow-sm),0 8px 20px -12px rgba(34,197,94,.45);}
.bloom::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:4px;border-radius:4px;background:var(--leaf-300);} /* seam */
.bloom-body{font:450 13.5px/1.42 'Outfit','Noto Sans SC',sans-serif;color:var(--ink-soft);margin:0;
  display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;}
.bloom.open .bloom-body{-webkit-line-clamp:unset;overflow:visible;}
.bloom.emoji-only .bloom-body{-webkit-line-clamp:2;text-align:center;font-size:20px;line-height:1.3;}
.bloom-name{display:flex;align-items:center;gap:6px;margin-top:auto;padding-top:6px;border-top:1px solid var(--line);
  font:400 14px/1 'Patrick Hand',cursive;color:var(--leaf-700);}
.bloom-name .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:24ch;}
.bloom-name .sprig{flex:0 0 auto;width:13px;height:13px;fill:var(--leaf-500);}

/* tints — colour in border / seam / name only; body stays white for readability */
.c-sun .bloom{border-color:var(--sun-300);box-shadow:var(--shadow-sm),0 8px 20px -12px rgba(250,204,21,.45);}
.c-sun .bloom::before{background:var(--sun-300);} .c-sun .bloom-name{color:var(--sun-700);} .c-sun .bloom-name .sprig{fill:var(--sun-500);}
.c-sky .bloom{border-color:var(--sky-100);box-shadow:var(--shadow-sm),0 8px 20px -12px rgba(14,165,233,.40);}
.c-sky .bloom::before{background:var(--sky-400);} .c-sky .bloom-name{color:var(--sky-700);} .c-sky .bloom-name .sprig{fill:var(--sky-500);}

/* curved stalk + ground shadow so plants are rooted, not floating */
.stalk{display:block;width:34px;margin:0 auto;color:var(--leaf-600);}
.stalk path{stroke:currentColor;stroke-width:3;stroke-linecap:round;fill:none;}
.sprout::after{content:"";position:absolute;bottom:22px;left:50%;width:56px;height:9px;transform:translateX(-50%);
  border-radius:50%;background:radial-gradient(closest-side,rgba(20,83,45,.16),transparent);}

/* 'newest' flag on first plant only */
.bed .sprout:first-child .bloom::after{content:"🌱 newest";position:absolute;top:-12px;left:8px;
  font:400 11px 'Patrick Hand',cursive;color:var(--leaf-700);background:rgba(255,255,255,.92);
  border:1px solid var(--leaf-300);border-radius:99px;padding:1px 8px;box-shadow:var(--shadow-sm);}

/* dewdrop on a freshly-sprouted card */
.sprout.sprouting .bloom .dew{position:absolute;top:-4px;right:10px;width:9px;height:11px;
  border-radius:50% 50% 50% 50%/40% 40% 60% 60%;background:radial-gradient(at 35% 30%,#fff,var(--sky-400));
  opacity:.9;animation:dew-fade 2.4s ease-out forwards;}

/* pinned (non-scrolling) chips — siblings of .bed so the mask never clips/fades them */
.bed-count{position:absolute;left:12px;top:12px;z-index:3;pointer-events:none;
  font:400 12px 'Patrick Hand',cursive;color:var(--leaf-700);background:rgba(255,255,255,.85);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--leaf-300);
  border-radius:99px;padding:4px 11px;box-shadow:var(--shadow-sm);}
.bed-count:empty{display:none;}
.bed-hint{position:absolute;right:12px;bottom:12px;z-index:3;pointer-events:none;
  font:400 12px 'Patrick Hand',cursive;color:var(--leaf-700);background:rgba(255,255,255,.85);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--leaf-300);
  border-radius:99px;padding:4px 11px;box-shadow:var(--shadow-sm);
  animation:hint-nudge 2s ease-out infinite;transition:opacity .35s ease;}
.gardenrow.scrolled .bed-hint,.gardenrow.few .bed-hint{opacity:0;}
.bed-bee{position:absolute;z-index:2;left:-30px;bottom:120px;width:16px;height:16px;pointer-events:none;
  animation:bee-cross 22s linear infinite;}

.garden-empty{position:absolute;inset:0;display:grid;place-items:center;z-index:2;
  color:var(--leaf-700);font:400 16px 'Patrick Hand',cursive;text-align:center;padding:0 24px;}

/* ---- motion ---- */
@keyframes grow-in{0%{opacity:0;transform:translateY(8px) scale(.96);}100%{opacity:1;transform:translateY(0) scale(1);}}
@keyframes stalk-rise{0%{transform:scaleY(.2);}100%{transform:scaleY(1);}}
.sprout.sprouting .bloom{animation:grow-in .56s cubic-bezier(.22,1,.36,1) both;animation-delay:.12s;}
.sprout.sprouting .stalk{transform-origin:bottom center;animation:stalk-rise .42s cubic-bezier(.22,1,.36,1) both;}

/* idle sway — ONLY while on-screen (.in-view set by IntersectionObserver). Scale preserved per depth row. */
@keyframes sway-front{from{transform:rotate(-.8deg);}to{transform:rotate(.8deg);}}
@keyframes sway-mid{from{transform:scale(.94) rotate(-.7deg);}to{transform:scale(.94) rotate(.7deg);}}
@keyframes sway-back{from{transform:scale(.88) rotate(-.6deg);}to{transform:scale(.88) rotate(.6deg);}}
.sprout.in-view{animation:sway-front var(--dur,7s) ease-in-out infinite alternate;animation-delay:calc(var(--i) * -.6s);}
.sprout.in-view:nth-of-type(3n+2){animation-name:sway-mid;--dur:8.4s;}
.sprout.in-view:nth-of-type(3n){animation-name:sway-back;--dur:9s;}

@keyframes sun-breath{0%,100%{opacity:.85;}50%{opacity:1;}}
@keyframes dew-fade{0%{opacity:.9;transform:translateY(0);}100%{opacity:0;transform:translateY(3px);}}
@keyframes hint-nudge{0%,100%{transform:translateX(0);}55%{transform:translateX(4px);}}
@keyframes bee-cross{0%{transform:translate(0,0);}25%{transform:translate(28vw,-14px);}50%{transform:translate(56vw,6px);}75%{transform:translate(84vw,-10px);}100%{transform:translate(115vw,0);}}

/* hover/tap: lean in to read (desktop booth laptop) */
@media(hover:hover){
  .sprout:hover{animation-play-state:paused;z-index:4;}
  .sprout:hover .bloom{transform:translateY(-4px);box-shadow:var(--shadow),0 14px 28px -14px rgba(34,197,94,.5);
    transition:transform .22s cubic-bezier(.22,1,.36,1),box-shadow .22s ease;}
}

@media(prefers-reduced-motion:reduce){
  .sprout,.sprout.in-view,.sprout.sprouting .bloom,.sprout.sprouting .stalk,
  .scenery .sun,.bed-hint,.bed-bee{animation:none!important;}
  .sprout.sprouting .bloom{animation:rm-fade .2s ease-out both!important;}
  .sprout.sprouting .dew{display:none;}
  .bed-bee{display:none;}
}
@keyframes rm-fade{from{opacity:0;}to{opacity:1;}}
.fb-offline{margin-top:16px;font-size:14px;color:var(--mute);}

/* hover physics — refined-playful: smooth lift + soft shadow, gentle childlike bounce */
.card,.fnode,.eco-card,.gcard{transition:transform .4s var(--bounce),box-shadow .4s var(--ease);}
.card:hover,.fnode:hover,.eco-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);}
.gimg img{transition:transform .6s var(--ease);}
.gcard:hover .gimg img{transform:scale(1.05);}
.team-card{transition:transform .4s var(--bounce),box-shadow .4s var(--ease);}
.team-card:hover{transform:translateY(-4px) scale(1.02);box-shadow:var(--shadow);}

/* playful chips — soft depth, gentle hover pop, slow idle float */
.chip{box-shadow:0 1px 2px rgba(15,23,42,.05);transition:transform .3s var(--bounce);}
.chip:hover{transform:translateY(-3px) scale(1.04);}
.hero .chip{animation:chipFloat 3.4s var(--ease) infinite;}
.hero .chip:nth-child(2){animation-delay:.5s;}
.hero .chip:nth-child(3){animation-delay:1s;}
@keyframes chipFloat{0%,100%{transform:translateY(0);}50%{transform:translateY(-5px);}}

@media (prefers-reduced-motion:reduce){
  .hero .chip,.scroll-cue .dot::after,.sim.on .drop,.flowchain.flowing .farrow{animation:none;}
  .card,.fnode,.eco-card,.gcard,.team-card,.chip{transition:none;}
}

/* ============================================================
   v3 — desktop / wide-screen responsive (2026-06-22 audit)
   ============================================================ */
.hero-inner{width:100%;max-width:680px;margin:0 auto;display:flex;flex-direction:column;}
@media(min-width:760px){
  /* even-height rows so a short item doesn't leave a ragged vertical gap */
  .ideal{display:grid;grid-template-columns:1fr 1fr;gap:20px 32px;align-items:start;grid-auto-rows:1fr;}
  .ideal .istep:nth-child(5){grid-column:1 / -1;}
  .subj-grid{align-items:start;grid-auto-rows:1fr;}
  .gallery{display:grid;grid-template-columns:repeat(2,1fr);overflow:visible;scroll-snap-type:none;}
  .gcard{flex-basis:auto;max-width:none;}
}
/* cost: keep the price list + eco grid STACKED on all sizes — the 2-col split
   left the short price list and the taller eco grid visually unbalanced on desktop */
@media(min-width:900px){
  .flowchain{flex-direction:row;align-items:stretch;flex-wrap:nowrap;gap:8px;}
  .fnode{flex:1;flex-direction:column;text-align:center;gap:8px;}
  .farrow{align-self:center;font-size:0;}
  .farrow::after{content:"\2192";font-size:18px;}
}
@media(min-width:1024px){
  :root{--maxw:960px;}
  section{padding:104px 32px;}
  .subj-grid{grid-template-columns:repeat(3,1fr);}
}
/* bigger thumb for touch (keep the gradient track visible — no padding/clip,
   which collapses the track to 0 height under box-sizing:border-box) */
input[type=range]::-webkit-slider-thumb{width:34px;height:34px;}
input[type=range]::-moz-range-thumb{width:34px;height:34px;}
.challenge button{min-height:44px;}
/* keep footer text in the same column on wide screens */
footer{padding-left:max(22px,calc((100% - var(--maxw))/2));padding-right:max(22px,calc((100% - var(--maxw))/2));}
