/* Hoot & Fox — wireframe stylesheet. Tokens mirror SPEC.md §12.1 / WEB.md §7. */
:root{--hf-bg:#F3EBDD;--hf-board:#FFFBF2;--hf-cell:#EDE3D0;--hf-given:#DFD2B8;--hf-owl:#5B4E8C;--hf-owlDeep:#3F3566;--hf-owlWash:#E6E1F4;--hf-fox:#E0733A;--hf-foxWash:#FBE5D6;--hf-moss:#5F8A5A;--hf-mossWash:#E9EFE2;--hf-acorn:#B58A2F;--hf-error:#C94F4F;--hf-ink:#2B2622;--hf-mute:#7A6F5D;--hf-line:#E4D9C3;--hf-cream:#FFFBF2;
--hf-shadow-card:0 2px 6px rgba(60,40,20,.06),0 10px 24px rgba(60,40,20,.06);--hf-shadow-board:0 2px 6px rgba(60,40,20,.06),0 18px 40px rgba(60,40,20,.10);
--hf-radius-card:20px;--hf-radius-board:22px;--hf-radius-cell:12px;--hf-radius-btn:14px;--hf-maxw:1280px;--hf-prose:720px;
--serif:ui-serif,"New York","Iowan Old Style",Georgia,serif;--sans:ui-rounded,"SF Pro Rounded",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--hf-bg:#1C1A17;--hf-board:#262320;--hf-cell:#322E29;--hf-given:#3B362F;--hf-owl:#8A7CC4;--hf-owlWash:#3A3550;--hf-fox:#F0955F;--hf-foxWash:#4A342A;--hf-moss:#7FAF79;--hf-mossWash:#2E3A2C;--hf-acorn:#D9A64A;--hf-ink:#F1EBE0;--hf-mute:#A99E8B;--hf-line:#3A352F;--hf-shadow-card:none;--hf-shadow-board:none}}
:root[data-theme="dark"]{--hf-bg:#1C1A17;--hf-board:#262320;--hf-cell:#322E29;--hf-given:#3B362F;--hf-owl:#8A7CC4;--hf-owlWash:#3A3550;--hf-fox:#F0955F;--hf-foxWash:#4A342A;--hf-moss:#7FAF79;--hf-mossWash:#2E3A2C;--hf-acorn:#D9A64A;--hf-ink:#F1EBE0;--hf-mute:#A99E8B;--hf-line:#3A352F;--hf-shadow-card:none;--hf-shadow-board:none}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--hf-bg);color:var(--hf-ink);font-family:var(--sans);font-size:17px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
.serif{font-family:var(--serif);font-weight:600;letter-spacing:-.01em}
.wrap{max-width:var(--hf-maxw);margin:0 auto;padding:0 56px}
@media(max-width:900px){.wrap{padding:0 20px}}
.small{font-size:14px;color:var(--hf-mute)}
.crumb{font-size:14px;color:var(--hf-mute);font-weight:700}
.crumb a:hover{color:var(--hf-owl)}
/* header */
.hdr{border-bottom:1px solid var(--hf-line)}
.hdr .wrap{display:flex;align-items:center;justify-content:space-between;height:78px}
.wm{display:flex;align-items:center;gap:10px;font-size:22px}
.wm svg{width:34px;height:34px}
.wm .amp{color:var(--hf-fox)}
.nav{display:flex;gap:28px;font-weight:700;font-size:15px;color:var(--hf-mute)}
.nav a:hover,.nav a[aria-current]{color:var(--hf-owl)}
.burger{display:none;font-size:22px}
@media(max-width:900px){.nav,.hdr .btn{display:none}.burger{display:block}.hdr .wrap{height:64px}.wm{font-size:18px}.wm svg{width:26px;height:26px}}
/* buttons/pills */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:var(--hf-radius-btn);padding:14px 22px;font-weight:800;font-size:16px;white-space:nowrap;border:0;cursor:pointer;font-family:inherit}
.btn.p{background:var(--hf-owl);color:#fff}.btn.g{background:var(--hf-moss);color:#fff}.btn.s{border:2px solid var(--hf-line);color:var(--hf-ink);background:transparent}.btn.w{background:#fff;color:var(--hf-owl)}
.btn.sm{padding:11px 18px;font-size:15px}
.btn:focus-visible,.pill:focus-visible,.cell:focus-visible{outline:2px solid var(--hf-moss);outline-offset:2px}
.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:8px 14px;background:var(--hf-cell);font-weight:800;font-size:14px;border:0;font-family:inherit;color:var(--hf-ink)}
.pill.moss{background:var(--hf-moss);color:#fff}.pill.wash{background:var(--hf-mossWash);color:var(--hf-moss)}.pill.owl{background:var(--hf-owl);color:#fff}
.badge{display:inline-flex;align-items:center;gap:10px;background:#111;color:#fff;border-radius:12px;padding:10px 18px;font-weight:700;font-size:15px;line-height:1.1}
.badge small{display:block;font-size:10px;font-weight:600;opacity:.8}
.badge::before{content:"";display:block;width:22px;height:22px;border-radius:50%;background:#fff;opacity:.9}
/* cards */
.card{background:var(--hf-board);border-radius:var(--hf-radius-card);padding:26px;box-shadow:var(--hf-shadow-card);border:1px solid transparent}
:root[data-theme="dark"] .card{border-color:var(--hf-line)}
.card h3{font-size:24px;margin-top:14px}
.card p{color:var(--hf-mute);margin-top:8px;font-size:16px}
.band{background:linear-gradient(160deg,var(--hf-owl),var(--hf-owlDeep));color:#fff;border-radius:var(--hf-radius-card);padding:44px 48px;display:flex;justify-content:space-between;align-items:center;gap:40px}
.band.bleed{border-radius:0}
.band h2{font-size:40px;line-height:1.05}
.band p{opacity:.85;margin-top:12px;font-size:18px;max-width:520px}
.band svg{width:180px;flex:none}
@media(max-width:900px){.band{flex-direction:column;align-items:flex-start;padding:32px 24px}.band h2{font-size:30px}.band svg{width:110px;align-self:flex-end}}
/* board */
.grid{display:grid;gap:6px;aspect-ratio:1;background:var(--hf-board);padding:12px;border-radius:var(--hf-radius-board);box-shadow:var(--hf-shadow-board);border:1px solid transparent}
.grid[data-n="8"],.grid[data-n="10"],.grid[data-n="12"]{gap:4px;padding:8px}
@media(max-width:560px){
  .board-wrap{margin-inline:-20px}
  .grid[data-n="8"],.grid[data-n="10"],.grid[data-n="12"]{gap:3px;padding:5px}
}
:root[data-theme="dark"] .grid{border-color:var(--hf-line)}
.cell{aspect-ratio:1;border-radius:var(--hf-radius-cell);background:var(--hf-cell);display:flex;align-items:center;justify-content:center;position:relative;border:0;padding:0;cursor:pointer;font-family:inherit}
.grid[data-n="10"] .cell,.grid[data-n="12"] .cell{border-radius:8px}
.cell.g{background:var(--hf-given);cursor:default}.cell.owl{background:var(--hf-owlWash)}.cell.fox{background:var(--hf-foxWash)}
.cell svg{width:66%;height:66%;pointer-events:none}
.cell.note::after{content:"?";color:var(--hf-mute);font-weight:800;font-size:40%}
.cell.glow{box-shadow:0 0 0 3px var(--hf-moss),0 0 18px rgba(95,138,90,.6)}
.cell.err{outline:3px solid var(--hf-error);outline-offset:-3px}
.link{position:absolute;font-size:13px;font-weight:900;background:var(--hf-board);color:var(--hf-mute);border-radius:8px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;z-index:2;border:1.5px solid var(--hf-line);pointer-events:none}
.link.r{right:-13px;top:50%;transform:translateY(-50%)}.link.b{left:50%;bottom:-13px;transform:translateX(-50%)}
.mini{display:grid;gap:4px}
.mini .cell{border-radius:6px}
/* speech / toast / banner */
.speech{background:var(--hf-owlWash);border-radius:16px 16px 16px 4px;padding:14px 16px;font-size:16px;line-height:1.4}
.toast{background:var(--hf-fox);color:#fff;border-radius:16px;padding:12px 16px 12px 14px;font-weight:700;display:flex;gap:12px;align-items:center;box-shadow:0 10px 24px rgba(224,115,58,.35);width:fit-content}
.toast svg{width:34px;height:34px;flex:none}
.toast .who{font-size:11px;opacity:.85;font-weight:600}
.appbar{background:var(--hf-owlDeep);color:#fff;padding:12px 16px;display:flex;align-items:center;gap:12px;font-size:14px;font-weight:700}
.appbar svg{width:30px;height:30px;flex:none}
.appbar .btn{padding:8px 12px;font-size:13px;border-radius:10px}
.appbar span{flex:1}
/* layouts */
.hero{display:grid;grid-template-columns:1.05fr 1fr;gap:60px;padding:72px 0 56px;align-items:center}
.hero h1{font-size:64px;line-height:1.02;letter-spacing:-.015em}
.hero p{font-size:20px;color:var(--hf-mute);margin-top:22px;max-width:520px}
.cta{display:flex;gap:14px;margin-top:34px;align-items:center;flex-wrap:wrap}
.stage{position:relative}
.stage .pip{position:absolute;left:-70px;bottom:-30px;width:150px;transform:rotate(-8deg)}
.stage .rue{position:absolute;right:-60px;top:-40px;width:140px;transform:rotate(8deg)}
@media(max-width:900px){.hero{grid-template-columns:1fr;gap:36px;padding:36px 0 32px}.hero h1{font-size:40px}.hero p{font-size:17px}.stage{padding:30px 30px 0}.stage .pip{left:-6px;width:90px;bottom:-10px}.stage .rue{right:-6px;width:84px;top:-6px}}
.feat{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;padding:24px 0 72px}
@media(max-width:900px){.feat{grid-template-columns:1fr;padding:8px 0 48px}}
.section{padding:56px 0}
.section h2{font-size:40px;line-height:1.05}
@media(max-width:900px){.section{padding:36px 0}.section h2{font-size:30px}}
.play{display:grid;grid-template-columns:minmax(0,560px) 1fr;gap:48px;padding:40px 0 64px;align-items:start}
.panel{position:sticky;top:24px}
.panel h2{font-size:30px}
.controls{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:14px;flex-wrap:wrap}
@media(max-width:900px){.play{grid-template-columns:1fr;gap:18px;padding:16px 0 40px}.panel{position:static}}
.article{max-width:var(--hf-prose);margin:0 auto;padding:56px 24px}
.article h1{font-size:48px;line-height:1.05}
.article .lede{font-size:21px;color:var(--hf-mute);margin-top:16px}
.article p{font-size:19px;line-height:1.6;margin-top:20px}
.article h2{font-size:30px;margin-top:44px}
.article ol,.article ul{font-size:19px;line-height:1.6;margin:16px 0 0 24px}
.article li{margin-top:8px}
.article .meta{font-size:14px;color:var(--hf-mute);margin-top:14px}
@media(max-width:900px){.article{padding:32px 20px}.article h1{font-size:34px}.article p,.article li{font-size:17px}}
.example{display:flex;gap:24px;align-items:center;padding:22px;margin-top:28px}
@media(max-width:900px){.example{flex-direction:column;align-items:stretch}}
.prevnext{display:flex;justify-content:space-between;gap:16px;margin-top:44px;padding-top:24px;border-top:1px solid var(--hf-line)}
.prevnext a{max-width:48%}
.hub{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:32px}
@media(max-width:900px){.hub{grid-template-columns:1fr}}
.faq details{border-top:1px solid var(--hf-line);padding:18px 0}
.faq summary{font-weight:800;font-size:18px;cursor:pointer;list-style:none;display:flex;justify-content:space-between}
.faq summary::after{content:"+";color:var(--hf-mute)}
.faq details[open] summary::after{content:"−"}
.faq details p{margin-top:10px;color:var(--hf-mute)}
.result{background:var(--hf-board);border-radius:var(--hf-radius-card);padding:26px;text-align:center;box-shadow:var(--hf-shadow-card)}
.stats{display:flex;justify-content:center;gap:12px;margin-top:20px}
.stat{background:var(--hf-cell);border-radius:14px;padding:12px 8px;width:100px}
.stat b{display:block;font-size:24px;font-family:var(--serif)}
.shots{display:flex;gap:16px;overflow-x:auto;padding:8px 0 16px;scroll-snap-type:x mandatory}
.shots img,.shots .ph{flex:none;width:220px;aspect-ratio:9/19.5;border-radius:26px;background:var(--hf-cell);scroll-snap-align:start;border:6px solid #1e1b19}
.tablewrap{overflow-x:auto;margin-top:24px;border-radius:14px;border:1px solid var(--hf-line)}
.tablewrap table{width:100%;border-collapse:collapse;font-size:16px}
.tablewrap th,.tablewrap td{padding:12px 16px;text-align:left;white-space:nowrap}
.tablewrap thead th{background:var(--hf-cell);font-family:var(--serif);font-weight:600}
.tablewrap tbody tr:not(:last-child) td{border-bottom:1px solid var(--hf-line)}
.tablewrap tbody td:first-child{font-weight:700}
.legal h2{font-size:24px;margin-top:36px}
.legal p,.legal li{font-size:17px;color:var(--hf-ink)}
.notice{background:var(--hf-mossWash);color:var(--hf-moss);border-radius:12px;padding:12px 16px;font-weight:700;font-size:14px}
/* footer */
.ftr{border-top:1px solid var(--hf-line);margin-top:56px}
.ftr .wrap{display:flex;justify-content:space-between;padding-top:28px;padding-bottom:28px;color:var(--hf-mute);font-size:14px;flex-wrap:wrap;gap:12px}
.ftr a:hover{color:var(--hf-owl)}
.ftr .links{display:flex;gap:16px;flex-wrap:wrap}
/* wireframe annotation */
.wf{position:fixed;left:12px;bottom:12px;background:#1e1b19;color:#fff;font:12px/1.3 monospace;padding:8px 10px;border-radius:8px;opacity:.85;z-index:99;max-width:320px}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* ---- live game additions ---- */
.cell{transition:transform .18s cubic-bezier(.2,.9,.3,1.2),background .15s}
.cell.pop{animation:pop .18s cubic-bezier(.2,.9,.3,1.2)}
@keyframes pop{from{transform:scale(.85)}to{transform:scale(1)}}
.cell.shake{animation:shake .2s}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.cell.target{box-shadow:0 0 0 3px var(--hf-owl),0 0 18px rgba(91,78,140,.5)}
.grid.dim .cell:not(.glow):not(.target){opacity:.55}
.toast-wrap{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:50;pointer-events:none}
.toast-wrap .toast{opacity:0;transform:translateY(12px);transition:opacity .2s,transform .2s}
.toast-wrap .toast.show{opacity:1;transform:translateY(0)}
.leaf{position:fixed;top:-20px;width:14px;height:14px;background:var(--hf-moss);border-radius:70% 0 70% 0;animation:fall .9s ease-in forwards;pointer-events:none;z-index:40}
@keyframes fall{to{transform:translateY(110vh) rotate(540deg);opacity:.2}}
.result{display:none}.result.show{display:block}
.kbd{display:inline-block;border:1px solid var(--hf-line);border-radius:6px;padding:0 6px;font-family:ui-monospace,monospace;font-size:13px;background:var(--hf-board)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.placeholder{aspect-ratio:1;border-radius:var(--hf-radius-board);background:var(--hf-board);display:flex;align-items:center;justify-content:center;color:var(--hf-mute);font-weight:700}
.placeholder[hidden]{display:none}
.mini.ok{outline:3px solid var(--hf-moss);outline-offset:4px;border-radius:8px}
.wf{display:none}
.mnav{display:flex;flex-direction:column;gap:14px;padding:16px 20px 20px;border-top:1px solid var(--hf-line);font-weight:700}
.mnav[hidden]{display:none}
