/* Stiletto Labs · Console. Ported from design/console-mock.html (Veronica) — mock-only demo switcher/chip removed. */
/* Tokens copied verbatim from personal-site/design/tokens.md + corset-review/src/styles.css */
:root{--bg-canvas:#0a0a0a;--bg-panel:#121110;--bg-panel-inset:#0e0d0c;--bg-elevated:#1a1816;--bg-hover:#161412;--border-subtle:rgba(245,240,230,.08);--border-quiet:rgba(245,240,230,.05);--border-gold:rgba(201,169,110,.35);--gold:#c9a96e;--gold-muted:rgba(201,169,110,.40);--gold-fill:rgba(201,169,110,.14);--cream:#f5f0e6;--text-primary:#f5f0e6;--text-secondary:rgba(245,240,230,.55);--text-tertiary:rgba(245,240,230,.32);--text-inverse:#0a0a0a;--status-ok:#a8b5a0;--status-warn:#c4a574;--status-bad:#b87a7a;--radius-panel:14px;--radius-control:8px;--radius-chip:999px;--radius-tile:10px;--focus-ring:0 0 0 2px #0a0a0a,0 0 0 4px #c9a96e;--font-display:"Cormorant Garamond","Cormorant","Times New Roman",Georgia,serif;--font-sans:"Inter","SF Pro Text","Segoe UI",system-ui,sans-serif;--max-width:1120px;--ease-out:cubic-bezier(.22,1,.36,1);--duration-fast:180ms;--duration:240ms;--shadow-whisper:0 8px 32px rgba(0,0,0,.35);--atmo-gold:rgba(201,169,110,.22);--atmo-oxblood:rgba(122,44,62,.50);--atmo-haze:rgba(245,240,230,.06);--duration-drift:110s;--bg-panel-glass:rgba(18,17,16,.66);--bg-elevated-glass:rgba(26,24,22,.62);--bg-inset-glass:rgba(14,13,12,.70);--blur-panel:18px;--border-gold-soft:rgba(201,169,110,.18);color-scheme:dark}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%;background:var(--bg-canvas);color:var(--text-primary);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
input,textarea{font:inherit;color:inherit}
button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:6px}
.hidden{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.atmosphere{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:var(--bg-canvas)}
.glow{position:absolute;border-radius:50%;will-change:transform}
.glow-gold{width:max(960px,76vw);height:max(760px,60vw);left:max(-420px,-24vw);top:max(-380px,-26vw);background:radial-gradient(closest-side,var(--atmo-gold),rgba(201,169,110,.12) 45%,rgba(201,169,110,.035) 75%,transparent);animation:drift-a var(--duration-drift) ease-in-out infinite alternate}
.glow-oxblood{width:max(1000px,80vw);height:max(820px,62vw);right:max(-460px,-26vw);bottom:max(-420px,-24vw);background:radial-gradient(closest-side,var(--atmo-oxblood),rgba(122,44,62,.25) 45%,rgba(122,44,62,.08) 75%,transparent);animation:drift-b calc(var(--duration-drift)*1.3) ease-in-out infinite alternate}
.glow-haze{width:max(760px,58vw);height:max(520px,38vw);left:24%;top:26%;background:radial-gradient(closest-side,var(--atmo-haze),transparent);animation:drift-c calc(var(--duration-drift)*1.6) ease-in-out infinite alternate}
.atmosphere::after{content:"";position:absolute;inset:0;opacity:.05;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
.shell{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column}
/* top bar */
.topbar{position:sticky;top:0;z-index:20;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;height:56px;padding:0 24px;background:rgba(10,10,10,.72);backdrop-filter:blur(14px) saturate(1.1);-webkit-backdrop-filter:blur(14px) saturate(1.1);border-bottom:1px solid var(--border-subtle)}
.brand{justify-self:start;display:flex;align-items:center;gap:10px;text-decoration:none;font-family:var(--font-display);font-weight:600;font-size:18px;color:var(--cream);white-space:nowrap}
.brand .mark{color:var(--gold);font-size:15px}
.brand small{font-family:var(--font-sans);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary);margin-left:4px}
.tabs{display:flex;gap:28px;height:56px;align-items:stretch}
.tabwrap{position:relative;display:flex}
.tab{position:relative;display:flex;align-items:center;gap:6px;padding:0 2px;font-size:13px;font-weight:500;letter-spacing:.02em;color:var(--text-secondary);text-decoration:none;transition:color var(--duration) var(--ease-out)}
.tab:hover{color:var(--cream)}
.tab[aria-current="true"]{color:var(--cream)}
.tab[aria-current="true"]::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--gold)}
.tab:focus-visible{box-shadow:none;outline:2px solid var(--gold);outline-offset:-14px}
.chev{width:9px;height:9px;opacity:.7;transition:transform var(--duration) var(--ease-out)}
.tab[aria-expanded="true"] .chev{transform:rotate(180deg)}
.menu{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%,-4px);min-width:280px;padding:8px;background:linear-gradient(180deg,#17150f,#121110);border:1px solid var(--border-subtle);border-radius:var(--radius-panel);box-shadow:0 18px 48px rgba(0,0,0,.55);opacity:0;pointer-events:none;transition:opacity var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}
.menu::before{content:"";position:absolute;top:0;left:18%;right:18%;height:1px;background:linear-gradient(90deg,transparent,var(--gold-muted),transparent)}
.menu.open{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
.menu-label{padding:8px 12px 6px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary)}
.menu-item{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:12px;width:100%;padding:10px 12px;border-radius:var(--radius-control);text-align:left;color:var(--cream)}
.menu-item:hover,.menu-item:focus-visible{background:rgba(201,169,110,.08);box-shadow:none}
.menu-item .n{font-family:var(--font-display);font-size:18px;color:var(--gold)}
.menu-item b{display:block;font-family:var(--font-display);font-weight:600;font-size:18px}
.menu-item span.d{display:block;font-size:12px;color:var(--text-secondary)}
.menu-item .soon{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);border:1px solid var(--border-subtle);border-radius:var(--radius-chip);padding:2px 8px}
.account{justify-self:end;display:flex;align-items:center;gap:14px;font-size:12px;color:var(--text-secondary)}
.avatar{width:28px;height:28px;border-radius:50%;border:1px solid var(--border-gold);display:grid;place-items:center;font-size:11px;font-weight:500;color:var(--gold)}
.main{flex:1;width:100%;max-width:var(--max-width);margin:0 auto;padding:40px 24px 72px}
.view{animation:fade var(--duration) var(--ease-out) both}
.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary)}
h1.hero{font-family:var(--font-display);font-weight:600;font-size:44px;line-height:1.12;margin:8px 0 10px}
.lede{font-size:15px;color:var(--text-secondary);max-width:620px}
.glass{background:var(--bg-panel-glass);backdrop-filter:blur(var(--blur-panel));-webkit-backdrop-filter:blur(var(--blur-panel));border:1px solid var(--border-subtle);border-radius:var(--radius-panel)}
/* studio */
.summary{display:flex;gap:36px;margin:28px 0 40px;padding:18px 24px}
.summary div b{display:block;font-family:var(--font-display);font-weight:600;font-size:28px;font-variant-numeric:tabular-nums}
.summary div span{font-size:12px;color:var(--text-secondary)}
.persona{margin-bottom:40px}
.p-head{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.p-mono{width:40px;height:40px;border-radius:50%;border:1px solid var(--border-gold);display:grid;place-items:center;font-family:var(--font-display);font-size:19px;color:var(--gold);background:rgba(201,169,110,.06)}
.p-head h2{font-family:var(--font-display);font-weight:600;font-size:26px;line-height:1.1}
.p-head p{font-size:12px;color:var(--text-secondary)}
.p-head .ex{margin-left:auto}
.lora-list{overflow:hidden}
.lora{display:grid;grid-template-columns:1.5fr 1fr 1.6fr .9fr 20px;align-items:center;gap:20px;width:100%;padding:18px 22px;text-align:left;border-top:1px solid var(--border-quiet);transition:background var(--duration-fast)}
.lora:first-child{border-top:none}
.lora:hover{background:rgba(245,240,230,.025)}
.lora:hover .arrow{color:var(--gold);transform:translateX(2px)}
.lora .name b{display:block;font-family:var(--font-display);font-weight:600;font-size:20px}
.lora .name span{font-size:12px;color:var(--text-tertiary);letter-spacing:.06em;text-transform:uppercase}
.exists{font-size:12px;color:var(--text-secondary)}
.exists.yes{color:var(--cream)}
.exists i{font-style:normal;color:var(--gold);margin-right:6px}
.status{display:flex;flex-direction:column;gap:6px}
.status .st{display:flex;align-items:center;gap:8px;font-size:13px}
.dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:var(--text-tertiary)}
.dot.ok{background:var(--status-ok)}.dot.warn{background:var(--status-warn)}.dot.bad{background:var(--status-bad)}.dot.gold{background:var(--gold)}
.mini{height:2px;background:rgba(245,240,230,.08);border-radius:2px;overflow:hidden;max-width:220px}
.mini i{display:block;height:100%;background:var(--gold)}
.meta{font-size:12px;color:var(--text-secondary);font-variant-numeric:tabular-nums}
.meta b{color:var(--cream);font-weight:500}
.arrow{color:var(--text-tertiary);transition:all var(--duration-fast)}
.empty-row{padding:26px 22px;border:1px dashed rgba(245,240,230,.10);background:rgba(18,17,16,.5);border-radius:var(--radius-panel);font-style:italic;color:var(--text-secondary)}
.skel{height:70px;border-radius:var(--radius-tile);margin:10px;background:linear-gradient(90deg,rgba(201,169,110,.05),rgba(201,169,110,.12),rgba(201,169,110,.05));background-size:200% 100%;animation:shimmer 1.6s linear infinite}
/* review */
.crumb{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary);margin-bottom:10px}
.crumb button:hover{color:var(--cream)}
.r-head{display:flex;align-items:flex-end;gap:24px;flex-wrap:wrap}
.r-head h1{font-family:var(--font-display);font-weight:600;font-size:38px;line-height:1.1}
.r-head .grow{flex:1}
.btn{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 16px;border-radius:var(--radius-control);border:1px solid var(--border-subtle);background:var(--bg-elevated-glass);font-size:13px;color:var(--cream);transition:border-color var(--duration-fast)}
.btn:hover{border-color:var(--border-gold)}
.btn-gold{background:var(--gold);color:var(--text-inverse);border-color:var(--gold);font-weight:500}
.btn-gold:hover{filter:brightness(1.06)}
kbd{font-family:var(--font-sans);font-size:10.5px;font-weight:500;min-width:18px;height:18px;padding:0 5px;display:inline-grid;place-items:center;border-radius:4px;border:1px solid rgba(245,240,230,.16);background:rgba(245,240,230,.04);color:var(--text-secondary)}
.progress{margin:22px 0 18px;padding:16px 20px;display:grid;grid-template-columns:auto 1fr auto;gap:24px;align-items:center}
.progress .big{font-family:var(--font-display);font-weight:600;font-size:24px;font-variant-numeric:tabular-nums;white-space:nowrap}
.progress .big span{font-family:var(--font-sans);font-size:13px;font-weight:400;color:var(--text-secondary);margin-left:4px}
.bar{height:3px;border-radius:3px;background:rgba(245,240,230,.08);overflow:hidden}
.bar i{display:block;height:100%;background:linear-gradient(90deg,rgba(201,169,110,.7),var(--gold));transition:width var(--duration) var(--ease-out)}
.counts{display:flex;gap:18px;font-size:12px;color:var(--text-secondary);font-variant-numeric:tabular-nums}
.counts span{display:flex;align-items:center;gap:7px}
.counts b{color:var(--cream);font-weight:500}
.toolbar{display:flex;align-items:center;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.seg{display:inline-flex;padding:3px;border-radius:var(--radius-control);background:var(--bg-elevated-glass);border:1px solid var(--border-subtle)}
.seg button{height:30px;padding:0 13px;border-radius:6px;font-size:12.5px;color:var(--text-secondary)}
.seg button[aria-pressed="true"]{background:rgba(245,240,230,.08);color:var(--cream)}
.seg button em{font-style:normal;color:var(--text-tertiary);margin-left:5px;font-variant-numeric:tabular-nums}
.toolbar .grow{flex:1}
.hint{font-size:12px;color:var(--text-tertiary);display:flex;gap:6px;align-items:center}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:14px}
.still{position:relative;aspect-ratio:3/4;border-radius:var(--radius-tile);overflow:hidden;border:1px solid var(--border-subtle);background:var(--bg-panel-inset);transition:transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast)}
.still img{width:100%;height:100%;object-fit:cover;display:block;transition:opacity var(--duration),filter var(--duration)}
.still:hover{transform:translateY(-2px)}
.still.cur{box-shadow:0 0 0 1px var(--gold),0 0 0 4px rgba(201,169,110,.18)}
.still .num{position:absolute;left:10px;bottom:8px;font-size:11px;font-variant-numeric:tabular-nums;color:rgba(245,240,230,.75);text-shadow:0 1px 4px rgba(0,0,0,.6)}
.still.keep{box-shadow:inset 0 0 0 2px rgba(168,181,160,.75)}
.still.keep.cur{box-shadow:inset 0 0 0 2px rgba(168,181,160,.75),0 0 0 1px var(--gold),0 0 0 4px rgba(201,169,110,.18)}
.still.drop img{opacity:.28;filter:grayscale(.7)}
.still.drop::after{content:"Dropped";position:absolute;inset:auto 0 0 0;padding:28px 10px 8px;text-align:right;font-size:11px;color:var(--status-bad);background:linear-gradient(transparent,rgba(40,14,18,.7))}
.still .fb{position:absolute;top:9px;right:9px;width:9px;height:9px;border-radius:50%;background:var(--status-warn);box-shadow:0 0 0 3px rgba(10,10,10,.5)}
.still .ann{position:absolute;top:8px;left:9px;font-size:10px;color:var(--gold);text-shadow:0 1px 4px rgba(0,0,0,.6)}
/* focus */
.focus{display:grid;grid-template-columns:1fr 340px;gap:20px;align-items:start}
.stage{position:relative;display:flex;justify-content:center;align-items:center;padding:16px}
.focus>*{min-width:0}
.stage{--h:max(380px,calc(100vh - 470px))}
.stage img{height:var(--h);width:calc(var(--h)*.75);max-width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:var(--radius-tile);transition:opacity var(--duration),filter var(--duration)}
.stage.keep img{box-shadow:0 0 0 2px rgba(168,181,160,.8)}
.stage.drop img{opacity:.35;filter:grayscale(.6)}
.stage .navbtn{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;border:1px solid var(--border-subtle);background:rgba(10,10,10,.5);color:var(--cream)}
.stage .navbtn:hover{border-color:var(--border-gold)}
.stage .prev{left:16px}.stage .next{right:16px}
.stage .tag{position:absolute;top:26px;left:30px;font-size:12px;color:var(--text-secondary);font-variant-numeric:tabular-nums}
.side{padding:20px;display:flex;flex-direction:column;gap:18px}
.side h3{font-family:var(--font-display);font-weight:600;font-size:22px}
.decide{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.dbtn{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 6px;border-radius:var(--radius-control);border:1px solid var(--border-subtle);background:var(--bg-elevated-glass);font-size:13px;transition:all var(--duration-fast)}
.dbtn:hover{border-color:rgba(245,240,230,.2)}
.dbtn.k[aria-pressed="true"]{border-color:rgba(168,181,160,.6);background:rgba(168,181,160,.10);color:#d6ddd1}
.dbtn.d[aria-pressed="true"]{border-color:rgba(184,122,122,.6);background:rgba(184,122,122,.10);color:#e2c2c2}
.dbtn.f[aria-pressed="true"]{border-color:rgba(196,165,116,.6);background:rgba(196,165,116,.10);color:#e6d3b0}
.field label{display:flex;justify-content:space-between;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary);margin-bottom:7px}
.field textarea,.field input{width:100%;background:var(--bg-inset-glass);border:1px solid var(--border-subtle);border-radius:var(--radius-control);padding:10px 12px;font-size:13.5px;line-height:1.5;resize:none;color:var(--cream)}
.field textarea:focus,.field input:focus{outline:none;border-color:var(--border-gold);box-shadow:0 0 0 3px rgba(201,169,110,.12)}
.field textarea::placeholder,.field input::placeholder{color:var(--text-tertiary)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.chip{font-size:11.5px;padding:3px 10px;border-radius:var(--radius-chip);border:1px solid var(--border-subtle);color:var(--text-secondary)}
.chip.on{border-color:var(--border-gold);color:var(--gold);background:rgba(201,169,110,.06)}
.saved{font-size:11.5px;color:var(--text-tertiary);display:flex;align-items:center;gap:6px}
.film{display:flex;gap:8px;overflow-x:auto;padding:12px 4px 6px;margin-top:14px;scrollbar-width:thin;scrollbar-color:rgba(201,169,110,.3) transparent}
.film .still{flex:0 0 58px;aspect-ratio:3/4;border-radius:6px}
.film .still:hover{transform:none}
.film .still .num,.film .still.drop::after{display:none}
.film .still .fb{width:6px;height:6px;top:4px;right:4px}
/* overlays */
.scrim{position:fixed;inset:0;z-index:40;background:rgba(6,6,6,.78);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:grid;place-items:center;padding:32px;animation:fade var(--duration-fast) both}
.sheet{width:min(620px,100%);padding:30px 32px;background:rgba(18,17,16,.94);animation:rise var(--duration) var(--ease-out) both}
.sheet h2{font-family:var(--font-display);font-weight:600;font-size:28px;margin-bottom:4px}
.keys{display:grid;grid-template-columns:1fr 1fr;gap:6px 32px;margin-top:20px}
.keys div{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid var(--border-quiet);font-size:13px;color:var(--text-secondary)}
.keys div span:last-child{display:flex;gap:4px}
.lightbox{display:grid;grid-template-columns:auto 300px;gap:24px;align-items:center;max-height:100%}
.lightbox img{height:min(82vh,760px);aspect-ratio:3/4;border-radius:var(--radius-tile);object-fit:cover}
.lb-side{display:flex;flex-direction:column;gap:14px}
.sumcard{width:min(560px,100%);padding:40px;text-align:center;background:rgba(18,17,16,.94);border-color:var(--border-gold);animation:rise var(--duration) var(--ease-out) both}
.sumcard .seal{color:var(--gold);font-size:22px;margin-bottom:12px}
.sumcard h2{font-family:var(--font-display);font-weight:600;font-size:34px;line-height:1.15}
.sumgrid{display:grid;grid-template-columns:repeat(3,1fr);margin:26px 0;border-top:1px solid var(--border-quiet);border-bottom:1px solid var(--border-quiet)}
.sumgrid div{padding:18px 0}
.sumgrid b{display:block;font-family:var(--font-display);font-size:32px;font-weight:600}
.sumgrid span{font-size:12px;color:var(--text-secondary);display:inline-flex;gap:6px;align-items:center}
.placeholder{margin-top:36px;padding:56px;text-align:center}
.placeholder .seal{color:var(--gold);font-size:22px}
.placeholder h2{font-family:var(--font-display);font-weight:600;font-size:34px;margin:12px 0 8px}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:50;padding:9px 16px;font-size:12.5px;color:var(--cream);background:rgba(18,17,16,.92);border:1px solid var(--border-subtle);border-radius:var(--radius-chip);animation:rise var(--duration) both}
@media (max-width:900px){.focus{grid-template-columns:1fr}.stage img{height:auto;width:100%}.stage{--h:auto}.lora{grid-template-columns:1fr 1fr;row-gap:10px}.lora .arrow{display:none}.lightbox{grid-template-columns:1fr}.lightbox img{height:auto;width:100%;max-height:60vh}}
@media (max-width:720px){.topbar{padding:0 16px;gap:12px}.brand small{display:none}.tabs{gap:18px}h1.hero{font-size:32px}.grid{grid-template-columns:repeat(2,1fr)}.summary{gap:20px;flex-wrap:wrap}.progress{grid-template-columns:1fr}.hint{display:none}.seg{overflow-x:auto;max-width:100%}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
@keyframes drift-a{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(6vw,5vh,0) scale(1.08)}}
@keyframes drift-b{from{transform:translate3d(0,0,0) scale(1.04)}to{transform:translate3d(-5vw,-6vh,0) scale(.97)}}
@keyframes drift-c{from{transform:translate3d(0,0,0)}to{transform:translate3d(-8vw,4vh,0)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}
/* —— sign-in + boot (verbatim from personal-site/site/styles.css) —— */
.boot,.gate{position:relative;z-index:1}
.boot{position:fixed;inset:0;display:grid;place-items:center;color:var(--gold);font-size:22px}
.boot span{animation:breathe 2.2s ease-in-out infinite}
.gate{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:48px 24px}
.signin-card{width:100%;max-width:380px;text-align:center;padding:48px 40px 40px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--radius-panel);box-shadow:var(--shadow-whisper);animation:rise var(--duration) var(--ease-out) both}
.signin-card .seal{font-size:28px;line-height:1;color:var(--gold);margin-bottom:16px}
.signin-card h1{font-family:var(--font-display);font-weight:600;font-size:28px;letter-spacing:.01em;color:var(--cream);margin-bottom:32px}
.gate-banner{margin:-12px 0 20px;padding:8px 12px;border-radius:var(--radius-control);background:var(--bg-elevated);border:1px solid var(--border-subtle);font-size:13px;color:var(--text-secondary)}
.gate-banner.error{color:var(--status-bad);border-color:rgba(184,122,122,.35)}
.signin-card .btn-gold{width:100%;height:48px;justify-content:center;font-size:14px}
.signin-card .secure{margin-top:20px;font-size:12px;color:var(--text-tertiary)}
.signout{color:var(--text-tertiary);font-size:12px;min-height:32px}.signout:hover{color:var(--cream)}
@keyframes breathe{0%,100%{opacity:.25}50%{opacity:.7}}
/* —— real-data additions —— */
.still.broken img,.stage.broken img{visibility:hidden}
.still.broken::before,.stage.broken::before{content:"Image unavailable";position:absolute;inset:0;display:grid;place-items:center;font-size:12px;color:var(--text-tertiary);background:var(--bg-panel-inset)}
.stage.broken::before{inset:16px;border-radius:var(--radius-tile)}
.saved.err{color:var(--status-bad)}
.banner{display:flex;gap:10px;align-items:center;margin-bottom:14px;padding:10px 16px;font-size:13px;color:var(--status-warn);border-color:rgba(196,165,116,.3)}
.banner button{color:var(--cream);text-decoration:underline;text-underline-offset:3px}
.p-head .p-link{margin-left:auto;font-size:12px;color:var(--text-secondary);text-decoration:none;border:1px solid var(--border-subtle);border-radius:var(--radius-chip);padding:4px 12px}
.p-head .p-link:hover{color:var(--cream);border-color:var(--border-gold)}
.legacy{font-size:12px;color:var(--text-tertiary);font-style:italic;margin-left:6px}
.facts{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--text-tertiary);margin-top:6px}.facts b{color:var(--text-secondary);font-weight:500}
.cap-meta{font-size:11px;color:var(--text-tertiary)}
.placeholder .btn{margin-top:20px}
.ov{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-top:28px}
.ov div{padding:20px 22px}.ov b{display:block;font-family:var(--font-display);font-weight:600;font-size:32px;font-variant-numeric:tabular-nums}.ov span{font-size:12px;color:var(--text-secondary)}
.exp{display:flex;gap:8px}

/* —— Overview: Corset-tab panels, copied from personal-site/site/styles.css —— */
.learned {
  position: relative; overflow: hidden;
  padding: 30px 36px 30px;
  border: 1px solid var(--border-gold); border-radius: var(--radius-panel);
  background:
    radial-gradient(120% 140% at 0% 0%, rgba(201, 169, 110, 0.085), transparent 55%),
    var(--bg-panel-glass);
  backdrop-filter: blur(var(--blur-panel)); -webkit-backdrop-filter: blur(var(--blur-panel));
}
.learned::before { content: ""; position: absolute; left: 36px; right: 36px; top: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(201, 169, 110, 0.7), transparent); }
.learned-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.learned .eyebrow { margin: 0; color: rgba(201, 169, 110, 0.9); }
.learned-headline { font-family: var(--font-display); font-weight: 600; font-size: clamp(1.5rem, 1.2vw + 1.05rem, 1.95rem); line-height: 1.22; color: var(--cream); max-width: 52ch; text-wrap: pretty; font-variant-numeric: lining-nums; }
.learned-detail { margin-top: 12px; font-size: 15px; line-height: 1.6; color: rgba(245, 240, 230, 0.68); max-width: 80ch; }

/* —— Lessons on file —— */
.lesson-mark { color: var(--gold); font-size: 9px; line-height: 1; }
.lessons { list-style: none; padding: 4px 26px; }
.lessons:hover { background: var(--bg-panel-glass); }
.lesson-row { display: grid; grid-template-columns: 14px 1fr 104px 132px; gap: 16px; align-items: center; padding: 17px 0; }
.lesson-row + .lesson-row { border-top: 1px solid var(--border-quiet); }
.lesson-row .lesson-mark { align-self: start; margin-top: 8px; }
.lesson-text p { font-family: var(--font-display); font-weight: 600; font-size: 19px; line-height: 1.3; color: var(--cream); }
.lesson-row.retired .lesson-mark { color: var(--text-tertiary); }
.ov-page{display:flex;flex-direction:column;gap:40px}
.ov-lead{font-family:var(--font-display);font-weight:600;font-size:var(--text-hero, 44px);line-height:1.15;color:var(--cream);margin-top:8px;text-wrap:balance}
.ov-sub{margin-top:12px;font-size:15px;color:var(--text-secondary)}
.ov-sec h2{font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary);margin-bottom:14px}
.learned .bar{margin:18px 0 10px;max-width:520px}
.learned .ov-prog{font-size:13px;color:var(--text-secondary);font-variant-numeric:tabular-nums}
.learned .ov-prog b{color:var(--cream);font-weight:500}
.learned .btn-gold{margin-top:20px}
.lessons a{text-decoration:none;color:inherit}
.lesson-row.att{grid-template-columns:14px 1fr auto}
.lesson-row.att .lesson-mark{color:var(--status-bad)}
.lesson-row.att p{font-family:var(--font-sans);font-weight:400;font-size:14px;line-height:1.5}
.lesson-row.ev{grid-template-columns:14px 1fr 190px}
.lesson-row.ev p{font-family:var(--font-sans);font-weight:400;font-size:14px;line-height:1.5}
.girls-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.girl-card{display:flex;align-items:center;gap:14px;padding:16px 18px;text-decoration:none;transition:border-color var(--duration-fast)}
.girl-card:hover{border-color:var(--border-gold)}
.girl-card .p-mono{flex-shrink:0;overflow:hidden}
.girl-card .p-mono img{width:100%;height:100%;object-fit:cover}
.girl-card b{display:block;font-family:var(--font-display);font-weight:600;font-size:20px;line-height:1.1}
.girl-card span{font-size:12px;color:var(--text-secondary)}
.muted-line{font-size:13px;color:var(--text-tertiary);font-style:italic}
/* side door to the old console */
.menu-side{display:block;margin:4px 8px 2px;padding:9px 12px 4px 52px;border-top:1px solid var(--border-quiet);font-size:12px;color:var(--text-tertiary);text-decoration:none}
.menu-side:hover,.menu-side:focus-visible{color:var(--text-secondary);box-shadow:none}
/* stills without an image file */
.missing-line{margin:-4px 0 14px;font-size:12.5px;color:var(--text-tertiary)}
.missing-line button{color:var(--text-secondary);text-decoration:underline;text-underline-offset:3px;margin-left:6px}
.still.nofile{cursor:default;opacity:.45;border-style:dashed}
.still.nofile:hover{transform:none}
.still.nofile::before{content:"No image file";position:absolute;inset:0;display:grid;place-items:center;font-size:12px;color:var(--text-tertiary)}
a.btn{text-decoration:none}
/* —— studio locks, versions, batches (2026-11-11) —— */
.lockline{color:var(--text-secondary);border-color:var(--border-gold-soft)}
.lockline b{color:var(--cream);font-weight:500}
.batch{margin-bottom:22px}
.batch-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;padding:0 0 10px;margin:4px 0 12px;border-bottom:1px solid var(--border-subtle);font-size:12.5px;color:var(--text-tertiary)}
.batch-head b{font-family:var(--font-display);font-weight:600;font-size:20px;color:var(--cream)}
.batch-head .note{color:var(--text-secondary);max-width:720px}
.batch-pending{text-align:center;color:var(--text-secondary)}
.batch.aside .still{opacity:.85}
.side.ro h3{color:var(--text-secondary)}
.ro-text{font-size:13.5px;line-height:1.5;color:var(--cream);background:var(--bg-inset-glass);border:1px solid var(--border-quiet);border-radius:var(--radius-control);padding:10px 12px;white-space:pre-wrap}
.ro-text .muted{color:var(--text-tertiary)}
span.chip{cursor:default}
.dlg-actions{display:flex;gap:10px;justify-content:center;margin-top:22px}
.dlg-err{margin-top:12px;font-size:12.5px;color:var(--status-bad)}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.r-head .grow{flex:1 1 460px;min-width:0}
.r-head > .btn,.r-head .exp{margin-bottom:2px}
/* versions, RTT gating, undo, cancel (2026-11-11 b) */
.vlabel{font-style:normal;font-family:var(--font-sans);font-size:11px;font-weight:500;letter-spacing:.06em;color:var(--gold);border:1px solid var(--border-gold-soft);border-radius:var(--radius-chip);padding:1px 8px;margin-left:8px;vertical-align:middle}
.rtt-why{margin:10px 0 0;font-size:12.5px;color:var(--status-warn)}
.lockline button{margin-left:auto;color:var(--cream);text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.batch-pending .btn{display:block;margin:12px auto 0;font-style:normal}
