/* Fonts, served from this site (11 Oct 2026) instead of Google Fonts — one
   connection fewer and nothing fetched from another company's server.
   Latin and Latin-extended only (Latin-extended carries the rupee sign, so a
   page with ₹ fetches it and others never do). Generated from Google's CSS for
   the same families and weights; regenerate rather than edit by hand. */
/* latin-ext */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/be-vietnam-pro-latin-ext-698bf156.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/be-vietnam-pro-latin-1375e457.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;
}
/* latin-ext */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/be-vietnam-pro-latin-ext-188b2796.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/be-vietnam-pro-latin-813dca14.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;
}
/* latin-ext */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/fonts/be-vietnam-pro-latin-ext-24057c0f.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/fonts/be-vietnam-pro-latin-d0dfb81f.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;
}
/* latin-ext */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/assets/fonts/be-vietnam-pro-latin-ext-163db67a.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Be Vietnam Pro';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/assets/fonts/be-vietnam-pro-latin-47244f47.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;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/inter-latin-ext-367ba69a.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/inter-latin-bec94a4d.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;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/inter-latin-ext-367ba69a.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/inter-latin-bec94a4d.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;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/inter-latin-ext-367ba69a.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/inter-latin-bec94a4d.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;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/fonts/inter-latin-ext-367ba69a.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/fonts/inter-latin-bec94a4d.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;
}

/* ThioSuxa — thiosuxa.com
   Static site, no build step. One stylesheet, hand-written.

   The look follows the Graphy-hosted homepage the founder chose to keep
   (October 2026): a pale-to-deep teal gradient hero, white floating cards,
   pill buttons, a light grey content band and a cream closing band, set in
   Inter with Be Vietnam Pro for headings. The colours are measured from that
   page, with one change: text and buttons use --teal-ink, a deeper shade of
   the same teal, because white on the original #5AA9B5 is too faint to read
   comfortably (2.7:1). The gradients keep the original. */

:root{
  --teal:#5AA9B5; --teal-dark:#418D98; --teal-ink:#367C86; --aqua:#A6CED4;
  --aqua-pale:#E6F3F5;
  --ink:#1A1A1A; --grey:#474747; --muted:#5E6A6F;
  --shell:#F5F5F5; --paper:#fff; --rule:#E2E8EA; --rule-soft:#EEF2F3;
  --brick:#9E4B3C; --brick-pale:#F7E9E5;
  --sans:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --display:'Be Vietnam Pro','Inter',system-ui,sans-serif;
  --r:12px;
  --pad:44px;
  --shadow:0 8px 32px rgba(0,0,0,.063);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
/* Nothing may push the page sideways (founder's iPhone, 15 Oct 2026: the home
   page could be dragged wider than the screen in WhatsApp's browser). clip,
   not hidden: hidden would make body a scroll box and the sticky header would
   stop sticking. The real fixes are the minmax(0, …) columns below; this is
   the net under them. */
body{overflow-x:clip}
body{
  margin:0; font-family:var(--sans); font-size:16px; line-height:1.55;
  color:var(--ink); background:var(--paper); -webkit-font-smoothing:antialiased;
}
a{color:inherit}
img{max-width:100%;height:auto}
:focus-visible{outline:2px solid var(--teal-ink);outline-offset:2px}
/* Reduce Motion stops every animation except the two tagline stars, which
   the founder asked to keep turning (as they do on the Graphy page): they are
   small, slow and decorative. */
@media (prefers-reduced-motion:reduce){*:not(.spin){animation:none!important;transition:none!important}}

/* ---------- skip link: keyboard users should not tab the whole nav ------- */
.skip{position:absolute;left:-9999px;background:var(--teal-ink);color:#fff;padding:10px 16px;border-radius:0 0 var(--r) 0;z-index:50}
.skip:focus{left:0;top:0}

/* ---------- navigation -------------------------------------------------- */
/* body > header: only the site's menu bar is sticky, not an article's own <header>. */
body > header{position:sticky;top:0;z-index:30;background:rgba(245,247,248,.92);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--rule)}
.nav{
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:12px var(--pad);max-width:1180px;margin:0 auto;
}
/* The real mark, with the two-tone wordmark the app and the Graphy site both
   use: "Thio" in teal, "Suxa" in grey. */
.logo{display:flex;align-items:center;gap:12px;font-family:var(--display);font-weight:600;
  font-size:1.375rem;letter-spacing:-.01em;color:var(--teal-ink);text-decoration:none}
.logo b{color:#8C9396;font-weight:600}
.logo img{width:44px;height:44px;display:block;border-radius:50%}
.navlinks{display:flex;gap:26px;font-size:.9375rem;color:var(--ink);align-items:center;font-weight:500}
.navlinks a{text-decoration:none}
.navlinks a:hover{color:var(--teal-ink)}
.navlinks a[aria-current="page"]{color:var(--teal-ink);font-weight:600}
.navtoggle{display:none;border:0;background:none;padding:8px;cursor:pointer;color:var(--ink);line-height:0}
.navtoggle svg{width:24px;height:24px}

/* ---------- buttons ----------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  background:var(--teal-ink);color:#fff;font-family:var(--display);font-weight:600;font-size:.9375rem;
  padding:13px 28px;border-radius:50px;text-decoration:none;border:1.5px solid var(--teal-ink);
  cursor:pointer;letter-spacing:.2px;
}
.btn:hover{background:#2E6B74;border-color:#2E6B74}
.btn.ghost{background:transparent;color:var(--teal-ink);border-color:var(--teal-ink)}
.btn.ghost:hover{background:var(--aqua-pale)}
/* The outlined capitals of Graphy's "VIEW ALL COURSES". */
.btn.outline{background:transparent;color:var(--teal-ink);border-color:var(--teal-ink);
  text-transform:uppercase;letter-spacing:.06em;font-size:.875rem;padding:13px 32px}
.btn.outline:hover{background:#fff}
.btn.sm{padding:8px 18px;font-size:.8125rem}
.btn:disabled{opacity:.4;cursor:default}

/* ---------- home: hero -------------------------------------------------- */
/* Graphy's hero gradient, pale aqua through teal, run on down to the deeper
   teal of its stats band — the figures now sit inside the hero, beside the
   sample question, so the one surface carries both. Aligned to the top: the
   heading starts level with the question card, not centred against it. */
.hero{background:linear-gradient(180deg,var(--aqua) 0%,var(--teal) 75%,var(--teal-dark) 100%)}
.hero-in{
  display:grid;grid-template-columns:minmax(0,1fr) 470px;gap:52px;align-items:start;
  padding:40px var(--pad) 64px;max-width:1180px;margin:0 auto;
}
.badge{display:inline-block;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.45);
  color:#fff;font-size:.75rem;font-weight:600;letter-spacing:.04em;padding:7px 16px;border-radius:50px;margin:0 0 20px}
h1.big{font-family:var(--sans);font-size:3rem;line-height:1.1;letter-spacing:-.025em;margin:0 0 18px;font-weight:700;color:var(--ink)}
h1.big .hl{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.08)}
/* The text column is centred at every width, as on the Graphy page. */
.hero-text{text-align:center}
.hero .lede{color:#22343A;font-weight:500;margin-left:auto;margin-right:auto}
.lede{font-size:1.0625rem;line-height:1.6;color:var(--muted);max-width:50ch;margin:0 0 26px}
.herobtns{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.hero .btn.ghost{color:var(--ink);border-color:rgba(26,26,26,.55)}
.hero .btn.ghost:hover{background:rgba(255,255,255,.35)}

/* ---------- home: the four figures, inside the hero --------------------- */
.hero-stats{margin:44px 0 0;padding:26px 0 0;border-top:1px solid rgba(255,255,255,.4);color:#fff}
/* Graphy's wording ("Detailed", "Self-paced") is too wide for four across in
   this column, so two by two. */
.statrow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 28px;text-align:center}
.stat span{display:block;font-family:var(--display);font-size:2.125rem;font-weight:700;letter-spacing:-.02em;line-height:1.15;font-variant-numeric:tabular-nums}
.stat small{display:block;font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;opacity:.95;margin-top:4px}
.tagline{margin:26px 0 0;font-weight:600;font-size:.9375rem;letter-spacing:.03em;color:rgba(255,255,255,.95)}
.tagline i{font-style:normal;opacity:.6;margin:0 9px}
.tagline span{white-space:nowrap}
/* The two stars turn, as on the Graphy page: one revolution every 4 s, steady.
   They turn even with Reduce Motion on — see the rule near the top. */
.tagline .spin{display:inline-block;font-weight:400;font-size:1.25rem;line-height:1;opacity:.7;
  margin:0 10px;vertical-align:-2px;animation:spin 4s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- sections ---------------------------------------------------- */
.sec{padding:72px var(--pad);max-width:1180px;margin:0 auto}
/* Full-bleed background, content still aligned to the same column as every
   other section: pad the section rather than centring its children. */
.sec.tint,.sec.grey,.sec.cream,.sec.top{
  max-width:none;
  padding-left:max(var(--pad),calc((100% - 1092px) / 2));
  padding-right:max(var(--pad),calc((100% - 1092px) / 2));
}
.sec.grey{background:var(--shell)}
.sec.tint{background:var(--shell)}
.sec.cream{background:linear-gradient(135deg,#FFFAF5 0%,#FFF5E6 100%);text-align:center}
/* The opening band of an inner page: the hero's gradient, fading out quickly
   so long content below it sits on white. */
.sec.top{background:linear-gradient(180deg,var(--aqua) 0,#DCEDF0 300px,#fff 620px);padding-top:56px}
.sec h2{font-family:var(--display);font-size:2.25rem;line-height:1.2;letter-spacing:-.01em;margin:0 0 12px;color:var(--grey);font-weight:700}
.sec.cream h2{font-weight:800}
.sec .intro{font-size:1rem;color:var(--muted);max-width:62ch;line-height:1.65;margin:0 0 28px}
.sec.cream .intro{margin-left:auto;margin-right:auto}
.eyebrow{display:block;font-family:var(--display);font-size:.8125rem;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--teal-ink);margin:0 0 10px}
.center{text-align:center}
.center .intro,.center .lede{margin-left:auto;margin-right:auto}

/* Three feature cards with a round aqua icon, as in Graphy's About band. */
.cols{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.cols.two{grid-template-columns:repeat(2,1fr)}
.col{background:rgba(255,255,255,.75);border:1px solid var(--rule);border-radius:16px;padding:30px}
.col .ic{width:58px;height:58px;border-radius:50%;background:var(--aqua);display:grid;place-items:center;margin:0 0 18px;color:#20414A}
.col .ic svg{width:28px;height:28px}
.col h3{font-family:var(--display);font-size:1.25rem;margin:0 0 8px;color:var(--grey)}
.col p{font-size:.9375rem;color:var(--muted);line-height:1.6;margin:0}
/* A feature that is announced but not yet live says so, on the card itself. */
.soon{display:inline-block;vertical-align:middle;margin-left:6px;font-family:var(--sans);font-size:.6875rem;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;color:var(--teal-ink);background:var(--aqua-pale);padding:3px 9px;border-radius:50px;white-space:nowrap}

/* The floating glass card ("Need help? We are here!" on Graphy). */
.glass{background:#fff;border-radius:24px;padding:40px;box-shadow:0 2px 100px rgba(158,158,158,.55);max-width:1092px;margin:0 auto}
.glass h2{font-size:2.5rem;font-weight:800}
.pill-dark{display:inline-flex;align-items:center;gap:8px;background:var(--grey);color:#F5F5F5;
  font-size:.8125rem;font-weight:500;padding:7px 16px;border-radius:50px;margin:0 0 18px}
.pill-dark::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--teal)}
/* The home page's "Need Help?" card: one big link, text left, button right. */
a.glass.help{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px 48px;align-items:center;
  text-decoration:none;color:inherit;transition:transform .15s ease,box-shadow .15s ease}
a.glass.help:hover{transform:translateY(-2px);box-shadow:0 4px 100px rgba(140,140,140,.7)}
a.glass.help .intro{margin:0;max-width:52ch}
.btn.contact{border-radius:10px;text-transform:uppercase;letter-spacing:.04em;padding:14px 26px;margin-right:40px}
a.glass.help:hover .btn.contact{background:#2E6B74;border-color:#2E6B74}

/* ---------- contact page ------------------------------------------------ */
.kicker{display:block;font-size:.75rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--grey);margin:0 0 12px}
.col .mail{display:inline-block;margin:16px 0 10px;color:var(--teal-ink);font-weight:600;text-decoration:none;overflow-wrap:anywhere}
.col .mail:hover{text-decoration:underline}
.col ul{list-style:none;margin:0;padding:0;font-size:.875rem;color:var(--muted);line-height:1.7}
.col ul li::before{content:"– "}
.form{display:grid;gap:18px;max-width:720px}
.form .two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
.form label{display:block;font-size:.875rem;font-weight:600;color:var(--grey);margin:0 0 6px}
.form input,.form select,.form textarea{width:100%;font:inherit;font-size:1rem;color:var(--ink);background:#fff;
  border:1.5px solid var(--rule);border-radius:10px;padding:12px 14px}
.form textarea{min-height:150px;resize:vertical}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--teal-ink);box-shadow:0 0 0 3px rgba(54,124,134,.15)}
.form .btn{justify-self:start}
.form .trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.form-error{background:var(--brick-pale);color:var(--brick);border-radius:10px;padding:12px 14px;font-size:.9375rem;margin:0}
.form-error a{color:inherit;font-weight:600}
.sent{text-align:center;padding:24px 0}
.sent .tick{width:56px;height:56px;border-radius:50%;background:var(--teal-ink);color:#fff;display:grid;place-items:center;margin:0 auto 14px;font-size:1.5rem}
.sent h3{font-family:var(--display);font-size:1.5rem;margin:0 0 6px;color:var(--grey)}
.sent p{margin:0;color:var(--muted)}

/* ---------- tables ------------------------------------------------------ */
.tblwrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:.875rem;min-width:520px}
.tbl th{text-align:left;font-size:.75rem;color:var(--muted);font-weight:600;padding:0 12px 8px 0;border-bottom:1px solid var(--rule)}
.tbl td{padding:10px 12px 10px 0;border-bottom:1px solid var(--rule-soft);font-variant-numeric:tabular-nums}
.tbl a{color:var(--teal-ink)}

/* ---------- question demo ---------------------------------------------- */
/* The white floating card of Graphy's hero ("Focus and Achieve"). */
.demo{border-radius:16px;padding:22px;background:#fff;box-shadow:var(--shadow)}
.demo .cap{font-size:.75rem;font-weight:600;color:var(--teal-ink);margin:0 0 12px;display:flex;justify-content:space-between;align-items:center;gap:12px;letter-spacing:.02em}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;font-weight:600;padding:4px 11px;border-radius:50px;background:var(--aqua-pale);color:var(--teal-ink)}
.chip.plain{background:var(--rule-soft);color:var(--muted)}
.chip.warn{background:var(--brick-pale);color:var(--brick)}

.q .stem{font-size:1rem;font-weight:600;line-height:1.5;margin:0 0 14px}
.stmt{border-top:1px solid var(--rule-soft);padding:11px 0;display:grid;grid-template-columns:minmax(0,1fr) 96px;gap:12px;align-items:center}
.stmt:last-of-type{border-bottom:1px solid var(--rule-soft)}
.stmt .txt{font-size:.9375rem;line-height:1.45;overflow-wrap:break-word}
.stmt .txt em{font-style:normal;color:var(--muted);font-weight:600;margin-right:7px}
.tf{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:5px}
.tf button{border:1.5px solid var(--rule);border-radius:50px;padding:8px 0;font:inherit;font-size:.8125rem;font-weight:600;color:var(--muted);background:#fff;cursor:pointer}
.tf button:hover:not(:disabled){border-color:var(--teal)}
.tf button.sel{background:var(--teal-ink);border-color:var(--teal-ink);color:#fff}
.tf button:disabled{cursor:default}
.stmt.done{grid-template-columns:minmax(0,1fr) auto}
.stmt.wrong{background:var(--brick-pale);border-radius:6px;padding-left:10px;padding-right:10px;margin-left:-10px;margin-right:-10px}
.verdict{display:flex;align-items:center;gap:7px;font-size:.75rem;font-weight:700;white-space:nowrap}
.verdict.ok{color:var(--teal-ink)} .verdict.no{color:var(--brick)}
.verdict .m{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:.6875rem;color:#fff}
.verdict.ok .m{background:var(--teal-ink)} .verdict.no .m{background:var(--brick)}

.expl{background:var(--aqua-pale);border-radius:var(--r);padding:15px 16px;margin:14px 0 0;font-size:.9375rem;line-height:1.62;color:#22343A}
.expl h4{font-family:var(--display);font-size:.75rem;font-weight:700;color:var(--teal-ink);margin:0 0 8px;letter-spacing:.04em}
.expl p{margin:0 0 9px}
.expl p:last-child{margin:0}
.src{font-size:.75rem;color:var(--muted);border-top:1px solid rgba(90,169,181,.35);padding-top:9px;margin-top:11px}

/* ---------- pricing ----------------------------------------------------- */
.exampick{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 28px}
.exampick button{
  border:1.5px solid rgba(255,255,255,.8);background:rgba(255,255,255,.7);border-radius:14px;
  padding:11px 18px;font:inherit;font-size:.875rem;font-weight:600;color:var(--muted);cursor:pointer;
}
.exampick button[aria-pressed="true"]{border-color:var(--teal-ink);border-width:2px;background:#fff;color:var(--ink)}
.exampick button:disabled{opacity:.6;cursor:not-allowed}
.exampick small{display:block;font-weight:400;font-size:.6875rem;margin-top:2px}

.price{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:0}
.tier{border-radius:16px;padding:24px;position:relative;background:#fff;box-shadow:var(--shadow);border:1px solid var(--rule-soft)}
.tier.pick{border:2px solid var(--teal)}
.tier h3{margin:0;font-family:var(--display);font-size:1.125rem;color:var(--grey)}
.tier .amt{font-family:var(--display);font-size:2.125rem;font-weight:700;color:var(--ink);letter-spacing:-.02em;margin:8px 0 2px;font-variant-numeric:tabular-nums}
/* The original price is struck through and set small, so the discount reads as
   a fact about the price rather than as the headline. */
.tier .amt s{font-size:.9375rem;font-weight:500;color:var(--muted);margin-left:6px;text-decoration-thickness:1px}
.tier .per{font-size:.8125rem;color:var(--muted);margin:0 0 16px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.tier ul{margin:0 0 20px;padding:0 0 0 17px;font-size:.875rem;color:var(--muted);line-height:1.8}
.tier .btn{width:100%}
.tag{position:absolute;top:-11px;left:22px;background:var(--teal-ink);color:#fff;font-size:.6875rem;font-weight:700;padding:3px 11px;border-radius:50px;letter-spacing:.02em}

/* ---------- pricing: plan chooser, consent, curriculum ------------------ */
/* The Graphy course page's plan rows and consent ticks, in this site's look. */
.buy{max-width:820px}
.plans{border:0;margin:0;padding:0;display:grid;gap:14px}
.plans legend{font-family:var(--display);font-weight:700;font-size:1.125rem;color:var(--grey);margin:0 0 12px;padding:0}
.plan{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;background:#fff;border:1.5px solid var(--rule);
  border-radius:16px;padding:20px 24px;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}
.plan:hover{border-color:var(--teal)}
.plan.on{border:2px solid var(--teal-ink);background:#F4FAFB;box-shadow:var(--shadow)}
.plan input{appearance:none;-webkit-appearance:none;width:22px;height:22px;margin:0;border:2px solid #B8C4C8;border-radius:50%;display:grid;place-items:center;cursor:pointer}
.plan input:checked{border-color:var(--teal-ink)}
.plan input:checked::after{content:"";width:12px;height:12px;border-radius:50%;background:var(--teal-ink)}
.plan input:focus-visible{outline:2px solid var(--teal-ink);outline-offset:3px}
.pl-name{font-family:var(--display);font-weight:700;font-size:1.25rem;color:var(--ink);line-height:1.3}
.pl-name small{display:block;font-family:var(--sans);font-size:.875rem;font-weight:600;color:var(--teal-ink);margin-top:2px}
.pl-name small::before{content:"\25CF";font-size:.6rem;vertical-align:2px;margin-right:6px}
.plan .tag{position:static;display:inline-block;vertical-align:3px;margin-left:6px;white-space:nowrap}
.pl-price{text-align:right;font-family:var(--display);font-weight:700;font-size:1.625rem;color:var(--ink);font-variant-numeric:tabular-nums}
.pl-price b{display:block;font-weight:700}
.pl-price em{display:block;font-style:normal;font-family:var(--sans);font-size:.75rem;font-weight:500;color:#7A8589;margin-top:4px;max-width:200px;margin-left:auto;line-height:1.35}
.consent{display:grid;gap:14px;margin:26px 0 22px}
.consent label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:start;font-size:.9375rem;line-height:1.6;color:#3B4A50;cursor:pointer}
.consent input{width:20px;height:20px;margin:3px 0 0;accent-color:var(--teal-ink);cursor:pointer}
.consent a{color:var(--teal-ink);font-weight:600}
.btn.enroll{min-width:260px;font-size:1rem;padding:15px 30px;margin-top:22px}
.btn.enroll:disabled{opacity:1;background:#C9D5D8;border-color:#C9D5D8;color:#fff}

/* The curriculum, after the Graphy course page: one full-width white card per
   subject on the grey band; open it for the question count and the subtopics. */
.curriculum{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:16px}
.curriculum details{background:#fff;border-radius:16px;box-shadow:0 4px 18px rgba(0,0,0,.05);overflow:hidden}
.curriculum summary{list-style:none;display:grid;grid-template-columns:56px minmax(0,1fr) auto 22px;align-items:center;gap:16px;
  padding:22px 28px;cursor:pointer;transition:background .15s ease}
.curriculum summary::-webkit-details-marker{display:none}
.curriculum summary:hover{background:#F0F2F3}
.curriculum details[open] summary{border-bottom:1px solid var(--rule)}
.curriculum .num{font-family:var(--display);font-weight:600;font-size:1.25rem;color:var(--teal)}
.curriculum .subj{font-family:var(--display);font-weight:600;font-size:1.25rem;color:var(--grey)}
.curriculum .count{font-size:.9375rem;color:#8C9396;white-space:nowrap}
.curriculum .chev{width:22px;height:22px;color:var(--grey);transition:transform .2s ease}
.curriculum details[open] .chev{transform:rotate(180deg)}
.cq{background:#E6E8E9;padding:16px 28px 16px 88px;font-weight:600;color:var(--grey)}
.subtopics{list-style:none;margin:0;padding:8px 0 14px}
.subtopics li{display:grid;grid-template-columns:28px minmax(0,1fr);gap:16px;align-items:start;padding:12px 28px 12px 44px}
.subtopics .tick{width:28px;height:28px;color:var(--teal)}
.subtopics span{font-size:1.0625rem;font-weight:500;color:var(--grey);line-height:1.35}
.subtopics small{display:block;font-size:.875rem;font-weight:400;color:#8C9396;margin-top:4px}

/* ---------- product page: who it is for, and the disclosure ------------- */
.ticks{list-style:none;margin:0;padding:0;display:grid;gap:12px;max-width:760px}
.ticks li{position:relative;padding-left:32px;font-size:1.0625rem;line-height:1.55;color:#24343A}
.ticks li::before{content:"";position:absolute;left:0;top:3px;width:20px;height:20px;border-radius:50%;
  background:var(--teal-ink) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 12 4 4 8-8'/%3E%3C/svg%3E") center/13px no-repeat}
/* Centred (founder, 10 Oct 2026): each line centred, its tick riding in front. */
.center .ticks{margin:0 auto}
.center .ticks li{padding-left:0}
.center .ticks li::before{position:static;display:inline-block;vertical-align:-4px;margin-right:10px}
.disclose h2{font-size:1.875rem}
.disclose dl{margin:8px 0 0;display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px 28px}
.disclose dt{font-family:var(--display);font-weight:700;color:var(--grey);font-size:1rem}
.disclose dd{margin:0;font-size:.9688rem;line-height:1.65;color:#2B3A3F}
.fine{margin:24px 0 0;padding-top:16px;border-top:1px solid var(--rule);font-size:.875rem;color:var(--muted)}
.fine a{color:var(--teal-ink)}

/* ---------- FAQ --------------------------------------------------------- */
.faq{border-top:1px solid var(--rule);max-width:820px}
.faq details{border-bottom:1px solid var(--rule)}
.faq summary{padding:16px 0;font-weight:600;font-size:.9375rem;cursor:pointer;color:var(--ink);list-style:none;display:flex;justify-content:space-between;gap:16px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--teal-ink);font-weight:700}
.faq details[open] summary::after{content:"\2212"}
.faq p{margin:0 0 16px;font-size:.9375rem;color:var(--muted);line-height:1.65;max-width:64ch}
.faq a{color:var(--teal-ink)}

/* ---------- policy pages ------------------------------------------------ */
/* Long legal text, generated by policies.py. Set for reading, not scanning. */
.legal{max-width:none}
.legal > *{max-width:760px}
.legal h1{font-family:var(--display);font-size:2.25rem;letter-spacing:-.01em;margin:0 0 6px;color:var(--ink)}
.sec.legal h2{font-size:1.375rem;margin:40px 0 10px}
.legal h3{font-family:var(--display);font-size:1.0625rem;margin:26px 0 8px;color:var(--grey)}
.legal p,.legal li{font-size:1rem;line-height:1.7;color:#2B3A3F}
.legal p{margin:0 0 14px}
.legal ul{margin:0 0 14px;padding-left:22px}
.legal li{margin:0 0 6px}
.legal li ul{margin:6px 0 0}
.legal a{color:var(--teal-ink);overflow-wrap:anywhere}

/* ---------- Insights (the blog, built by insights.py) ------------------ */
.catcard{text-decoration:none;color:inherit;transition:transform .15s ease,box-shadow .15s ease}
.catcard:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.catcard .eyebrow{margin-bottom:6px}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 26px}
.filters button{font:inherit;font-size:.875rem;font-weight:600;color:var(--muted);background:#fff;border:1.5px solid var(--rule);border-radius:50px;padding:8px 16px;cursor:pointer}
.filters button[aria-pressed="true"]{background:var(--teal-ink);border-color:var(--teal-ink);color:#fff}
.postgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.postcard{display:flex;flex-direction:column;background:#fff;border:1px solid var(--rule-soft);border-radius:16px;overflow:hidden;
  text-decoration:none;color:inherit;box-shadow:var(--shadow);transition:transform .15s ease}
.postcard:hover{transform:translateY(-3px)}
.postcard[hidden]{display:none}
.postcard img{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;background:var(--aqua-pale)}
.pc-body{padding:18px 20px 20px;display:flex;flex-direction:column;gap:8px;flex:1}
.pc-body .chip{align-self:flex-start}
.pc-body h3{font-family:var(--display);font-size:1.125rem;line-height:1.3;margin:0;color:var(--ink)}
.pc-body p{font-size:.875rem;color:var(--muted);line-height:1.55;margin:0;flex:1}
.pc-body small{font-size:.75rem;color:#8C9396}

.posthead{padding-bottom:0}
.posthead > *{max-width:760px;margin-left:auto;margin-right:auto}
.posthead .back{display:block;font-size:.875rem;font-weight:600;color:var(--teal-ink);text-decoration:none;margin-bottom:18px}
.posthead .chip{display:table;margin-bottom:12px}
.posthead h1{font-family:var(--sans);font-size:2.375rem;line-height:1.15;letter-spacing:-.02em;margin:0 0 12px;color:var(--ink)}
.byline{font-size:.875rem;color:#3B4A50;margin:0 0 26px}
.postimg{display:block;width:100%;height:auto;border-radius:16px;box-shadow:var(--shadow)}
.postbody > *{max-width:760px;margin-left:auto;margin-right:auto}
.postbody{padding-top:36px}
.postbody p,.postbody li{font-size:1.0625rem;line-height:1.75;color:#24343A}
.postbody p{margin-bottom:18px;margin-top:0}
.postbody h2{font-family:var(--display);font-size:1.625rem;line-height:1.25;color:var(--grey);margin:42px auto 14px}
.postbody h3{font-family:var(--display);font-size:1.1875rem;color:var(--ink);margin:30px auto 10px}
.postbody ul,.postbody ol{padding-left:22px;margin-top:0;margin-bottom:18px}
.postbody li{margin-bottom:8px}
.postbody a{color:var(--teal-ink)}
.postbody .tblwrap{overflow-x:auto;margin-bottom:22px}
.postbody table{width:100%;border-collapse:collapse;font-size:.9375rem}
.postbody td:last-child,.postbody th:last-child{white-space:nowrap}
.postbody th{text-align:left;font-size:.8125rem;color:var(--muted);font-weight:600;padding:10px 12px;border-bottom:2px solid var(--rule);background:var(--shell)}
.postbody td{padding:10px 12px;border-bottom:1px solid var(--rule-soft)}
.notice{background:#FFF8EE;border-left:3px solid #E0A458;border-radius:0 10px 10px 0;padding:12px 16px;font-size:.9375rem!important;color:#5B4A2E!important}
/* The closing "Ready to pass the EDAIC?" box, a small version of the home page's teal hero. */
.cta{background:linear-gradient(160deg,var(--aqua) 0%,var(--teal) 100%);border-radius:20px;padding:28px 30px;margin:44px auto 10px;text-align:center}
.cta h2,.cta h3{margin:0 0 10px;color:var(--ink);font-family:var(--display);font-size:1.5rem}
.cta p{color:#1F3238!important;margin-bottom:16px}
.cta a{color:var(--ink)}
.cta p.go{margin:0}
.cta a.btn{color:#fff}

/* ---------- notes and footer -------------------------------------------- */
.note{background:#FFF8EE;border-left:3px solid var(--teal);padding:12px 16px;margin:22px 0 0;font-size:.875rem;line-height:1.6;color:#3B4A50;max-width:70ch;border-radius:0 var(--r) var(--r) 0}
.note a{color:var(--teal-ink)}
/* The footer as on the Graphy page: logo left (home), the four links centred,
   social icons right, then a rule and the disclaimer. Stacks centred on phones. */
footer{border-top:1px solid var(--rule)}
.foot{padding:26px var(--pad);max-width:1180px;margin:0 auto;font-size:.9375rem;color:#7A8589}
.footrow{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:18px 20px;padding:0 0 24px;border-bottom:1px solid var(--rule)}
.footlogo{justify-self:start;line-height:0;border-radius:50%}
.footlogo img{width:34px;height:34px;border-radius:50%;display:block}
.footlinks{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 30px}
.footlinks a{text-decoration:none}
.footlinks a:hover,.footlinks a[aria-current="page"]{color:var(--teal-ink)}
.social{justify-self:end;display:flex;gap:18px}
.social a{color:#8C9396;line-height:0}
.social a:hover{color:var(--teal-ink)}
.social svg{width:20px;height:20px}
/* Until a social link has a real address, the empty box takes no space. */
.social:not(:has(a:not([hidden]))){display:none}
.disclaimer{text-align:center;margin:20px auto 0;font-size:.8125rem;line-height:1.6;max-width:92ch;color:#8C9396}


/* ---------- Insights: who wrote it, at the foot of each post ------------- */
.byteam{margin:40px 0 0;padding:20px 0 0;border-top:1px solid var(--rule);font-size:.9375rem;color:var(--muted)}
.byteam p{margin:0}
.byteam a{color:var(--teal-ink);font-weight:600;white-space:nowrap}

/* ---------- home: the team ---------------------------------------------- */
.cols.team{max-width:780px;margin:0 auto;text-align:center}
.cols.team .avatar{display:block;width:96px;height:96px;margin:0 auto 16px;border-radius:50%;
  background:#fff;box-shadow:0 0 0 4px var(--aqua-pale);object-fit:contain}

/* ---------- responsive -------------------------------------------------- */
@media (max-width:900px){
  :root{--pad:20px}
  .hero-in{grid-template-columns:minmax(0,1fr);gap:36px;padding-top:44px;padding-bottom:48px;text-align:center}
  .hero .demo{text-align:left}
  h1.big{font-size:2.25rem}
  .statrow{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 16px}
  .stat span{font-size:1.75rem}
  .tagline{font-size:.875rem}
  .tagline i{margin:0 6px}
  .sec{padding-top:56px;padding-bottom:56px}
  .sec h2{font-size:1.875rem}
  .glass{padding:28px 22px}
  .glass h2{font-size:2rem}
  a.glass.help{grid-template-columns:minmax(0,1fr);gap:24px}
  .btn.contact{margin-right:0;justify-self:start}
  .form .two{grid-template-columns:minmax(0,1fr)}
  .footrow{grid-template-columns:minmax(0,1fr);justify-items:center}
  .plan{padding:16px 16px;gap:12px}
  .pl-name{font-size:1.0625rem}
  .pl-price{font-size:1.25rem}
  .pl-price em{max-width:130px}
  .plan .tag{display:table;margin:5px 0 2px}
  .btn.enroll{width:100%;min-width:0}
  .curriculum summary{grid-template-columns:auto minmax(0,1fr) auto 18px;gap:12px;padding:18px 18px}
  .curriculum .num,.curriculum .subj{font-size:1.0625rem}
  .curriculum .count{font-size:.8125rem}
  .cq{padding:14px 18px 14px 58px}
  .subtopics li{padding:10px 18px;gap:12px}
  .subtopics span{font-size:1rem}
  .disclose dl{grid-template-columns:minmax(0,1fr);gap:6px}
  .disclose dd{margin-bottom:12px}
  .disclose h2{font-size:1.5rem}
  .postgrid{grid-template-columns:minmax(0,1fr)}
  .posthead h1{font-size:1.875rem}
  .postbody p,.postbody li{font-size:1rem}
  .cta{padding:24px 20px}
  .footlogo,.social{justify-self:center}
  .cols,.cols.two{grid-template-columns:minmax(0,1fr);gap:16px}
  .price{grid-template-columns:minmax(0,1fr)}
  .navlinks{display:none}
  .navlinks.open{display:flex;flex-direction:column;align-items:flex-start;gap:16px;
    position:absolute;top:100%;left:0;right:0;background:#fff;border-bottom:1px solid var(--rule);padding:18px 20px;z-index:40}
  .navtoggle{display:block}
  .nav{position:relative}
  .logo{font-size:1.25rem}
  .logo img{width:40px;height:40px}
}
