/* Button Zoo — enhancement styles (critical styles are inlined in index.html) */
[hidden]{display:none!important}
:root[data-density=compact]{--gap:.6rem}
:root[data-density=airy]{--gap:2.2rem}
section h2{font:900 clamp(1.8rem,4.5vw,3rem)/1.02 var(--serif);letter-spacing:-.02em;margin:0 0 .75rem}
.visit,.console,.notebook-inline,.essay,.checklist,.guide,.worlds,.sources{max-width:1400px;margin:0 auto;padding:clamp(1.75rem,4vw,3rem) clamp(16px,4vw,56px)}
.visit{border-top:2px solid var(--line)}
.visit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:1rem 2rem}
.visit-grid p{margin:0;font-size:.98rem}

/* controls */
.ctl,.mini{font:700 .82rem/1.1 var(--mono);min-height:44px;padding:.55rem .9rem;border:2px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);cursor:pointer;transition:transform .15s var(--ease-spring),background .15s}
.ctl:hover,.mini:hover{background:var(--paper2)}
.ctl:active,.mini:active{transform:scale(.96)}
.ctl[aria-pressed=true],.mini[aria-pressed=true]{background:var(--ink);color:var(--paper)}
.book-count{display:inline-block;min-width:1.5em;padding:.15em .4em;margin-left:.2em;border-radius:999px;background:var(--accent);color:#fff;text-align:center}
:root[data-theme=dark] .book-count{color:#1a0d05}

/* console */
.console{border-top:2px solid var(--line);display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:1rem 2rem;align-items:start}
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:.75rem;align-items:end}
.filters label{display:grid;gap:.3rem;font:700 .74rem/1.2 var(--mono);text-transform:uppercase;letter-spacing:.06em}
.filters select{font:500 .95rem/1.2 var(--sans);min-height:44px;padding:.4rem .6rem;border:2px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink)}
.result-count{grid-column:1;margin:0;font:700 .85rem/1.4 var(--mono)}
.board{grid-row:1/span 2;grid-column:2;border:2px dashed var(--ink);border-radius:18px;padding:1rem 1.2rem;background:var(--paper2)}
.board h3{margin:0 0 .4rem;font:800 .78rem/1 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--accent)}
.board-text{font:600 1.12rem/1.4 var(--serif);margin:0 0 .5rem;transition:opacity .25s}
.board-text.swap{opacity:0}
.board-hint{font-size:.82rem;margin:0;color:var(--ink2)}

/* zones & cards */
.zoo{outline:none}
.gallery{max-width:1400px;margin:0 auto;padding:0 clamp(16px,4vw,56px)}
.zone{border-top:2px solid var(--line);padding:2.25rem 0 1rem}
.zone[hidden]{display:none}
.zone-sign{display:grid;grid-template-columns:auto 1fr;gap:0 1rem;align-items:baseline;margin-bottom:1.25rem}
.zone-n{grid-row:span 2;font:900 clamp(2.5rem,7vw,4.5rem)/1 var(--serif);color:var(--zone);-webkit-text-stroke:2px var(--line)}
.zone-sign h2{margin:0;outline-offset:6px}
.zone-sign p{margin:.2rem 0 0;font:italic 1.05rem/1.4 var(--serif);color:var(--ink2)}
.zone-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,310px),1fr));gap:var(--gap)}
.specimen{position:relative;display:flex;flex-direction:column;gap:.65rem;padding:1.1rem 1.1rem 1rem;background:var(--card);border:2px solid var(--line);border-top:10px solid var(--zone);border-radius:18px;box-shadow:5px 5px 0 var(--shadow);outline-offset:4px;transition:box-shadow .2s}
.specimen[hidden]{display:none}
.placard{display:grid;grid-template-columns:1fr auto;gap:0 .5rem}
.placard .num{font:800 .78rem/1 var(--mono);color:var(--ink2);grid-column:1}
.placard h3{grid-column:1;margin:.25rem 0 0;font:800 1.32rem/1.15 var(--serif)}
.placard .latin{grid-column:1;margin:0;color:var(--ink2);font-family:var(--serif)}
.badge-reviewed{grid-column:2;grid-row:1/span 3;align-self:start;font:800 .7rem/1 var(--mono);padding:.35rem .5rem;border-radius:999px;background:var(--leaf);color:var(--paper)}
.enclosure{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;min-height:132px;padding:1rem .5rem .6rem;border-radius:14px;background:repeating-linear-gradient(-45deg,transparent 0 10px,color-mix(in srgb,var(--zone) 10%,transparent) 10px 12px),var(--paper);border:2px dashed color-mix(in srgb,var(--ink) 35%,transparent)}
.caption{margin:0;min-height:1.3em;font:600 .78rem/1.3 var(--mono);text-align:center;color:var(--ink2)}
.does{margin:0;font-size:.95rem}
.tags{display:flex;flex-wrap:wrap;gap:.35rem;list-style:none;margin:0;padding:0}
.tag{font:700 .7rem/1 var(--mono);padding:.38rem .55rem;border-radius:999px;border:1.5px solid var(--ink2);color:var(--ink)}
.risk-low{border-color:var(--leaf)}
.risk-med{border-style:dashed}
.risk-high{border-color:var(--accent);border-width:2.5px}
.risk-high::before{content:"⚠ "}
.kbd-note{margin:0;font-size:.85rem;color:var(--ink2)}
.snippet summary{cursor:pointer;font:700 .8rem/1 var(--mono);padding:.7rem 0;min-height:44px;display:flex;align-items:center}
pre{margin:0;max-height:320px;overflow:auto;padding:.85rem;border-radius:12px;background:#14201a;color:#e8f2e9;font:.78rem/1.5 var(--mono);white-space:pre;tab-size:2}
.card-actions{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:auto}
.card-actions .mini{flex:1 1 auto}
.specimen.ping{animation:ping 2.4s ease-out}
:root[data-motion=reduced] .specimen.ping{box-shadow:0 0 0 6px var(--accent)}
@keyframes ping{0%{box-shadow:5px 5px 0 var(--shadow),0 0 0 0 var(--accent)}30%{box-shadow:5px 5px 0 var(--shadow),0 0 0 14px color-mix(in srgb,var(--accent) 50%,transparent)}60%{box-shadow:5px 5px 0 var(--shadow),0 0 0 4px var(--accent)}100%{box-shadow:5px 5px 0 var(--shadow),0 0 0 0 transparent}}
.specimen.just-saved .enclosure{background:color-mix(in srgb,var(--leaf) 16%,var(--paper))}

/* list view */
.view-list .zone-grid{grid-template-columns:1fr}
.view-list .specimen{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);column-gap:1.5rem}
.view-list .specimen>*{grid-column:2}
.view-list .specimen>.placard,.view-list .specimen>.enclosure{grid-column:1}
.view-list .specimen>.enclosure{grid-row:2/span 5}
@media (max-width:760px){.view-list .specimen{display:flex}}

/* ── the specimen button ── */
.sp{position:relative;isolation:isolate;overflow:hidden;min-height:52px;min-width:44px;max-width:100%;padding:.8rem 1.4rem;border:2.5px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);font:800 1rem/1.15 var(--sans);cursor:pointer;box-shadow:4px 4px 0 var(--shadow);transition:transform .2s var(--ease-spring),box-shadow .15s,background .2s,translate .35s var(--ease-spring);touch-action:manipulation;display:inline-flex;align-items:center;gap:.55rem}
.sp:hover{background:color-mix(in srgb,var(--zone) 14%,var(--card))}
.sp:active{transform:translate(3px,3px);box-shadow:1px 1px 0 var(--shadow)}
.sp[aria-pressed=true]{background:var(--ink);color:var(--paper)}
.sp svg{width:1.3em;height:1.3em;flex:none}
.sp .sp-label{position:relative;z-index:1}
.ripple{position:absolute;z-index:0;width:10px;height:10px;border-radius:50%;background:var(--zone);opacity:.45;translate:-50% -50%;pointer-events:none;animation:rip .65s ease-out forwards}
@keyframes rip{to{scale:45;opacity:0}}
.echo{position:absolute;inset:-3px;border:3px solid var(--zone);border-radius:999px;pointer-events:none;animation:echo .8s ease-out forwards}
@keyframes echo{to{inset:-22px;opacity:0}}
/* magnetic */
.sp-filings-save::before{content:"";position:absolute;inset:0;z-index:0;background:repeating-linear-gradient(var(--a,20deg),transparent 0 7px,color-mix(in srgb,var(--zone) 35%,transparent) 7px 9px);transition:--a .4s;opacity:.0;transition:opacity .3s}
.sp-filings-save:hover::before,.sp-filings-save:focus-visible::before{opacity:1;animation:align .6s var(--ease-out) forwards}
@keyframes align{from{transform:rotate(-25deg) scale(1.6)}to{transform:rotate(0) scale(1.6)}}
/* slinky */
.coil{display:inline-flex;gap:2px;align-items:center;height:18px}
.coil i{display:block;width:3px;height:100%;background:currentColor;border-radius:2px;transition:margin .35s var(--ease-spring)}
[data-density=compact] .coil i{margin:0 -1px}
[data-density=airy] .coil i{margin:0 2px}
/* theme */
.theme-icon .bite{transition:cx .45s var(--ease-spring)}
.sp[aria-pressed=true] .theme-icon .bite{cx:17px}
/* sort pill */
.sort-panel{display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem;animation:unfold .3s var(--ease-spring)}
.sort-panel[hidden]{display:none}
@keyframes unfold{from{opacity:0;transform:scaleX(.4)}to{opacity:1;transform:none}}
/* hold */
.sp-hold-export::after{content:"";position:absolute;left:0;bottom:0;height:100%;width:100%;z-index:0;background:color-mix(in srgb,var(--zone) 45%,transparent);transform:scaleX(0);transform-origin:left;transition:transform .2s}
.sp-hold-export.holding::after{transform:scaleX(1);transition:transform .9s linear}
:root[data-motion=reduced] .sp-hold-export.holding::after{transform:scaleX(1);transition:none;background:color-mix(in srgb,var(--zone) 30%,transparent)}
/* stamp */
.sp-stamp-prompt{box-shadow:0 7px 0 var(--shadow);transition:transform 90ms ease-out,box-shadow 90ms}
.sp-stamp-prompt:active,.sp-stamp-prompt.pressed{transform:translateY(6px);box-shadow:0 1px 0 var(--shadow)}
:root[data-motion=reduced] .sp-stamp-prompt.pressed{transform:none;background:var(--accent)}
.ink{position:absolute;right:10px;top:-6px;font:900 .7rem/1 var(--mono);color:var(--accent);rotate:-12deg;border:2px solid var(--accent);padding:2px 4px;border-radius:4px;animation:inkin .35s var(--ease-spring)}
@keyframes inkin{from{scale:2;opacity:0}}
/* targets overlay */
.targets-on [data-tsize=ok]{outline:3px solid #15803d!important;outline-offset:1px}
.targets-on [data-tsize=warn]{outline:3px dashed #ca8a04!important;outline-offset:1px}
.targets-on [data-tsize=fail]{outline:3px dotted #dc2626!important;outline-offset:1px}
/* armed */
.sp.armed{background:#be123c;color:#fff;animation:shake .35s}
@keyframes shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.tick{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .5s var(--ease-out)}
.sp[aria-pressed=true] .tick{stroke-dashoffset:0}
/* rewind */
.spiral{transition:transform .6s var(--ease-out)}
.sp-rewind-setting.spin .spiral{transform:rotate(-360deg)}
.sp[aria-disabled=true]{opacity:.62;cursor:not-allowed}
/* tortoise */
.shell{transition:transform .5s var(--ease-spring)}
.sp[aria-pressed=true] .shell{transform:scaleX(-1)}
/* sound */
.owl-eye{transform-box:fill-box;transform-origin:center;transition:transform .3s}
.sp:not([aria-pressed=true]) .owl-eye{transform:scaleY(.12)}
.bars{display:inline-flex;align-items:flex-end;gap:2px;height:16px}
.bars i{width:4px;background:currentColor;opacity:.25;border-radius:1px;transition:opacity .2s,transform .3s var(--ease-spring)}
.bars i:nth-child(1){height:6px}.bars i:nth-child(2){height:11px}.bars i:nth-child(3){height:16px}
.bars[data-level="1"] i:nth-child(-n+1),.bars[data-level="2"] i:nth-child(-n+2),.bars[data-level="3"] i:nth-child(-n+3){opacity:1}
.notes{display:flex;gap:.35rem;justify-content:center;font:700 .7rem/1 var(--mono)}
.notes span{padding:.3rem .45rem;border-radius:6px;border:1.5px solid var(--ink2);color:var(--ink)}
.notes span.on{background:var(--zone);color:#fff;border-color:var(--zone)}
/* mischief */
.sp-shy-random{transition:translate .28s var(--ease-spring)}
#gallery[dir=rtl] .zone{animation:turn .5s var(--ease-out)}
@keyframes turn{from{transform:perspective(900px) rotateY(12deg);opacity:.5}}
.caption s{opacity:.8}

/* reduced motion: per-specimen alternatives */
:root[data-motion=reduced] .ripple,:root[data-motion=reduced] .echo{display:none}
:root[data-motion=reduced] .sp:focus-visible{outline-width:4px}

/* notebook */
.notebook-inline{border-top:2px solid var(--line)}
.nb-list{list-style:none;padding:0;margin:1rem 0;display:grid;gap:.5rem}
.nb-list li{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;justify-content:space-between;padding:.6rem .8rem;border:2px solid var(--line);border-radius:12px;background:var(--card)}
.nb-list li.nb-empty{border-style:dashed;background:transparent}
.nb-item-title{font-weight:700}
.nb-item-kind{font:700 .7rem/1 var(--mono);color:var(--ink2);text-transform:uppercase;margin-right:.4rem}
.nb-actions,.cl-actions{display:flex;flex-wrap:wrap;gap:.5rem}
.nojs{font-style:italic}

/* essay */
.essay{border-top:2px solid var(--line)}
.essay-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:1rem 3rem;font:1.06rem/1.65 var(--serif)}
.pull{font:900 1.6rem/1.2 var(--serif);border-left:8px solid var(--accent);padding-left:1rem;margin-top:0}
code{font-family:var(--mono);font-size:.88em;background:var(--paper2);padding:.1em .3em;border-radius:4px}

/* checklist */
.checklist{border-top:2px solid var(--line)}
.cl-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:.6rem 1.5rem;padding:0;list-style:none;counter-reset:cl}
.cl-list label{display:flex;gap:.75rem;align-items:flex-start;padding:.7rem .8rem;border:2px solid var(--line);border-radius:12px;background:var(--card);cursor:pointer;min-height:44px}
.cl-list input{width:22px;height:22px;flex:none;margin:.15rem 0 0;accent-color:var(--leaf)}
.cl-list input:checked+span{text-decoration:line-through;text-decoration-color:var(--accent);text-decoration-thickness:2px}

/* guide */
.guide{display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr);gap:2rem;align-items:center;border-top:2px solid var(--line)}
.guide-cover{aspect-ratio:1/1.414;border:3px solid var(--line);border-radius:6px 16px 16px 6px;background:var(--ink);color:var(--paper);padding:1.2rem;display:flex;flex-direction:column;justify-content:space-between;box-shadow:10px 10px 0 var(--accent);transform:rotate(-3deg);transition:transform .4s var(--ease-spring)}
.guide-cover:hover{transform:rotate(0)}
.guide-cover span{font:900 1.5rem/1 var(--serif)}
.guide-cover i{width:70px;height:34px;border-radius:999px;background:var(--accent);align-self:flex-end}
.cta.big{font-size:1.15rem;padding:1rem 1.6rem}
@media (max-width:640px){.guide{grid-template-columns:1fr}.guide-cover{max-width:180px}}

/* worlds */
.worlds{border-top:2px solid var(--line)}
.world-list{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:1rem}
.world{border:2px solid var(--line);border-radius:18px;background:var(--card);padding:1rem 1.1rem;box-shadow:5px 5px 0 var(--shadow)}
.world a{display:grid;gap:.2rem;text-decoration:none;color:var(--ink);min-height:44px}
.world-kind{font:700 .72rem/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--accent)}
.world-title{font:800 1.2rem/1.2 var(--serif);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.2em}
.world-url{font:600 .78rem/1.2 var(--mono);color:var(--ink2)}
.world p{margin:.6rem 0 0;font-size:.95rem}

.sources{border-top:2px solid var(--line);font-size:.95rem}
.honest{font-style:italic;color:var(--ink2)}

/* footer */
.footer{border-top:3px solid var(--line);padding:2rem clamp(16px,4vw,56px) 3rem;text-align:center;background:var(--paper2)}
.home-big{display:inline-block;font:900 clamp(1.15rem,3.5vw,1.7rem)/1.2 var(--serif);padding:.9rem 1.4rem;border:2.5px solid var(--line);border-radius:999px;background:var(--ink);color:var(--paper);text-decoration:none;box-shadow:5px 5px 0 var(--accent)}
.footer p{max-width:44rem;margin:1rem auto 0;font-size:.88rem}

/* toast */
.toast-zone{position:fixed;left:50%;bottom:16px;translate:-50% 0;z-index:60;display:grid;gap:.5rem;width:min(92vw,460px)}
.toast{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;justify-content:space-between;padding:.75rem .9rem;border:2.5px solid var(--line);border-radius:14px;background:var(--ink);color:var(--paper);box-shadow:5px 5px 0 var(--accent);animation:toastin .3s var(--ease-spring);position:relative;overflow:hidden}
.toast .mini{background:var(--paper);color:var(--ink)}
.toast .bar{position:absolute;left:0;bottom:0;height:4px;width:100%;background:var(--accent);transform-origin:left;animation:drain linear forwards}
@keyframes toastin{from{transform:translateY(20px);opacity:0}}
@keyframes drain{to{transform:scaleX(0)}}

/* dialog */
.detail{width:min(94vw,780px);max-height:90vh;padding:0;border:3px solid var(--line);border-radius:22px;background:var(--card);color:var(--ink);box-shadow:10px 10px 0 var(--shadow)}
.detail::backdrop{background:rgba(10,16,12,.6)}
.d-inner{padding:1.25rem clamp(1rem,3vw,2rem) 1.5rem}
.d-head{position:relative;padding-right:3rem;border-bottom:2px solid var(--line);margin-bottom:1rem;border-top:10px solid var(--zone,var(--accent));margin-top:-1.25rem;padding-top:1rem}
.d-head h2{font:900 clamp(1.5rem,4vw,2.2rem)/1.05 var(--serif);margin:.2rem 0}
.d-num{font:800 .78rem/1 var(--mono);margin:0;color:var(--ink2)}
.d-close{position:absolute;top:.9rem;right:0;width:44px;height:44px;border:2px solid var(--line);border-radius:50%;background:var(--paper);color:var(--ink);font-size:1.1rem;cursor:pointer}
.anatomy{display:grid;grid-template-columns:max-content 1fr;gap:.45rem 1rem;margin:0 0 1rem}
.anatomy dt{font:800 .74rem/1.6 var(--mono);text-transform:uppercase;color:var(--accent)}
.anatomy dd{margin:0}
.twins{border:2px dashed var(--ink2);border-radius:14px;padding:.9rem;margin-bottom:1rem}
.twins h3{margin:0 0 .25rem;font-size:1rem}
.twin-note{margin:0 0 .6rem;font-size:.85rem;color:var(--ink2)}
.twin-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:.6rem}
.twin{margin:0;text-align:center}
.twin-stage{height:84px;display:grid;place-items:center;background:var(--paper);border-radius:10px;overflow:hidden}
.twin figcaption{font:700 .74rem/1.6 var(--mono)}
.replica{display:inline-block;padding:.6rem 1.1rem;border:2.5px solid var(--line);border-radius:999px;background:var(--card);font:800 .85rem/1 var(--sans);box-shadow:3px 3px 0 var(--shadow)}
.d-actions{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:1rem}
.detail h3{font:800 1rem/1.3 var(--sans)}

/* focus mode */
.focus-mode .enclosure{background:var(--paper)}
.focus-mode .specimen{box-shadow:none}
.focus-mode .zone-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr))}
.focus-mode body,.focus-mode .does{font-size:1.06rem}
.focus-mode .sp,.focus-mode .cta,.focus-mode .world,.focus-mode .home-big{box-shadow:none}

@media (max-width:860px){.console{grid-template-columns:1fr}.board{grid-row:auto;grid-column:1}}
@media (forced-colors:active){.sp,.mini,.ctl,.specimen{border-color:ButtonText}.sp[aria-pressed=true]{outline:3px solid Highlight}}
@media print{.topbar,.habitat,.js-only,.toast-zone{display:none!important}.specimen{break-inside:avoid;box-shadow:none}}

.paused *{animation-play-state:paused!important}
