:root{
    --cream:#FBF4E9; --paper:#ffffff; --panel:#FFFDF8;
    --green:#2E6A3A; --green-2:#3A7D44; --coral:#D9655B; --coral-2:#E8837A; --sun:#E0A52E;
    --ink:#211E18; --body:#4f4a40; --muted:#8a8073; --line:#e7ddcc; --hair:#efe7d8;
    --disp:"Fraunces",Georgia,serif; --sans:"Plus Jakarta Sans",system-ui,sans-serif;
    --ease:cubic-bezier(.2,.7,.2,1); --shadow:0 30px 70px -40px rgba(46,106,58,.55);
    --sel:#DDEFE0;
  }
  :root[data-theme="dark"]{
    --cream:#0F120F; --paper:#171b16; --panel:#1b201a;
    --green:#7FD08C; --green-2:#8FD69B; --coral:#F0978D; --coral-2:#F3A99F; --sun:#F2C664;
    --ink:#F3EEE3; --body:#cfc8ba; --muted:#938b7c; --line:#2b312a; --hair:#242a23;
    --shadow:0 34px 80px -46px rgba(0,0,0,.85); --sel:#223326;
  }
  @media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
    --cream:#0F120F; --paper:#171b16; --panel:#1b201a;
    --green:#7FD08C; --green-2:#8FD69B; --coral:#F0978D; --coral-2:#F3A99F; --sun:#F2C664;
    --ink:#F3EEE3; --body:#cfc8ba; --muted:#938b7c; --line:#2b312a; --hair:#242a23;
    --shadow:0 34px 80px -46px rgba(0,0,0,.85); --sel:#223326;
  }}
  *{box-sizing:border-box;margin:0;padding:0}
  ::selection{background:var(--sel)}
  html{scroll-behavior:smooth}
  body{background:var(--cream);color:var(--body);font-family:var(--sans);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
  a{color:inherit;text-decoration:none}
  .wrap{max-width:1200px;margin:0 auto;padding:0 28px}
  .skip{position:absolute;left:-999px}.skip:focus{left:16px;top:16px;background:var(--green);color:#fff;padding:10px;border-radius:8px;z-index:40}
  h1,h2,h3{font-family:var(--disp);color:var(--ink);font-weight:560;line-height:1.02;letter-spacing:-.015em;font-optical-sizing:auto}
  .serif-it{font-style:italic;font-weight:460}

  /* nav */
  header{position:sticky;top:0;z-index:30;backdrop-filter:blur(12px);background:color-mix(in srgb,var(--cream) 82%,transparent);border-bottom:1px solid transparent;transition:border-color .3s}
  header.scrolled{border-color:var(--hair)}
  .nav{display:flex;align-items:center;justify-content:space-between;height:74px}
  .brand{display:flex;align-items:center;gap:11px;font-family:var(--disp);font-weight:600;font-size:22px;color:var(--ink);letter-spacing:-.02em}
  .brand img{width:34px;height:34px;border-radius:9px;display:block}
  .nav .menu{display:flex;gap:30px;align-items:center}
  .nav .menu a{font-weight:600;font-size:15px;color:var(--body);position:relative}
  .nav .menu a:hover{color:var(--ink)}
  .nav .menu a::after{content:"";position:absolute;left:0;bottom:-6px;height:2px;width:0;background:var(--coral);transition:width .3s var(--ease)}
  .nav .menu a:hover::after{width:100%}
  .icbtn{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--paper);color:var(--ink);cursor:pointer;font-size:16px;display:grid;place-items:center;transition:transform .2s var(--ease),border-color .2s}
  .icbtn:hover{transform:translateY(-2px);border-color:var(--coral)}
  .nav .book{font-weight:600;font-size:15px;color:var(--ink);border-bottom:2px solid var(--coral);padding-bottom:2px}
  @media(max-width:820px){.nav .menu a.navlink{display:none}}

  /* magic canvas */
  #magic{position:fixed;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
  @media(prefers-reduced-motion:reduce){#magic{display:none}}

  main{position:relative;z-index:2}

  /* hero */
  .hero{position:relative;padding:70px 0 90px;overflow:clip}
  .hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
  @media(max-width:900px){.hero-grid{grid-template-columns:1fr;gap:38px}}
  .tag{display:inline-flex;align-items:center;gap:9px;font-size:13.5px;font-weight:600;color:var(--green);letter-spacing:.02em;margin-bottom:26px}
  .tag .ln{width:30px;height:1px;background:var(--green);opacity:.5}
  h1.hero-h{font-size:clamp(44px,6.4vw,82px);line-height:.98;letter-spacing:-.025em}
  h1.hero-h .w{display:inline-block;opacity:0;transform:translateY(26px) rotate(2deg);animation:wordin .8s var(--ease) forwards}
  h1.hero-h .em{font-style:italic;font-weight:440;color:var(--green)}
  h1.hero-h .emc{font-style:italic;font-weight:440;color:var(--coral)}
  @keyframes wordin{to{opacity:1;transform:none}}
  @media(prefers-reduced-motion:reduce){h1.hero-h .w{opacity:1;transform:none;animation:none}}
  .hero-sub{font-size:19px;max-width:520px;margin-top:26px}
  .hero-actions{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin-top:34px}
  .btn{font-weight:600;font-size:16px;padding:15px 28px;border-radius:14px;display:inline-flex;align-items:center;gap:10px;transition:transform .25s var(--ease),box-shadow .25s,background .2s;position:relative;overflow:hidden}
  .btn.p{background:var(--green);color:#fff;box-shadow:0 18px 34px -18px var(--green)}
  .btn.p:hover{transform:translateY(-3px);box-shadow:0 24px 44px -20px var(--green)}
  .btn.g{color:var(--ink)}
  .btn.g .arr{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;transition:transform .25s var(--ease),background .2s,color .2s}
  .btn.g:hover .arr{background:var(--coral);color:#fff;transform:translate(3px,-3px)}

  /* hero media */
  .hero-media{position:relative}
  .frame{position:relative;border-radius:26px;overflow:hidden;box-shadow:var(--shadow);aspect-ratio:4/5;background:var(--panel)}
  .frame video{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.02)}
  .frame .scrim{position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(20,30,20,.35));pointer-events:none}
  .vtoggle{position:absolute;right:16px;bottom:16px;z-index:3;border:0;background:rgba(255,255,255,.92);color:#211E18;width:42px;height:42px;border-radius:50%;cursor:pointer;font-size:14px}
  .orbit{position:absolute;inset:-5% -5%;border:1px dashed var(--coral);border-radius:50%;opacity:.4;animation:spin 40s linear infinite;pointer-events:none}
  @keyframes spin{to{transform:rotate(360deg)}}
  .quote-float{position:absolute;left:-26px;bottom:40px;background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:16px 18px;max-width:230px;box-shadow:var(--shadow);font-family:var(--disp);font-style:italic;font-size:15px;color:var(--ink);line-height:1.35}
  .quote-float small{display:block;font-family:var(--sans);font-style:normal;font-weight:600;font-size:12px;color:var(--muted);margin-top:8px}
  @media(max-width:900px){.quote-float{left:10px}}
  @media(prefers-reduced-motion:reduce){.orbit{animation:none}}

  /* marquee belief strip */
  .strip{border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);padding:22px 0;overflow:hidden;background:color-mix(in srgb,var(--panel) 60%,transparent)}
  .marq{display:flex;gap:46px;width:max-content;animation:slide 34s linear infinite;font-family:var(--disp);font-size:22px;color:var(--ink);white-space:nowrap;align-items:center}
  .marq .s{color:var(--coral);font-size:12px}
  .marq .mi{font-style:italic;color:var(--green)}
  @keyframes slide{to{transform:translateX(-50%)}}
  @media(prefers-reduced-motion:reduce){.marq{animation:none}}

  /* section intro */
  section{padding:96px 0}
  .lead-row{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:baseline}
  .kick{font-size:13px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--coral);white-space:nowrap}
  .kick::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--coral);margin-right:10px;vertical-align:middle}
  .h2{font-size:clamp(30px,4.6vw,52px);line-height:1.02;max-width:16ch}
  .sec-lead{font-size:19px;max-width:560px;margin-top:18px;color:var(--body)}

  /* reveal */
  .rv{opacity:0;transform:translateY(30px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
  .rv.in{opacity:1;transform:none}
  .rv.d1{transition-delay:.1s}.rv.d2{transition-delay:.2s}
  @media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none}}

  /* STACKING TOOLS */
  .stack-head{margin-bottom:10px}
  .stack{position:relative}
  .stack-card{position:sticky;top:120px;margin:0 auto 40px;max-width:1040px;background:var(--panel);border:1px solid var(--line);border-radius:28px;overflow:hidden;box-shadow:var(--shadow);transform-origin:center top;will-change:transform}
  .sc-inner{display:grid;grid-template-columns:1fr 1.05fr;min-height:420px}
  @media(max-width:820px){.sc-inner{grid-template-columns:1fr}}
  .sc-copy{padding:48px}
  .sc-no{font-family:var(--disp);font-size:15px;color:var(--muted);letter-spacing:.1em}
  .state{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--green);margin:18px 0 12px}
  .state.beta{color:var(--sun)} .state.soon{color:var(--muted)}
  .state .d{width:8px;height:8px;border-radius:50%;background:currentColor}
  .sc-copy h3{font-size:clamp(28px,3.4vw,40px);margin-bottom:14px}
  .sc-copy p{font-size:16.5px;max-width:42ch}
  .sc-feat{list-style:none;margin:20px 0 26px;display:grid;gap:9px}
  .sc-feat li{font-size:14.5px;color:var(--body);padding-left:24px;position:relative}
  .sc-feat li::before{content:"";position:absolute;left:0;top:9px;width:11px;height:11px;border-radius:50% 50% 50% 50%/62% 62% 38% 38%;background:linear-gradient(150deg,var(--coral),var(--green));transform:rotate(-15deg)}
  .sc-link{font-weight:600;color:var(--green);display:inline-flex;gap:8px;border-bottom:2px solid var(--coral);padding-bottom:3px}
  .sc-media{position:relative;background:linear-gradient(150deg,color-mix(in srgb,var(--green) 10%,var(--panel)),var(--panel));display:grid;place-items:center;overflow:hidden}
  .sc-media img{width:86%;border-radius:14px;box-shadow:0 30px 60px -30px rgba(0,0,0,.5);transform:translateY(0);transition:transform .6s var(--ease)}
  .stack-card:hover .sc-media img{transform:translateY(-8px) scale(1.01)}
  .sc-media .glyph{font-family:var(--disp);font-size:120px;color:color-mix(in srgb,var(--green) 22%,transparent)}

  /* impact */
  .impact{background:var(--green);border-radius:34px;padding:72px 48px;color:#eafaed;position:relative;overflow:hidden}
  :root[data-theme="dark"] .impact{background:#17331d}
  @media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .impact{background:#17331d}}
  .impact h2{color:#fff}
  .ig{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin-top:40px}
  @media(max-width:720px){.ig{grid-template-columns:1fr;gap:28px}}
  .ig .n{font-family:var(--disp);font-size:clamp(44px,6vw,72px);color:#fff;line-height:1}
  .ig .l{color:#c6e6cd;margin-top:10px;font-size:15px}

  /* quotes */
  .quotes{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:40px}
  @media(max-width:720px){.quotes{grid-template-columns:1fr}}
  .qc{border-left:2px solid var(--coral);padding:6px 0 6px 28px}
  .qc q{font-family:var(--disp);font-style:italic;font-size:22px;color:var(--ink);line-height:1.35;display:block}
  .qc .who{margin-top:16px;font-weight:600;font-size:14px;color:var(--muted)}

  /* course */
  .course{display:grid;grid-template-columns:.8fr 1.2fr;gap:0;border:1px solid var(--line);border-radius:28px;overflow:hidden;background:var(--panel)}
  @media(max-width:720px){.course{grid-template-columns:1fr}}
  .course .cl{padding:44px;background:linear-gradient(160deg,color-mix(in srgb,var(--coral) 12%,var(--panel)),var(--panel))}
  .course .cr{padding:44px}
  .course h3{font-size:30px;margin:14px 0}
  .tp{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
  .tp span{font-size:13px;font-weight:600;color:var(--green);border:1px solid var(--line);padding:5px 14px;border-radius:999px}

  /* final */
  .final{text-align:center;padding:120px 0 40px;position:relative}
  .final h2{font-size:clamp(36px,6vw,74px);line-height:1}
  .final p{font-size:19px;max-width:460px;margin:22px auto 0}
  .final .btn.p{margin-top:34px}

  footer{border-top:1px solid var(--hair);padding:48px 0 70px}
  .foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:20px;align-items:center}
  .foot .fb{font-family:var(--disp);font-size:22px;color:var(--ink)}
  .foot .fl{display:flex;gap:24px;flex-wrap:wrap;font-weight:600;font-size:14px}
  .foot .fl a{color:var(--green)}
  .foot small{display:block;color:var(--muted);font-weight:400;margin-top:6px;font-size:13px}
  a:focus-visible,button:focus-visible{outline:2px solid var(--coral);outline-offset:3px}

/* ---- shared page components (About / For Schools / Contact / 404 / Thanks) ---- */
.page-hero{padding:64px 0 36px}
.page-hero h1{font-size:clamp(40px,6vw,74px);line-height:.98;max-width:16ch}
.page-hero .em{font-style:italic;font-weight:440;color:var(--green)}
.page-hero .lead{font-size:20px;max-width:620px;margin-top:22px}

/* numbered editorial rows (beliefs, services) */
.rows{border-top:1px solid var(--line);margin-top:20px}
.row-item{display:grid;grid-template-columns:72px 1fr;gap:26px;padding:34px 0;border-bottom:1px solid var(--line)}
@media(max-width:680px){.row-item{grid-template-columns:1fr;gap:10px}}
.row-item .rn{font-family:var(--disp);font-size:26px;color:var(--coral);line-height:1}
.row-item h3{font-size:clamp(22px,2.6vw,30px);margin-bottom:10px}
.row-item p{font-size:16.5px;max-width:60ch}
.row-item .more{font-weight:600;color:var(--green);border-bottom:2px solid var(--coral);padding-bottom:2px;display:inline-block;margin-top:12px}

/* forms */
.form-wrap{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start}
@media(max-width:820px){.form-wrap{grid-template-columns:1fr;gap:30px}}
form.bw{background:var(--panel);border:1px solid var(--line);border-radius:24px;padding:34px;box-shadow:var(--shadow)}
form.bw .fld{margin-bottom:18px}
form.bw label{display:block;font-weight:600;font-size:13px;color:var(--muted);margin-bottom:7px;letter-spacing:.02em}
form.bw input,form.bw select,form.bw textarea{width:100%;font:inherit;font-size:16px;color:var(--ink);background:var(--cream);border:1px solid var(--line);border-radius:12px;padding:13px 15px;transition:border-color .2s}
form.bw input:focus,form.bw select:focus,form.bw textarea:focus{outline:none;border-color:var(--green)}
form.bw textarea{min-height:130px;resize:vertical}
form.bw button{font-family:var(--sans);font-weight:600;font-size:16px;background:var(--green);color:#fff;border:0;border-radius:12px;padding:15px 30px;cursor:pointer;box-shadow:0 16px 30px -18px var(--green);transition:transform .25s var(--ease)}
form.bw button:hover{transform:translateY(-2px)}
.aside h3{font-size:26px;margin-bottom:14px}
.aside p{font-size:16.5px;margin-bottom:14px}
.aside .mail{font-weight:600;color:var(--green);border-bottom:2px solid var(--coral);padding-bottom:2px}

/* detail list */
.details{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:18px;overflow:hidden;margin-top:30px}
@media(max-width:560px){.details{grid-template-columns:1fr}}
.details .d{background:var(--panel);padding:22px}
.details .dl{font-size:12.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.details .dv{font-family:var(--disp);font-size:19px;color:var(--ink);margin-top:7px}
.details .dv a{color:var(--green)}

/* 404 / thanks centre */
.centre{min-height:62vh;display:grid;place-content:center;text-align:center;gap:8px;padding:80px 0}
.centre h1{font-size:clamp(46px,9vw,110px);line-height:.95}
.centre p{font-size:19px;max-width:440px;margin:10px auto 0}
.centre .acts{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:28px}

/* in-dev list + live poster media (home product stack) */
.eco-list{list-style:none;margin:4px 0}
.eco-list li{padding:12px 0;border-bottom:1px solid var(--line);display:flex;gap:14px;align-items:baseline}
.eco-list li:last-child{border-bottom:0}
.eco-list .nm{font-family:var(--disp);font-weight:560;font-size:17px;color:var(--ink);min-width:160px}
.eco-list .ds{font-size:14.5px;color:var(--muted)}
@media(max-width:560px){.eco-list li{flex-direction:column;gap:2px}.eco-list .nm{min-width:0}}
.sc-media img.ph{width:74%;max-width:380px;box-shadow:none;border-radius:0}
.poster{width:100%;height:100%;min-height:360px;display:grid;place-content:center;text-align:center;gap:12px;background:linear-gradient(150deg,var(--coral),var(--green));color:#fff;padding:40px}
.poster .pt{font-family:var(--disp);font-size:clamp(30px,4vw,48px);line-height:1;color:#fff}
.poster .ps{font-weight:600;font-size:14px;opacity:.92;letter-spacing:.02em}
.foot small a{color:var(--green);text-decoration:none}.foot small a:hover{text-decoration:underline}
