:root{--accent-h:142;--accent-c:.1;--accent:oklch(.62 var(--accent-c) var(--accent-h));--accent-soft:oklch(.94 .04 var(--accent-h));--accent-ink:oklch(.32 .06 var(--accent-h));--bg:oklch(98.5% .003 80);--bg-elev:#fff;--bg-soft:oklch(96.5% .004 80);--bg-hover:oklch(95.5% .005 80);--line:oklch(91% .005 80);--line-strong:oklch(85% .006 80);--ink:oklch(20% .01 60);--ink-2:oklch(40% .008 60);--ink-3:oklch(55% .006 60);--ink-4:oklch(72% .004 60);--pos:oklch(62% .13 152);--pos-soft:oklch(95% .04 152);--neg:oklch(58% .16 28);--neg-soft:oklch(96% .03 28);--warn:oklch(72% .13 75);--warn-soft:oklch(96% .04 75);--radius-sm:6px;--radius:8px;--radius-lg:12px;--radius-xl:16px;--font-ui:"Inter Tight", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--shadow-sm:0 1px 0 #00000008, 0 1px 2px #0000000a;--shadow:0 1px 3px #0000000f, 0 4px 12px #0000000a;--shadow-lg:0 4px 12px #00000014, 0 16px 40px #0000000f;--pad:16px;--row-h:44px;--gap:14px}:root[data-density=compact]{--pad:12px;--row-h:36px;--gap:10px}:root[data-density=cozy]{--pad:16px;--row-h:44px;--gap:14px}:root[data-density=comfy]{--pad:20px;--row-h:52px;--gap:18px}[data-theme=dark]{--bg:oklch(16.5% .006 270);--bg-elev:oklch(20% .007 270);--bg-soft:oklch(19% .006 270);--bg-hover:oklch(22.5% .007 270);--line:oklch(27% .008 270);--line-strong:oklch(34% .009 270);--ink:oklch(96% .005 80);--ink-2:oklch(78% .005 80);--ink-3:oklch(62% .005 80);--ink-4:oklch(46% .005 80);--accent:oklch(.72 var(--accent-c) var(--accent-h));--accent-soft:oklch(.3 .06 var(--accent-h));--accent-ink:oklch(.85 .08 var(--accent-h));--pos:oklch(74% .13 152);--pos-soft:oklch(30% .06 152);--neg:oklch(72% .14 28);--neg-soft:oklch(30% .07 28);--warn:oklch(78% .13 75);--warn-soft:oklch(30% .06 75);--shadow-sm:0 1px 0 #0003;--shadow:0 1px 3px #0006, 0 4px 12px #0000004d;--shadow-lg:0 4px 16px #0006, 0 24px 48px #00000059}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:14px;line-height:1.45}button,input,textarea,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}.app{background:var(--bg);grid-template-columns:240px 1fr;height:100%;display:grid}.sidebar{border-right:1px solid var(--line);background:var(--bg);flex-direction:column;gap:4px;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:6px 8px 18px;display:flex}.brand-mark{background:var(--ink);width:28px;height:28px;color:var(--bg);letter-spacing:-.01em;border-radius:7px;flex-shrink:0;place-items:center;font-size:11px;font-weight:700;display:grid}.brand-name{letter-spacing:-.01em;font-size:14px;font-weight:600}.nav-group{flex-direction:column;gap:1px;display:flex}.nav-group+.nav-group{margin-top:12px}.nav-section-label{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);padding:8px 10px 4px;font-size:10.5px;font-weight:600}.nav-item{color:var(--ink-2);cursor:pointer;text-align:left;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:0;border-radius:6px;align-items:center;gap:10px;width:100%;padding:6px 10px;font-size:13.5px;text-decoration:none;display:flex;position:relative;overflow:hidden}.nav-item .nav-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.nav-item:hover{background:var(--bg-hover);color:var(--ink)}.nav-item.active{background:var(--bg-hover);color:var(--ink);font-weight:500}.nav-item .nav-icon{width:16px;height:16px;color:var(--ink-3);flex-shrink:0;place-items:center;display:grid}.nav-item.active .nav-icon{color:var(--accent)}.nav-item .nav-badge{font-size:11px;font-family:var(--font-mono);color:var(--ink-3);background:var(--bg-hover);border-radius:999px;margin-left:auto;padding:1px 6px}.nav-item.active .nav-badge{background:var(--accent-soft);color:var(--accent-ink)}.sidebar-footer{border-top:1px solid var(--line);align-items:center;gap:10px;margin-top:auto;padding:10px 8px 4px;display:flex}.sidebar-footer .me-name{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;line-height:1.2;overflow:hidden}.sidebar-footer .me-elo{color:var(--ink-3);font-size:11px;font-family:var(--font-mono)}.main{height:100vh;overflow-y:auto}.topbar{border-bottom:1px solid var(--line);background:color-mix(in oklch, var(--bg) 92%, transparent);-webkit-backdrop-filter:saturate(180%)blur(8px);backdrop-filter:saturate(180%)blur(8px);z-index:5;align-items:stretch;height:49px;padding:0;display:flex;position:sticky;top:0}.topbar-inner{align-items:center;gap:12px;width:100%;max-width:1296px;padding:0 28px;display:flex}.topbar h1{letter-spacing:-.005em;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:15px;font-weight:600;overflow:hidden}.topbar .crumb{color:var(--ink-3);font-size:13px}.topbar .spacer{flex:1}.page{max-width:1240px;padding:28px}.page-header{align-items:flex-end;gap:16px;margin-bottom:22px;display:flex}.page-title{letter-spacing:-.018em;margin:0;font-size:24px;font-weight:600}.page-sub{color:var(--ink-3);margin:4px 0 0;font-size:13.5px}.avatar{letter-spacing:-.01em;font-weight:600;font-family:var(--font-ui);-webkit-user-select:none;user-select:none;border-radius:50%;flex-shrink:0;place-items:center;display:inline-grid}.avatar.size-sm{width:22px;height:22px;font-size:11px}.avatar.size-md{width:28px;height:28px;font-size:12px}.avatar.size-lg{width:40px;height:40px;font-size:14px}.avatar.size-xl{width:64px;height:64px;font-size:22px}.avatar-stack{align-items:center;display:inline-flex}.avatar-stack .avatar{box-shadow:0 0 0 2px var(--bg-elev)}.avatar-stack .avatar+.avatar{margin-left:-8px}.btn{border:1px solid var(--line-strong);background:var(--bg-elev);height:32px;color:var(--ink);cursor:pointer;white-space:nowrap;border-radius:7px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:500;text-decoration:none;transition:background .12s,border-color .12s,transform 50ms;display:inline-flex}.btn:hover{background:var(--bg-hover)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--ink);border-color:var(--ink);color:var(--bg)}.btn.primary:hover{opacity:.88}.btn.accent{background:var(--accent);border-color:var(--accent);color:#fff}.btn.accent:hover{filter:brightness(.95)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--bg-hover)}.btn.sm{border-radius:6px;height:26px;padding:0 10px;font-size:12px}.btn.lg{border-radius:8px;height:40px;padding:0 16px;font-size:14px}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--pad)}.card-header{align-items:center;gap:10px;margin-bottom:12px;display:flex}.card-title{letter-spacing:-.005em;margin:0;font-size:13px;font-weight:600}.card-sub{color:var(--ink-3);margin:0;font-size:12px}.tag{background:var(--bg-soft);height:20px;color:var(--ink-2);white-space:nowrap;border:1px solid var(--line);border-radius:999px;align-items:center;gap:4px;padding:0 8px;font-size:11.5px;font-weight:500;display:inline-flex}.tag.mono{font-family:var(--font-mono);letter-spacing:0;font-size:10.5px}.tag.your-turn{background:var(--accent-soft);color:var(--accent-ink);border-color:#0000}.tag.their-turn{background:var(--bg-soft);color:var(--ink-3)}.tag.waiting{background:var(--warn-soft);color:oklch(42% .1 75);border-color:#0000}.tag.win{background:var(--pos-soft);color:oklch(42% .13 152);border-color:#0000}.tag.loss{background:var(--neg-soft);color:oklch(42% .14 28);border-color:#0000}[data-theme=dark] .tag.your-turn{color:oklch(.92 .08 var(--accent-h))}[data-theme=dark] .tag.win{color:oklch(86% .13 152)}[data-theme=dark] .tag.loss{color:oklch(86% .14 28)}[data-theme=dark] .tag.waiting{color:oklch(86% .13 75)}.dot{background:currentColor;border-radius:50%;width:6px;height:6px;display:inline-block}.input{border:1px solid var(--line-strong);background:var(--bg-elev);border-radius:7px;outline:none;width:100%;height:36px;padding:0 12px;font-size:13.5px;transition:border-color .12s,box-shadow .12s}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklch, var(--accent) 18%, transparent)}.input.lg{height:40px;font-size:14px}.input-group{flex-direction:column;gap:6px;display:flex}.input-group label{color:var(--ink-2);font-size:12px;font-weight:500}.row{align-items:center;gap:var(--gap);display:flex}.col{gap:var(--gap);flex-direction:column;display:flex}.spread{justify-content:space-between;align-items:center;gap:var(--gap);display:flex}.divider{background:var(--line);border:0;height:1px;margin:0}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.muted{color:var(--ink-3)}.muted-2{color:var(--ink-4)}.game-tile{border-radius:var(--radius-lg);font-family:var(--font-mono);background:oklch(.96 .04 var(--g-hue));color:oklch(.4 .1 var(--g-hue));border:1px solid oklch(.9 .04 var(--g-hue));flex-shrink:0;place-items:center;font-weight:500;display:grid;position:relative;overflow:hidden}[data-theme=dark] .game-tile{background:oklch(.3 .06 var(--g-hue));color:oklch(.85 .08 var(--g-hue));border-color:oklch(.36 .06 var(--g-hue))}.game-tile .glyph{font-family:var(--font-ui);font-size:1.6em;line-height:1}.game-tile.sm{width:36px;height:36px;font-size:16px}.game-tile.md{width:44px;height:44px;font-size:20px}.game-tile.lg{width:80px;height:80px;font-size:32px}.game-tile.xl{aspect-ratio:16/10;width:100%;font-size:64px}.turn-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-elev);cursor:pointer;color:inherit;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:14px;text-decoration:none;transition:border-color .15s;display:grid}.turn-card:hover{border-color:var(--line-strong)}.turn-card.urgent{border-color:color-mix(in oklch, var(--accent) 50%, var(--line))}.turn-card .who{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.turn-card .meta{color:var(--ink-3);align-items:center;gap:8px;font-size:12px;display:flex}.list{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-elev);overflow:hidden}.list-row{border-top:1px solid var(--line);cursor:pointer;align-items:center;gap:12px;padding:12px 14px;transition:background .1s;display:grid}.list-row:first-child{border-top:0}.list-row:hover{background:var(--bg-hover)}.list-row.head{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);background:var(--bg-soft);cursor:default;padding:8px 14px;font-size:11px;font-weight:600}.list-row.head:hover{background:var(--bg-soft)}.auth{background:var(--bg);place-items:center;min-height:100vh;padding:32px;display:grid;position:relative;overflow:hidden}.auth-form-wrap{z-index:1;place-items:center;width:100%;padding:32px;display:grid;position:relative}.auth-form{flex-direction:column;gap:18px;width:100%;max-width:360px;display:flex}.auth-form h2{letter-spacing:-.018em;margin:0;font-size:22px;font-weight:600}.auth-tabs{background:var(--bg-soft);border:1px solid var(--line);border-radius:8px;gap:2px;padding:3px;display:flex}.auth-tab{height:30px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:1;font-size:13px;font-weight:500;transition:background .12s}.auth-tab.active{background:var(--bg-elev);color:var(--ink);box-shadow:var(--shadow-sm)}.auth-deco{pointer-events:none;opacity:.45;grid-template-rows:repeat(10,1fr);grid-template-columns:repeat(14,1fr);gap:10px;padding:80px;display:grid;position:absolute;inset:0;-webkit-mask-image:radial-gradient(#0000 30%,#000 80%);mask-image:radial-gradient(#0000 30%,#000 80%)}.auth-deco span{background:var(--bg-soft);border:1px solid var(--line);border-radius:6px}.auth-brand{justify-content:center;align-items:center;gap:10px;margin-bottom:4px;display:flex}.spark{width:100%;height:100%;display:block}.spark .line{fill:none;stroke:var(--accent);stroke-width:1.5px;stroke-linejoin:round;stroke-linecap:round}.spark .area{fill:var(--accent);opacity:.1}.spark .axis{stroke:var(--line);stroke-width:1px}@media (width<=860px){.app{grid-template-columns:1fr}.auth-deco{display:none}.sidebar{border-right:0;border-top:1px solid var(--line);background:var(--bg-elev);z-index:10;flex-direction:row;gap:4px;height:auto;padding:8px;position:fixed;inset:auto 0 0;overflow-x:auto}.sidebar .brand,.sidebar .nav-section-label,.sidebar .sidebar-footer{display:none}.nav-group{flex-direction:row;gap:2px}.nav-item{padding:8px 12px}.nav-item .nav-badge{display:none}.main{padding-bottom:60px}.page{padding:20px 16px}.topbar-inner{padding:0 16px}}
