/* ---------------------------------------------------------------
   Self-hosted faces. Generated from the Google Fonts CSS, with every
   remote URL replaced by a local file, and nothing else changed --
   the unicode-range lines are what keep a reader from downloading the
   Cyrillic and Greek subsets they will never see.
   Space Mono and JetBrains Mono are both SIL Open Font License 1.1.
   --------------------------------------------------------------- */

/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/JetBrainsMono-400-cyrillic-ext.woff2') format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/JetBrainsMono-400-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/JetBrainsMono-400-greek.woff2') format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/JetBrainsMono-400-vietnamese.woff2') format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/JetBrainsMono-400-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;
}

/* latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/JetBrainsMono-400-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;
}

/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fonts/JetBrainsMono-500-cyrillic-ext.woff2') format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fonts/JetBrainsMono-500-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fonts/JetBrainsMono-500-greek.woff2') format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fonts/JetBrainsMono-500-vietnamese.woff2') format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fonts/JetBrainsMono-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;
}

/* latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fonts/JetBrainsMono-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;
}

/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/JetBrainsMono-700-cyrillic-ext.woff2') format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/JetBrainsMono-700-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/JetBrainsMono-700-greek.woff2') format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/JetBrainsMono-700-vietnamese.woff2') format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/JetBrainsMono-700-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;
}

/* latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/JetBrainsMono-700-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;
}

/* vietnamese */
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/SpaceMono-400-vietnamese.woff2') format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/SpaceMono-400-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;
}

/* latin */
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/SpaceMono-400-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;
}

/* vietnamese */
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/SpaceMono-700-vietnamese.woff2') format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/SpaceMono-700-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;
}

/* latin */
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/SpaceMono-700-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;
}

:root,[data-theme=light]{--bg:#E5DDC8;--bg2:#F6F1E4;--ink:#191712;--soft:#585347;--mute:#8A8270;--acc:#E8552D;--blue:#2D6BE8;--green:#1E9E6A;--purple:#8A5CC4;--brown:#B57238;--line:rgba(25,23,18,.18);--sh:rgba(40,30,12,.2);
  --side:color-mix(in srgb,var(--ink) 6%,var(--bg));--emboss:0 1px 0 rgba(255,255,255,.65),0 2px 5px rgba(40,28,10,.24);--emboss-acc:0 1px 0 rgba(255,255,255,.55),0 2px 6px rgba(200,70,30,.32)}
[data-theme=dark]{--bg:#16140F;--bg2:#1E1B15;--ink:#F1ECDD;--soft:#B7AE9B;--mute:#8A8270;--acc:#F0742F;--blue:#7FA8E8;--green:#5FC4AC;--purple:#C39BD8;--brown:#E0A06A;--line:rgba(241,236,221,.16);--sh:rgba(0,0,0,.5);
  --side:color-mix(in srgb,#000 22%,var(--bg));--emboss:0 1px 0 rgba(0,0,0,.55),0 2px 5px rgba(0,0,0,.6);--emboss-acc:0 1px 0 rgba(0,0,0,.5),0 0 14px rgba(240,116,47,.32)}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{font-family:"JetBrains Mono",monospace;background:var(--bg);color:var(--ink);line-height:1.65;font-size:15px;-webkit-font-smoothing:antialiased;overflow-x:hidden;transition:background-color .4s,color .4s;
  background-image:radial-gradient(135% 95% at 50% -14%,transparent 50%,rgba(35,24,10,.1)),linear-gradient(var(--line) 1px,transparent 1px);background-size:100% 100%,100% 34px;background-position:0 0,0 -1px;background-attachment:fixed,scroll}
::selection{background:var(--ink);color:var(--bg)}
a{color:inherit;text-decoration:none}
.wrap{max-width:1260px;margin:0 auto;padding-inline:clamp(18px,3.5vw,38px)}

/* NAV */
.nav{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-bottom:2px solid var(--ink);position:sticky;top:0;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(8px);z-index:20}
.brand{font-family:"Space Mono";font-weight:700;font-size:1.05rem;letter-spacing:-.02em;text-shadow:var(--emboss)}.brand .c{color:var(--acc)}
.nav-r{display:flex;gap:18px;align-items:center;font-size:.82rem}
.nav-r a.lk{color:var(--soft);position:relative}.nav-r a.lk::after{content:"";position:absolute;left:0;bottom:-3px;width:0;height:2px;background:var(--acc);transition:width .25s}.nav-r a.lk:hover{color:var(--acc)}.nav-r a.lk:hover::after{width:100%}
.status{display:inline-flex;align-items:center;gap:7px;color:var(--green);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase}
.status i{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);animation:bl 1.4s steps(1) infinite}
@keyframes bl{50%{opacity:.3}}
.chip{font-size:.76rem;border:2px solid var(--ink);padding:.32em .62em;background:var(--bg2)}.chip b{color:var(--acc)}
.tgl{font-size:.82rem;border:2px solid var(--ink);padding:.3em .55em;cursor:pointer;background:transparent;color:var(--ink);transition:background .2s,color .2s}.tgl:hover{background:var(--ink);color:var(--bg)}
@media(max-width:680px){.nav-r .hideable{display:none}}

/* BODY GRID: main + distinct side */
.body-grid{display:grid;grid-template-columns:minmax(0,1fr) 266px;gap:36px;position:relative}
.body-grid::after{content:"";position:absolute;top:0;right:0;width:266px;height:100%;z-index:0;pointer-events:none;border-left:2px solid var(--ink);
  background:radial-gradient(circle at 1.5px 1.5px,var(--line) 1px,transparent 1.7px) 0 0/15px 15px,var(--side)}
.main,.aside{position:relative;z-index:1;min-width:0}
.aside{align-self:start;position:sticky;top:78px;padding:30px 0 30px 24px;display:flex;flex-direction:column;gap:18px}
@media(max-width:980px){.body-grid{grid-template-columns:1fr;gap:0}.body-grid::after{display:none}.aside{position:static;padding:0 0 30px;border-top:2px solid var(--ink);margin-top:30px;padding-top:30px}}

/* SIDE cards */
.side-card{border:2px solid var(--ink);border-radius:7px;background:var(--bg2);box-shadow:4px 4px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);padding:15px 16px}
.side-h{font-family:"Space Mono";font-weight:700;font-size:.74rem;letter-spacing:.04em;color:var(--ink);text-shadow:var(--emboss);border-bottom:1px dashed var(--line);padding-bottom:9px;margin-bottom:11px}
.idx{display:flex;flex-direction:column;gap:1px}
.idx a{font-size:.76rem;color:var(--soft);padding:4px 0 4px 12px;border-left:2px solid transparent;transition:color .2s,border-color .2s,padding-left .2s}
.idx a:hover{color:var(--ink);padding-left:15px}.idx a.on{border-color:var(--acc);color:var(--ink);font-weight:700}
.guide-tip{font-size:.72rem;color:var(--soft);margin-top:11px;border-top:1px dashed var(--line);padding-top:10px}.guide-tip b{color:var(--acc)}
.fieldnote{transition:opacity .25s}
.fn-k{display:block;font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;color:var(--acc);margin-bottom:7px}
.fn-t{font-family:"Space Mono";font-weight:700;font-size:.96rem;color:var(--ink);text-shadow:var(--emboss);margin-bottom:7px;line-height:1.25}
.fn-b{color:var(--soft);font-size:.76rem;line-height:1.55}
.fn-tip{display:block;margin-top:10px;border-top:1px dashed var(--line);padding-top:9px;color:var(--ink);font-size:.72rem}.fn-tip b{color:var(--acc)}
.terms a.tl{display:block;font-size:.78rem;color:var(--soft);padding:3px 0}.terms a.tl:hover{color:var(--acc)}
.terms details{margin:6px 0}.terms summary{font-size:.76rem;cursor:pointer;list-style:none;color:var(--soft);padding:4px 0;display:flex;justify-content:space-between}.terms summary:hover{color:var(--ink)}.terms summary::after{content:"+";color:var(--acc)}.terms details[open] summary::after{content:"–"}
.terms .ta{font-size:.7rem;color:var(--mute);line-height:1.55;padding:4px 0 8px}
.terms .cp{font-size:.62rem;color:var(--mute);border-top:1px dashed var(--line);padding-top:10px;margin-top:8px}

/* HERO */
.hero{padding:clamp(34px,6vh,72px) 0 40px;display:grid;grid-template-columns:1.08fr .92fr;gap:42px;align-items:start}
@media(max-width:860px){.hero{grid-template-columns:1fr;gap:30px}}
.eyebrow{font-size:.76rem;letter-spacing:.12em;color:var(--acc);margin-bottom:20px}
.eyebrow::before{content:"[ "}.eyebrow::after{content:" ]"}
h1{font-family:"Space Mono";font-weight:700;font-size:clamp(2rem,4.8vw,3.4rem);line-height:1.12;letter-spacing:-.03em;min-height:2.2em;text-shadow:var(--emboss)}
h1 .acc{color:var(--acc);text-shadow:var(--emboss-acc)}
.caret{display:inline-block;width:.6ch;height:1.02em;background:var(--acc);transform:translateY(.12em);animation:cb 1s steps(1) infinite}
@keyframes cb{50%{opacity:0}}
.lead{margin-top:22px;color:var(--soft);max-width:50ch;font-size:.98rem}.lead b{color:var(--ink)}
.cmd{margin-top:24px;background:var(--ink);color:#E9E5DC;border-radius:6px;padding:13px 16px;font-size:.85rem;display:flex;align-items:center;gap:10px;box-shadow:5px 5px 0 var(--sh);flex-wrap:wrap}
.cmd .p{color:var(--green)}.cmd .b{color:var(--acc)}
.cta{margin-top:26px;display:flex;gap:12px;flex-wrap:wrap}
.btn{font-family:"JetBrains Mono";font-weight:500;font-size:.84rem;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;border:2px solid var(--ink);background:var(--ink);color:var(--bg);padding:.72em 1.35em;border-radius:5px;transition:transform .14s,box-shadow .14s,background .2s,color .2s;display:inline-block}
.btn:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--acc)}
.btn:active{transform:translate(0,0);box-shadow:1px 1px 0 var(--acc)}
.btn.ghost{background:transparent;color:var(--ink)}.btn.ghost:hover{box-shadow:4px 4px 0 var(--ink)}

/* STANDING */
.stand{margin-top:24px;border:2px solid var(--ink);border-radius:6px;background:var(--bg2);box-shadow:4px 4px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);padding:12px 15px;display:flex;gap:15px;align-items:center;flex-wrap:wrap;font-size:.76rem}
.stand .sr{font-family:"Space Mono";font-weight:700;font-size:.92rem;text-shadow:var(--emboss)}.stand .ss{font-size:.58rem;color:var(--mute);text-transform:uppercase;letter-spacing:.06em}
.stand .xpbar{flex:1;min-width:110px;height:9px;border:2px solid var(--ink);overflow:hidden}.stand .xpfill{height:100%;background:var(--acc);width:0;transition:width .6s}
.stand .sm{font-size:.66rem;color:var(--soft)}
.marks{display:flex;flex-wrap:wrap;gap:5px}.mk{font-size:.54rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border:2px solid var(--soft);padding:.26em .46em;opacity:.85}

/* SPECIMEN / PARSER */
.spec{border:2px solid var(--ink);border-radius:8px;background:var(--bg2);box-shadow:6px 6px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);overflow:hidden}
.spec-h{background:var(--ink);color:var(--bg);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;padding:10px 16px;display:flex;justify-content:space-between;align-items:center}
.spec-h .rec{display:inline-flex;align-items:center;gap:6px}.spec-h .rec i{width:6px;height:6px;border-radius:50%;background:var(--acc);animation:bl 1.1s steps(1) infinite}
.spec-b{padding:18px 18px 20px}
.spec-in{display:flex;gap:9px;align-items:center;border-bottom:1px dashed var(--line);padding-bottom:13px;margin-bottom:14px}
.spec-in .p{color:var(--acc);font-weight:700;font-family:"Space Mono"}
#try{flex:1;font-family:"Space Mono";font-size:1.02rem;border:0;background:transparent;outline:0;color:var(--ink);min-width:0}
.sent{font-family:"Space Mono";font-size:1.12rem;line-height:1.95;min-height:2em}
.tok{position:relative;cursor:pointer;white-space:nowrap}
.tok sup{font-size:.5em;letter-spacing:.04em;margin-left:1px}
.tok[data-p=NOUN] sup{color:var(--acc)}.tok[data-p=VERB] sup{color:var(--blue)}.tok[data-p=ADJ] sup{color:var(--green)}.tok[data-p=ADV] sup{color:var(--purple)}.tok[data-p=DET] sup,.tok[data-p=CONJ] sup{color:var(--mute)}.tok[data-p=PRON] sup{color:var(--purple)}.tok[data-p=PREP] sup{color:var(--brown)}.tok[data-p=NUM] sup{color:var(--green)}.tok[data-p=PROPN] sup{color:var(--acc)}
.tok:hover{background:color-mix(in srgb,var(--acc) 13%,transparent);border-radius:3px}
.spec-tip{margin-top:16px;border-top:1px dashed var(--line);padding-top:13px;font-size:.82rem;color:var(--soft);min-height:3.2em}.spec-tip b{color:var(--ink)}.spec-tip .sug{color:var(--acc);font-weight:700}
.legend{display:flex;flex-wrap:wrap;gap:7px 13px;margin-top:12px;font-size:.6rem;color:var(--mute)}
.legend span{display:inline-flex;align-items:center;gap:5px}.legend i{width:7px;height:7px;border-radius:2px}

/* STEPS */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}@media(max-width:680px){.steps{grid-template-columns:1fr}}
.step{border:2px solid var(--ink);background:var(--bg2);border-radius:6px;padding:18px;box-shadow:4px 4px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);transition:transform .16s,box-shadow .16s}
.step:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--acc),inset 0 1px 0 rgba(255,255,255,.45)}
.step .sx{font-family:"Space Mono";font-weight:700;font-size:1.6rem;color:var(--acc);text-shadow:var(--emboss-acc)}
.step .st{font-family:"Space Mono";font-weight:700;margin:7px 0 6px;text-shadow:var(--emboss)}
.step .sd{font-size:.84rem;color:var(--soft)}
/* TICKER */
.ticker{margin-top:30px;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);overflow:hidden;white-space:nowrap;background:var(--bg2)}
.ticker .mq{display:inline-flex;animation:mq 34s linear infinite;font-family:"Space Mono";font-weight:700;font-size:.9rem;padding:10px 0;color:var(--soft)}
.ticker .mq span{padding:0 20px}.ticker .mq .d{color:var(--acc)}
@keyframes mq{to{transform:translateX(-50%)}}

/* ROWS */
.row{padding:clamp(34px,5vh,60px) 0;border-top:2px solid var(--ink)}
.row.reveal{opacity:0;transform:translateY(22px)}
.row.reveal.in{opacity:1;transform:none;transition:opacity .6s ease,transform .6s cubic-bezier(.2,.7,.2,1)}
.row-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px;flex-wrap:wrap;gap:10px}
.row-h h2{font-family:"Space Mono";font-weight:700;font-size:clamp(1.35rem,2.8vw,1.95rem);letter-spacing:-.02em;text-shadow:var(--emboss)}
.row-h .n{color:var(--mute);font-size:.8rem}
.rownote{display:none;border-left:3px solid var(--acc);background:var(--bg2);padding:10px 14px;margin-bottom:22px;font-size:.8rem;color:var(--soft)}
.rownote b{color:var(--ink)}.rownote .k{color:var(--acc);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;display:block;margin-bottom:4px}.rownote .tip{color:var(--ink)}
@media(max-width:980px){.rownote{display:block}}

/* COMPOSE */
.cmp-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}@media(max-width:720px){.cmp-grid{grid-template-columns:1fr}}
#cmp{width:100%;min-height:160px;resize:vertical;font-family:"Space Mono";font-size:1.04rem;line-height:1.8;color:var(--ink);background:var(--bg2);border:2px solid var(--ink);border-radius:6px;padding:15px;outline:0;box-shadow:5px 5px 0 var(--sh)}
#cmp:focus{box-shadow:5px 5px 0 var(--acc)}
.cmp-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:.74rem;color:var(--soft);margin-top:14px}.cmp-bar .grow{flex:1}
.say{font-size:.6rem;text-transform:uppercase;letter-spacing:.07em;border:2px solid var(--ink);padding:.34em .68em;cursor:pointer;background:transparent;color:var(--ink);transition:background .2s,color .2s}.say:hover{background:var(--ink);color:var(--bg)}
.pane{border:2px solid var(--line);border-radius:6px;background:var(--bg2);padding:14px;margin-bottom:12px}
.pane h4{font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);margin-bottom:9px}
.parsed{font-family:"Space Mono";font-size:1rem;line-height:1.95}
.fix-i,.alt-i{font-size:.8rem;margin-bottom:9px;line-height:1.5}
.fix-i .from{color:var(--soft);text-decoration:line-through}.fix-i .to{color:var(--acc);font-weight:700}
.apply{cursor:pointer;border:2px solid var(--line);padding:.12em .58em;margin-left:6px;font-size:.66rem;background:transparent;color:var(--ink)}.apply:hover{background:var(--acc);color:#fff;border-color:transparent}
.alt-i .a0{color:var(--ink);font-weight:700}.alt-i .opt{color:var(--acc);cursor:pointer;text-decoration:underline;text-underline-offset:2px;margin-right:8px}
.cmp-empty{color:var(--mute);font-size:.78rem}
.cmp-saved{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.entry{border:2px solid var(--line);background:var(--bg2);padding:10px 12px}.entry .ed{font-size:.58rem;color:var(--mute);text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px}.entry .et{font-family:"Space Mono";font-size:.92rem}

/* PATH */
.path{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}@media(max-width:680px){.path{grid-template-columns:repeat(3,1fr)}}@media(max-width:400px){.path{grid-template-columns:repeat(2,1fr)}}
.lvl{border:2px solid var(--ink);background:var(--bg2);padding:13px;border-radius:5px;transition:transform .16s,box-shadow .16s}
.lvl:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--acc)}
.lvl .lc{font-family:"Space Mono";font-weight:700;font-size:1.3rem;color:var(--acc);text-shadow:var(--emboss-acc)}.lvl .ln{font-size:.56rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin:2px 0 6px}.lvl .ld{font-size:.76rem;color:var(--soft)}

/* ANATOMY */
.anat{display:flex;flex-wrap:wrap;gap:9px}
.ch{font-family:"Space Mono";font-size:clamp(1.05rem,2.4vw,1.45rem);border:2px solid var(--ink);padding:.12em .5em;cursor:pointer;background:var(--bg2);border-radius:4px;transition:transform .15s,box-shadow .15s,background .15s,color .15s}
.ch:hover,.ch.on{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--acc)}.ch.on{background:var(--acc);color:#fff;border-color:var(--acc)}
.anat-read{margin-top:16px;font-size:.86rem;color:var(--soft);min-height:2.2em;border-left:3px solid var(--acc);padding-left:13px}.anat-read b{color:var(--ink)}

/* DAILY */
.q{font-family:"Space Mono";font-weight:700;font-size:1.06rem;margin-bottom:15px}
.opts{display:grid;gap:9px;max-width:560px}
.opt{font-size:.88rem;text-align:left;border:2px solid var(--ink);background:transparent;color:var(--ink);padding:.62em .92em;cursor:pointer;border-radius:4px;transition:transform .14s,box-shadow .16s}
.opt:hover{transform:translate(-2px,-2px);box-shadow:3px 3px 0 var(--acc)}
.opt.right{background:var(--green);border-color:var(--green);color:#fff}.opt.wrong{background:#b4564b;border-color:#b4564b;color:#fff}
.daily-fb{font-size:.82rem;color:var(--soft);margin-top:13px;min-height:1.3em}.daily-fb b{color:var(--ink)}

/* MODULES */
.mods{border-top:1px dashed var(--line)}
.mod{display:grid;grid-template-columns:48px 1fr auto;gap:16px;align-items:center;padding:15px 12px;border-bottom:1px dashed var(--line);transition:background .2s,padding-left .2s}
.mod:hover{background:var(--bg2);padding-left:20px}
.mod .ix{color:var(--mute);font-size:.82rem}.mod .nm{font-family:"Space Mono";font-weight:700}.mod .ds{color:var(--soft);font-size:.85rem}.mod .ck{color:var(--green);font-size:.78rem;letter-spacing:.1em;white-space:nowrap}
@media(max-width:640px){.mod{grid-template-columns:32px 1fr}.mod .ck{display:none}}

/* LIBRARY */
.tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.tab{font-size:.74rem;border:2px solid var(--ink);padding:.36em .85em;background:transparent;color:var(--ink);cursor:pointer;border-radius:4px;transition:background .2s,color .2s}.tab.on{background:var(--ink);color:var(--bg)}
.glist{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.g{border:2px solid var(--ink);background:var(--bg2);padding:14px;border-radius:5px;transition:transform .16s,box-shadow .16s}
.g:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--acc)}
.g .gt{font-family:"Space Mono";font-weight:700;font-size:.96rem}.g .gm{font-size:.58rem;color:var(--mute);text-transform:uppercase;letter-spacing:.05em;margin-top:5px}

/* FIX-IT */
.flips{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.flip{perspective:900px;min-height:112px;cursor:pointer}
.flip-in{position:relative;width:100%;height:100%;min-height:112px;transition:transform .55s;transform-style:preserve-3d}
.flip:hover .flip-in,.flip.on .flip-in{transform:rotateY(180deg)}
.flip-f,.flip-b{position:absolute;inset:0;backface-visibility:hidden;border:2px solid var(--ink);background:var(--bg2);padding:15px;border-radius:5px;display:flex;flex-direction:column;justify-content:center}
.flip-b{background:var(--acc);color:#fff;transform:rotateY(180deg);border-color:var(--acc)}
.flip .x{font-size:.58rem;letter-spacing:.06em;text-transform:uppercase;color:var(--acc);margin-bottom:6px}.flip-b .x{color:rgba(255,255,255,.85)}.flip .s{font-family:"Space Mono";font-size:1rem}

/* TODAY */
.today{display:grid;grid-template-columns:1.1fr 1fr;gap:16px}@media(max-width:680px){.today{grid-template-columns:1fr}}
.tcard{border:2px solid var(--ink);background:var(--bg2);padding:18px;border-radius:6px;box-shadow:5px 5px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45)}
.lbl{font-size:.62rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--acc)}
.quote{font-family:"Space Mono";font-size:1.04rem;line-height:1.45}.quote .by{display:block;font-size:.72rem;color:var(--soft);margin-top:11px}
.wod .w2{font-family:"Space Mono";font-weight:700;font-size:1.42rem;display:flex;align-items:center;gap:10px;text-shadow:var(--emboss)}
.wod .ipa{color:var(--soft);font-size:.88rem}.wod .pos{font-size:.6rem;color:var(--acc);text-transform:uppercase;letter-spacing:.08em;margin:7px 0}.wod .def{font-size:.9rem}.wod .ex{font-size:.82rem;color:var(--soft);margin-top:8px;font-style:italic}
.art{border:2px solid var(--ink);background:var(--bg2);padding:8px;margin-top:14px;border-radius:6px}.art svg{width:100%;height:auto;display:block}

/* NETWORK / STATS / CTA / FAQ */
.net{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.ncard{border:2px solid var(--ink);background:var(--bg2);padding:15px;border-radius:5px;transition:transform .16s,box-shadow .16s}
.ncard:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--acc)}
.ncard .nt{font-family:"Space Mono";font-weight:700;font-size:.96rem}.ncard .nd{color:var(--soft);font-size:.78rem;margin:6px 0 10px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:2px solid var(--ink);border-radius:8px;overflow:hidden}
.stat{padding:22px 16px;border-right:1px solid var(--line)}.stat:last-child{border-right:0}
.stat .v{font-family:"Space Mono";font-weight:700;font-size:clamp(1.5rem,3.4vw,2.3rem);color:var(--acc);text-shadow:var(--emboss-acc)}.stat .l{font-size:.72rem;color:var(--soft);margin-top:4px;text-transform:uppercase;letter-spacing:.06em}
@media(max-width:640px){.stats{grid-template-columns:1fr 1fr}.stat:nth-child(2){border-right:0}.stat:nth-child(1),.stat:nth-child(2){border-bottom:1px solid var(--line)}}
.cta-block{text-align:center;border:2px dashed var(--ink);border-radius:10px;padding:clamp(28px,5vw,52px)}
.cta-block h2{font-family:"Space Mono";font-weight:700;font-size:clamp(1.6rem,3.4vw,2.4rem);letter-spacing:-.02em;text-shadow:var(--emboss)}.cta-block p{color:var(--soft);margin:14px auto 22px;max-width:46ch}
.faq details{border:2px solid var(--ink);background:var(--bg2);margin-bottom:9px;padding:0 16px;border-radius:5px}
.faq summary{font-weight:700;font-size:.9rem;padding:14px 0;cursor:pointer;list-style:none;display:flex;justify-content:space-between}
.faq summary::after{content:"+";color:var(--acc)}.faq details[open] summary::after{content:"–"}.faq .a{padding:0 0 15px;color:var(--soft);font-size:.86rem}
.foot{border-top:2px solid var(--ink);padding:26px 0;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;color:var(--mute);font-size:.78rem}

#toasts{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:60;display:flex;flex-direction:column;gap:10px;align-items:center;width:max-content;max-width:90vw}
.toast{font-size:.82rem;background:var(--ink);color:var(--bg);border:2px solid var(--acc);padding:11px 17px;border-radius:5px;box-shadow:5px 5px 0 var(--sh);opacity:0;transform:translateY(12px);transition:opacity .25s,transform .25s}
.toast.in{opacity:1;transform:none}.toast b{color:var(--acc)}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.row.reveal{opacity:1;transform:none}}

/* ============ PARTICLES ============ */
#pcanvas{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.55}
[data-theme=dark] #pcanvas{opacity:.4}
.wrap,.nav{position:relative;z-index:1}
body.no-particles #pcanvas{display:none}

/* ============ DRAWERS ============ */
.dtab{position:fixed;top:50%;transform:translateY(-50%);z-index:40;writing-mode:vertical-rl;text-orientation:mixed;font-family:"Space Mono";font-weight:700;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;
  border:2px solid var(--ink);background:var(--bg2);color:var(--ink);padding:14px 7px;box-shadow:4px 4px 0 var(--sh);transition:background .2s,color .2s,transform .2s}
.dtab:hover{background:var(--ink);color:var(--bg)}
.dtab .dot{display:block;width:7px;height:7px;border-radius:50%;background:var(--acc);margin:8px auto 0}
.dtab.left{left:0;border-left:0;border-radius:0 8px 8px 0}
.dtab.right{right:0;border-right:0;border-radius:8px 0 0 8px}
body.dl-open .dtab.left,body.dr-open .dtab.right{transform:translateY(-50%) scale(0)}

.drawer{position:fixed;top:0;bottom:0;width:340px;max-width:88vw;z-index:50;background:var(--bg2);display:flex;flex-direction:column;transition:transform .32s cubic-bezier(.3,.7,.2,1);box-shadow:0 0 60px rgba(20,15,5,.3)}
.drawer.left{left:0;border-right:2px solid var(--ink);transform:translateX(-104%);
  background:radial-gradient(circle at 1.5px 1.5px,var(--line) 1px,transparent 1.7px) 0 0/15px 15px,var(--bg2)}
.drawer.right{right:0;border-left:2px solid var(--ink);transform:translateX(104%);
  background:radial-gradient(circle at 1.5px 1.5px,var(--line) 1px,transparent 1.7px) 0 0/15px 15px,var(--bg2)}
body.dl-open .drawer.left{transform:none}
body.dr-open .drawer.right{transform:none}
.drawer-h{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-bottom:2px solid var(--ink);background:var(--ink);color:var(--bg);flex-shrink:0}
.drawer-h .dt{font-family:"Space Mono";font-weight:700;font-size:.92rem}
.drawer-h .dx{cursor:pointer;border:2px solid var(--bg);color:var(--bg);background:transparent;width:26px;height:26px;line-height:1;border-radius:5px;font-size:.9rem}
.drawer-h .dx:hover{background:var(--bg);color:var(--ink)}
.drawer-b{padding:16px 18px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:16px}
.dblock{border:2px solid var(--line);background:var(--bg);border-radius:7px;box-shadow:inset 0 1px 0 rgba(255,255,255,.4);padding:14px}
.dblock h4{font-family:"Space Mono";font-weight:700;font-size:.74rem;color:var(--ink);text-shadow:var(--emboss);margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}
.dblock h4 .badge{font-size:.56rem;color:var(--acc);letter-spacing:.08em}
.scrim{position:fixed;inset:0;background:rgba(20,15,5,.34);z-index:45;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}
body.dl-open .scrim,body.dr-open .scrim{opacity:1;visibility:visible}
@media(min-width:1280px){body.dl-open .scrim,body.dr-open .scrim{background:transparent}}

/* form bits in drawers */
.fld{width:100%;font-family:"JetBrains Mono";font-size:.84rem;color:var(--ink);background:var(--bg2);border:2px solid var(--ink);border-radius:5px;padding:9px 11px;outline:0}
.fld:focus{box-shadow:3px 3px 0 var(--acc)}
textarea.fld{resize:vertical;min-height:96px;font-family:"Space Mono";line-height:1.7}
.drow{display:flex;gap:9px;align-items:center}
.mini{font-family:"JetBrains Mono";font-weight:700;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;cursor:pointer;border:2px solid var(--ink);background:var(--ink);color:var(--bg);padding:.5em .85em;border-radius:5px;transition:transform .14s,box-shadow .14s}
.mini:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--acc)}.mini:active{transform:none;box-shadow:1px 1px 0 var(--acc)}
.mini.gh{background:transparent;color:var(--ink)}
.prof-id{display:flex;align-items:center;gap:11px;margin-bottom:11px}
.mono-av{width:42px;height:42px;flex-shrink:0;border:2px solid var(--ink);border-radius:7px;background:var(--acc);color:#fff;font-family:"Space Mono";font-weight:700;font-size:1.3rem;display:flex;align-items:center;justify-content:center;box-shadow:3px 3px 0 var(--sh)}
.prof-id .pn{font-family:"Space Mono";font-weight:700;font-size:1rem}.prof-id .ps{font-size:.62rem;color:var(--mute);text-transform:uppercase;letter-spacing:.06em}
.gitem{display:flex;align-items:center;gap:9px;font-size:.82rem;padding:6px 0;border-bottom:1px dashed var(--line)}
.gitem:last-child{border-bottom:0}
.gitem input{width:15px;height:15px;accent-color:var(--acc);cursor:pointer}
.gitem .gtx{flex:1}.gitem.done .gtx{text-decoration:line-through;color:var(--mute)}
.gitem .gdel{cursor:pointer;color:var(--mute);border:0;background:0;font-size:.9rem}.gitem .gdel:hover{color:var(--acc)}
.bank{display:flex;flex-wrap:wrap;gap:6px}
.bw{font-size:.72rem;border:2px solid var(--line);border-radius:100px;padding:.24em .7em;background:var(--bg2)}
.cust-row{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;padding:7px 0;border-bottom:1px dashed var(--line)}.cust-row:last-child{border-bottom:0}
.swatches{display:flex;gap:7px}
.sw{width:22px;height:22px;border-radius:50%;border:2px solid var(--ink);cursor:pointer;transition:transform .15s}.sw:hover,.sw.on{transform:scale(1.18)}
.switch{width:40px;height:22px;border:2px solid var(--ink);border-radius:100px;background:var(--bg2);cursor:pointer;position:relative;flex-shrink:0}
.switch i{position:absolute;top:1px;left:1px;width:16px;height:16px;border-radius:50%;background:var(--ink);transition:left .2s,background .2s}
.switch.on{background:var(--acc)}.switch.on i{left:19px;background:#fff}
.saved-flag{font-size:.6rem;color:var(--green);letter-spacing:.04em}

/* font-size scale hook */
html[data-fs="s"] body{font-size:14px}html[data-fs="l"] body{font-size:16.5px}
body.focus-mode #pcanvas,body.focus-mode .ticker,body.focus-mode .art{display:none}

/* ============ SHARED PAGE HEADER ============ */
.phead{padding:clamp(30px,5vh,60px) 0 10px}
.phead .eyebrow{font-size:.76rem;letter-spacing:.12em;color:var(--acc);margin-bottom:16px}.phead .eyebrow::before{content:"[ "}.phead .eyebrow::after{content:" ]"}
.phead h1{font-family:"Space Mono";font-weight:700;font-size:clamp(1.9rem,4.6vw,3rem);line-height:1.12;letter-spacing:-.03em;text-shadow:var(--emboss);min-height:auto}
.phead .plead{margin-top:16px;color:var(--soft);max-width:62ch;font-size:.98rem}.phead .plead b{color:var(--ink)}
.crumb{font-size:.74rem;color:var(--mute)}.crumb a:hover{color:var(--acc)}

/* ============ LIBRARY PAGE ============ */
.lib-tools{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin:8px 0 22px}
.search{flex:1;min-width:200px;display:flex;align-items:center;gap:9px;border:2px solid var(--ink);border-radius:6px;background:var(--bg2);padding:10px 13px;box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}
.search .p{color:var(--acc);font-family:"Space Mono";font-weight:700}
.search input{flex:1;border:0;background:transparent;outline:0;font-family:"JetBrains Mono";font-size:.9rem;color:var(--ink);min-width:0}
.libgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.gcard{border:2px solid var(--ink);background:var(--bg2);border-radius:7px;padding:18px;box-shadow:4px 4px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);transition:transform .16s,box-shadow .16s;display:flex;flex-direction:column;gap:10px}
.gcard:hover{transform:translate(-3px,-3px);box-shadow:6px 6px 0 var(--acc),inset 0 1px 0 rgba(255,255,255,.45)}
.gcard .gtag{font-size:.58rem;text-transform:uppercase;letter-spacing:.08em;color:var(--acc);font-weight:700}
.gcard .gtt{font-family:"Space Mono";font-weight:700;font-size:1.08rem;line-height:1.25;text-shadow:var(--emboss)}
.gcard .gds{font-size:.84rem;color:var(--soft);flex:1}
.gcard .gmeta{font-size:.62rem;color:var(--mute);text-transform:uppercase;letter-spacing:.05em;border-top:1px dashed var(--line);padding-top:10px;display:flex;justify-content:space-between}
.gcard .gmeta .lvlpill{color:var(--green)}
.no-res{color:var(--mute);font-size:.86rem;padding:20px 0}

/* ============ PLACEMENT PAGE ============ */
.exam{border:2px solid var(--ink);border-radius:9px;background:var(--bg2);box-shadow:6px 6px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);overflow:hidden;max-width:760px}
.exam-h{background:var(--ink);color:var(--bg);padding:13px 18px;display:flex;justify-content:space-between;align-items:center;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase}
.exam-bar{height:5px;background:var(--bg);position:relative}.exam-bar i{position:absolute;inset:0 100% 0 0;background:var(--acc);transition:right .4s}
.exam-b{padding:24px 22px}
.exam-q{font-family:"Space Mono";font-weight:700;font-size:1.16rem;margin-bottom:18px;line-height:1.4}
.exam-opts{display:grid;gap:10px}
.exam-o{font-size:.92rem;text-align:left;border:2px solid var(--ink);background:var(--bg);color:var(--ink);padding:.74em 1em;cursor:pointer;border-radius:5px;transition:transform .14s,box-shadow .14s}
.exam-o:hover{transform:translate(-2px,-2px);box-shadow:3px 3px 0 var(--acc)}
.exam-o.sel{background:var(--acc);border-color:var(--acc);color:#fff}
.exam-foot{display:flex;justify-content:space-between;align-items:center;margin-top:20px}
.exam-res{text-align:center;padding:10px 0}
.exam-res .lvlbig{font-family:"Space Mono";font-weight:700;font-size:clamp(2.6rem,7vw,4.4rem);color:var(--acc);text-shadow:var(--emboss-acc);line-height:1}
.exam-res .lvlname{font-family:"Space Mono";font-weight:700;font-size:1.2rem;margin:6px 0 10px}
.exam-res .lvldesc{color:var(--soft);max-width:44ch;margin:0 auto 18px}
.exam-skip{font-size:.74rem;color:var(--mute);cursor:pointer;background:0;border:0}.exam-skip:hover{color:var(--acc)}

/* ============ TENSES PAGE ============ */
.tense-grid{display:grid;grid-template-columns:auto repeat(4,1fr);gap:0;border:2px solid var(--ink);border-radius:8px;overflow:hidden;font-size:.82rem}
.tense-grid .cell b{font-family:"Space Mono";font-weight:700;font-size:.78rem;display:block;margin-bottom:3px}
.tense-grid .th{background:var(--ink);color:var(--bg);font-family:"Space Mono";font-weight:700;padding:11px 13px;font-size:.74rem;text-transform:uppercase;letter-spacing:.06em}
.tense-grid .rh{font-family:"Space Mono";font-weight:700;background:var(--bg2);padding:11px 13px;border-top:1px solid var(--line)}
.tense-grid .cell{padding:11px 13px;border-top:1px solid var(--line);border-left:1px dashed var(--line)}
.tense-grid .cell .ex{color:var(--soft)}
@media(max-width:720px){.tense-grid{display:none}}
.tcards{display:none;flex-direction:column;gap:12px}
@media(max-width:720px){.tcards{display:flex}}
.tcardx{border:2px solid var(--ink);background:var(--bg2);border-radius:7px;padding:15px;box-shadow:4px 4px 0 var(--sh)}
.tcardx .tnm{font-family:"Space Mono";font-weight:700;color:var(--acc)}
.tcardx .tform{font-size:.78rem;color:var(--mute);margin:4px 0 8px}
.tcardx .tex{font-size:.86rem}
.tense-detail{margin-top:26px;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.tdt{border:2px solid var(--ink);background:var(--bg2);border-radius:7px;padding:18px;box-shadow:4px 4px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45)}
.tdt .h{font-family:"Space Mono";font-weight:700;font-size:1.04rem;color:var(--acc);text-shadow:var(--emboss-acc);margin-bottom:4px}
.tdt .use{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--mute);margin-bottom:10px}
.tdt .formula{font-family:"Space Mono";font-size:.84rem;background:var(--ink);color:var(--bg);padding:8px 11px;border-radius:5px;margin-bottom:10px}
.tdt .formula b{color:var(--acc)}
.tdt ul{list-style:none;font-size:.84rem;color:var(--soft);display:flex;flex-direction:column;gap:5px}
.tdt ul li::before{content:"› ";color:var(--acc)}
.tdt .say{margin-top:10px}

/* ============ HOMEPAGE RECONCILE (renamed classes) ============ */
.hero-l{min-width:0}.hero-r{min-width:0}
.brand .cur{color:var(--acc);animation:bl 1.1s steps(1) infinite}
.tglbtn{cursor:pointer;border:2px solid var(--ink);background:var(--bg2);color:var(--ink);width:30px;height:30px;border-radius:6px;font-size:.9rem;line-height:1;box-shadow:2px 2px 0 var(--sh)}
.tglbtn:hover{background:var(--ink);color:var(--bg)}
.spec-tag{font-size:.6rem;letter-spacing:.12em;border:1px solid var(--bg);padding:2px 7px;border-radius:100px;text-transform:uppercase}
.stand-l{flex:1;min-width:0}
.rank{font-family:"Space Mono";font-weight:700;font-size:1rem;text-shadow:var(--emboss)}
.tier{font-size:.6rem;color:var(--mute);text-transform:uppercase;letter-spacing:.07em;margin-left:9px}
.standmeta{font-size:.66rem;color:var(--soft);margin-top:6px;letter-spacing:.02em}

/* compose */
.cmp{display:grid;grid-template-columns:1.12fr .88fr;gap:18px}@media(max-width:760px){.cmp{grid-template-columns:1fr}}
.cmp-in{display:flex;flex-direction:column;gap:10px}
#cmp{width:100%;min-height:190px;resize:vertical;font-family:"Space Mono",monospace;font-size:.92rem;line-height:1.75;color:var(--ink);background:var(--bg2);border:2px solid var(--ink);border-radius:8px;box-shadow:inset 0 1px 0 rgba(255,255,255,.4);padding:14px 15px;outline:0}
#cmp:focus{box-shadow:4px 4px 0 var(--acc)}
.cmp-bar{display:flex;justify-content:space-between;align-items:center;font-size:.72rem;color:var(--mute);text-transform:uppercase;letter-spacing:.05em}
.cmp-actions{display:flex;gap:8px}
.cmp-out{display:flex;flex-direction:column;gap:12px}
.cmp-card{border:2px solid var(--ink);background:var(--bg2);border-radius:7px;padding:13px 14px;box-shadow:3px 3px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.4)}
.cmp-card h5{font-family:"Space Mono";font-weight:700;font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin-bottom:8px}

/* daily */
.daily{border:2px solid var(--ink);background:var(--bg2);border-radius:8px;padding:20px;box-shadow:5px 5px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);max-width:680px}
.d-q{font-family:"Space Mono";font-weight:700;font-size:1.08rem;margin-bottom:14px;line-height:1.4}
.d-opts{display:flex;flex-wrap:wrap;gap:9px}
.d-fb{margin-top:14px;font-size:.86rem;color:var(--soft);min-height:1.4em}.d-fb b{color:var(--ink)}

/* modules */
.mods{list-style:none;border:2px solid var(--ink);border-radius:8px;overflow:hidden;background:var(--bg2);box-shadow:5px 5px 0 var(--sh)}
.mods li{display:grid;grid-template-columns:46px 1fr auto;gap:14px;align-items:center;padding:14px 14px;border-bottom:1px dashed var(--line);transition:padding-left .2s,background .2s}
.mods li:last-child{border-bottom:0}.mods li:hover{background:color-mix(in srgb,var(--acc) 7%,var(--bg2));padding-left:20px}
.mn{font-family:"Space Mono";font-weight:700}
.md{font-size:.82rem;color:var(--soft)}@media(max-width:620px){.md{display:none}}
.op{font-family:"JetBrains Mono";font-weight:700;font-size:.74rem;color:var(--green);white-space:nowrap}.op:hover{color:var(--acc)}

/* library preview */
.gk{font-size:.58rem;text-transform:uppercase;letter-spacing:.08em;color:var(--acc);font-weight:700}
.visit{font-size:.7rem;color:var(--green);font-weight:700}

/* flip cards */
.flip{perspective:900px;cursor:pointer;min-height:82px}
.flip-i{position:relative;width:100%;height:100%;min-height:82px;transform-style:preserve-3d;transition:transform .55s cubic-bezier(.3,.7,.2,1)}
.flip.on .flip-i{transform:rotateX(180deg)}
.flip-f,.flip-b{position:absolute;inset:0;display:flex;align-items:center;gap:9px;padding:16px;border:2px solid var(--ink);border-radius:7px;background:var(--bg2);box-shadow:3px 3px 0 var(--sh);backface-visibility:hidden;-webkit-backface-visibility:hidden;font-size:.9rem}
.flip-f{position:relative}
.flip-b{transform:rotateX(180deg);background:var(--ink);color:var(--bg)}
.flip-f .x{color:var(--acc);font-weight:700}.flip-b .ok{color:var(--green);font-weight:700}

/* today */
.t-quote,.t-word{border:2px solid var(--ink);background:var(--bg2);border-radius:8px;padding:18px;box-shadow:4px 4px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45)}
.t-quote{display:flex;flex-direction:column;justify-content:space-between;gap:14px}
.wod-h{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.wod-k{font-size:.6rem;text-transform:uppercase;letter-spacing:.09em;color:var(--acc);font-weight:700}
.wod-w{font-family:"Space Mono";font-weight:700;font-size:1.7rem;text-shadow:var(--emboss);line-height:1}
.wod-meta{font-size:.74rem;color:var(--mute);margin:6px 0 9px}.wod-ipa{font-style:italic}.wod-pos{color:var(--blue)}
.wod-def{font-size:.9rem}.wod-ex{font-size:.84rem;color:var(--soft);margin-top:7px;border-left:2px solid var(--line);padding-left:10px}

/* network + stats + path extra */
.nk{font-size:.58rem;text-transform:uppercase;letter-spacing:.08em;color:var(--acc);font-weight:700}
.sl{font-size:.68rem;color:var(--mute);text-transform:uppercase;letter-spacing:.05em;margin-top:5px;display:block}
.path-cta{margin-top:16px;font-size:.86rem;color:var(--soft)}.path-cta a{color:var(--acc);font-weight:700}

/* signup */
.signup{}
.signup-in{border:2px dashed var(--ink);border-radius:10px;background:var(--bg2);box-shadow:inset 0 1px 0 rgba(255,255,255,.45);padding:clamp(22px,4vw,40px);text-align:center;max-width:720px;margin:0 auto}
.signup-in h2{font-family:"Space Mono";font-weight:700;font-size:clamp(1.3rem,3vw,1.9rem);margin:10px 0;text-shadow:var(--emboss)}
.signup-in p{color:var(--soft);max-width:48ch;margin:0 auto 18px}
.beehiiv-embed{max-width:480px;margin:0 auto}

/* footer */
.foot-l{display:flex;flex-direction:column;gap:3px}.foot-l b{font-family:"Space Mono"}.foot-l span{font-size:.76rem;color:var(--mute)}
.foot-r{display:flex;gap:16px;flex-wrap:wrap}.foot-r a{font-size:.82rem;color:var(--soft)}.foot-r a:hover{color:var(--acc)}
.foot-c{width:100%;font-size:.7rem;color:var(--mute);border-top:1px dashed var(--line);padding-top:14px;margin-top:6px}

/* daily option states (safety) */
.opt.right{background:var(--green);border-color:var(--green);color:#fff}
.opt.wrong{background:var(--acc);border-color:var(--acc);color:#fff}

/* ============ ACCESSIBILITY ============ */
.skip{position:absolute;left:-999px;top:0;z-index:200;background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:0 0 8px 0;font-family:"Space Mono";font-weight:700}
.skip:focus{left:0}
:focus-visible{outline:3px solid var(--acc);outline-offset:2px;border-radius:3px}
.exam-o:focus-visible,.opt:focus-visible{outline-offset:-3px}

/* ============ LEVEL-UP CEREMONY ============ */
.cer{position:fixed;inset:0;z-index:120;display:none;align-items:center;justify-content:center;background:rgba(20,15,5,.62);backdrop-filter:blur(3px);padding:24px}
.cer.on{display:flex}
.cer-card{position:relative;text-align:center;border:2px solid var(--ink);background:var(--bg2);border-radius:14px;padding:38px 34px;max-width:380px;box-shadow:0 24px 70px rgba(20,12,4,.5),inset 0 1px 0 rgba(255,255,255,.5);transform:translateY(14px) scale(.94);opacity:0;transition:transform .5s cubic-bezier(.2,.9,.2,1),opacity .5s}
.cer.on .cer-card{transform:none;opacity:1}
.seal{width:104px;height:104px;margin:0 auto 18px;position:relative}
.seal svg{width:100%;height:100%;transform:scale(.4) rotate(-30deg);opacity:0;transition:transform .6s cubic-bezier(.2,1.3,.3,1) .15s,opacity .5s .15s}
.cer.on .seal svg{transform:none;opacity:1}
.cer-k{font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--acc);font-weight:700}
.cer-rank{font-family:"Space Mono";font-weight:700;font-size:1.7rem;margin:6px 0 4px;text-shadow:var(--emboss);min-height:1.2em}
.cer-sub{font-size:.84rem;color:var(--soft)}
.cer-x{margin-top:20px}
@media(prefers-reduced-motion:reduce){.cer-card,.seal svg{transition:none;transform:none;opacity:1}}

/* ============ STREAK CALENDAR ============ */
.cal{display:flex;gap:6px;margin-top:4px}
.cal .cell{flex:1;aspect-ratio:1;border:2px solid var(--line);border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:.6rem;color:var(--mute);background:var(--bg2)}
.cal .cell.on{background:var(--acc);border-color:var(--acc);color:#fff;box-shadow:2px 2px 0 var(--sh)}
.cal .cell.today{border-color:var(--ink)}
.streak-n{font-family:"Space Mono";font-weight:700;font-size:1.4rem;text-shadow:var(--emboss-acc);color:var(--acc)}

/* ============ PROSE / GUIDE ARTICLES ============ */
.prose{max-width:70ch}
.prose h2{font-family:"Space Mono";font-weight:700;font-size:1.2rem;margin:30px 0 10px;text-shadow:var(--emboss);scroll-margin-top:80px}
.prose h3{font-family:"Space Mono";font-weight:700;font-size:.98rem;margin:22px 0 8px;color:var(--acc)}
.prose p{margin:10px 0;color:var(--soft)}.prose p b,.prose li b{color:var(--ink)}
.prose ul,.prose ol{margin:10px 0 10px 4px;padding-left:18px;color:var(--soft)}
.prose li{margin:5px 0}
.prose .ex{font-family:"Space Mono";font-size:.86rem;background:var(--bg2);border-left:3px solid var(--acc);border-radius:0 6px 6px 0;padding:10px 14px;margin:10px 0;color:var(--ink);box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}
.prose .ex .x{color:var(--acc)}.prose .ex .ok{color:var(--green)}
.callout{border:2px solid var(--ink);background:var(--bg2);border-radius:8px;padding:15px 17px;margin:18px 0;box-shadow:4px 4px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45)}
.callout .ck{font-size:.6rem;text-transform:uppercase;letter-spacing:.09em;color:var(--acc);font-weight:700}
.guide-spec{margin:22px 0}
.toc{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 6px}
.toc a{font-size:.72rem;border:2px solid var(--line);border-radius:100px;padding:.3em .8em;color:var(--soft)}.toc a:hover{border-color:var(--acc);color:var(--acc)}
.relstrip{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-top:30px}
.relstrip a{border:2px solid var(--ink);background:var(--bg2);border-radius:7px;padding:14px;box-shadow:3px 3px 0 var(--sh)}
.relstrip a:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--acc)}
.relstrip .rk{font-size:.58rem;text-transform:uppercase;letter-spacing:.08em;color:var(--acc);font-weight:700}
.relstrip b{display:block;font-family:"Space Mono";font-size:.92rem;margin-top:3px}

/* ============ VERB LAB ============ */
.tool-tabs{display:flex;gap:8px;margin:6px 0 18px;flex-wrap:wrap}
.conj-in{display:flex;gap:9px;align-items:center;max-width:480px;margin-bottom:8px}
.conj-in input{flex:1}
.conj-sub{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:16px}
.psub{font-size:.74rem;border:2px solid var(--ink);background:var(--bg2);color:var(--ink);padding:.34em .8em;border-radius:5px;cursor:pointer;font-family:"JetBrains Mono";font-weight:700}
.psub.on{background:var(--acc);border-color:var(--acc);color:#fff}
.conj-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media(max-width:620px){.conj-grid{grid-template-columns:1fr}}
.conj-row{border:2px solid var(--ink);background:var(--bg2);border-radius:7px;padding:12px 14px;box-shadow:3px 3px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.4)}
.conj-row .cn{font-size:.6rem;text-transform:uppercase;letter-spacing:.07em;color:var(--mute);display:flex;justify-content:space-between;align-items:center}
.conj-row .cv{font-family:"Space Mono";font-weight:700;margin-top:4px}
.conj-row .cv b{color:var(--acc)}
.drill{border:2px solid var(--ink);background:var(--bg2);border-radius:9px;padding:22px;box-shadow:5px 5px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);max-width:520px}
.drill .dq{font-family:"Space Mono";font-weight:700;font-size:1.05rem;margin-bottom:6px}
.drill .dsub{font-size:.74rem;color:var(--mute);margin-bottom:14px}
.drill-fb{margin-top:13px;font-size:.88rem;min-height:1.3em}.drill-fb b{color:var(--ink)}
.drill-score{font-size:.72rem;color:var(--mute);margin-top:10px}

/* ============ PRACTICE / REWRITE ============ */
.rw-item{border:2px solid var(--ink);background:var(--bg2);border-radius:9px;padding:18px;box-shadow:4px 4px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);margin-bottom:16px}
.rw-bad{font-family:"Space Mono";font-size:.92rem;margin-bottom:4px}.rw-bad .x{color:var(--acc);font-weight:700}
.rw-hint{font-size:.74rem;color:var(--mute);margin-bottom:10px}
.rw-item textarea{width:100%;min-height:60px}
.rw-fb{margin-top:10px;font-size:.86rem;min-height:1.2em}.rw-fb .ok{color:var(--green);font-weight:700}.rw-fb .x{color:var(--acc);font-weight:700}

/* ============ BLOG ============ */
.blog-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.post-card{border:2px solid var(--ink);background:var(--bg2);border-radius:8px;padding:18px;box-shadow:4px 4px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);display:flex;flex-direction:column;gap:9px;transition:transform .16s,box-shadow .16s}
.post-card:hover{transform:translate(-3px,-3px);box-shadow:6px 6px 0 var(--acc)}
.post-card .pk{font-size:.58rem;text-transform:uppercase;letter-spacing:.08em;color:var(--acc);font-weight:700}
.post-card b{font-family:"Space Mono";font-size:1.06rem;line-height:1.25;text-shadow:var(--emboss)}
.post-card .pd{font-size:.84rem;color:var(--soft);flex:1}
.post-card .pm{font-size:.62rem;color:var(--mute);text-transform:uppercase;letter-spacing:.05em;border-top:1px dashed var(--line);padding-top:9px}

/* ============ SHARED SMALL ============ */
.tiny{font-size:.66rem;color:var(--mute);line-height:1.6}
.termlist,#mis-list{display:flex;flex-direction:column;gap:6px;max-height:180px;overflow:auto}
.titem,.mitem{border:2px solid var(--line);border-radius:6px;background:var(--bg2);padding:8px 10px;font-size:.78rem;position:relative}
.titem .tt{font-family:"Space Mono";font-weight:700}.titem .td{color:var(--soft);font-size:.74rem}
.mitem .mw{color:var(--acc)}.mitem .mr{color:var(--green)}.mitem .mn{color:var(--mute);font-size:.7rem}
.xdel{position:absolute;top:5px;right:6px;border:0;background:0;color:var(--mute);cursor:pointer;font-size:.8rem}.xdel:hover{color:var(--acc)}

/* ============ CHEAT SHEET ============ */
.cheat{columns:2;column-gap:18px}@media(max-width:760px){.cheat{columns:1}}
.cheat-card{break-inside:avoid;border:2px solid var(--ink);background:var(--bg2);border-radius:8px;padding:14px 16px;margin:0 0 16px;box-shadow:3px 3px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45)}
.cheat-card h3{font-family:"Space Mono";font-weight:700;font-size:.92rem;color:var(--acc);text-shadow:var(--emboss-acc);margin-bottom:9px;display:flex;align-items:center;gap:7px}
.cheat-card h3 .no{font-size:.62rem;color:var(--mute);border:1.5px solid var(--line);border-radius:4px;padding:1px 5px}
.cheat-card ul{list-style:none;font-size:.8rem;color:var(--soft);display:flex;flex-direction:column;gap:5px}
.cheat-card li{display:flex;gap:7px;line-height:1.45}
.cheat-card li b{color:var(--ink);font-family:"Space Mono";white-space:nowrap}
.cheat-card .mono{font-family:"Space Mono";color:var(--ink)}
.cheat-card .ok{color:var(--green);font-weight:700}.cheat-card .x{color:var(--acc);font-weight:700}
.cheat-tbl{width:100%;font-size:.74rem;border-collapse:collapse}
.cheat-tbl td{border-top:1px dashed var(--line);padding:4px 3px;vertical-align:top}
.cheat-tbl td:first-child{font-family:"Space Mono";font-weight:700;color:var(--ink);white-space:nowrap;padding-right:8px}
.printbtn{margin:6px 0 16px}

/* ============ REVIEW (SRS) ============ */
.srs{max-width:560px;margin:0 auto}
.srs-top{display:flex;justify-content:space-between;align-items:center;font-size:.72rem;color:var(--mute);text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px}
.srs-card{border:2px solid var(--ink);background:var(--bg2);border-radius:12px;box-shadow:6px 6px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);padding:34px 26px;text-align:center;min-height:200px;display:flex;flex-direction:column;justify-content:center;gap:14px}
.srs-type{font-size:.6rem;text-transform:uppercase;letter-spacing:.1em;color:var(--acc);font-weight:700}
.srs-front{font-family:"Space Mono";font-weight:700;font-size:1.5rem;text-shadow:var(--emboss);line-height:1.3}
.srs-back{font-size:1rem;color:var(--soft);border-top:1px dashed var(--line);padding-top:14px}
.srs-grades{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:16px}
.srs-g{border:2px solid var(--ink);border-radius:7px;padding:.7em .4em;cursor:pointer;font-family:"JetBrains Mono";font-weight:700;font-size:.78rem;background:var(--bg2);box-shadow:3px 3px 0 var(--sh);transition:transform .12s}
.srs-g:hover{transform:translate(-2px,-2px)}
.srs-g .gi{display:block;font-size:.6rem;color:var(--mute);font-weight:400;margin-top:2px}
.srs-g.again{border-color:var(--acc)}.srs-g.good{border-color:var(--blue)}.srs-g.easy{border-color:var(--green)}
.srs-done{text-align:center;padding:30px 0}.srs-done .big{font-family:"Space Mono";font-weight:700;font-size:1.6rem;text-shadow:var(--emboss);color:var(--green)}
.srs-empty{text-align:center;color:var(--soft);padding:30px 0}

/* ============ DASHBOARD ============ */
.dash{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.dcard{border:2px solid var(--ink);background:var(--bg2);border-radius:9px;padding:18px;box-shadow:4px 4px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45)}
.dcard h3{font-family:"Space Mono";font-weight:700;font-size:.8rem;color:var(--mute);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px}
.dbig{font-family:"Space Mono";font-weight:700;font-size:2rem;text-shadow:var(--emboss);line-height:1}
.dbig.acc{color:var(--acc);text-shadow:var(--emboss-acc)}
.dsub{font-size:.74rem;color:var(--soft);margin-top:4px}
.dlist{font-size:.82rem;color:var(--soft);display:flex;flex-direction:column;gap:6px}
.dlist .et{font-family:"Space Mono";color:var(--ink)}
.dwide{grid-column:1/-1}
.chk{display:flex;align-items:center;gap:9px;font-size:.86rem;padding:7px 0;border-bottom:1px dashed var(--line)}.chk:last-child{border-bottom:0}
.chk input{width:16px;height:16px;accent-color:var(--acc)}.chk.done span{text-decoration:line-through;color:var(--mute)}

/* ============ DICTATION + CLOZE ============ */
.tool-box{border:2px solid var(--ink);background:var(--bg2);border-radius:9px;padding:20px;box-shadow:5px 5px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);max-width:620px;margin-bottom:18px}
.tool-box h3{font-family:"Space Mono";font-weight:700;margin-bottom:10px}
.dict-fb,.cloze-fb{margin-top:12px;font-size:.88rem;min-height:1.3em}
.dict-fb .ok,.cloze-fb .ok{color:var(--green);font-weight:700}.dict-fb .x,.cloze-fb .x{color:var(--acc);font-weight:700}
.cloze-q{font-family:"Space Mono";font-size:1.05rem;margin:6px 0 12px;line-height:1.6}
.cloze-q .blank{display:inline-block;min-width:70px;border-bottom:2px solid var(--acc);text-align:center;color:var(--acc);font-weight:700}

/* ============ ACHIEVEMENTS ============ */
.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.ach{border:2px solid var(--ink);background:var(--bg2);border-radius:9px;padding:16px;box-shadow:3px 3px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.4);text-align:center;opacity:.5;filter:grayscale(.6)}
.ach.on{opacity:1;filter:none;box-shadow:4px 4px 0 var(--acc),inset 0 1px 0 rgba(255,255,255,.45)}
.ach .ai{font-size:1.8rem;line-height:1}
.ach b{display:block;font-family:"Space Mono";font-size:.84rem;margin:8px 0 4px}
.ach span{font-size:.72rem;color:var(--soft)}

/* ============ SEARCH ============ */
.searchwrap{max-width:620px}
.sresults{margin-top:16px;display:flex;flex-direction:column;gap:9px}
.sres{border:2px solid var(--ink);background:var(--bg2);border-radius:7px;padding:12px 14px;box-shadow:3px 3px 0 var(--sh);display:block}
.sres:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--acc)}
.sres .sk{font-size:.58rem;text-transform:uppercase;letter-spacing:.08em;color:var(--acc);font-weight:700}
.sres b{font-family:"Space Mono";display:block;margin-top:2px}
.sres span{font-size:.78rem;color:var(--soft)}

/* ============ 404 ============ */
.nf{text-align:center;padding:clamp(40px,10vh,90px) 0}
.nf .big{margin:0;font-family:"Space Mono";font-weight:700;font-size:clamp(3rem,12vw,6rem);color:var(--acc);text-shadow:var(--emboss-acc);line-height:1}
.nf p{color:var(--soft);margin:14px auto 22px;max-width:42ch}

/* ============ PRINT ============ */
@media print{
  #pcanvas,.dtab,.drawer,.scrim,.nav,.foot,#toasts,.skip,.printbtn,.cer{display:none!important}
  body{background:#fff!important}.wrap{max-width:100%!important;padding:0!important}
  .cheat-card,.dcard,.prose .ex,.callout{box-shadow:none!important;break-inside:avoid}
  a{text-decoration:none;color:#000}
}

/* ==========================================================
   ============  4D WORLD ENGINE — THE WRITER'S DESK  =======
   Layers: room > desk > paper > ink > float
   Lamp: --lx/--ly (0..1) set by pointer or gyro.
   ========================================================== */
:root{
  --lx:.5; --ly:.3;              /* light position */
  --lamp: 1;                      /* lamp intensity */
  --dx: calc((var(--lx) - .5) * 2);   /* -1..1 */
  --dy: calc((var(--ly) - .5) * 2);
  --shx: calc(var(--dx) * -10px);     /* shadow offset opposite the lamp */
  --shy: calc(var(--dy) * -10px + 6px);
  --depth: 1;                     /* global depth multiplier (tiered by device) */
  --tilt:1;
}
html.no-depth{--depth:0;--tilt:0}

/* ---------- THE ROOM: lamp glow + vignette over the desk ---------- */
.room{position:fixed;inset:0;z-index:-3;pointer-events:none;
  background:
    radial-gradient(120vmax 90vmax at calc(var(--lx)*100%) calc(var(--ly)*100%),
      rgba(255,246,220,calc(.55*var(--lamp))) 0%,
      rgba(255,240,205,calc(.22*var(--lamp))) 22%,
      rgba(0,0,0,0) 62%),
    radial-gradient(140vmax 110vmax at 50% 120%, rgba(40,28,10,.20), rgba(0,0,0,0) 70%);
  transition:background .5s linear;mix-blend-mode:multiply;opacity:.9}
html[data-theme=dark] .room{mix-blend-mode:screen;
  background:
    radial-gradient(90vmax 70vmax at calc(var(--lx)*100%) calc(var(--ly)*100%),
      rgba(255,196,120,calc(.16*var(--lamp))) 0%, rgba(255,170,90,calc(.06*var(--lamp))) 30%, rgba(0,0,0,0) 64%),
    radial-gradient(140vmax 120vmax at 50% 130%, rgba(0,0,0,.5), rgba(0,0,0,0) 70%)}

/* desk grain + fibers (a real surface, not a color) */
.desk-grain{position:fixed;inset:0;z-index:-4;pointer-events:none;opacity:.5;
  background-image:repeating-linear-gradient(92deg,rgba(120,95,55,.045) 0 2px,rgba(0,0,0,0) 2px 7px),
  repeating-linear-gradient(3deg,rgba(120,95,55,.03) 0 1px,rgba(0,0,0,0) 1px 9px)}
html[data-theme=dark] .desk-grain{opacity:.35}

/* ---------- PERSPECTIVE STAGE ---------- */
.stage{perspective:1400px;perspective-origin:calc(var(--lx)*100%) calc(var(--ly)*100%);transform-style:preserve-3d}

/* ---------- PARALLAX PLANES ---------- */
.plane{will-change:transform;transform:translate3d(calc(var(--dx)*var(--pz,6px)*var(--depth)),calc(var(--dy)*var(--pz,6px)*var(--depth)),0);transition:transform .25s cubic-bezier(.2,.7,.2,1)}
.plane.p1{--pz:4px}.plane.p2{--pz:10px}.plane.p3{--pz:18px}.plane.p4{--pz:28px}

/* ---------- LIFTED SURFACES: real light + real cast shadow ---------- */
.lift{position:relative;transform-style:preserve-3d;
  box-shadow:
    calc(var(--shx)*.5) calc(var(--shy)*.5) 0 rgba(25,23,18,.10),
    var(--shx) var(--shy) 22px rgba(40,28,10,calc(.22*var(--depth))),
    inset 0 1px 0 rgba(255,255,255,.55);
  transition:box-shadow .3s,transform .3s cubic-bezier(.2,.7,.2,1)}
html[data-theme=dark] .lift{box-shadow:calc(var(--shx)*.5) calc(var(--shy)*.5) 0 rgba(0,0,0,.35),var(--shx) var(--shy) 26px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.06)}
/* specular sheen that follows the lamp */
.lift::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(60% 50% at calc(var(--lx)*100%) calc(var(--ly)*100%),rgba(255,255,255,calc(.30*var(--depth))),rgba(255,255,255,0) 70%);
  opacity:.75;mix-blend-mode:soft-light;transition:background .3s}
html[data-theme=dark] .lift::after{background:radial-gradient(60% 50% at calc(var(--lx)*100%) calc(var(--ly)*100%),rgba(255,200,140,calc(.10*var(--depth))),rgba(255,255,255,0) 70%)}

/* ---------- TILT CARDS (cursor-reactive 3D) ---------- */
.tilt{transform-style:preserve-3d;will-change:transform;
  transform:perspective(900px) rotateX(calc(var(--ty,0)*var(--tilt)*1deg)) rotateY(calc(var(--tx,0)*var(--tilt)*1deg)) translateZ(0);
  transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}
.tilt:hover{transition:transform .06s linear}
.tilt .pop{transform:translateZ(calc(28px*var(--depth)))}
.tilt .pop-sm{transform:translateZ(calc(14px*var(--depth)))}
.tilt:hover{box-shadow:calc(var(--shx)*1.6) calc(var(--shy)*1.6) 34px rgba(40,28,10,.30),inset 0 1px 0 rgba(255,255,255,.6)}

/* ---------- PAPER: stacked sheets under the active page ---------- */
.paper{position:relative;background:var(--bg2);border:2px solid var(--ink);border-radius:10px}
.paper::before,.paper::after{content:"";position:absolute;inset:0;border:2px solid var(--line);border-radius:10px;background:var(--bg2);z-index:-1}
.paper::before{transform:translate3d(5px,6px,-10px) rotate(.5deg);opacity:.8}
.paper::after{transform:translate3d(10px,12px,-20px) rotate(-.6deg);opacity:.55}

/* ---------- POP-OUT TYPE (rises off the page on reveal) ---------- */
.pop-title{transform-style:preserve-3d;position:relative;display:inline-block;
  text-shadow:
    0 1px 0 rgba(255,255,255,.7),
    calc(var(--dx)*-1px) calc(var(--dy)*-1px + 1px) 0 rgba(25,23,18,.25),
    calc(var(--dx)*-3px) calc(var(--dy)*-3px + 4px) 10px rgba(40,28,10,.28)}
html[data-theme=dark] .pop-title{text-shadow:0 1px 0 rgba(255,255,255,.06),calc(var(--dx)*-3px) calc(var(--dy)*-3px + 4px) 12px rgba(0,0,0,.6)}

/* ---------- 3D SCROLL REVEAL (lean off the desk) ---------- */
html.js .rise{opacity:0;transform:translate3d(0,26px,-60px) rotateX(9deg);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}
.rise.in{opacity:1;transform:none}
.rise.d1{transition-delay:.07s}.rise.d2{transition-delay:.14s}.rise.d3{transition-delay:.21s}.rise.d4{transition-delay:.28s}

/* ---------- FLOATING OBJECTS (drift in Z) ---------- */
@keyframes bob{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(0,-7px,14px)}}
.float{animation:bob 7s ease-in-out infinite;will-change:transform}
.float.f2{animation-duration:9s;animation-delay:-2s}
.float.f3{animation-duration:11s;animation-delay:-4s}

/* ---------- DEPTH OF FIELD when a modal is front-most ---------- */
body.dof main,body.dof .nav,body.dof .foot{filter:blur(3px) saturate(.9);transition:filter .35s}

/* ---------- PAGE TURN TRANSITION ---------- */
@keyframes pgin{from{opacity:0;transform:translate3d(0,10px,-40px) rotateX(4deg)}to{opacity:1;transform:none}}
html.js main{animation:pgin .5s cubic-bezier(.2,.7,.2,1) both}
.pgout{animation:pgin .34s cubic-bezier(.4,0,1,1) reverse both!important}

/* ---------- THE DESK AGES: earned marginalia ---------- */
.patina{position:fixed;inset:0;z-index:-2;pointer-events:none;opacity:.55}
.patina i{position:absolute;display:block;opacity:0;transition:opacity 1.2s}
.patina i.on{opacity:1}
.ring{width:120px;height:120px;border-radius:50%;border:3px solid rgba(150,95,40,.16);box-shadow:inset 0 0 0 6px rgba(150,95,40,.05)}
.ring.r2{width:86px;height:86px;border-color:rgba(150,95,40,.12)}
.scribble{font-family:"Space Mono";font-size:.7rem;color:rgba(25,23,18,.16);transform:rotate(-6deg)}
html[data-theme=dark] .scribble{color:rgba(255,255,255,.10)}
html[data-theme=dark] .ring{border-color:rgba(255,190,120,.08)}

/* ---------- MARGIN NOTES (living annotations) ---------- */
.marg{position:absolute;right:-8px;top:8px;max-width:150px;font-family:"Space Mono";font-size:.62rem;color:var(--mute);
  border-left:2px solid var(--acc);padding-left:7px;opacity:0;transform:translateX(8px);transition:.6s}
.marg.in{opacity:.9;transform:none}
@media(max-width:1100px){.marg{display:none}}

/* ---------- LAMP / SOUND / MOTION CONTROLS ---------- */
.hud{display:flex;gap:6px;flex-wrap:wrap}

/* ---------- REDUCED MOTION / LOW POWER: keep dignity, drop motion ---------- */
@media(prefers-reduced-motion:reduce){
  .plane,.tilt,.rise,.float,main{transform:none!important;animation:none!important;transition:none!important}
  .rise{opacity:1!important}
  .room{transition:none}
}

/* ==========================================================
   ===============  THE STUDY — 4D SITEMAP  =================
   ========================================================== */
.study-stage{perspective:1500px;perspective-origin:50% 45%;margin:10px 0 26px;user-select:none}
.study-room{position:relative;width:100%;max-width:980px;margin:0 auto;aspect-ratio:16/10;transform-style:preserve-3d;
  transform:rotateX(calc(12deg + var(--dy)*3deg)) rotateY(calc(var(--dx)*-7deg));transition:transform .4s cubic-bezier(.2,.7,.2,1);cursor:grab}
.study-room:active{cursor:grabbing}
.study-room .wall{position:absolute;inset:0;border:2px solid var(--ink);border-radius:12px;background:
  linear-gradient(180deg,var(--bg2),var(--bg));box-shadow:inset 0 30px 60px rgba(40,28,10,.10),12px 16px 0 var(--sh);transform:translateZ(-90px)}
.study-room .floor{position:absolute;left:0;right:0;bottom:0;height:26%;background:linear-gradient(180deg,rgba(40,28,10,.10),rgba(40,28,10,.02));
  border-top:2px solid var(--line);transform:rotateX(62deg);transform-origin:bottom;opacity:.7}
/* furniture = links, each on its own Z-plane */
.fz{position:absolute;transform-style:preserve-3d;text-decoration:none;color:inherit;display:block;
  transition:transform .3s cubic-bezier(.2,.7,.2,1),filter .3s}
.fz:hover,.fz:focus-visible{transform:translateZ(46px) scale(1.03);filter:drop-shadow(0 14px 18px rgba(40,28,10,.35));outline:none;z-index:5}
.fz .lbl{position:absolute;left:50%;bottom:-22px;transform:translateX(-50%);white-space:nowrap;font-family:"Space Mono";font-weight:700;
  font-size:.64rem;text-transform:uppercase;letter-spacing:.06em;background:var(--ink);color:var(--bg2);padding:2px 7px;border-radius:4px;opacity:0;transition:.25s}
.fz:hover .lbl,.fz:focus-visible .lbl{opacity:1;bottom:-26px}
.fz .box{border:2px solid var(--ink);border-radius:7px;background:var(--bg2);box-shadow:4px 5px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.5);
  display:flex;align-items:center;justify-content:center;font-size:1.5rem;width:100%;height:100%}
.fz.new .box{box-shadow:0 0 0 3px var(--acc),4px 5px 0 var(--sh);animation:glowp 2.4s ease-in-out infinite}
@keyframes glowp{0%,100%{box-shadow:0 0 0 2px var(--acc),4px 5px 0 var(--sh)}50%{box-shadow:0 0 0 5px rgba(232,85,45,.35),4px 5px 0 var(--sh)}}
/* placements */
.f-shelf{left:5%;top:12%;width:26%;height:44%;transform:translateZ(10px)}
.f-shelf .box{flex-direction:column;gap:4px;padding:8px;font-size:.6rem;align-items:stretch;justify-content:flex-start}
.spine{border:1.5px solid var(--line);border-radius:3px;background:var(--bg);font-family:"Space Mono";font-size:.55rem;padding:3px 5px;
  display:flex;justify-content:space-between;color:var(--soft);transition:.2s}
.spine:hover{background:var(--acc);color:#fff;transform:translateX(3px)}
.f-desk{left:36%;bottom:16%;width:32%;height:26%;transform:translateZ(60px)}
.f-type{left:41%;bottom:34%;width:14%;height:16%;transform:translateZ(74px)}
.f-cards{left:57%;bottom:34%;width:10%;height:12%;transform:translateZ(72px)}
.f-window{right:7%;top:10%;width:22%;height:30%;transform:translateZ(-10px)}
.f-window .box{background:linear-gradient(160deg,#bcd6f0,#e8f0f8);color:var(--ink)}
html[data-theme=dark] .f-window .box{background:linear-gradient(160deg,#1d2b45,#0e1524)}
.f-cork{right:6%;top:46%;width:24%;height:24%;transform:translateZ(18px)}
.f-cork .box{background:repeating-linear-gradient(45deg,rgba(181,114,56,.22) 0 6px,rgba(181,114,56,.10) 6px 12px)}
.f-ledger{left:70%;bottom:16%;width:12%;height:12%;transform:translateZ(56px)}
.f-trophy{left:8%;top:5%;width:9%;height:11%;transform:translateZ(24px)}
.f-lamp{left:24%;bottom:40%;width:11%;height:18%;transform:translateZ(40px)}
.f-lamp .box{background:radial-gradient(circle at 50% 30%,rgba(255,220,150,.9),var(--bg2))}
.f-door{left:1%;bottom:16%;width:9%;height:30%;transform:translateZ(-40px)}
@media(max-width:760px){
  .study-room{aspect-ratio:4/5}
  .f-shelf{left:4%;top:6%;width:42%;height:28%}
  .f-window{right:5%;top:6%;width:34%;height:20%}
  .f-cork{right:5%;top:32%;width:38%;height:18%}
  .f-desk{left:8%;bottom:12%;width:60%;height:18%}
  .f-type{left:12%;bottom:26%;width:22%;height:12%}
  .f-cards{left:40%;bottom:26%;width:16%;height:10%}
  .f-ledger{left:62%;bottom:26%;width:18%;height:10%}
  .f-trophy{left:76%;top:4%;width:16%;height:9%}
  .f-lamp{display:none}.f-door{display:none}
  .fz .lbl{opacity:1;bottom:-20px;font-size:.55rem}
}
.study-legend{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;font-size:.7rem;color:var(--mute);margin-top:34px}
.study-legend b{color:var(--acc)}
.study-list{margin-top:30px}
.study-list h2{font-family:"Space Mono";font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin-bottom:10px}
.study-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.study-cols ul{list-style:none;font-size:.8rem;display:flex;flex-direction:column;gap:5px}
.study-cols a{color:var(--soft);text-decoration:none;border-bottom:1px dashed var(--line)}
.study-cols a:hover{color:var(--acc)}

/* JS hook, no visual style needed */
.yr{font:inherit}
/* min-height for the typed h1 is only needed on the homepage hero */
h1:not([data-type]){min-height:0}

/* ==========================================================
   ===========  MOBILE HARDENING & PERF TIERING  ============
   ========================================================== */
html,body{max-width:100%;overflow-x:hidden}
*,*::before,*::after{box-sizing:border-box}
img,svg,canvas,table{max-width:100%}

/* wide reference tables scroll instead of breaking the layout */
.cheat-tbl{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}
.cheat-tbl tr{display:table;width:100%;table-layout:fixed}
@media(min-width:700px){.cheat-tbl{display:table;white-space:normal}.cheat-tbl tr{display:table-row}}
.prose table{display:block;overflow-x:auto}

/* long words / URLs never blow out a column */
.prose p,.prose li,.lead,.titem,.mitem{overflow-wrap:anywhere}

@media(max-width:760px){
  /* touch targets: WCAG-comfortable */
  .mini,.btn,.srs-g,.nav a,.fz{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
  .cheat{columns:1}
  .dash{grid-template-columns:1fr}
  /* lighten the world: mobile keeps depth, drops the expensive bits */
  .lift::after{display:none}          /* no specular repaint on scroll */
  .paper::before,.paper::after{display:none}
  .float{animation:none}
  .desk-grain{opacity:.3}
  .study-legend{gap:8px;font-size:.62rem}
}
/* very small phones */
@media(max-width:380px){
  .h1,h1{font-size:1.9rem}
  .drow{flex-wrap:wrap}
  .study-room{aspect-ratio:3/4}
}
/* low-power / reduced-depth: strip the costly compositing but keep the look */
html.no-depth .room,html.no-depth .patina,html.no-depth .desk-grain{display:none}
html.no-depth .lift::after{display:none}
html.no-depth .tilt{transform:none!important}
html.no-depth .study-room{transform:rotateX(10deg)!important}

/* keep focus visible on the 3D furniture (a11y) */
.fz:focus-visible .box{outline:3px solid var(--acc);outline-offset:3px}

/* ---- FAILSAFE: if JS never boots, everything is fully visible ---- */
.rise{opacity:1;transform:none}
html.js .rise.in{opacity:1;transform:none}
noscript .nojs{display:block;padding:10px;border:2px solid var(--ink);background:var(--bg2);border-radius:8px;margin:10px 0;font-size:.8rem}


/* --- the way back up to 404meanings -------------------------------------
   Added when this site became a world inside 404meanings.com. Deliberately
   quiet: it should read as a return path, not as a second brand competing
   with the one on the left of the nav. */
.nav-r .up{
  opacity:.62;
  border-left:1px solid currentColor;
  padding-left:.75em;
  margin-left:.15em;
}
.nav-r .up:hover,.nav-r .up:focus-visible{opacity:1}
@media (max-width:640px){ .nav-r .up{display:none} }


/* --- JS-off fallbacks ---------------------------------------------------
   Floor #2: a page with JavaScript off gets a designed static version, not an
   empty container. These blocks live in <noscript> on the seven tool pages, so
   they cost a JS-on visitor nothing and are the whole page for everyone else. */
.ns{margin:26px 0 6px;padding:20px 18px;border:1px solid var(--line,#c9bda1);
    border-radius:12px;background:var(--paper,#f3ecda)}
.ns h2{font-family:"Space Mono",ui-monospace,monospace;font-size:1.02rem;margin:0 0 12px}
.ns h3{font-family:"Space Mono",ui-monospace,monospace;font-size:.86rem;margin:18px 0 6px;
       text-transform:lowercase;letter-spacing:.04em}
.ns p{margin:10px 0;line-height:1.62;max-width:64ch}
.ns-note{font-size:.78rem;color:var(--mute,#7a705c);border-left:2px solid var(--acc,#c8452f);
         padding-left:.7em;margin:0 0 14px}
.ns-table{width:100%;border-collapse:collapse;font-size:.86rem;margin:6px 0 4px;display:block;
          overflow-x:auto}
.ns-table th,.ns-table td{text-align:left;padding:.42em .7em;border-bottom:1px solid var(--line,#d8ceb6);
                          vertical-align:top}
.ns-table th{font-family:"Space Mono",ui-monospace,monospace;font-size:.74rem;
             text-transform:uppercase;letter-spacing:.06em;color:var(--mute,#7a705c)}
.ns-list{margin:6px 0;padding-left:1.15em;line-height:1.85}
.ns-list small{color:var(--mute,#7a705c)}
.ns-list a{text-decoration:underline}

/* ---------------------------------------------- words from the quotations --
   178 entries, each a word taken out of a line somebody wrote. The card
   carries pronunciation, part of speech, meaning, neighbours, and the sentence
   it came from — so it is denser than anything else on the Desk and needs to
   stay readable at three columns. Same material as the cheat cards: two-pixel
   ink border, offset shadow, Space Mono for anything that is a label. */
.wgrid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));
  gap:14px;margin:22px 0 0;align-items:start;
}
.wcard{
  margin:0;border:2px solid var(--ink);background:var(--bg2);
  border-radius:8px;padding:12px 14px 11px;
  box-shadow:3px 3px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);
}
.wcard h2{
  font-family:"Space Mono";font-weight:700;font-size:.95rem;color:var(--ink);
  margin:0 0 5px;text-shadow:none;display:flex;flex-wrap:wrap;align-items:baseline;gap:7px;
}
.wcard .wipa{font-family:"Space Mono";font-weight:400;font-size:.7rem;color:var(--mute)}
.wcard .wpos{
  font-family:"Space Mono";font-size:.6rem;text-transform:uppercase;letter-spacing:.1em;
  color:var(--acc);margin:0 0 7px;
}
.wcard .wdef{font-size:.82rem;color:var(--ink);line-height:1.5;margin:0 0 6px}
.wcard .wsyn{font-size:.74rem;color:var(--soft);line-height:1.45;margin:0}
.wcard .wq{
  margin:10px 0 0;padding-top:9px;border-top:1px dashed var(--line);
  font-size:.76rem;color:var(--soft);line-height:1.5;font-style:italic;
}
.wcard .wq a{
  display:block;margin-top:5px;font-style:normal;font-family:"Space Mono";
  font-size:.64rem;letter-spacing:.05em;color:var(--acc);text-decoration:none;
}
.wcard .wq a:hover,.wcard .wq a:focus-visible{text-decoration:underline}


/* The A-Z rule. Plain anchors to the first word under each letter, so a reader
   is never more than one click from the part of the alphabet they want. */
.azbar{
  display:flex;flex-wrap:wrap;gap:6px;margin:20px 0 0;padding:11px 12px;
  border:2px solid var(--ink);border-radius:8px;background:var(--bg2);
  box-shadow:3px 3px 0 var(--sh),inset 0 1px 0 rgba(255,255,255,.45);
}
.azbar a,.azbar span{
  font-family:"Space Mono";font-weight:700;font-size:.78rem;text-transform:uppercase;
  min-width:26px;text-align:center;padding:3px 4px;border-radius:4px;text-decoration:none;
}
.azbar a{color:var(--acc)}
.azbar a:hover,.azbar a:focus-visible{background:var(--acc);color:var(--bg2)}
.azbar span{color:var(--line);color:var(--mute);opacity:.45}
.wcard{scroll-margin-top:86px}

/* The prose column is sized for reading a paragraph. A hundred and seventy-eight
   word cards are not a paragraph — at that width the grid manages two columns
   and runs for pages. It breaks out to the page's own width instead, and comes
   back to the column on a narrow screen where there is nothing to break out to. */
@media(min-width:1080px){
  .prose .wgrid,.prose .azbar{width:min(1180px,calc(100vw - 170px))}
}
