@font-face{font-family:'Fredoka';font-weight:400 700;font-style:normal;font-display:swap;src:url('/assets/fonts/fredoka.woff2') format('woff2')}
@font-face{font-family:'Nunito Sans';font-weight:400 800;font-style:normal;font-display:swap;src:url('/assets/fonts/nunito.woff2') format('woff2')}
.fo-player{--pl-ink:var(--ink,#3f2e21);--pl-soft:var(--ink-soft,#7a6450);--pl-accent:var(--accent,#f4b22b);--pl-accent-deep:var(--accent-deep,#e89414);--pl-line:var(--line,#efe1ca);--pl-card:var(--card,#fffdf8);--pl-radius:var(--radius,22px);font-family:inherit;color:var(--pl-ink);display:flex;flex-direction:column;gap:12px;width:100%;max-width:680px;margin:0 auto}
.fo-pl-kicker{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--pl-accent-deep)}
.fo-pl-title{font-size:22px;line-height:1.12;font-weight:600;margin:2px 0 0;letter-spacing:-.01em}
.fo-pl-reps{display:flex;align-items:center;gap:11px;background:var(--pl-card);border:1px solid var(--pl-line);border-radius:13px;padding:11px 13px}
.fo-pl-reps-n{font-family:var(--serif,Georgia,serif);font-size:24px;font-weight:600;color:var(--pl-accent-deep);line-height:1}
.fo-pl-reps>span:last-child{font-size:13px;color:var(--pl-soft)}
.fo-pl-credit{display:flex;align-items:center;gap:10px;margin-top:2px}
.fo-pl-credit-m{width:34px;height:34px;border-radius:50%;background:var(--pl-accent);color:#2b1f0d;display:grid;place-items:center;font-weight:700;font-size:12px;flex:0 0 auto}
.fo-pl-credit-t{display:flex;flex-direction:column;font-size:13.5px;color:var(--pl-ink);font-weight:500}
.fo-pl-credit-r{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--pl-soft);font-weight:600}
.fo-pl-rotate{display:none;font-size:12px;color:var(--pl-soft);margin:0}
/* Stage owns the box: full column width × 16:9. The <video> must NOT size the
   stage — an unplayed video has a tiny intrinsic size (~300×150) and used to
   collapse the whole player until HLS attached. Absolute fill keeps the
   unplayed state the same size as playback. */
.fo-pl-stage{position:relative;width:100%;border-radius:var(--pl-radius);overflow:hidden;background:#000;aspect-ratio:16/9}
.fo-pl-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  pointer-events:none;transition:opacity .3s ease}
.fo-pl-poster.fo-pl-hid{opacity:0}
.fo-pl-video{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:contain;background:#000}
.fo-pl-wm{position:absolute;right:10px;bottom:12px;pointer-events:none;font-size:11px;color:rgba(255,255,255,.72);text-shadow:0 1px 3px rgba(0,0,0,.85);background:rgba(0,0,0,.22);padding:3px 8px;border-radius:6px;letter-spacing:.02em}
.fo-pl-play{position:absolute;inset:0;margin:auto;width:56px;height:56px;border-radius:50%;background:rgba(255,255,255,.92);color:var(--pl-accent-deep);display:grid;place-items:center;font-size:20px;padding-left:4px;cursor:pointer;transition:opacity .15s;box-shadow:0 6px 18px -6px rgba(0,0,0,.4)}
.fo-pl-err{color:#fff;padding:22px;text-align:center;font-size:14px}
.fo-pl-cams{display:flex;gap:6px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.fo-pl-cams::-webkit-scrollbar{display:none}
.fo-pl-cam{white-space:nowrap;flex:0 0 auto}
.fo-pl-cam{border:1px solid var(--pl-line);background:var(--pl-card);color:var(--pl-soft);font:inherit;font-size:13px;font-weight:600;padding:8px 13px;border-radius:11px;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.fo-pl-cam:hover{color:var(--pl-ink)}
.fo-pl-cam.on{background:var(--pl-accent);border-color:var(--pl-accent);color:#2b1f0d}
.fo-pl-narr{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fo-pl-listen{border:0;background:var(--pl-accent);color:#2b1f0d;font:inherit;font-size:13px;font-weight:650;padding:8px 14px;border-radius:20px;cursor:pointer}
.fo-pl-listen[aria-pressed="true"]{background:var(--pl-accent-deep);color:#fff}
.fo-pl-listen.muted{opacity:.5}
.fo-pl-how{font-size:15px;line-height:1.55;color:var(--pl-ink)}
.fo-pl-how p{margin:0 0 10px}
.fo-pl-done{appearance:none;border:0;font:inherit;font-size:15px;font-weight:650;cursor:pointer;background:var(--green,#5f8a4f);color:#fff;padding:13px;border-radius:12px;text-align:center;box-shadow:0 6px 14px -6px var(--green,#5f8a4f)}
.fo-pl-done:hover{background:var(--green-deep,#4a7340)}
@media (orientation:portrait) and (max-width:520px){.fo-pl-rotate{display:flex;align-items:center;gap:6px}}
/* the overlay controls exist only in cinema; hidden everywhere else */
.fo-pl-oc{display:none}
/* phone landscape → cinema: the video fills the screen; camera / pause /
   mark-done float over it as FAINT overlays that brighten on tap (.show) */
@media (orientation:landscape) and (max-height:600px){
  .fo-pl-title,.fo-pl-rotate,.fo-pl-cams,.fo-pl-how,.fo-pl-done{position:absolute;left:-9999px}
  .fo-player{max-width:none;gap:0}
  .fo-pl-stage{position:fixed;inset:0;border-radius:0;aspect-ratio:auto;z-index:50}
  .fo-pl-wm{bottom:14px;right:14px}
  .fo-pl-play{width:64px;height:64px}
  .fo-pl-oc{display:block;position:absolute;inset:0;pointer-events:none;
    opacity:.45;transition:opacity .25s}
  .fo-pl-oc.show{opacity:1}
  .fo-pl-oc>*{pointer-events:auto}
  .fo-pl-oc-cams{position:absolute;top:14px;left:14px;display:flex;gap:6px;
    text-shadow:0 1px 4px rgba(0,0,0,.7)}
  .fo-pl-oc-cam{border:0;background:rgba(20,16,10,.42);color:#fff;font:inherit;font-size:12px;
    font-weight:600;padding:7px 12px;border-radius:20px;cursor:pointer;backdrop-filter:blur(3px)}
  .fo-pl-oc-cam.on{background:var(--pl-accent);color:#2b1f0d}
  .fo-pl-oc-close{position:absolute;top:12px;right:14px;border:0;width:40px;height:40px;
    border-radius:50%;background:rgba(20,16,10,.42);color:#fff;font-size:16px;cursor:pointer;
    backdrop-filter:blur(3px);line-height:1}
  .fo-pl-oc-pause{position:absolute;bottom:16px;left:16px;border:0;width:44px;height:44px;
    border-radius:50%;background:rgba(20,16,10,.42);color:#fff;font-size:13px;cursor:pointer;
    backdrop-filter:blur(3px)}
  .fo-pl-oc-done{position:absolute;bottom:16px;right:16px;border:0;font:inherit;font-size:13px;
    font-weight:650;color:#fff;background:rgba(95,138,79,.72);padding:11px 16px;border-radius:22px;
    cursor:pointer;backdrop-filter:blur(3px)}
  /* Closed out of cinema (welcome ✕): drop the video back inline even though the
     phone is still sideways, and hide the overlay controls. */
  .fo-player.fo-pl-exited{width:100%;max-width:680px;margin:0 auto;gap:12px}
  .fo-player.fo-pl-exited .fo-pl-title,.fo-player.fo-pl-exited .fo-pl-cams,
  .fo-player.fo-pl-exited .fo-pl-how{position:static;left:auto}
  .fo-player.fo-pl-exited .fo-pl-stage{position:relative;inset:auto;z-index:auto;
    width:100%;aspect-ratio:16/9;border-radius:var(--pl-radius)}
  .fo-player.fo-pl-exited .fo-pl-oc{display:none}
}
/* Narration is being synthesized (uncached language → a slow TTS call): the
   Listen button shows a spinner instead of looking dead. */
.fo-pl-listen.loading{position:relative;color:transparent}
.fo-pl-listen.loading::after{content:"";position:absolute;top:50%;left:50%;width:14px;height:14px;
  margin:-7px 0 0 -7px;border:2px solid rgba(43,31,13,.35);border-top-color:#2b1f0d;border-radius:50%;
  animation:fo-pl-spin .7s linear infinite}
@keyframes fo-pl-spin{to{transform:rotate(360deg)}}
:root{--sand-0:#fff9f0;--sand-1:#fdf3e4;--sand-2:#f8ead4;--wcard:#fffdf8;--wline:#efe2cd;
  --wink:#3f2e21;--wink-soft:#7a6450;--wink-faint:#a8927b;
  --marigold:#f0a330;--marigold-deep:#e08612;--terracotta:#d9663f;
  --green:#5f8a4f;--green-deep:#4a7340;--green-soft:#e7f0df;--green-tint:#eef5e7;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --wrad:22px;--wsh:0 1px 2px rgba(80,52,30,.05),0 10px 26px -12px rgba(120,78,38,.28);
  --wsh-sm:0 1px 2px rgba(80,52,30,.06),0 6px 16px -10px rgba(120,78,38,.25);}

/* Written bottom-up: a rule states ONLY what differs from what the element
   already inherits. Anything restated is a place two values can drift apart —
   which is how the page ended up with a call-to-action whose edges no longer
   lined up with the sections above it. */

:root{--body:"Nunito Sans",system-ui,sans-serif;
  --width:1120px;--gutter:clamp(18px,5vw,40px)}

*{box-sizing:border-box}

/* Everything below inherits from here: face, colour, size, rhythm. No child
   repeats any of them. */
body.site{margin:0;font-family:var(--body);font-size:16.5px;line-height:1.6;color:var(--wink);
  background:var(--sand-1);
  background-image:radial-gradient(1100px 460px at 50% -260px,#fff5e2,rgba(255,245,226,0) 70%),
    radial-gradient(700px 500px at 115% 8%,rgba(240,163,48,.10),rgba(240,163,48,0) 60%),
    radial-gradient(680px 520px at -15% 22%,rgba(95,138,79,.09),rgba(95,138,79,0) 60%);
  background-attachment:fixed;-webkit-font-smoothing:antialiased}
a{color:var(--marigold-deep)}
p{max-width:74ch}
img,svg{max-width:100%}
:focus-visible{outline:3px solid var(--marigold);outline-offset:3px;border-radius:8px}

/* ---- THE COLUMN ------------------------------------------------------------
   Folio's ninth principle is one width. It is declared here, once. Every block
   that spans the page is in this selector list and nowhere else says how wide
   it is — so "wider than the section above" is not expressible. */
.container,.fo-player,.aside-layout,.faq,.compare,.tabs,.docs-body,.site-head,.site-foot-in{
  max-width:var(--width);margin-inline:auto;padding-inline:var(--gutter)}

/* ---- type ------------------------------------------------------------------
   One rule for the display face. Weight and tracking are Warm Coach's. */
.hero-header,.section-header,.cta-header,.card-feature h2,.card-label h2,.card-showcase h2,
.card-callout-header,.aside-header,.tabs-trigger-title{
  font-family:var(--serif);font-weight:600;letter-spacing:-.012em}
/* Wordmark and menu: the app's own logo treatment — serif, two-tone, "My" in
   marigold and MNRI in ink. Same mark on both surfaces. */
.site-brand,.site-foot-brand,.site-nav a,.site-signin,.site-foot-nav a,.faq-header,.focused-brand{
  font-family:var(--serif)}
.site-brand,.site-foot-brand{color:var(--marigold-deep);font-weight:600}
.site-brand b,.site-foot-brand b{color:var(--wink);font-weight:700}

/* One rule for every small uppercase label on the site. */
.section-eyebrow,.aside-eyebrow,.card-label>p:first-child,.card-label-footer,.illustration-caption,
.docs-toc-title,.compare-group td,.section th{
  font-size:11.5px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;
  color:var(--wink-faint)}
/* The eyebrow above a heading is the one that carries colour. */
.section-eyebrow,.aside-eyebrow{color:var(--marigold-deep);margin-bottom:.4em}

/* Muted prose. */
.hero-lead,.hero-body,.section-subheader,.aside-subtitle,.card-feature p,.card-label p,.card-callout-body,
.tabs-trigger-blurb,.compare-hint,.site-nav a,.site-foot-nav a{color:var(--wink-soft)}

/* ---- blocks ---------------------------------------------------------------- */
.hero{padding-block:clamp(22px,3vw,40px) clamp(12px,1.6vw,20px)}
/* Line wrap is the browser's (and Folio's p max-width). Do not force short
   lines with a tight ch-width or text-wrap:balance — that stairs every
   heading. Clavitor default: no max-width on .hero-header; body ~65ch. */
.hero-header{font-size:clamp(32px,5vw,54px);line-height:1.05;margin:.12em 0 .26em}
.hero-lead{font-size:clamp(17px,2vw,20px);font-weight:600;margin-bottom:1.25em;max-width:64ch}

.section,.section-alt,.section-dark{padding-block:clamp(16px,2.2vw,28px)}
.section-alt{background:var(--sand-0)}
.section-dark{background:var(--wink);color:var(--sand-1)}
.section-header{font-size:clamp(24px,3vw,34px);line-height:1.13;margin:0 0 .38em;max-width:65ch}
.section-subheader{font-size:18px;margin-bottom:.8em;max-width:68ch}
.section li{margin-block:.4em}
.section li::marker{color:var(--marigold)}
.section code{font-family:ui-monospace,monospace;background:var(--sand-2);padding:2px 7px;border-radius:8px}

table{border-collapse:collapse;width:100%;margin-block:1.3em;font-size:15px}
th{text-align:left}
th,td{border-bottom:1px solid var(--wline);padding:11px 14px 11px 0;vertical-align:top}

.grid-2,.grid-3,.grid-4{display:grid;gap:clamp(12px,1.5vw,18px);margin-top:.9em}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
@media (max-width:1000px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}

/* The Warm Coach card. Variants add their one difference and nothing else. */
.card-feature,.card-label,.card-showcase,.card-callout,.illustration{
  background:var(--wcard);border:1px solid var(--wline);border-radius:var(--wrad);
  padding:clamp(18px,2.2vw,24px);box-shadow:var(--wsh-sm)}
.card-showcase{text-align:center}

.card-feature h2,.card-label h2,.card-showcase h2,.card-callout-header{
  font-size:19px;line-height:1.24;margin:0 0 .42em;text-wrap:balance}
.card-feature p,.card-label p,.card-callout-body{margin:0;font-size:15px}
.card-feature p+p,.card-label p+p{margin-top:.65em}
.card-label>p:first-child{margin-bottom:.5em}
.card-label-footer{margin-top:.9em;padding-top:.8em;border-top:1px solid var(--wline);
  font-family:ui-monospace,monospace;text-transform:none;letter-spacing:0}

/* The call to action is a BAND, not a card: it keeps the column rather than
   inventing a second width. The gradient is the child page's coach panel. */
.section:has(.cta){color:#fff;
  background:radial-gradient(520px 240px at 88% -30%,rgba(255,255,255,.28),rgba(255,255,255,0) 60%),
    linear-gradient(150deg,var(--marigold) 0%,var(--marigold-deep) 46%,var(--terracotta) 100%)}
.cta{text-align:center}
.cta-header{font-size:clamp(24px,3vw,32px);line-height:1.16;margin:0 0 .38em}
.cta-body{font-weight:600;margin:0 auto 1.5em;max-width:56ch}
.hero-buttons,.cta-buttons,.section-buttons{display:flex;gap:13px;flex-wrap:wrap}
.cta-buttons{justify-content:center}

/* One shape for every button; the variants differ only in colour. */
.btn-primary,.btn-ghost,.btn-signin,.site-signin{display:inline-block;padding:13px 25px;
  border-radius:99px;border:1.5px solid;text-decoration:none;
  transition:background .15s,border-color .15s,color .15s}
.btn-primary{background:var(--marigold);border-color:var(--marigold);color:#fff;
  box-shadow:0 6px 16px -7px rgba(224,134,18,.8)}
.btn-primary:hover{background:var(--marigold-deep);border-color:var(--marigold-deep)}
.btn-ghost,.btn-signin,.site-signin{background:var(--wcard);border-color:var(--wline);color:var(--wink)}
.btn-ghost:hover,.btn-signin:hover,.site-signin:hover{border-color:var(--marigold)}
.cta .btn-primary{background:#fff;border-color:#fff;color:var(--terracotta);box-shadow:none}
.cta .btn-ghost{background:transparent;border-color:rgba(255,255,255,.6);color:#fff}

.fo-player{margin-top:clamp(16px,2vw,26px)}
.illustration{margin-top:1.3em;overflow-x:auto}
.illustration svg{display:block;width:100%;min-width:640px}
.illustration-caption{margin-top:.9em;text-align:center}
.illustration-error{background:#fdecea;border:2px solid var(--terracotta);color:#7d2f19;
  padding:14px 18px;border-radius:14px;font-family:ui-monospace,monospace}

/* ---- blocks folio can emit that this site does not use yet ---- */
.aside{padding-block:clamp(14px,2vw,26px)}
.aside-layout{display:grid;grid-template-columns:280px 1fr;gap:clamp(20px,4vw,52px)}
.aside-left,.docs-nav-left{position:sticky;top:84px;align-self:start}
.aside-header{font-size:24px;line-height:1.18;margin-block:.2em}
.aside-body>*:first-child,.docs-nav-right>*:first-child,.tab-text>*:first-child{margin-top:0}
.faq-header{font-size:18px;cursor:pointer;padding-block:15px;border-bottom:1px solid var(--wline)}
.compare{overflow-x:auto}
.compare-table{min-width:560px}
.compare-feature{font-weight:700}
.compare-hint{display:block;font-size:12.5px}
.compare-group td{background:var(--sand-2)}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:4px}
.dot-on{background:var(--green)}
.dot-off{background:var(--sand-2)}
.dot-half{background:linear-gradient(90deg,var(--green) 50%,var(--sand-2) 50%)}
.chk{font-size:17px}
.tabs-triggers{display:flex;gap:12px;flex-wrap:wrap;border-bottom:1px solid var(--wline)}
.tab-content{display:grid;grid-template-columns:1fr 1fr;gap:34px;padding-top:24px}
.tab-visual{align-self:center}
@media (max-width:860px){
  .aside-layout,.docs-body,.tab-content{grid-template-columns:1fr}
  .aside-left,.docs-nav-left{position:static}
}
.docs-body{display:grid;grid-template-columns:260px 1fr;gap:42px}
.docs-toc{list-style:none;padding:0}
.docs-toc-scroll{max-height:70vh;overflow-y:auto}
.focused-shell{max-width:560px;margin-inline:auto;padding:38px var(--gutter)}
.focused-brand{display:flex;align-items:center;gap:9px}
.focused-brand-square{width:22px;height:22px;border-radius:8px;background:var(--marigold)}

/* ---- site chrome ---- */
.site-head{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding-block:12px;
  position:sticky;top:0;z-index:20;background:rgba(253,243,228,.92);backdrop-filter:blur(8px)}
.site-head::after{content:"";position:absolute;left:var(--gutter);right:var(--gutter);bottom:0;
  height:1px;background:var(--wline)}
.site-brand{font-size:23px;text-decoration:none;margin-right:auto}
.site-nav{display:flex;align-items:center;gap:clamp(12px,2vw,24px);flex-wrap:wrap}
.site-lang{position:relative}
.site-lang summary{list-style:none;cursor:pointer;font-size:17px;padding:2px 4px}
.site-lang summary::-webkit-details-marker{display:none}
.site-lang-menu{position:absolute;top:calc(100% + 10px);right:-8px;min-width:176px;
  max-height:60vh;overflow-y:auto;display:flex;flex-direction:column;gap:2px;padding:8px;
  background:var(--wcard);border:1px solid var(--wline);border-radius:14px;box-shadow:var(--wsh);
  z-index:30}
.site-lang-menu a{padding:7px 10px;border-radius:9px;font-size:15px;text-decoration:none;
  color:var(--wink);white-space:nowrap}
.site-lang-menu a:hover{background:var(--sand-2)}
.site-sub{position:relative}
.site-sub summary{list-style:none;cursor:pointer;font-family:var(--serif);font-size:15px;
  font-weight:600;color:var(--wink-soft)}
.site-sub summary::-webkit-details-marker{display:none}
.site-sub summary::after{content:" ⌄";font-size:12px}
.site-sub[open] summary,.site-sub summary:hover{color:var(--wink)}
.site-sub-menu{position:absolute;top:calc(100% + 10px);left:-14px;min-width:172px;
  display:flex;flex-direction:column;gap:2px;padding:8px;background:var(--wcard);
  border:1px solid var(--wline);border-radius:14px;box-shadow:var(--wsh)}
.site-sub-menu a{padding:7px 10px;border-radius:9px}
.site-sub-menu a:hover{background:var(--sand-2)}
.site-nav a,.site-foot-nav a{text-decoration:none;font-size:15px;font-weight:600}
.site-nav a:hover,.site-foot-nav a:hover{color:var(--wink)}
.site-signin{padding-block:9px}
.site-menu-t{display:none}
.site-burger{display:none;font-size:25px;cursor:pointer;line-height:1;user-select:none}
.site-foot{margin-top:clamp(20px,2.5vw,34px);border-top:1px solid var(--wline);
  background:var(--sand-0);padding-block:36px 50px}
.site-foot-in{display:flex;flex-direction:column;gap:14px}
.site-foot-brand{font-size:21px;margin:0}
.site-foot-nav{display:flex;gap:22px;flex-wrap:wrap}
.site-foot-note{margin:0;font-size:13px;color:var(--wink-faint);max-width:62ch}
@media (max-width:760px){
  .site-burger{display:block;order:2}
  .site-nav{display:none;order:3;flex-basis:100%;flex-direction:column;align-items:stretch;gap:13px;
    padding-bottom:10px}
  .site-menu-t:checked ~ .site-nav{display:flex}
  .site-sub-menu{position:static;border:0;box-shadow:none;background:transparent;
    padding:6px 0 0 14px}
  .site-lang-menu{position:static;max-height:none;border:0;box-shadow:none;background:transparent;
    padding:6px 0 0 14px}
  .site-signin{text-align:center}
  .hero-header{max-width:none}
}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
