/* ==========================================================================
   Calm Academy — calm.academy
   Converted from the Claude Design artboard "Calm Academy - Ledger".
   Design tokens and every measurement below are taken verbatim from the
   artboard; see design/README.md for the conversion notes.
   ========================================================================== */

/* --- Self-hosted fonts: no third-party requests -------------------------- */
/* Archivo is variable (400-900) and covers the 400 / 800 / 900 the design uses. */
@font-face{font-family:'Archivo';font-style:normal;font-weight:400 900;font-display:swap;src:url('/assets/fonts/archivo-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Archivo';font-style:normal;font-weight:400 900;font-display:swap;src:url('/assets/fonts/archivo-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
/* IBM Plex Mono is not variable — the design uses 500 and 600, so both ship. */
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/plex-mono-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/plex-mono-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/plex-mono-600-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/plex-mono-600-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}

/* --- Tokens -------------------------------------------------------------- */
:root{
  --paper:#F4F2EC;      /* page ground          */
  --ink:#16181A;        /* headings, rules, CTA */
  --body:#2E3134;       /* body copy            */
  --muted:#5C5F63;      /* mono labels          */
  --rule:#D6D2C8;       /* hairlines            */
  --blue:#23577A;       /* baseline / accent    */
  --red:#C2452D;        /* under load           */
  --on-dark:#B8BCC2;    /* muted on --ink       */
  --on-blue:#DCE6EE;    /* muted on --blue      */
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --sans:'Archivo',system-ui,-apple-system,'Segoe UI',sans-serif;
  --gut:clamp(20px,4.5vw,64px);  /* horizontal section padding */
}

/* --- Base ---------------------------------------------------------------- */
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);overflow-x:hidden;-webkit-font-smoothing:antialiased}
*{box-sizing:border-box}
a{color:var(--ink)}
a:hover{color:var(--blue)}
img{max-width:100%}
::selection{background:var(--blue);color:var(--paper)}
:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}

.shell{max-width:1440px;margin:0 auto;min-width:0}
.mono{font-family:var(--mono)}

/* Visually hidden, still read by screen readers. */
.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}

/* Shared section frame: full-width row, hairline underneath. */
.band{display:flex;flex-wrap:wrap;gap:24px 48px;padding:clamp(56px,7vw,96px) var(--gut);border-bottom:1px solid var(--rule)}
.band > .col{flex:1 1 640px;min-width:0}

/* Small caps-ish mono eyebrow used above most section headings. */
.eyebrow{font:500 12px/1 var(--mono);letter-spacing:.14em;color:var(--muted);margin-bottom:24px}
.h2{margin:0 0 24px;font:900 clamp(32px,3.6vw,52px)/1 var(--sans);letter-spacing:-.03em;text-wrap:pretty}
.lede{margin:0;font:400 18px/1.5 var(--sans);color:var(--body);text-wrap:pretty}
.accent{color:var(--blue)}

/* --- Buttons ------------------------------------------------------------- */
.btn{height:56px;padding:0 28px;display:inline-flex;align-items:center;justify-content:center;gap:14px;
     text-decoration:none;font:800 16px var(--sans);box-sizing:border-box;
     transition:background-color .18s ease,color .18s ease}
.btn-solid{background:var(--ink);color:var(--paper)}
.btn-solid:hover{background:var(--blue);color:var(--paper)}
.btn-ghost{border:1px solid var(--ink);color:var(--ink)}
.btn-ghost:hover{background:var(--ink);color:var(--paper)}

/* --- Header -------------------------------------------------------------- */
.site-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;
           padding:12px var(--gut);min-height:72px;border-bottom:1px solid var(--rule)}
.wordmark{display:inline-flex;align-items:center;padding:12px 0;text-decoration:none}
.wordmark span{font:900 16px/1 var(--sans);letter-spacing:-.02em;color:var(--ink);white-space:nowrap}
.site-nav{display:flex;flex-wrap:wrap;gap:8px 32px;align-items:center;font:500 13px/1 var(--mono)}
.site-nav a{color:var(--muted);text-decoration:none;padding:16px 0;transition:color .18s ease}
.site-nav a:hover{color:var(--ink)}
.site-nav .nav-cta{background:var(--ink);color:var(--paper);padding:0 22px;height:48px;
                   display:inline-flex;align-items:center;transition:background-color .18s ease,color .18s ease}
.site-nav .nav-cta:hover{background:var(--blue);color:var(--paper)}

/* --- Hero ---------------------------------------------------------------- */
.hero{display:flex;flex-wrap:wrap;gap:24px 48px;
      padding:clamp(40px,5vw,64px) var(--gut) clamp(40px,5vw,56px);border-bottom:1px solid var(--rule)}
.hero-inner{flex:1 1 640px;min-width:0;display:flex;flex-wrap:wrap;gap:48px 72px;align-items:flex-start}
.hero-copy{flex:1 1 480px;min-width:0}
.hero h1{margin:0 0 28px;font:900 clamp(40px,5.2vw,74px)/.98 var(--sans);letter-spacing:-.035em;text-wrap:pretty}
.hero-sub{margin:0 0 36px;font:400 clamp(18px,1.6vw,22px)/1.4 var(--sans);max-width:640px;color:var(--body);text-wrap:pretty}
.hero-actions{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:520px}
@media (max-width:560px){.hero-actions{grid-template-columns:1fr}}

/* Readout panel — the "instrument" card, week 0 vs week 4. */
.readout{flex:0 1 480px;min-width:min(100%,360px);border:1px solid var(--ink);padding:28px 32px 22px;
         font-family:var(--mono);box-sizing:border-box}
.readout-head{display:flex;justify-content:space-between;gap:12px;font:600 13px/1 var(--mono);
              letter-spacing:.1em;padding-bottom:18px;border-bottom:1px solid var(--ink)}
.readout-head .to{color:var(--muted)}
.readout-row{display:grid;grid-template-columns:1fr 84px 32px 96px;gap:0 8px;align-items:baseline;
             padding:20px 0;border-bottom:1px solid var(--rule);font:500 16px/1 var(--mono)}
.readout-row:has(+ .key){border-bottom:0}
.readout-row .label{color:var(--muted)}
.readout-row .from{font-size:28px;font-weight:600;color:var(--red);white-space:nowrap;text-align:right}
.readout-row .arrow{color:var(--muted);text-align:center}
.readout-row .to{font-size:28px;font-weight:600;color:var(--blue);white-space:nowrap}
.readout-row .unit{font-size:14px}
.key{display:flex;flex-wrap:wrap;gap:8px 20px;font:500 12px/1 var(--mono);color:var(--muted);
     padding-top:16px;border-top:1px solid var(--ink)}
.key span{display:inline-flex;align-items:center;gap:6px}
.swatch{width:8px;height:8px;display:inline-block}
.swatch-red{background:var(--red)}
.swatch-blue{background:var(--blue)}

/* --- The gap (three panels) ---------------------------------------------- */
.gap-grid{flex:1 1 640px;min-width:0;display:grid;
          grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));border:1px solid var(--rule)}
.gap-cell{padding:40px 36px;border:0 solid var(--rule);border-width:0 1px 1px 0}
.gap-cell.is-dark{background:var(--ink);color:var(--paper);border-width:0}
.gap-cell .num{font:500 12px var(--mono);color:var(--muted);margin-bottom:24px}
.gap-cell.is-dark .num{color:var(--on-dark)}
.gap-cell p{margin:0;font:800 clamp(21px,1.9vw,26px)/1.2 var(--sans);letter-spacing:-.01em;text-wrap:pretty}

/* --- Load ---------------------------------------------------------------- */
.load-wrap{flex:1 1 640px;min-width:0;display:flex;flex-wrap:wrap;gap:40px 72px}
.load-copy{flex:1 1 300px;max-width:440px}
.load-copy .h2{margin-bottom:24px}
.load-list{flex:1 1 400px;min-width:0;border-top:1px solid var(--ink)}
.load-item{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:center;padding:22px 0;
           border-bottom:1px solid var(--rule);font:800 clamp(19px,1.8vw,26px)/1.2 var(--sans)}
.load-item:last-of-type{border-bottom-color:var(--ink)}
.load-item i{width:10px;height:10px;background:var(--red)}
.load-close{margin:32px 0 0;font:800 clamp(22px,2.2vw,30px)/1.25 var(--sans);letter-spacing:-.02em;text-wrap:pretty}

/* --- Offers -------------------------------------------------------------- */
.offers-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;
             gap:12px 32px;margin-bottom:40px}
.offers-head .h2{margin:0}
.offers-head .meta{font:500 12px/1.5 var(--mono);letter-spacing:.14em;color:var(--muted)}
.offers{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,400px),1fr));gap:clamp(40px,5vw,72px)}
.offer{border-top:1px solid var(--ink);padding-top:24px;display:flex;flex-direction:column;gap:20px;min-width:0}
.offer-kicker{display:flex;flex-direction:column;gap:8px;min-height:44px;font:500 13px/1.3 var(--mono);letter-spacing:.1em}
.offer-kicker .sub{color:var(--muted)}
.offer-price{font:900 clamp(60px,6.7vw,96px)/.9 var(--sans);letter-spacing:-.05em}
.offer-desc{margin:0;font:400 18px/1.5 var(--sans);color:var(--body);text-wrap:pretty}
.offer-spec{font:500 13px/1.7 var(--mono);color:var(--muted);border-top:1px solid var(--rule);padding-top:16px}
.offer-spec strong{color:var(--ink);font-weight:500}
.offer .btn{margin-top:auto;padding:0 24px}
.offer-fine{font:500 11px/1.5 var(--mono);letter-spacing:.06em;color:var(--muted)}

/* --- Programme ----------------------------------------------------------- */
.weeks{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:32px 40px;
       border-top:1px solid var(--ink);margin-bottom:64px}
.week{padding-top:24px}
.week-head{display:flex;justify-content:space-between;gap:12px;font:600 13px var(--mono);margin-bottom:16px}
.week-head .phase{color:var(--muted)}
.week h3{margin:0 0 12px;font:800 clamp(22px,2vw,28px)/1.1 var(--sans);letter-spacing:-.02em}
.week-desc{margin:0;font:400 17px/1.5 var(--sans);color:var(--body)}

.chart-panel{border:1px solid var(--ink);padding:clamp(20px,3vw,32px) clamp(18px,3vw,40px) 24px}
.chart-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 24px;
            font:600 12px var(--mono);letter-spacing:.1em;margin-bottom:36px}
.chart-head .key{border-top:0;padding-top:0;gap:20px}
.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:40px}
.plot{height:180px;display:flex;align-items:flex-end;gap:12px;border-bottom:1px solid var(--ink)}
.bar{flex:1;position:relative}
.bar span{position:absolute;top:-24px;left:0;font:600 13px var(--mono)}
.bar-red{background:var(--red)}
.bar-blue{background:var(--blue)}
.plot-label{font:500 12px/1.4 var(--mono);color:var(--muted);margin-top:12px}
.plot-label strong{color:var(--ink);font-weight:500}
.chart-note{font:500 10px/1.5 var(--mono);letter-spacing:.06em;color:var(--muted);
            margin-top:28px;padding-top:14px;border-top:1px solid var(--rule)}

/* --- Founder ------------------------------------------------------------- */
.founder{padding-bottom:clamp(40px,5vw,64px)}
.founder-top{display:flex;flex-wrap:wrap;gap:40px 72px;margin-bottom:64px}
.founder-photo{flex:1 1 280px;max-width:440px;min-width:0}
.founder-photo img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;object-position:46% 30%;
                   border:1px solid var(--rule);box-sizing:border-box}
.founder-copy{flex:1 1 400px;min-width:0}
.founder-copy .h2{margin-bottom:28px}
.founder-para{margin:0 0 20px;font:400 18px/1.55 var(--sans);color:var(--body);text-wrap:pretty}
.founder-para:last-of-type{margin-bottom:36px}
.creds{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:0 24px;
       border-top:1px solid var(--ink);font:500 13px var(--mono);list-style:none;margin:0;padding:0}
.creds li{padding:16px 0;border-bottom:1px solid var(--rule)}
.logos{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr));gap:16px 40px;align-items:center;
       list-style:none;margin:0;padding:0}
.logos li{height:64px;display:flex;align-items:center;justify-content:center}
/* One flat grey for every mark, whatever colours the source SVG carries. */
.logos img{height:26px;width:auto;max-width:100%;object-fit:contain;filter:brightness(0) invert(.36)}
.logos img.logo-sas{height:34px}
.logos img.logo-microsoft{height:24px}
.logos img.logo-deloitte{height:22px}

/* --- Contact ------------------------------------------------------------- */
.contact{background:var(--blue);color:var(--paper);padding:clamp(56px,7vw,96px) var(--gut)}
.contact-inner{display:flex;flex-wrap:wrap;gap:40px 72px}
.contact-copy{flex:1 1 300px;max-width:480px;min-width:0}
.contact .eyebrow{color:var(--on-blue)}
.contact .h2{margin-bottom:24px}
.contact-copy p.lede{margin-bottom:28px;color:var(--on-blue)}
.contact-mail{margin:0;font:500 14px/1.6 var(--mono);color:var(--on-blue)}
.contact-mail a{color:var(--paper);text-decoration:underline;text-underline-offset:4px;
                display:inline-block;padding:12px 0}
.contact-mail a:hover{color:var(--paper);text-decoration:none}
.contact :focus-visible{outline:3px solid var(--paper);outline-offset:3px}

.contact-form{flex:1 1 400px;min-width:0;display:grid;
              grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:20px 24px;align-content:start}
.contact-form label{display:flex;flex-direction:column;gap:8px;font:500 12px var(--mono);
                    letter-spacing:.1em;color:var(--on-blue)}
.contact-form .wide{grid-column:1/-1}
.contact-form input,.contact-form textarea{border:1px solid var(--paper);background:transparent;
  font:400 16px var(--sans);color:var(--paper);border-radius:0}
.contact-form input{height:52px;padding:0 14px}
.contact-form textarea{padding:14px;line-height:1.5;resize:vertical}
.contact-form input:focus-visible,.contact-form textarea:focus-visible{outline:3px solid var(--paper);outline-offset:2px}
.contact-form button{grid-column:1/-1;height:60px;background:var(--paper);color:var(--ink);border:0;
  font:800 17px var(--sans);cursor:pointer;transition:background-color .18s ease,color .18s ease}
.contact-form button:hover{background:var(--ink);color:var(--paper)}
.contact-fine{grid-column:1/-1;margin:0;font:500 12px/1.6 var(--mono);color:var(--on-blue)}
.form-status{grid-column:1/-1;margin:0;font:500 13px/1.6 var(--mono);color:var(--paper)}
.form-status:empty{display:none}

/* --- Footer -------------------------------------------------------------- */
.site-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 32px;
           padding:24px var(--gut);min-height:80px;border-top:1px solid var(--ink);
           font:500 12px/1.6 var(--mono);color:var(--muted);letter-spacing:.06em}
.site-foot .fm{font:900 13px/1 var(--sans);letter-spacing:-.02em;color:var(--ink);white-space:nowrap}
.site-foot a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;padding:12px 0;display:inline-block}

/* --- Very narrow screens -------------------------------------------------
   The readout's fixed 84/32/96px value columns were authored for a panel of
   at least ~360px. Below that they overrun the panel and the units get
   clipped, so the numerals step down and the columns size to content. */
@media (max-width:380px){
  .readout{padding:22px 18px 18px}
  .readout-row{grid-template-columns:1fr auto auto auto;gap:0 6px}
  .readout-row .from,.readout-row .to{font-size:22px}
  .readout-row .unit{font-size:12px}
}

/* --- Mobile navigation ---------------------------------------------------
   On a phone the two section links cost a whole wrapped row and duplicate
   what the page shows on the way down. Only the Contact button survives. */
@media (max-width:640px){
  .site-nav a:not(.nav-cta){display:none}
}
