/* Freeweights site styles. Built from design/fw.css (the approved mockups).
   Light: white surface + neutral ink fills (never tan). Dark: graphite (#1F1F1E / #262625 / #1A1A19).
   Accent coral is for text and marks only, never row backgrounds. */
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/fonts/inter.woff2) format("woff2")}

:root{
  --font-allternit-sans:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --font-allternit-serif:Newsreader,Georgia,ui-serif,Cambria,"Times New Roman",serif;
  --font-allternit-mono:"JetBrains Mono","SFMono-Regular",Menlo,Monaco,Consolas,"Liberation Mono",monospace;
  --bg:#fff;--fill:rgba(26,26,26,.05);--fill2:rgba(26,26,26,.09);--ink:#1A1A1A;--ink2:#555;--ink3:#76766f;
  --line:rgba(26,26,26,.11);--line2:rgba(26,26,26,.2);--accent:#B83E1B;--ok:#1b7a49;--warn:#9a5b00;--bad:#b42318;
  --btn:#1A1A1A;--btnink:#fff;--mark:#D97757;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){--bg:#1F1F1E;--fill:rgba(255,255,255,.05);--fill2:rgba(255,255,255,.09);--ink:#ECEBE8;--ink2:#A9A8A4;--ink3:#8a8985;--line:rgba(255,255,255,.1);--line2:rgba(255,255,255,.2);--accent:#E8896C;--ok:#59c48a;--warn:#e0a84a;--bad:#f07a6e;--btn:#ECEBE8;--btnink:#1A1A19;color-scheme:dark}
}
:root[data-theme="dark"]{--bg:#1F1F1E;--fill:rgba(255,255,255,.05);--fill2:rgba(255,255,255,.09);--ink:#ECEBE8;--ink2:#A9A8A4;--ink3:#8a8985;--line:rgba(255,255,255,.1);--line2:rgba(255,255,255,.2);--accent:#E8896C;--ok:#59c48a;--warn:#e0a84a;--bad:#f07a6e;--btn:#ECEBE8;--btnink:#1A1A19;color-scheme:dark}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font-allternit-sans);background:var(--bg);color:var(--ink);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit}
a:focus-visible,button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
h1,h2,h3,p{margin:0}
code,.mono{font-family:var(--font-allternit-mono);letter-spacing:0}
.serif{font-family:var(--font-allternit-serif)}
button{font:inherit;color:inherit;cursor:pointer}
svg{display:block}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;background:var(--btn);color:var(--btnink);padding:6px 12px;border-radius:8px;z-index:10}
.skip:focus{left:12px}

.wrap{max-width:1240px;margin:0 auto;padding:0 32px}

/* top bar */
.top{border-bottom:1px solid var(--line);background:var(--bg);position:sticky;top:0;z-index:5}
.top .wrap{display:flex;align-items:center;gap:22px;height:62px}
.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;flex:none}
.brand .sub{font-size:12.5px;color:var(--ink2);padding-left:10px;border-left:1px solid var(--line2);line-height:1}
.nav{display:flex;gap:20px;margin-left:auto;align-items:center;font-size:14px;font-weight:500;color:var(--ink2)}
.nav a{text-decoration:none;padding:4px 0}
.nav a:hover{color:var(--ink)}
.nav a[aria-current]{color:var(--ink);box-shadow:0 1px 0 var(--ink)}
.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--bg);color:var(--ink2);flex:none}
.iconbtn:hover{color:var(--ink);background:var(--fill)}
.theme .moon{display:none}
:root[data-theme="dark"] .theme .sun{display:none}
:root[data-theme="dark"] .theme .moon{display:block}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .theme .sun{display:none}:root:not([data-theme="light"]) .theme .moon{display:block}}
.menu{display:none;position:relative}
.menu summary{list-style:none}
.menu summary::-webkit-details-marker{display:none}
.menu .panel{position:absolute;right:0;top:42px;background:var(--bg);border:1px solid var(--line2);border-radius:12px;padding:6px;display:grid;min-width:200px;box-shadow:0 12px 32px rgba(0,0,0,.14)}
.menu .panel a{padding:9px 12px;border-radius:8px;text-decoration:none;font-size:14.5px}
.menu .panel a:hover,.menu .panel a[aria-current]{background:var(--fill2)}

/* type */
.eyebrow{font-size:12.5px;color:var(--ink2)}
.eyebrow b{color:var(--accent);font-weight:500}
.h1{font-size:60px;line-height:1;letter-spacing:-.04em;font-weight:600;margin:14px 0}
.tag{font-size:26px;line-height:1.25;color:var(--ink2);font-style:italic;font-weight:400}
.ph1{font-size:34px;line-height:1.1;letter-spacing:-.03em;font-weight:600;margin:8px 0 8px}
.h2{font-size:21px;font-weight:600;letter-spacing:-.02em}
.h3{font-size:15px;font-weight:600}
.sub{color:var(--ink2);font-size:14px}
.small{font-size:12.5px}
.lead{max-width:700px;color:var(--ink2);font-size:15.5px}
.prose{max-width:760px}
.prose p,.prose ul,.prose ol{margin:0 0 12px;color:var(--ink2)}
.prose li{margin:4px 0}
.prose h2{margin:30px 0 10px}
.prose h3{margin:20px 0 6px;font-size:15px}
.prose code{font-size:.9em;background:var(--fill);border:1px solid var(--line);border-radius:5px;padding:0 4px;word-break:break-word}
.link{color:var(--ink);font-weight:500;text-decoration:underline;text-decoration-color:var(--line2);text-underline-offset:3px}
.link:hover{text-decoration-color:var(--ink)}
.more{color:var(--ink2);text-decoration:none;font-size:14px}
.more:hover{color:var(--ink)}

.sec{padding-top:36px;padding-bottom:36px;border-top:1px solid var(--line)}
.sec-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.page-head{padding-top:34px;padding-bottom:26px}

/* hero */
.hero{padding-top:58px;padding-bottom:42px}
.search{display:flex;align-items:center;gap:10px;margin-top:26px;max-width:640px;border:1px solid var(--line2);border-radius:12px;padding:0 14px;height:50px;background:var(--bg);color:var(--ink2)}
.search input{flex:1;min-width:0;border:0;background:transparent;font:inherit;font-size:15px;color:var(--ink);outline:none}
.search input::placeholder{color:var(--ink3)}
.kbd{font-size:11px;border:1px solid var(--line2);border-radius:5px;padding:1px 6px;color:var(--ink2);font-style:normal}
.code{margin-top:14px;max-width:820px;background:var(--fill);border:1px solid var(--line);border-radius:10px;padding:11px 12px 11px 14px;display:flex;gap:12px;align-items:flex-start;font-size:13px;line-height:1.6}
.code code{flex:1;min-width:0;word-break:break-all;white-space:pre-wrap}
.code .k{color:var(--accent)}
.code .c{color:var(--ink3)}
.copy{border:1px solid var(--line2);background:var(--bg);border-radius:7px;padding:3px 9px;font-size:12px;display:flex;gap:5px;align-items:center;flex:none}
.copy:hover{background:var(--fill2)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:8px;border-radius:10px;padding:9px 15px;font-weight:500;font-size:14px;border:1px solid var(--line2);background:var(--bg);color:var(--ink);justify-content:center;text-decoration:none}
.btn:hover{background:var(--fill)}
.btn.pri{background:var(--btn);color:var(--btnink);border-color:var(--btn)}
.btn.pri:hover{opacity:.9}
.btn.sm{padding:4px 11px;font-size:13px}
.later{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px dashed var(--line2);border-radius:10px;padding:9px 14px;font-size:13.5px;color:var(--ink2)}
.later b{font-weight:500;color:var(--ink)}
.later .when{font-size:11.5px;color:var(--ink3);white-space:nowrap}

/* numbers */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}
.stats.four{grid-template-columns:repeat(4,1fr)}
.stat{border:1px solid var(--line);border-radius:12px;padding:15px 17px;background:var(--bg)}
.stat .v{font-size:28px;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.2}
.stat .l{font-size:13px;color:var(--ink2)}
.stat .n{font-size:12px;color:var(--ink3);margin-top:4px}

/* section cards */
.groups{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}
.g{border:1px solid var(--line);border-radius:12px;padding:14px 15px;background:var(--bg);display:flex;flex-direction:column;gap:6px;text-decoration:none;min-width:0}
.g:hover{background:var(--fill)}
.g .p{font-size:13px;font-weight:400;color:var(--ink3);overflow-wrap:anywhere}
.g .p i{font-style:normal;color:var(--ink);font-weight:600}
.g p{font-size:13px;color:var(--ink2);line-height:1.45}
.g .m{margin-top:auto;padding-top:4px;font-size:12px;color:var(--ink3)}

/* badges */
.b{width:fit-content;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line2);border-radius:999px;padding:1px 9px 1px 7px;font-size:12px;font-weight:500;white-space:nowrap;color:var(--ink);line-height:1.6}
.b .d{width:8px;height:8px;border-radius:50%;background:var(--ink);flex:none}
.b.seed .d{background:transparent;border:1.5px solid var(--ink)}
.b.src .d{background:transparent;border-radius:2px;border:1.5px solid var(--ink3);transform:rotate(45deg)}
.b .n{color:var(--ink2);font-weight:400}
.b.fail{border-color:var(--bad);color:var(--bad)}
.b.fail .d{background:var(--bad);border-color:var(--bad)}
.badges{display:flex;gap:6px;flex-wrap:wrap}
.sample{font-size:10px;text-transform:uppercase;letter-spacing:.08em;border:1px dashed var(--line2);border-radius:4px;padding:0 5px;color:var(--ink3);margin-left:6px;vertical-align:middle;font-family:var(--font-allternit-mono);font-weight:400;white-space:nowrap}

/* notices */
.notice{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--fill);color:var(--ink2)}
.notice b{color:var(--ink);font-weight:600}
.notice svg{flex:none;margin-top:2px;color:var(--ink2)}
.notice.err{border-color:color-mix(in srgb,var(--bad) 45%,transparent)}
.notice.err svg{color:var(--bad)}
.empty{border:1px dashed var(--line2);border-radius:12px;padding:26px 22px;text-align:left;color:var(--ink2);font-size:14px;display:grid;gap:8px}
.empty b{color:var(--ink);font-size:15px;font-weight:600}

/* meter + funding */
.meter{height:8px;border-radius:6px;background:var(--fill2);overflow:hidden}
.meter i{display:block;height:100%;background:var(--ink)}
.fund{border:1px solid var(--line);border-radius:12px;padding:16px 18px;display:grid;gap:9px;background:var(--bg)}
.fund .row{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}

/* always / never */
.two{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
.card{border:1px solid var(--line);border-radius:12px;padding:16px 18px;background:var(--bg);min-width:0}
.card h3{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2);margin-bottom:10px;font-weight:600}
.card ul{margin:0;padding:0;list-style:none;display:grid;gap:8px;font-size:14px}
.card li{display:flex;gap:9px}
.card li:before{content:"+";font-family:var(--font-allternit-mono);color:var(--ok);flex:none}
.card.never li:before{content:"\2212";color:var(--accent)}

/* footer */
.foot{border-top:1px solid var(--line);background:var(--fill);margin-top:20px}
.foot .wrap{padding-top:24px;padding-bottom:24px;display:grid;gap:12px;font-size:13px;color:var(--ink2)}
.foot .r1{display:flex;gap:18px;justify-content:space-between;flex-wrap:wrap;align-items:center}
.foot b{color:var(--ink);font-weight:600}
.foot nav{display:flex;gap:16px;flex-wrap:wrap}
.foot nav a{text-decoration:none}
.foot nav a:hover{color:var(--ink)}

/* ---------- v2 additions ---------- */
html:not(.js) [data-needs-js]{display:none!important}
.show-ph{display:none!important}
.lockup{color:var(--ink);flex:none}
.brand .lockup.inline{height:13px;width:auto}
.hero-mark{color:var(--ink)}
.hero-lockup{height:auto;width:min(504px,100%);display:block}
.hero .tag{margin-top:26px;font-size:30px;font-weight:600;letter-spacing:-.03em;color:var(--ink);font-style:normal;font-family:var(--font-allternit-sans)}
.hero-sub{margin-top:8px;font-size:16.5px}
.hero .search{margin-top:24px;padding-right:6px}
.hero .search .btn{flex:none}
.hero-cta{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.mono-svg{display:block;color:currentColor}

/* footer v2 */
.foot .f-top{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;align-items:flex-start}
.foot .f-brand{color:var(--ink)}
.foot .f-brand .lockup{height:34px;width:auto}
.foot nav{max-width:640px;justify-content:flex-end}
.foot .f-line{max-width:900px}

/* license class tags */
.lc{display:inline-flex;align-items:center;border-radius:6px;padding:0 7px;font-size:11.5px;line-height:1.75;font-weight:500;white-space:nowrap;background:var(--fill2);color:var(--ink2)}
.lc-permissive{color:var(--ok);background:color-mix(in srgb,var(--ok) 11%,transparent)}
.lc-non-commercial,.lc-gated{color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent)}
.lc-custom,.lc-terms{color:var(--ink);background:var(--fill2)}
.notice.ok{border-color:color-mix(in srgb,var(--ok) 40%,transparent)}
.notice.ok svg{color:var(--ok)}

/* home */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:16px}
.step{border:1px solid var(--line);border-radius:12px;padding:15px 16px;display:grid;gap:6px;align-content:start;font-size:13.5px;color:var(--ink2)}
.step b{color:var(--ink);font-size:14.5px;font-weight:600}
.step p{margin:0}
.step code{font-size:.92em;background:var(--fill);border-radius:4px;padding:0 4px}
.colls{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px}
.coll{border:1px solid var(--line);border-radius:12px;padding:15px 16px;display:grid;gap:4px;text-decoration:none;background:var(--bg);align-content:start}
.coll:hover{background:var(--fill)}
.coll b{font-weight:600;font-size:15px}
.coll-n{color:var(--ink3);margin-top:6px}
.g-top{display:flex;align-items:center;gap:10px}
.g-mono{width:34px;height:34px;border-radius:9px;background:var(--fill2);display:grid;place-items:center;flex:none;color:var(--ink)}
.g b{font-size:15px;font-weight:600}
.two-wide{display:grid;grid-template-columns:1.1fr 1fr;gap:40px}
.two-wide>*{min-width:0}
.verify-steps{margin:0 0 14px;padding-left:20px;color:var(--ink2);font-size:14px;display:grid;gap:6px}
.verify-steps b{color:var(--ink);font-weight:600}
.trust ul{padding-left:18px}
.snap{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.snap-c{border:1px solid var(--line);border-radius:12px;padding:16px 18px;display:grid;gap:8px;text-decoration:none;align-content:start;background:var(--bg)}
.snap-c:hover{background:var(--fill)}
.snap-c .box-h{margin:0}
.snap-c b{font-size:22px;font-weight:600;letter-spacing:-.02em}
.snap-c b .sub{font-size:13px;font-weight:400;letter-spacing:0}

/* ---------- cards (A to D) ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-top:16px}
.cards[data-fixed=c]{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.fwc{display:flex;flex-direction:column;text-decoration:none;color:var(--ink);min-width:0;border:1px solid var(--line);border-radius:14px;background:var(--bg);overflow:hidden}
.fwc:hover{border-color:var(--line2);box-shadow:0 6px 22px rgba(0,0,0,.07)}
@media (prefers-reduced-motion:no-preference){.fwc{transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.fwc:hover{transform:translateY(-1px)}}
/* A: spec sheet */
.fwc-a{padding:16px;gap:14px}
.a-top{display:flex;gap:12px;align-items:flex-start;min-width:0}
.a-mono{width:48px;height:48px;border-radius:11px;background:var(--fill2);display:grid;place-items:center;flex:none}
.a-t{min-width:0}
.a-sec{font-size:11px;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.a-name{font-size:16px;font-weight:600;letter-spacing:-.02em;line-height:1.25;overflow-wrap:anywhere}
.a-id{font-size:11.5px;color:var(--ink3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.a-spec{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;margin:0;padding:12px 0 0;border-top:1px solid var(--line)}
.a-spec div{min-width:0}
.a-spec dt{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink3)}
.a-spec dd{margin:1px 0 0;font-size:13.5px;font-weight:500;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.a-spec dd.mono{font-size:12.5px}
.a-foot{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:auto}
.a-task{font-size:11.5px;color:var(--ink3);margin-left:auto}
/* B: newsgroup post */
.fwc-b{font-size:13px}
.b-head{background:var(--fill);border-bottom:1px dashed var(--line2);padding:12px 14px;font-size:11.5px;line-height:1.7;color:var(--ink2)}
.b-head div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.b-head b{color:var(--ink3);font-weight:500;display:inline-block;min-width:92px}
.b-subj{color:var(--ink);font-weight:700}
.b-body{padding:12px 14px 4px;color:var(--ink2);line-height:1.55;flex:1}
.b-sig{padding:6px 14px 13px;font-size:11px;color:var(--ink3);line-height:1.6}
/* C: element tile */
.fwc-c{padding:12px 13px 13px;border:1.5px solid var(--ink);border-radius:8px;gap:2px;aspect-ratio:1/1.08;justify-content:space-between}
.fwc-c:hover{box-shadow:4px 4px 0 var(--fill2)}
.c-row{display:flex;justify-content:space-between;font-size:11px;color:var(--ink2);gap:8px}
.c-row span:last-child{color:var(--ink3);text-align:right}
.c-mono{margin:6px 0 2px;color:var(--ink)}
.c-size{display:flex;align-items:baseline;gap:5px;line-height:1}
.c-size b{font-size:34px;font-weight:600;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.c-size span{font-size:13px;color:var(--ink2)}
.c-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px}
.c-facts{display:flex;justify-content:space-between;gap:8px;font-size:10.5px;color:var(--ink3);border-top:1px solid var(--line);padding-top:6px}
.c-facts span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* D: terminal */
.fwc-d{background:#1A1A19;border-color:#1A1A19;color:#ECEBE8;border-radius:12px}
:root[data-theme=dark] .fwc-d{background:#151514;border-color:rgba(255,255,255,.12)}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .fwc-d{background:#151514;border-color:rgba(255,255,255,.12)}}
.d-bar{display:flex;align-items:center;gap:6px;padding:9px 12px;border-bottom:1px solid rgba(255,255,255,.08);font-size:11px;color:#8a8985}
.d-bar i{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.16)}
.d-bar span{margin-left:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fwc-d pre{margin:0;padding:12px 14px 14px;font:inherit;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-all;flex:1}
.fwc-d .p{color:#E8896C}
.fwc-d .c{color:#8a8985}
.fwc-d .ok{color:#59c48a}
.fwc-d .w{color:#e0a84a}
.fwc-d:hover{box-shadow:0 6px 22px rgba(0,0,0,.25)}

/* deck card (deck view and the list preview pane) */
.deck-card{border:1px solid var(--line);border-radius:16px;padding:22px;background:var(--bg);display:grid;gap:16px}
.dk-top{display:flex;gap:16px;align-items:center;min-width:0}
.dk-top>div{min-width:0}
.dk-mono{width:84px;height:84px;border-radius:16px;background:var(--fill2);display:grid;place-items:center;flex:none;color:var(--ink)}
.dk-sec,.dk-id{font-size:12px;color:var(--ink3);overflow-wrap:anywhere}
.dk-name{font-size:26px;letter-spacing:-.03em;font-weight:600;line-height:1.15;overflow-wrap:anywhere}
.dk-sum{color:var(--ink2);font-size:14.5px;max-width:640px}
.dk-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 18px;margin:0;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.dk-facts dt{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink3)}
.dk-facts dd{margin:2px 0 0;font-size:14px;font-weight:500;overflow-wrap:anywhere}
.dk-foot{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
.preview .deck-card{border:0;padding:0 4px;gap:12px}
.preview .dk-mono{width:56px;height:56px;border-radius:12px}
.preview .dk-mono svg{height:34px;width:auto}
.preview .dk-name{font-size:19px}
.preview .dk-sum{font-size:13px}
.preview .dk-facts{grid-template-columns:1fr 1fr;gap:9px 12px}
.preview .dk-facts dd{font-size:13px}
.preview .code{font-size:11.5px;margin:12px 4px 0}
.preview .dk-foot .btn{width:100%}

/* ---------- catalog ---------- */
.cat-head .lead p{margin:0}
.cat{display:grid;grid-template-columns:250px minmax(0,1fr) 340px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);min-height:560px}
.cat:not([data-view=list]) .preview{display:none}
.cat:not([data-view=list]){grid-template-columns:250px minmax(0,1fr)}
.cat>*{min-width:0}
.rail{background:var(--fill);padding:16px 14px;border-right:1px solid var(--line);font-size:13px}
.rail-h{display:none}
.pane-h{font-size:11px;color:var(--ink3);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;padding:0 6px}
.pane-h.h2x{margin-top:18px}
.tree a{display:flex;justify-content:space-between;gap:8px;padding:4px 8px;border-radius:7px;color:var(--ink2);text-decoration:none}
.tree a:hover{color:var(--ink)}
.tree a[aria-current]{background:var(--fill2);color:var(--ink);font-weight:500}
.tree a.d{padding-left:18px}
.tree a .c{color:var(--ink3);font-family:var(--font-allternit-mono);font-size:12px}
.tree a.zero{color:var(--ink3)}
.facet{border:0;margin:0 0 12px;padding:0}
.facet legend{font-size:12.5px;font-weight:600;color:var(--ink);padding:0 6px;margin-bottom:3px}
.opt{display:flex;align-items:center;gap:8px;padding:3px 6px;border-radius:7px;cursor:pointer;color:var(--ink2)}
.opt:hover{background:var(--fill2);color:var(--ink)}
.opt input{margin:0;accent-color:var(--ink);width:14px;height:14px;flex:none}
.opt .ol{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.opt .oc{font-size:11.5px;color:var(--ink3)}
.opt.zero{opacity:.45}
.more-opts summary{font-size:12.5px;color:var(--ink2);padding:3px 6px;cursor:pointer;list-style:none}
.more-opts summary::-webkit-details-marker{display:none}
.more-opts summary:hover{color:var(--ink)}
.more-opts[open] summary{display:none}
.cat-main{padding:16px 18px}
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.toolbar .q{flex:1 1 260px;display:flex;align-items:center;gap:8px;border:1px solid var(--line2);border-radius:10px;padding:0 10px;height:38px;color:var(--ink2);background:var(--bg)}
.toolbar .q input{flex:1;min-width:0;border:0;background:transparent;font:inherit;font-size:14px;color:var(--ink);outline:none}
.toolbar .q input::-webkit-search-cancel-button{opacity:.5}
.tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.sort select{height:38px;border:1px solid var(--line2);border-radius:10px;background:var(--bg);color:var(--ink);font:inherit;font-size:13px;padding:0 8px;cursor:pointer}
.seg{display:inline-flex;border:1px solid var(--line2);border-radius:10px;padding:2px;gap:2px;align-items:center;background:var(--bg);height:38px}
.seg-l{font-size:11px;color:var(--ink3);padding:0 6px 0 8px;text-transform:uppercase;letter-spacing:.08em}
.segb{display:inline-flex;align-items:center;gap:6px;border:0;background:none;border-radius:8px;padding:0 10px;height:32px;font-size:13px;color:var(--ink2)}
.segb:hover{color:var(--ink);background:var(--fill)}
.segb[aria-pressed=true]{background:var(--ink);color:var(--bg)}
.cardseg .segb{font-family:var(--font-allternit-mono);padding:0 9px}
.results-h{display:flex;gap:10px;align-items:center;flex-wrap:wrap;min-height:30px;margin-bottom:6px;font-size:13px;color:var(--ink2)}
.fchips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.fchip{border:1px solid var(--line2);background:var(--fill);border-radius:999px;padding:2px 10px;font-size:12px;color:var(--ink2)}
.fchip b{color:var(--ink);font-weight:600}
.fchip:hover{background:var(--fill2)}
.fclear{background:none;border:0;font-size:12.5px;padding:2px 4px}
.list-h,.msg{display:grid;grid-template-columns:minmax(0,1fr) 76px 64px 112px 88px;gap:10px;align-items:center}
.list-h{font-size:11px;color:var(--ink3);text-transform:uppercase;letter-spacing:.08em;padding:4px 8px 8px;border-bottom:1px solid var(--line);margin-bottom:4px}
.list-h .r{text-align:right}
.msg{padding:7px 8px;border-radius:8px;text-decoration:none;font-size:13px;color:var(--ink)}
.msg:hover{background:var(--fill)}
.msg[data-sel]{background:var(--fill2)}
.msg .s{min-width:0}
.msg .s-n{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg .s small{display:block;color:var(--ink3);font-size:11.5px;font-family:var(--font-allternit-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msg .z,.msg .pp{text-align:right;font-variant-numeric:tabular-nums}
.msg .pp{color:var(--ink2)}
.msg .bb{overflow:hidden}
.list-foot{padding:12px 8px 4px}
.view-grid{margin-top:4px}
.view-deck{max-width:820px;margin:4px auto 0}
.deck-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:12px}
.deck-nav .iconbtn{width:40px;height:40px;border-radius:12px}
.deck-nav .iconbtn:disabled{opacity:.35;cursor:default}
.deck-count{font-size:13px;color:var(--ink2);min-width:84px;text-align:center}
.deck-stage{touch-action:pan-y;outline:none;user-select:none}
.deck-stage:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:16px}
.deck-stage .deck-card{box-shadow:0 1px 0 var(--line),0 18px 40px rgba(0,0,0,.06)}
.deck-hint{text-align:center;margin-top:10px}
@media (prefers-reduced-motion:no-preference){
  .deck-stage.slide-l .deck-card{animation:dk-l .22s cubic-bezier(.2,.8,.2,1)}
  .deck-stage.slide-r .deck-card{animation:dk-r .22s cubic-bezier(.2,.8,.2,1)}
}
@keyframes dk-l{from{opacity:.4;transform:translateX(24px)}to{opacity:1;transform:none}}
@keyframes dk-r{from{opacity:.4;transform:translateX(-24px)}to{opacity:1;transform:none}}
.preview{padding:18px 16px;border-left:1px solid var(--line)}
.chips{display:none;gap:6px;overflow-x:auto;padding:2px 16px 12px;margin:0 -16px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{border:1px solid var(--line2);border-radius:8px;padding:4px 10px;font-size:12.5px;color:var(--ink2);background:var(--bg);text-decoration:none;flex:none;white-space:nowrap}
.chip[aria-current]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.meta{display:flex;gap:8px 16px;flex-wrap:wrap;font-size:13px;color:var(--ink2);align-items:center}
.meta b{color:var(--ink);font-weight:600}
.statusbar{display:flex;gap:16px;align-items:center;padding:8px 32px;background:var(--fill);font-size:12px;color:var(--ink2);flex-wrap:wrap}
.statusbar .meter{width:120px}
.statusbar .end{margin-left:auto}

/* ---------- model page ---------- */
.m-title{display:flex;gap:16px;align-items:center;margin:10px 0 12px}
.m-mono{width:64px;height:64px;border-radius:14px;background:var(--fill2);display:grid;place-items:center;flex:none;color:var(--ink)}
.m-title .ph1{margin:0}
.m-id{overflow-wrap:anywhere}
.mgrid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:28px;padding-bottom:36px}
.col{display:grid;gap:18px;align-content:start;min-width:0}
.mtabs{display:flex;gap:2px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none;position:sticky;top:62px;background:var(--bg);z-index:3}
.mtabs::-webkit-scrollbar{display:none}
html:not(.js) .mtabs{position:static}
.mtabs a{padding:10px 14px;font-size:14px;color:var(--ink2);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;font-weight:500}
.mtabs a:hover{color:var(--ink)}
.mtabs a[aria-selected=true]{color:var(--ink);border-bottom-color:var(--ink)}
.js .mtabs a[aria-selected=true]{font-weight:600}
.mpanel{display:grid;gap:16px;align-content:start;scroll-margin-top:120px}
.js .panel-h{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
html:not(.js) .mpanel{padding-top:12px;border-top:1px solid var(--line)}
.m-sum{font-size:16px;color:var(--ink);max-width:720px}
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:1px;margin:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--line)}
.facts div{background:var(--bg);padding:11px 14px;min-width:0}
.facts dt{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink3)}
.facts dd{margin:2px 0 0;font-size:13.5px;font-weight:500;overflow-wrap:anywhere}
.snip{display:grid;gap:6px}
.snip-h{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.snip-h b{font-size:13px}
.snip .code{margin-top:0;max-width:none}
.gate summary{cursor:pointer;list-style:none}
.gate summary::-webkit-details-marker{display:none}
.gate[open] summary{border-bottom:1px solid var(--line)}
.gate .pad{display:grid;gap:16px}
.later-row{display:grid;gap:8px;margin-top:6px}
.files-h{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:baseline}
.side{position:sticky;top:84px;align-self:start}
.box{border:1px solid var(--line);border-radius:12px;background:var(--bg);overflow:hidden;min-width:0}
.box .pad,.box.pad{padding:14px 16px}
.box-h{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);margin-bottom:8px}
.act{display:grid;gap:10px}
.act .code{margin:0;font-size:11.5px}
.tbl-wrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink3);font-weight:500;padding:8px 14px;background:var(--fill);border-bottom:1px solid var(--line)}
.tbl td{padding:9px 14px;border-top:1px solid var(--line);vertical-align:top}
.tbl tr:first-child td{border-top:0}
.tbl .r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl .hash{font-family:var(--font-allternit-mono);color:var(--ink2);font-size:11.5px;word-break:break-all}
.tbl .path{font-family:var(--font-allternit-mono);overflow-wrap:anywhere}
details.files summary{cursor:pointer;color:var(--ink);font-weight:500;border-top:1px solid var(--line)}
details.files summary:hover{background:var(--fill)}
.flow{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:12.5px;color:var(--ink2)}
.flow .n{border:1px solid var(--line2);border-radius:8px;padding:3px 9px;color:var(--ink);background:var(--bg)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;font-size:13px;margin:0}
.kv dt{color:var(--ink3)}
.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}

/* ---------- content pages (Operating Statement, Ledger, Wanted, Mirrors) ---------- */
.cpage{display:grid;grid-template-columns:210px minmax(0,1fr);gap:44px;padding-top:8px;padding-bottom:44px}
.cpage.notoc{grid-template-columns:minmax(0,1fr)}
.cside{position:sticky;top:84px;align-self:start}
.otp{display:grid;gap:1px;font-size:13px}
.otp-h{font-size:11px;color:var(--ink3);text-transform:uppercase;letter-spacing:.08em;padding:0 10px 6px}
.otp a{padding:4px 10px;border-radius:7px;color:var(--ink2);text-decoration:none;border-left:2px solid transparent}
.otp a:hover{color:var(--ink);background:var(--fill)}
.otp a.lv3{padding-left:22px;font-size:12.5px}
.cbody{max-width:800px}
.prose .intro p{font-size:16px;color:var(--ink)}
.csec{padding-top:8px;scroll-margin-top:80px}
.csec>h2{margin:30px 0 12px}
.prose h2,.prose h3,.prose h4{color:var(--ink);scroll-margin-top:80px}
.prose h3{font-size:15.5px;font-weight:600}
.anchor{margin-left:8px;color:var(--ink3);text-decoration:none;opacity:0;font-weight:400}
h2:hover .anchor,h3:hover .anchor,h4:hover .anchor,.anchor:focus{opacity:1}
.prose blockquote{margin:0 0 14px;padding:4px 16px;border-left:3px solid var(--line2);color:var(--ink2)}
.prose hr{border:0;border-top:1px solid var(--line);margin:24px 0}
.prose b{color:var(--ink);font-weight:600}
.prose .tblbox{margin:4px 0 16px}
.prose .tbl td{color:var(--ink2)}
.prose .tbl td b{color:var(--ink)}
.prose .stats{margin:14px 0}
.pledge h3{display:flex;gap:10px;align-items:baseline;margin:18px 0 4px}
.pledge.ok h3:before{content:"+";font-family:var(--font-allternit-mono);color:var(--ok)}
.pledge.never h3:before{content:"\2212";font-family:var(--font-allternit-mono);color:var(--accent)}
.chain .chain-h{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:baseline}
.chain .chain-foot{border-top:1px solid var(--line)}
.goals{display:grid;gap:12px;margin:12px 0 16px}
.code-block{position:relative;margin:0 0 14px}
.code-block pre.block{margin:0;padding-right:78px}
.code-block .copy{position:absolute;top:8px;right:8px}
pre.block{background:var(--fill);border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:12.5px;line-height:1.6;overflow-x:auto;margin:0 0 14px;white-space:pre;font-family:var(--font-allternit-mono);color:var(--ink)}
pre.block code{background:none;border:0;padding:0;font-size:inherit}
.prose .code{max-width:none}

/* ---------- docs ---------- */
.docs3{display:grid;grid-template-columns:210px minmax(0,1fr) 200px;gap:40px;padding-top:30px;padding-bottom:44px}
.dcol,.tcol{position:sticky;top:84px;align-self:start;max-height:calc(100vh - 100px);overflow:auto}
.dside{display:grid;gap:14px;font-size:13.5px}
.dside a{display:block;padding:5px 10px;border-radius:7px;color:var(--ink2);text-decoration:none}
.dside a:hover{background:var(--fill);color:var(--ink)}
.dside a[aria-current]{background:var(--fill2);color:var(--ink);font-weight:600}
.dg-h{font-size:11px;color:var(--ink3);text-transform:uppercase;letter-spacing:.08em;padding:0 10px 4px}
.dmain{min-width:0;max-width:780px}
.dmain .ph1{margin-top:6px}
.dprose{margin-top:20px;max-width:none}
.dnav-ph{display:none}
.doc-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}
.doc-cards .g p{margin:0}
.pn{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:32px 0 14px}
.pn a{border:1px solid var(--line);border-radius:12px;padding:12px 14px;text-decoration:none;display:grid;gap:2px}
.pn a:hover{background:var(--fill)}
.pn a.nx{text-align:right;grid-column:2}
.pn b{font-weight:600}

/* ---------- card style picker ---------- */
.style-k{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--ink);color:var(--bg);font-size:15px;margin-right:6px;vertical-align:2px}
.dstyle-row{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:28px;align-items:start}
.dstyle-desk .cards,.dstyle-phone .cards{margin-top:8px}
.dstyle-desk .cards{grid-template-columns:repeat(3,minmax(0,1fr))}
.phone-frame{width:390px;max-width:100%;border:1px solid var(--line2);border-radius:28px;padding:16px;background:var(--bg);box-shadow:0 0 0 6px var(--fill)}
.phone-frame .cards{grid-template-columns:1fr!important;gap:12px}
.phone-frame .fwc-c{aspect-ratio:auto}
[data-card-btn][aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}

/* ---------- tablet ---------- */
@media (max-width:1180px){
  .cat,.cat:not([data-view=list]){grid-template-columns:230px minmax(0,1fr)}
  .cat .preview{display:none}
  .stats.four{grid-template-columns:1fr 1fr}
  .docs3{grid-template-columns:200px minmax(0,1fr)}
  .tcol{display:none}
  .dstyle-row{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr 1fr}
}
/* ---------- phone ---------- */
@media (max-width:760px){
  body{font-size:14.5px}
  .wrap{padding:0 16px}
  .top .wrap{height:58px;gap:10px}
  .nav{display:none}
  .menu{display:block;margin-left:auto}
  .hide-ph{display:none!important}
  .show-ph{display:revert!important}
  .brand .lockup.stack{height:24px;width:auto}
  .hero{padding-top:30px;padding-bottom:26px}
  .hero .tag{font-size:23px;margin-top:20px}
  .hero-sub{font-size:15px}
  .hero .search .kbd{display:none}
  .ph1{font-size:27px}
  .sec{padding-top:26px;padding-bottom:26px}
  .page-head{padding-top:24px;padding-bottom:18px}
  .groups,.two,.stats,.colls,.snap,.two-wide,.steps,.doc-cards{grid-template-columns:1fr}
  .two-wide{gap:26px}
  .stats.four{grid-template-columns:1fr 1fr}
  .stat .v{font-size:22px}
  .cards{grid-template-columns:1fr}
  .cards[data-fixed=c]{grid-template-columns:1fr 1fr}
  .fwc-c{aspect-ratio:auto}
  .c-size b{font-size:28px}
  /* catalog */
  .cat,.cat:not([data-view=list]){display:block;border-bottom:0;min-height:0}
  .cat-main{padding:12px 16px}
  .chips{display:flex}
  .rail{display:none}
  .cat[data-rail-open] .rail{display:block;position:fixed;left:0;right:0;bottom:0;max-height:82vh;overflow:auto;z-index:20;border-radius:18px 18px 0 0;border:1px solid var(--line2);background:var(--bg);box-shadow:0 -12px 40px rgba(0,0,0,.2);padding:0 16px 24px}
  .cat[data-rail-open]:before{content:"";position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:19}
  .cat[data-rail-open] .rail .tree{display:none}
  .cat[data-rail-open] .rail .pane-h:not(.h2x){display:none}
  .rail-h{display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:var(--bg);padding:14px 0 10px;z-index:1;border-bottom:1px solid var(--line);margin-bottom:8px}
  .rail .pane-h.h2x{margin-top:10px}
  .rail .pane-h.h2x:first-of-type{display:none}
  .opt{padding:7px 6px;font-size:14px}
  body.sheet-open{overflow:hidden}
  .toolbar{gap:8px}
  .toolbar .q{flex-basis:100%}
  .tools{width:100%;gap:6px}
  .tools .btn{height:38px}
  .sort{flex:1;min-width:0}
  .sort select{width:100%}
  .seg .segl{display:none}
  .segb{padding:0 9px}
  .cardseg .segb{padding:0 7px}
  .list-h{display:none}
  .msg{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"s z" "b b";border:1px solid var(--line);border-radius:12px;padding:12px 13px;margin-bottom:10px;gap:8px}
  .msg[data-sel]{background:transparent}
  .msg .s{grid-area:s}
  .msg .s-n{white-space:normal}
  .msg .z{grid-area:z}
  .msg .pp{display:none}
  .msg .lcc{display:none}
  .msg .dt{display:none}
  .deck-card{padding:16px;gap:14px}
  .dk-mono{width:60px;height:60px;border-radius:12px}
  .dk-mono svg{height:36px;width:auto}
  .dk-name{font-size:21px}
  .dk-facts{grid-template-columns:1fr 1fr}
  .dk-foot .btn{width:100%}
  .statusbar{padding:8px 16px}
  .statusbar .end{margin-left:0}
  /* model */
  .m-mono{width:52px;height:52px}
  .m-mono svg{height:24px;width:auto}
  .mgrid{grid-template-columns:1fr;gap:20px;padding-bottom:24px}
  .mtabs{top:58px;margin:0 -16px;padding:0 8px}
  .side{position:static}
  .facts{grid-template-columns:1fr 1fr}
  .tbl.stack thead{display:none}
  .tbl.stack tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:11px 14px;border-top:1px solid var(--line);align-items:center}
  .tbl.stack tr:first-child{border-top:0}
  .tbl.stack td{padding:0;border:0}
  .tbl.stack td.full{grid-column:1/-1}
  .chain .tbl.stack tr{grid-template-columns:auto minmax(0,1fr) auto}
  .chain .tbl.stack td.hash{grid-column:span 1;font-size:11px}
  /* content + docs */
  .cpage{grid-template-columns:minmax(0,1fr);gap:0}
  .cside{display:none}
  .docs3{grid-template-columns:minmax(0,1fr);gap:0;padding-top:16px}
  .dcol{display:none}
  .dnav-ph{display:block;border:1px solid var(--line2);border-radius:12px;margin-bottom:18px}
  .dnav-ph summary{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;cursor:pointer;font-weight:600;list-style:none}
  .dnav-ph summary::-webkit-details-marker{display:none}
  .dnav-ph .dside{padding:4px 8px 12px;border-top:1px solid var(--line)}
  .pn{grid-template-columns:1fr}
  .pn a.nx{grid-column:1}
  .dstyle-desk .cards{grid-template-columns:1fr}
  .dstyle-desk{display:none}
  .phone-frame{width:100%;border-radius:22px;padding:12px}
  .code{font-size:12px}
  .foot nav{justify-content:flex-start}
}
@media (prefers-reduced-motion:no-preference){.btn,.g,.msg,.iconbtn,.coll,.snap-c,.segb{transition:background-color .12s ease}}
.wrap.prose{max-width:1240px}
.wrap.prose>*{max-width:760px}
.prose .code code{background:none;border:0;padding:0;font-size:inherit;word-break:break-all}
/* monogram tiles: two dot letters are ~11:5, so size by width to stay inside the tile */
.a-mono svg,.dk-mono svg,.m-mono svg,.g-mono svg{width:72%!important;height:auto!important}
.preview .dk-mono svg,.dk-mono svg,.m-mono svg{width:72%!important;height:auto!important}
/* the card style switch only affects the grid; the n/p hint only the list */
.cat:not([data-view=grid]) .cardseg{display:none}
.cat:not([data-view=list]) .list-foot .hide-ph{display:none}
.c-mono{margin:8px 0 10px}
.fwc-d pre{word-break:normal;overflow-wrap:anywhere}
@media (max-width:760px){.btn.show-ph{display:inline-flex!important}}
.chain td.mono,.chain td.hash{white-space:nowrap;word-break:normal}
@media (max-width:760px){.cat[data-rail-open] .rail>.pane-h{display:none}}

/* ---------- One card, four faces ----------
   IDENTITY = element tile, FACTS = spec sheet, RECORD = newsgroup header, ACTION = terminal.
   The A to D rules above stay for the references on /design/cards/. */
.org{border-radius:50%;background:#fff;box-shadow:0 0 0 1px var(--line2);object-fit:cover;flex:none;display:inline-block}
/* IDENTITY */
.fwf-id{display:flex;flex-direction:column;justify-content:space-between;gap:2px;width:100%;box-sizing:border-box;padding:11px 13px 13px;border:1.5px solid var(--ink);border-radius:8px;background:var(--bg);color:var(--ink);aspect-ratio:1/1.08;text-align:left}
.id-row{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--ink2);min-height:24px;gap:8px}
.id-org{width:24px;height:24px}
.id-mono{display:block;margin:4px 0 2px;line-height:0}
.id-size{display:flex;align-items:baseline;gap:5px;line-height:1}
.id-size b{font-size:34px;font-weight:600;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.id-size span{font-size:13px;color:var(--ink2)}
.id-name{display:block;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px}
.id-facts{display:flex;justify-content:space-between;gap:8px;font-size:10.5px;color:var(--ink3);border-top:1px solid var(--line);padding-top:6px}
.id-facts span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* FACTS */
.fwf-facts{display:flex;flex-direction:column;gap:10px;min-width:0;width:100%;box-sizing:border-box;color:var(--ink);text-align:left}
.ff-h{font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink3)}
.ff-dl{display:grid;grid-template-columns:1fr 1fr;gap:9px 14px}
.ff-r{min-width:0}
.ff-k{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink3)}
.ff-v{display:block;font-size:13.5px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ff-v.mono{font-size:12.5px}
.ff-b{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:auto}
/* RECORD */
.fwf-rec{display:block;font-size:12px;line-height:1.75;color:var(--ink2);min-width:0}
.rc-l{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rc-l b{display:inline-block;min-width:96px;color:var(--ink3);font-weight:500}
.rc-subj{color:var(--ink);font-weight:700;text-decoration:none}
a.rc-subj:hover{text-decoration:underline;text-underline-offset:2px}
.rc-h1{display:inline;font:inherit;font-weight:700;margin:0}
.rc-dim{color:var(--ink3)}
.rc-ok{color:var(--ok);font-weight:700}
.rc-org{width:16px;height:16px;margin-right:6px;vertical-align:-3px}
.rc-sum{font-family:var(--font-allternit-sans);font-size:14px;line-height:1.55;color:var(--ink2);margin:8px 0 0;white-space:normal}
.fwf-rec.strip{font-size:11px;line-height:1.6;padding:0 2px}
.fwf-rec.strip .rc-l b{min-width:0;margin-right:4px}
.fwf-rec.strip .rc-org{width:14px;height:14px;margin-right:4px;vertical-align:-2px}
/* ACTION */
.fwf-act{display:block;background:#1A1A19;color:#ECEBE8;border-radius:12px;overflow:hidden}
:root[data-theme=dark] .fwf-act{background:#151514;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .fwf-act{background:#151514;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}}
.act-bar{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid rgba(255,255,255,.08);font-size:11px;color:#8a8985}
.act-bar i{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.16)}
.act-bar span{margin-left:6px}
.fwf-act pre{margin:0;padding:11px 16px 13px;font:inherit;font-size:12px;line-height:1.75;white-space:pre-wrap;overflow-wrap:anywhere}
.fwf-act .p{color:#E8896C}
.fwf-act .c{color:#8a8985}
.fwf-act .w{color:#e0a84a}
.fwf-act .u{color:#ECEBE8;text-decoration:underline;text-decoration-color:rgba(255,255,255,.3);text-underline-offset:2px}

/* The combined card: RECORD on top, IDENTITY + FACTS side by side, ACTION at the foot */
.fwk{container-type:inline-size;display:grid;grid-template-columns:minmax(0,1fr);border:1px solid var(--line);border-radius:16px;background:var(--bg);overflow:hidden;min-width:0;color:var(--ink)}
.fwk-rec{background:var(--fill);border-bottom:1px dashed var(--line2);padding:14px 18px 14px}
.fwk-mid{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:20px;padding:18px}
.fwk-id{min-width:0}
.fwk-facts{min-width:0;display:flex}
.fwk-act{padding:0 18px 18px}
.fwk-foot{padding:0 18px 18px;display:flex;justify-content:flex-end}
@container (min-width:760px){.fwk-facts .ff-dl{grid-template-columns:repeat(3,minmax(0,1fr))}}
@container (max-width:520px){
  .fwk-mid{grid-template-columns:1fr;gap:14px;padding:14px}
  .fwk-id .fwf-id{aspect-ratio:auto;min-height:150px}
  .fwk-rec{padding:12px 14px}
  .fwk-act,.fwk-foot{padding:0 14px 14px}
  .fwk-foot .btn{width:100%;justify-content:center}
  .rc-l b{min-width:84px}
}
.fwk-hero{margin-top:14px}
.fwk-hero .rc-h1{display:block;font-family:var(--font-allternit-sans);font-size:30px;line-height:1.15;letter-spacing:-.03em;font-weight:600;white-space:normal;overflow-wrap:anywhere;margin:2px 0 4px}
.fwk-hero .rc-l:has(.rc-h1){white-space:normal}
.fwk-hero .rc-l:has(.rc-h1) b{display:block}
.m-meta{margin-top:12px}
.preview .fwk-pv{border:0;border-radius:0}
.preview .fwk-pv .fwk-rec{border-radius:12px;border:1px solid var(--line)}
.preview .fwk-pv .fwk-mid,.preview .fwk-pv .fwk-act,.preview .fwk-pv .fwk-foot{padding-left:0;padding-right:0}
.lead-face{margin-bottom:16px}
.lead-face .fwf-rec{background:var(--fill);border:1px solid var(--line);border-radius:12px;padding:12px 16px}

/* Tiles: IDENTITY front, FACTS back, RECORD strip under */
.cards.tiles{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.fwt{display:flex;flex-direction:column;gap:8px;min-width:0}
.flip{appearance:none;-webkit-appearance:none;border:0;padding:0;margin:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;display:block;width:100%;perspective:1000px;position:relative;border-radius:9px}
.flip:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.flip-in{display:grid;transform-style:preserve-3d;transition:transform .48s cubic-bezier(.16,1,.3,1)}
.flip-f,.flip-b{grid-area:1/1;display:flex;backface-visibility:hidden;-webkit-backface-visibility:hidden;min-width:0}
.flip-b{transform:rotateY(180deg)}
.flip-b .fwf-facts{border:1.5px solid var(--ink);border-radius:8px;background:var(--bg);padding:11px 13px 13px;gap:8px}
.flip-b .ff-dl{gap:6px 10px}
.flip-b .ff-v{font-size:12.5px}
.flip[aria-pressed=true] .flip-in{transform:rotateY(180deg)}
@media (hover:hover){.flip:hover .flip-in{transform:rotateY(180deg)}.flip:hover .fwf-facts{box-shadow:4px 4px 0 var(--fill2)}}
.flip-hint{position:absolute;top:10px;left:50%;transform:translateX(-50%);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink3);pointer-events:none}
@media (hover:hover){.flip-hint{display:none}}
.flip[aria-pressed=true] .flip-hint{display:none}
@media (prefers-reduced-motion:reduce){
  .flip-in{transform:none!important;transition:none}
  .flip-b{transform:none;opacity:0;transition:opacity .15s ease}
  .flip-f{transition:opacity .15s ease}
  .flip[aria-pressed=true] .flip-b{opacity:1}.flip[aria-pressed=true] .flip-f{opacity:0}
}
@media (prefers-reduced-motion:reduce) and (hover:hover){.flip:hover .flip-b{opacity:1}.flip:hover .flip-f{opacity:0}}

/* List rows: the RECORD face as a newsreader line */
.msg .s{display:flex;align-items:center;gap:10px}
.msg-org{width:22px;height:22px}
.msg-mono{display:inline-grid;place-items:center;border-radius:50%;background:var(--fill2);color:var(--ink);flex:none}
.msg-mono svg{height:7px;width:auto}
.msg .s-t{min-width:0;display:block}
.msg .s small b{font-weight:500;color:var(--ink3)}
.msg .s small{color:var(--ink2)}
.msg .dt{font-size:11.5px;color:var(--ink3);font-variant-numeric:tabular-nums}

/* Deck: one horizontal slide track, neighbours peeking */
.view-deck{max-width:none}
.deck-stage{position:relative;outline:none;margin:0 -18px}
.deck-track{display:flex;align-items:flex-start;gap:16px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;padding:8px 10% 20px;scrollbar-width:none;cursor:grab;-webkit-overflow-scrolling:touch}
.deck-track::-webkit-scrollbar{display:none}
.deck-track.dragging{cursor:grabbing;user-select:none}
.deck-track.dragging a{pointer-events:none}
.slide{flex:0 0 80%;min-width:0;scroll-snap-align:center;scroll-snap-stop:normal;transform-origin:50% 40%}
.slide .fwk{box-shadow:0 1px 0 var(--line),0 18px 40px rgba(0,0,0,.06)}
.slide:empty{min-height:420px;border-radius:16px;background:var(--fill)}
@media (prefers-reduced-motion:reduce){.slide{transform:none!important}}

/* Tools and footer */
.tool-org{width:24px;height:24px}
.foot .f-logos{margin:0;color:var(--ink3);font-size:12px}

/* /design/cards/ */
.faces-key{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.faces-key>div{border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:grid;gap:4px;font-size:13px;color:var(--ink2)}
.faces-key b{color:var(--accent);font-size:11px;text-transform:uppercase;letter-spacing:.1em}
.anat-row{display:grid;gap:22px;margin-top:12px;max-width:960px}
.anat .fwk-rec,.anat .fwk-id,.anat .fwk-facts,.anat .fwk-act{position:relative;outline:1.5px dashed var(--accent);outline-offset:-3px;border-radius:6px}
.anat .fwk-rec{border-radius:0}
.anat .fwk-facts{padding:8px 10px}
.anat .fwk-rec::after,.anat .fwk-id::after,.anat .fwk-facts::after,.anat .fwk-act::after{position:absolute;top:6px;right:8px;z-index:1;font:600 10px/1 var(--font-allternit-mono);letter-spacing:.1em;text-transform:uppercase;background:var(--accent);color:#fff;padding:4px 7px;border-radius:999px}
.anat .fwk-rec::after{content:'Record'}
.anat .fwk-id::after{content:'Identity';top:auto;bottom:6px}
.anat .fwk-facts::after{content:'Facts'}
.anat .fwk-act::after{content:'Action';top:auto;bottom:24px;right:26px}
.anat-phones{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,390px));gap:22px;margin-top:12px}
.anat-phones .phone-frame{display:grid;gap:12px;align-content:start}
.anat-phones .cards.tiles{grid-template-columns:1fr 1fr!important;margin-top:0}
.cli-ex pre{font-size:12px;line-height:1.5;overflow-x:auto}
.cli-ex{max-width:760px}
@media (max-width:1180px){.faces-key{grid-template-columns:1fr 1fr}}
@media (max-width:760px){
  .cards.tiles{grid-template-columns:1fr 1fr;gap:12px}
  .fwf-id{padding:10px 11px 11px}
  .id-size b{font-size:28px}
  .slide{flex-basis:88%}
  .deck-track{padding:6px 6% 16px;gap:10px}
  .deck-stage{margin:0 -16px}
  .fwk-hero .rc-h1{font-size:24px}
  .faces-key{grid-template-columns:1fr}
  .anat-phones{grid-template-columns:1fr}
}

/* Tools and datasets share the faces */
.id-size.tag{flex-wrap:wrap;row-gap:2px}
.id-size.tag b{white-space:nowrap}
.id-size.mid b{font-size:26px;letter-spacing:-.03em}
.id-size.long b{font-size:19px;letter-spacing:-.02em}
.ff-r.wide{grid-column:1/-1}
.runs{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:12px}
.runs-l{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink3);margin-right:2px}
.runs-l:not(:first-child){margin-left:10px}
.tchip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line2);border-radius:999px;padding:3px 10px 3px 4px;font-size:12.5px;color:var(--ink);text-decoration:none;background:var(--bg)}
.tchip:not(:has(img)){padding-left:10px}
a.tchip:hover{background:var(--fill)}
.runs-list{margin-top:4px}

/* Docs tables: a field-name column never clips. The column fits its longest name, code in it never
   wraps or truncates, and a table wider than the screen scrolls inside its own .tbl-wrap. */
.prose .tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.prose .tbl td:first-child:has(code){white-space:nowrap;width:1%}
.prose .tbl td:first-child code,.prose .tbl td.mono code{white-space:nowrap;word-break:normal;overflow-wrap:normal;overflow:visible;text-overflow:clip}
.prose .tbl td.mono.small:first-child{white-space:nowrap;width:1%}
.anat-row.two{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none}
@media (max-width:1180px){.anat-row.two{grid-template-columns:1fr}}
