:root{--bg:#0e0e10;--bg-elev:#18181b;--bg-elev-2:#1f1f23;--border:#2a2a30;--border-strong:#3a3a42;--text:#efeff1;--text-dim:#adadb8;--text-faint:#6e6e78;--accent:#bf94ff;--accent-hover:#d4b3ff;--accent-soft:#bf94ff1f;--success:#00f5a0;--danger:#eb4747;--warning:#ffca5e}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;margin:0;padding:0;font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.55}a{color:var(--text);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px;transition:text-decoration-color .12s}a:hover{text-decoration-color:var(--accent)}a.btn,a.btn:hover{text-decoration:none}button{cursor:pointer;color:inherit;background:0 0;border:0;font-family:inherit}input,textarea,select{background:var(--bg);border:1px solid var(--border);color:var(--text);outline:none;border-radius:4px;padding:.6rem .75rem;transition:border-color .12s;font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9rem}input:focus,textarea:focus,select:focus{border-color:var(--text-dim)}.container{max-width:1100px;margin:0 auto;padding:1.75rem 1.25rem 5rem}@media (max-width:600px){.container{padding:1.25rem 1rem 4rem}}.nav{position:sticky;z-index:50;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);background:#0e0e10d9;top:0}.nav-inner{display:flex;flex-wrap:wrap;align-items: center;gap:1rem;max-width:1100px;margin:0 auto;padding:.85rem 1.25rem}.brand{color:var(--text);letter-spacing:-.015em;text-decoration:none;white-space:nowrap;font-family:IBM Plex Sans,-apple-system,sans-serif;font-size:1.15rem;font-weight:600}.brand:hover{text-decoration:none}.nav-links{display:flex;flex-wrap:wrap;flex:1;gap:.15rem;min-width:0}.nav-links a{color:var(--text-dim);letter-spacing:-.01em;text-decoration:none;border-radius:4px;padding:.4rem .7rem;font-family:IBM Plex Sans,-apple-system,sans-serif;font-size:.9rem;font-weight:500}.nav-links a:hover{color:var(--text);text-decoration:none}.nav-links a.active{color:var(--text);background:var(--bg-elev)}.nav-user{display:flex;align-items: center;gap:.55rem;min-width:0;font-size:.88rem}.nav-user a:hover,.nav-user .btn-primary{text-decoration:none}.nav-user-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:10rem}.avatar{border:1px solid var(--border);border-radius:50%;flex-shrink:0;width:28px;height:28px}.login-short{display:none}@media (max-width:600px){.nav-inner{gap:.6rem;padding:.7rem 1rem}.nav-links{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;flex:0 0 100%;order:3;width:100%}.nav-links::-webkit-scrollbar{display:none}.nav-links a{flex-shrink:0}.nav-user-name,.login-full{display:none}.login-short{display:inline}.brand{font-size:1rem}}.btn{display:inline-flex;background:var(--bg-elev);color:var(--text);text-transform:uppercase;letter-spacing:.06em;border:1px solid var(--border);text-decoration:none;white-space:nowrap;border-radius:4px;justify-content:center;align-items: center;gap:.4rem;padding:.55rem .95rem;transition:background .12s,border-color .12s,color .12s;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.78rem;font-weight:500}.btn:hover{background:var(--bg-elev-2);border-color:var(--border-strong);text-decoration:none}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--text);border-color:var(--text);color:var(--bg)}.btn-primary:hover{background:var(--text-dim);border-color:var(--text-dim);color:var(--bg)}.btn-danger{color:var(--danger);background:0 0;border-color:#eb474766}.btn-danger:hover{border-color:var(--danger);background:#eb474714}.btn-sm{padding:.35rem .7rem;font-size:.72rem}.btn:disabled{opacity:.4;cursor:not-allowed}h1{letter-spacing:-.025em;margin:0 0 .4rem;font-family:IBM Plex Sans,-apple-system,sans-serif;font-size:clamp(2rem,5vw,2.75rem);font-weight:500;line-height:1.05}h2{letter-spacing:-.015em;margin:2.5rem 0 1rem;font-family:IBM Plex Sans,-apple-system,sans-serif;font-size:1.4rem;font-weight:500}.subtitle{color:var(--text-dim);max-width:60ch;margin:0 0 2.5rem;font-size:1.02rem}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;padding:1.5rem}@media (max-width:600px){.card{padding:1.1rem}}.empty{text-align:center;color:var(--text-dim);padding:4rem 1rem}.empty h2{color:var(--text);margin-top:0}.vote-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}@media (max-width:480px){.vote-grid{grid-template-columns:repeat(2,1fr);gap:.7rem}}.game-card{position:relative;background:var(--bg-elev);border:1px solid var(--border);overflow:hidden;display:flex;cursor:pointer;border-radius:4px;flex-direction:column;transition:border-color .16s,background .16s}.game-card:hover{border-color:var(--border-strong)}.game-card.voted{border-color:var(--accent)}.game-card.voted:before{content:"";position:absolute;border:1px solid var(--accent);pointer-events:none;border-radius:4px;inset:0}.game-card.disabled{cursor:default}.game-card.disabled:hover{border-color:var(--border)}.cover{aspect-ratio:3/4;background:var(--bg-elev-2);position:relative;background-position:50%;background-size:cover}.cover.placeholder:after{content:"";position:absolute;background:repeating-linear-gradient(45deg,#0000 0 12px,#ffffff05 12px 13px);inset:0}.voted-badge,.winner-badge{position:absolute;letter-spacing:.08em;text-transform:uppercase;border-radius:2px;padding:.22rem .5rem;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.62rem;font-weight:600;top:.55rem}.voted-badge{background:var(--accent);color:#1a1024;right:.55rem}.winner-badge{background:var(--warning);color:#1a1004;left:.55rem}.game-info{display:flex;flex-direction:column;gap:.45rem;padding:.85rem .95rem 1rem}.game-name{letter-spacing:-.01em;margin:0;font-family:IBM Plex Sans,-apple-system,sans-serif;font-size:1rem;font-weight:500;line-height:1.25}.vote-bar{background:var(--border);overflow:hidden;height:2px;margin-top:.3rem}.vote-bar-fill{background:var(--accent);height:100%;transition:width .4s}.vote-meta{display:flex;color:var(--text-dim);letter-spacing:.04em;justify-content:space-between;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.72rem}.stat-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.stat-table{border-collapse:separate;border-spacing:0;width:100%;min-width:500px;font-size:.95rem}.stat-table th,.stat-table td{text-align:left;border-bottom:1px solid var(--border);padding:.85rem 1rem}.stat-table th{color:var(--text-dim);text-transform:uppercase;letter-spacing:.1em;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.7rem;font-weight:500}.stat-table tr:last-child td{border-bottom:none}.stat-table .num{text-align:right;font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.88rem}.stat-game{display:flex;align-items: center;gap:.75rem}.stat-cover{object-fit:cover;background:var(--bg-elev-2);border-radius:2px;flex-shrink:0;width:30px;height:42px}.session-row{display:flex;background:var(--bg-elev);border:1px solid var(--border);border-radius:4px;flex-direction:column;gap:.7rem;padding:1.1rem 1.25rem;transition:border-color .12s}.session-row:hover{border-color:var(--border-strong)}.session-row+.session-row{margin-top:.5rem}.session-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem}.session-title{letter-spacing:-.01em;font-family:IBM Plex Sans,-apple-system,sans-serif;font-size:1.1rem;font-weight:500}.session-meta{color:var(--text-dim);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.78rem}.tag{display:inline-block;text-transform:uppercase;letter-spacing:.1em;border-radius:2px;padding:.18rem .5rem;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.66rem;font-weight:500}.tag-active{color:var(--success);background:#00f5a01a}.tag-closed{background:var(--bg);color:var(--text-faint);border:1px solid var(--border)}.admin-grid{display:grid;grid-template-columns:1fr;gap:1.25rem}@media (min-width:900px){.admin-grid{grid-template-columns:1fr 1fr;gap:1.5rem}}.row{display:flex;flex-wrap:wrap;align-items: center;gap:.5rem}.row>input{flex:1;min-width:0}.search-results{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:.6rem;margin-top:.9rem}.search-result{position:relative;cursor:pointer;border:1px solid var(--border);overflow:hidden;border-radius:4px;transition:border-color .12s}.search-result:hover{border-color:var(--border-strong)}.search-result .cover{aspect-ratio:3/4}.search-result .label{padding:.45rem .55rem .55rem;font-size:.78rem;font-weight:500;line-height:1.25}.custom-game{border-top:1px dashed var(--border);margin-top:1.25rem;padding-top:1rem}.custom-game-heading{margin:0 0 .25rem;font-size:.95rem}.custom-game-hint{color:var(--text-dim);margin:0 0 .7rem;font-size:.78rem}.custom-cover-row{display:grid;grid-template-columns:110px 1fr;align-items: start;gap:.8rem}.custom-cover-preview{width:110px}.custom-cover-preview .cover{aspect-ratio:3/4;border:1px solid var(--border);border-radius:4px}.custom-cover-caption{color:var(--text-dim);margin-top:.35rem;font-size:.72rem;line-height:1.2}.custom-cover-pick{min-width:0}.custom-cover-pick>input{width:100%}.added-overlay{position:absolute;display:grid;color:var(--success);letter-spacing:.1em;text-transform:uppercase;pointer-events:none;background:#000000a6;place-items: center;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.74rem;font-weight:500;inset:0}.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.55rem;margin-top:.9rem}.lib-card{border:1px solid var(--border);overflow:hidden;cursor:pointer;position:relative;user-select:none;border-radius:4px;transition:border-color .12s}.lib-card:hover{border-color:var(--border-strong)}.lib-card.selected{border-color:var(--accent)}.lib-card .cover{aspect-ratio:3/4}.lib-card .label{padding:.4rem .5rem .5rem;font-size:.74rem;line-height:1.25}.check{position:absolute;background:var(--accent);color:#1a1024;display:grid;border-radius:999px;place-items: center;width:20px;height:20px;font-size:.72rem;font-weight:700;top:.4rem;right:.4rem}.toast{position:fixed;background:var(--text);color:var(--bg);letter-spacing:.02em;z-index:100;text-align:center;border-radius:4px;max-width:calc(100vw - 2rem);padding:.75rem 1.25rem;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.8rem;bottom:1.25rem;left:50%;transform:translate(-50%);box-shadow:0 10px 40px #0009}.error{color:var(--danger);font-size:.88rem}.live-pulse{display:inline-flex;color:var(--danger);text-transform:uppercase;letter-spacing:.1em;align-items: center;gap:.4rem;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.72rem;font-weight:500}.live-pulse:before{content:"";background:var(--danger);animation:pulse 1.6s ease-in-out infinite;border-radius:50%;width:6px;height:6px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}
