:root{--bg: #fbf7f0;--bg-raised: #ffffff;--ink: #2a2520;--ink-soft: #6b625a;--line: #e7dfd3;--accent: #d9622b;--accent-ink: #ffffff;--accent-soft: #fbe6da;--good: #2f7d4f;--warn: #b7791f;--bad: #b3362b;--radius: 14px;--radius-sm: 8px;--shadow: 0 1px 2px rgba(42, 37, 32, .06), 0 8px 24px rgba(42, 37, 32, .06);--font: "Nunito", "Segoe UI", system-ui, -apple-system, sans-serif;--gutter: 16px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #1d1a17;--bg-raised: #27221e;--ink: #f3ede4;--ink-soft: #b7ada1;--line: #3a332c;--accent: #f08a55;--accent-ink: #1d1a17;--accent-soft: #3d2a20;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px rgba(0, 0, 0, .3)}}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{line-height:1.2;margin:0 0 .5rem}h1{font-size:2rem}h2{font-size:1.4rem}p{margin:0 0 1rem}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}.wrap{max-width:1100px;margin:0 auto;padding:0 var(--gutter)}.muted{color:var(--ink-soft)}.small{font-size:.875rem}.row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}.stack{display:grid;gap:1rem}.header{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.header .wrap{display:flex;align-items:center;gap:1rem;min-height:60px;flex-wrap:wrap;padding-top:6px;padding-bottom:6px}.brand{font-weight:800;font-size:1.25rem;color:var(--ink);letter-spacing:-.01em}.brand:hover{text-decoration:none}.nav{display:flex;gap:.25rem;margin-left:auto;flex-wrap:wrap}.nav a{color:var(--ink-soft);padding:6px 10px;border-radius:999px}.nav a.active,.nav a:hover{color:var(--ink);background:var(--accent-soft);text-decoration:none}.badge{display:inline-block;min-width:1.4em;padding:0 6px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:.75rem;font-weight:700;text-align:center;line-height:1.4em;margin-left:4px}.avatar{width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:inline-grid;place-items:center;font-weight:800;font-size:.8rem}.btn{appearance:none;border:1px solid var(--line);background:var(--bg-raised);color:var(--ink);padding:8px 14px;border-radius:999px;font:inherit;font-weight:700;cursor:pointer;transition:transform .05s ease,background .15s ease}.btn:hover{background:var(--accent-soft)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{filter:brightness(1.05);background:var(--accent)}.btn.danger{color:var(--bad)}.btn.sm{padding:4px 10px;font-size:.875rem}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{border:1px solid var(--line);background:var(--bg-raised);color:var(--ink-soft);padding:4px 12px;border-radius:999px;font:inherit;font-size:.875rem;cursor:pointer}.chip.on{background:var(--accent-soft);color:var(--ink);border-color:var(--accent)}.field{display:grid;gap:4px}.field label{font-size:.875rem;font-weight:700;color:var(--ink-soft)}.field input,.field select,.field textarea{font:inherit;color:var(--ink);background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;width:100%}.field textarea{min-height:120px;resize:vertical}.search{flex:1 1 220px}.card{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card.pad{padding:1.25rem}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}.game-card{display:flex;flex-direction:column;overflow:hidden;color:inherit}.game-card:hover{text-decoration:none;transform:translateY(-2px);transition:transform .12s ease}.game-card.tile{cursor:default;-webkit-user-select:none;user-select:none}.game-card.tile:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.dropzone{display:grid;gap:.5rem;border-style:dashed;border-width:2px}.dropzone.over{border-color:var(--accent);background:var(--accent-soft)}.dropzone p{margin:0}.cover{aspect-ratio:4 / 3;background:linear-gradient(135deg,var(--accent-soft),var(--bg));display:grid;place-items:center;color:var(--accent);font-weight:800;font-size:2rem;overflow:hidden}.cover img{width:100%;height:100%;object-fit:cover;display:block}.cover.lg{aspect-ratio:16 / 9;border-radius:var(--radius)}.game-card .body{padding:.9rem 1rem 1rem;display:grid;gap:.4rem;flex:1}.game-card .title{font-weight:800;font-size:1.05rem}.tags{display:flex;gap:4px;flex-wrap:wrap}.tag{font-size:.75rem;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--ink)}.tag.plain{background:transparent;border:1px solid var(--line);color:var(--ink-soft)}.price{font-weight:800}.game-card .foot{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:.4rem}.note{padding:10px 14px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-raised)}.note.bad{border-color:var(--bad);color:var(--bad)}.note.good{border-color:var(--good);color:var(--good)}.note.warn{border-color:var(--warn);color:var(--warn)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}.table-wrap{overflow-x:auto}.prose h2{font-size:1.2rem;margin-top:1.2rem}.prose p{margin:0 0 .8rem}main{padding:1.5rem 0 3rem}.page-title{display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.hero{padding:1.5rem 0 .5rem}.hero h1{font-size:clamp(1.6rem,4vw,2.4rem)}footer{border-top:1px solid var(--line);padding:1.5rem 0;color:var(--ink-soft);font-size:.875rem}@media(max-width:600px){.nav{width:100%;margin-left:0}h1{font-size:1.6rem}}.app-shell{min-height:100vh;padding:max(16px,env(safe-area-inset-top)) 16px 32px;background:var(--bg)}.app-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;max-width:1100px;margin:0 auto 1rem}.app-top h1{margin:0;font-size:clamp(1.6rem,4vw,2.4rem)}.app-banner,.app-empty{max-width:1100px;margin:0 auto 1rem}.app-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));gap:1.25rem;max-width:1100px;margin:0 auto}.app-tile{display:flex;flex-direction:column;gap:.5rem;padding:0;border:0;border-radius:18px;overflow:hidden;background:var(--bg-raised);color:inherit;font:inherit;text-align:left;cursor:pointer;box-shadow:0 2px 10px #0000001f}.app-tile img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block;background:var(--line)}.app-tile.waiting img{filter:grayscale(.6) opacity(.7)}.app-tile-title{padding:0 .9rem;font-weight:700;font-size:1.15rem}.app-tile-state{padding:0 .9rem .9rem;font-size:.9rem;opacity:.8;display:grid;gap:.35rem}.app-tile.ready .app-tile-title{padding-bottom:.9rem}.app-bar{display:block;height:6px;border-radius:3px;background:var(--line);overflow:hidden}.app-bar>span{display:block;height:100%;background:#2e7d52;transition:width .3s}.app-pairing{max-width:36rem;margin:10vh auto 0;text-align:center;font-size:1.15rem}.app-pairing ol{text-align:left;display:inline-block}.pair-code{font-size:clamp(2.5rem,10vw,4.5rem);font-weight:800;letter-spacing:.12em;margin:1rem 0;font-variant-numeric:tabular-nums}.app-sheet{position:fixed;inset:0;background:#00000073;display:flex;justify-content:flex-end;z-index:10}.app-sheet-body{width:min(32rem,100%);height:100%;overflow-y:auto;background:var(--bg);padding:max(16px,env(safe-area-inset-top)) 16px 32px}.hold{position:relative;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.hold:after{content:"";position:absolute;left:0;bottom:0;height:3px;width:0;background:currentColor}.hold.holding:after{width:100%;transition:width var(--hold-ms, 1.5s) linear}
