:root{--bg: #f6f7fb;--surface: #ffffff;--surface-2: #eef1f7;--text: #172033;--muted: #5d6880;--border: #d8deea;--accent: #1d4ed8;--accent-text: #ffffff;--accent-soft: #dbe6ff;--good: #15803d;--bad: #c2410c;--warn: #b45309;--danger: #b91c1c;--focus: #f59e0b;--shadow: 0 1px 2px rgb(15 23 42 / .06), 0 4px 16px rgb(15 23 42 / .06);--radius: 12px;--radius-sm: 8px;--table: #24425f;--table-2: #1c3550;--card-face: #fffdf8;--card-red: #c0262d;--card-black: #1b1f2a;--card-back-1: #7c2d12;--card-back-2: #9a3412;--cell: #ffffff;--cell-alt: #eef2fa;--cell-line: #c5cde0;--cell-strong: #3c4a66;--p1: #e0412f;--p2: #f2b705;--p3: #2563eb;--p4: #16a34a;--hl: #fde68a;--tile-correct: #2f9e5b;--tile-present: #d99a1e;--tile-absent: #7a8294;--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0f141d;--surface: #171e2b;--surface-2: #1f2838;--text: #e7ebf3;--muted: #9aa5bb;--border: #2c374b;--accent: #6d97ff;--accent-text: #0b1020;--accent-soft: #1f2d52;--good: #4ade80;--bad: #fb923c;--danger: #f87171;--shadow: 0 1px 2px rgb(0 0 0 / .3), 0 4px 16px rgb(0 0 0 / .25);--table: #18304a;--table-2: #12263b;--card-face: #f4f1ea;--cell: #1d2534;--cell-alt: #232d3f;--cell-line: #364259;--cell-strong: #8796b5;--hl: #5b4a12;color-scheme:dark}}:root[data-theme=dark]{--bg: #0f141d;--surface: #171e2b;--surface-2: #1f2838;--text: #e7ebf3;--muted: #9aa5bb;--border: #2c374b;--accent: #6d97ff;--accent-text: #0b1020;--accent-soft: #1f2d52;--good: #4ade80;--bad: #fb923c;--danger: #f87171;--shadow: 0 1px 2px rgb(0 0 0 / .3), 0 4px 16px rgb(0 0 0 / .25);--table: #18304a;--table-2: #12263b;--card-face: #f4f1ea;--cell: #1d2534;--cell-alt: #232d3f;--cell-line: #364259;--cell-strong: #8796b5;--hl: #5b4a12;color-scheme:dark}:root.colorblind{--p1: #d55e00;--p2: #0072b2;--p3: #cc79a7;--p4: #009e73;--tile-correct: #f5793a;--tile-present: #85c0f9;--good: #0072b2;--bad: #d55e00}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);line-height:1.5;min-height:100vh;display:flex;flex-direction:column}main{flex:1}a{color:var(--accent)}img,svg,canvas{max-width:100%}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.container{width:100%;max-width:1100px;margin:0 auto;padding:0 16px}.muted{color:var(--muted)}.small{font-size:.85rem}[hidden]{display:none!important}.reduce-motion *,.reduce-motion *:before,.reduce-motion *:after{transition-duration:.01ms!important;animation-duration:.01ms!important}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.site-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}.logo{font-weight:800;font-size:1.15rem;color:var(--text);text-decoration:none;display:flex;align-items:center;gap:8px;letter-spacing:-.01em}.logo-mark{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--accent);color:var(--accent-text);font-size:.8rem}.site-nav{display:flex;align-items:center;gap:14px}.site-nav a{color:var(--text);text-decoration:none;font-weight:600;font-size:.95rem}.site-footer{margin-top:48px;padding:24px 16px 40px;border-top:1px solid var(--border);background:var(--surface);text-align:center}.site-footer nav{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 18px;margin-bottom:10px}.site-footer a{color:var(--muted);font-size:.9rem}.btn{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-weight:600;padding:9px 16px;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;transition:background .15s,border-color .15s,transform .05s}.btn:hover{background:var(--surface-2)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn-primary:hover{background:var(--accent);filter:brightness(1.08)}.btn-danger{color:var(--danger);border-color:var(--danger)}.btn-ghost{background:transparent;border-color:transparent}.btn-sm{padding:6px 12px;min-height:36px;font-size:.9rem}.btn.active,.btn[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent)}.icon-btn{appearance:none;background:transparent;border:0;color:var(--text);font-size:1.25rem;width:40px;height:40px;border-radius:50%;cursor:pointer}.icon-btn:hover{background:var(--surface-2)}.select{font:inherit;padding:8px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);min-height:40px}.select-sm{padding:5px 8px;min-height:36px;font-size:.9rem}.input{font:inherit;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);width:100%}dialog.modal{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);padding:0;width:min(440px,calc(100vw - 32px));max-height:calc(100vh - 32px);box-shadow:0 20px 60px #00000059}dialog.modal::backdrop{background:#0a0f198c}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 0}.modal-head h2{margin:0;font-size:1.25rem}.modal-body{padding:10px 18px;overflow:auto}.modal-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:10px 18px 18px}.toast-wrap{position:fixed;left:50%;top:72px;transform:translate(-50%);z-index:1000;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{background:var(--text);color:var(--bg);padding:10px 16px;border-radius:999px;font-weight:600;box-shadow:var(--shadow);transition:opacity .3s,transform .3s}.toast.out{opacity:0;transform:translateY(-8px)}.stat-row{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 4px}.stat{flex:1 1 70px;background:var(--surface-2);border-radius:var(--radius-sm);padding:8px;text-align:center}.stat b{display:block;font-size:1.3rem}.stat span{font-size:.75rem;color:var(--muted)}.badge-new{color:var(--good);font-weight:700;margin:4px 0}.confetti-layer{position:fixed;inset:0;width:100vw;height:100vh;margin:0;padding:0;border:0;background:transparent;pointer-events:none;z-index:2000;overflow:visible}.confetti-layer:popover-open{display:block}dialog.modal-win,dialog.modal-best{overflow:visible}dialog.modal-win[open],dialog.modal-best[open]{animation:win-pop .45s cubic-bezier(.3,1.6,.6,1)}dialog.modal-win{border:0;background:linear-gradient(var(--surface),var(--surface)) padding-box,linear-gradient(135deg,#ff5d73,#ffb020,#2fd0a8,#6c7bff) border-box;border:3px solid transparent}dialog.modal-win .modal-head{flex-direction:column;text-align:center;padding-top:0;position:relative}dialog.modal-win .modal-head:before{content:"🏆";display:grid;place-items:center;width:72px;height:72px;margin:-36px auto 8px;border-radius:50%;font-size:2.2rem;background:linear-gradient(135deg,#ffe08a,#ffb020);box-shadow:0 6px 18px #f59e0b73,inset 0 -4px #0000001f;animation:trophy-bounce .8s .2s cubic-bezier(.3,1.6,.6,1) both}dialog.modal-win .modal-head h2{font-size:1.6rem;letter-spacing:-.01em}dialog.modal-win .modal-x{position:absolute;top:6px;right:6px}dialog.modal-win .modal-body>p:first-child{text-align:center}dialog.modal-win .badge-new,dialog.modal-best .badge-new{display:inline-block;color:#4a2a00;background:linear-gradient(135deg,#ffd166,#f59e0b);padding:2px 10px;border-radius:999px;font-size:.9rem;animation:win-pop .5s .35s cubic-bezier(.3,1.6,.6,1) both}dialog.modal-win .stat{animation:stat-in .4s cubic-bezier(.3,1.4,.6,1) both}dialog.modal-win .stat:nth-child(2){animation-delay:.08s}dialog.modal-win .stat:nth-child(3){animation-delay:.16s}dialog.modal-win .stat:nth-child(4){animation-delay:.24s}dialog.modal-win .stat:nth-child(n+5){animation-delay:.32s}@keyframes win-pop{0%{transform:scale(.85);opacity:0}to{transform:none;opacity:1}}@keyframes trophy-bounce{0%{transform:scale(0) rotate(-20deg)}to{transform:none}}@keyframes stat-in{0%{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}.settings-form{display:grid;gap:12px}.field{display:grid;gap:4px;font-weight:600}.switch-row{display:flex;gap:10px;align-items:flex-start;cursor:pointer}.switch-row input{width:20px;height:20px;margin-top:2px;accent-color:var(--accent);flex:none}hr{border:0;border-top:1px solid var(--border);margin:6px 0}.consent-banner{position:fixed;left:16px;right:16px;bottom:16px;z-index:900;max-width:640px;margin:0 auto;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 10px 40px #00000040;padding:16px 18px}.consent-banner p{margin:0 0 10px}.consent-details{display:grid;gap:10px;margin:8px 0 12px;font-size:.92rem}.consent-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.consent-actions .btn{flex:1 1 auto}.c-card{--h: 355}.c-board{--h: 26}.c-dice{--h: 44}.c-idle{--h: 88}.c-word{--h: 158}.c-quiz{--h: 192}.c-arcade{--h: 222}.c-puzzle{--h: 262}.c-skill{--h: 322}:is(.c-card,.c-board,.c-dice,.c-idle,.c-word,.c-quiz,.c-arcade,.c-puzzle,.c-skill){--cat: hsl(var(--h, 222) 72% 50%);--cat-grad: linear-gradient(135deg, hsl(calc(var(--h, 222) - 12) 92% 64%), hsl(var(--h, 222) 76% 46%));--cat-soft: color-mix(in srgb, var(--cat) 10%, var(--surface));--cat-ink: hsl(var(--h, 222) 70% 36%)}:root[data-theme=dark] :is(.c-card,.c-board,.c-dice,.c-idle,.c-word,.c-quiz,.c-arcade,.c-puzzle,.c-skill){--cat-ink: hsl(var(--h, 222) 80% 72%)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) :is(.c-card,.c-board,.c-dice,.c-idle,.c-word,.c-quiz,.c-arcade,.c-puzzle,.c-skill){--cat-ink: hsl(var(--h, 222) 80% 72%)}}.hero{position:relative;padding:40px 0 16px;text-align:center;isolation:isolate}.hero:before{content:"";position:absolute;inset:0 -40px;z-index:-1;pointer-events:none;opacity:.55;background:radial-gradient(150px 90px at 12% 32%,hsl(355 90% 70% / .35),transparent 70%),radial-gradient(160px 100px at 88% 28%,hsl(262 90% 72% / .35),transparent 70%),radial-gradient(160px 90px at 20% 68%,hsl(44 95% 62% / .35),transparent 70%),radial-gradient(170px 100px at 82% 66%,hsl(158 80% 55% / .3),transparent 70%)}@media (max-width: 640px){.hero:before{inset:0}}.hero h1{font-size:clamp(1.8rem,5vw,2.8rem);margin:0 0 8px;letter-spacing:-.02em}.lead{font-size:1.1rem;color:var(--muted);max-width:640px;margin:0 auto 18px}.search{width:100%;max-width:520px;font:inherit;font-size:1.05rem;padding:12px 18px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.cat-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:16px auto 0;max-width:760px}.cat-chip{font-size:.88rem;font-weight:650;padding:5px 12px;border-radius:999px;text-decoration:none;color:var(--cat-ink);background:var(--cat-soft);border:1px solid color-mix(in srgb,var(--cat) 30%,transparent);transition:transform .12s,background .12s}.cat-chip:hover{transform:translateY(-1px);background:color-mix(in srgb,var(--cat) 18%,var(--surface))}.cat-section{margin-top:28px;scroll-margin-top:64px}.cat-section h2{font-size:1.3rem;margin:0 0 12px;display:flex;align-items:center;gap:10px}.cat-dot{width:12px;height:12px;border-radius:4px;background:var(--cat-grad);transform:rotate(45deg);flex:none}.daily-row h2:before{content:"★";color:#f5a400}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.tile{position:relative;display:flex;align-items:center;gap:12px;padding:12px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);text-decoration:none;color:var(--text);transition:transform .15s cubic-bezier(.3,1.6,.6,1),box-shadow .15s,border-color .15s,background .15s}.tile:hover{transform:translateY(-3px);box-shadow:0 6px 20px color-mix(in srgb,var(--cat, var(--accent)) 22%,transparent);border-color:var(--cat, var(--accent));background:var(--cat-soft, var(--surface))}.tile:active{transform:translateY(-1px) scale(.98)}.tile-icon{flex:none;width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-size:1.5rem;font-weight:800;background:var(--cat-grad, var(--accent-soft));color:#fff;text-shadow:0 1px 2px rgb(0 0 0 / .25);box-shadow:inset 0 -3px #00000024,inset 0 2px #ffffff40;transition:transform .2s cubic-bezier(.3,1.6,.6,1)}.tile:hover .tile-icon{transform:rotate(-6deg) scale(1.06)}.tile-text{display:grid;min-width:0}.tile-text b{font-size:1rem}.tile-text span{font-size:.82rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.tile-badge{position:absolute;top:8px;right:8px;font-size:.68rem;font-weight:800;background:linear-gradient(135deg,#ffd166,#f59e0b);color:#4a2a00;padding:1px 7px;border-radius:999px;box-shadow:0 1px #0000001f}.crumbs{font-size:.85rem;color:var(--muted);padding:12px 0 4px}.crumbs a{color:var(--muted)}.game-shell{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow)}.game-shell:fullscreen{overflow:auto;border-radius:0;padding:16px}.game-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px}.game-head h1{font-size:clamp(1.3rem,3.5vw,1.8rem);margin:0;letter-spacing:-.01em}.game-status{display:flex;flex-wrap:wrap;gap:14px;font-variant-numeric:tabular-nums;min-height:1.5em}.status-item b{font-weight:700}.variants{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0}.variants a{font-size:.85rem;padding:3px 10px;border:1px solid var(--border);border-radius:999px;text-decoration:none;color:var(--muted)}.variants-more{margin:8px 0 0}.variants-more summary{cursor:pointer;font-size:.85rem;color:var(--muted)}.game-toolbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:10px 0}.game-root{position:relative;min-height:320px;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.game-info{margin-top:28px}.prose{max-width:760px}.prose h2{margin-top:1.6em}.prose li{margin:4px 0}.related{margin-top:32px}.ad-slot{margin:32px auto 0;max-width:970px;min-height:0}.ad-slot--dev{min-height:90px;display:grid;place-items:center;border:2px dashed var(--border);border-radius:var(--radius);color:var(--muted);font-size:.85rem}.ad-label{font-size:.7rem;color:var(--muted);text-align:center;margin-bottom:4px}.center-msg{text-align:center;padding:40px 12px;color:var(--muted)}.panel{background:var(--surface-2);border-radius:var(--radius);padding:14px}.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.seg{display:inline-flex;border:1px solid var(--border);border-radius:999px;overflow:hidden}.seg button{appearance:none;border:0;background:transparent;color:var(--text);font:inherit;font-weight:600;padding:6px 12px;cursor:pointer;min-height:36px}.seg button[aria-pressed=true]{background:var(--accent);color:var(--accent-text)}.card-table{position:relative;width:100%;border-radius:var(--radius-sm);background:radial-gradient(ellipse at 50% 30%,var(--table),var(--table-2));touch-action:none;overflow:hidden}.pile-slot{position:absolute;left:0;top:0;width:var(--cw);height:var(--ch);border-radius:calc(var(--cw) * .08);border:2px dashed rgb(255 255 255 / .22);display:grid;place-items:center;color:#ffffff59;font-size:calc(var(--cw) * .35);font-weight:700;cursor:pointer}.pile-slot.hl{border-color:var(--hl);background:#fde68a26}.card{position:absolute;left:0;top:0;width:var(--cw);height:var(--ch);border-radius:calc(var(--cw) * .08);transition:transform .18s ease-out;cursor:pointer;will-change:transform;perspective:600px}.no-anim .card,.card.dragging{transition:none}.card.dragging{filter:drop-shadow(0 8px 12px rgb(0 0 0 / .35))}.card-face,.card-back{position:absolute;inset:0;border-radius:inherit;box-shadow:0 1px 2px #00000059}.card-face{background:var(--card-face);display:none;overflow:hidden;border:1px solid rgb(0 0 0 / .12)}.card.face-up .card-face{display:block}.card.face-up .card-back{display:none}.card-back{border:calc(var(--cw) * .05) solid #fff8ee;background:repeating-linear-gradient(45deg,var(--card-back-1) 0 4px,var(--card-back-2) 4px 8px),var(--card-back-1)}.card-face.red{color:var(--card-red)}.card-face.black{color:var(--card-black)}:root.colorblind .card-face.suit-D{color:#06c}:root.colorblind .card-face.suit-C{color:#2e7d32}.card-corner{position:absolute;display:flex;flex-direction:column;align-items:center;line-height:.95;font-weight:700;font-size:calc(var(--cw) * .24)}.card-corner span:last-child{font-size:.85em}.card-corner.tl{left:5%;top:3%}.card-corner.br{right:5%;bottom:3%;transform:rotate(180deg)}.card-pips{position:absolute;inset:14% 18%}.card-pips span{position:absolute;transform:translate(-50%,-50%);font-size:calc(var(--cw) * .2);line-height:1}.card-pips span.flip{transform:translate(-50%,-50%) rotate(180deg)}.card-ace{position:absolute;inset:0;display:grid;place-items:center;font-size:calc(var(--cw) * .55)}.card-court{position:absolute;inset:18% 20%;border:1px solid currentColor;border-radius:4px;display:grid;place-items:center;align-content:center;font-weight:800;font-size:calc(var(--cw) * .38);line-height:1;opacity:.92;background:linear-gradient(160deg,#00000005,#00000012)}.card-court .court-suit{font-size:.6em}.card.hl .card-face,.card.hl .card-back{box-shadow:0 0 0 3px var(--hl),0 0 14px var(--hl)}.card.selected .card-face{box-shadow:0 0 0 3px var(--accent)}@keyframes shake{0%,to{margin-left:0}25%{margin-left:-5px}75%{margin-left:5px}}.card.shake{animation:shake .25s 2}.card-mid{display:none;position:absolute;inset:0;place-items:center;font-size:calc(var(--cw) * .5);padding-top:12%}@media (max-width: 520px){.card-pips{display:none}.card-mid{display:grid}}.cards-compact .card-corner.tl{flex-direction:row;gap:1px;left:5%;top:2%;font-size:calc(var(--cw) * .35);letter-spacing:-.05em}.cards-compact .card-corner.tl span:last-child{font-size:.82em}.cards-compact .card-corner.br,.cards-compact .card-pips{display:none}.cards-compact .card-mid{display:grid;padding-top:34%;font-size:calc(var(--cw) * .62)}.cards-compact .card-ace{padding-top:22%;font-size:calc(var(--cw) * .62)}.cards-compact .card-court{inset:40% 13% 8%;font-size:calc(var(--cw) * .37);border-radius:2px}.cards-compact .card-back{border-width:calc(var(--cw) * .07)}.card-table .card:focus,.card-table .pile-slot:focus{outline:none}.card-table .card:focus-visible,.card-table .pile-slot:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.grid-board{display:grid;grid-template-columns:repeat(var(--cols),1fr);grid-template-rows:repeat(var(--rows),1fr);gap:2px;width:100%;margin:0 auto;touch-action:manipulation}.grid-board .cell{aspect-ratio:1;display:grid;place-items:center;background:var(--cell);border-radius:4px;font-weight:700;cursor:pointer;position:relative}.board-wrap{display:grid;justify-items:center;gap:10px}.turn-banner{font-weight:700;text-align:center;min-height:1.5em}.disc{border-radius:50%;width:82%;height:82%;box-shadow:inset 0 -3px #0003}.disc.p1{background:var(--p1)}.disc.p2{background:var(--p2)}.arcade-wrap{position:relative;display:grid;place-items:center}.arcade-canvas{display:block;border-radius:var(--radius-sm);background:var(--surface-2);outline:none;touch-action:none}.arcade-overlay{position:absolute;inset:0;display:grid;place-items:center;cursor:pointer}.arcade-msg{background:#0a0f19c7;color:#fff;padding:18px 26px;border-radius:var(--radius);display:grid;gap:6px;text-align:center;max-width:85%}.arcade-msg b{font-size:1.4rem}.die{width:56px;height:56px;border-radius:12px;background:var(--surface);border:2px solid var(--border);display:grid;grid-template:repeat(3,1fr) / repeat(3,1fr);padding:8px;cursor:pointer;box-shadow:var(--shadow)}.die .pip{width:10px;height:10px;border-radius:50%;background:var(--text);place-self:center}.die.held{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-4px)}@keyframes roll{0%{transform:rotate(0)}50%{transform:rotate(180deg) scale(.9)}to{transform:rotate(360deg)}}.die.rolling{animation:roll .35s ease-out}@media (max-width: 600px){.game-shell{padding:8px;margin:0 -8px;border-radius:var(--radius-sm)}.site-nav a{display:none}}.tile:has(.tile-badge) .tile-text{padding-right:36px}.hub-group{margin:28px 0}.hub-group h3{margin:18px 0 6px;font-size:1.05rem}.hub-main{margin:8px 0;padding-left:1.2em}.hub-main li{margin:4px 0}.hub-links{line-height:1.9}.print-related{margin-top:24px}
