:root{--bg: #0f1320;--panel: #1a2030;--panel2: #232c40;--line: #313c56;--text: #e7ecf5;--muted: #8b97b3;--accent: #5b8cff;--accent2: #38d39f;--warn: #ff6b6b}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{max-width:1000px;margin:0 auto;padding:16px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.topbar h1{font-size:20px;margin:0}button{font:inherit;cursor:pointer;border-radius:10px;border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:10px 14px;transition:transform .05s,border-color .15s,background .15s}button:hover:not(:disabled){border-color:var(--accent)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.primary.big{padding:14px 28px;font-size:16px}.ghost{background:transparent}.lead,.muted{color:var(--muted)}.cards-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:16px 0}.gametype{display:flex;flex-direction:column;gap:6px;align-items:flex-start;text-align:left;padding:16px;background:var(--panel)}.gametype.active{border-color:var(--accent);background:var(--panel2)}.gametype strong{font-size:16px}.gametype .modtag{font-size:11px;color:var(--accent2);text-transform:uppercase;letter-spacing:.05em}.gametype small{color:var(--muted)}.knobs{display:flex;gap:16px;flex-wrap:wrap;margin:16px 0}.knobs label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.knobs input{width:120px;padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--text);font:inherit}.status{display:flex;gap:16px;align-items:center;padding:10px 14px;background:var(--panel);border-radius:10px;margin-bottom:12px}.status .active{color:var(--accent)}.status .roll{color:var(--accent2)}.winner{font-size:18px;font-weight:700;color:var(--accent2)}.scoreboard{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}.player{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px;min-width:110px}.player.active{border-color:var(--accent)}.pname{font-weight:700;font-size:16px;margin-bottom:4px}.res{font-size:13px;color:var(--muted)}.res strong{color:var(--text)}.track{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:14px}.cell{position:relative;width:46px;height:52px;border:1px solid var(--line);border-radius:6px;background:var(--panel);font-size:10px;padding:2px;display:flex;flex-direction:column}.cell.special{border-color:var(--accent2);background:#182a2a}.cell.finish{border-color:var(--accent);background:#1a2240}.cell .idx{color:var(--muted)}.cell .spacename{color:var(--accent2);font-size:8px;line-height:1.1}.cell .pieces{margin-top:auto;display:flex;gap:2px;flex-wrap:wrap}.piece{background:var(--accent);color:#fff;border-radius:50%;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}.controls{display:flex;gap:10px;margin-bottom:14px}.hand-area{margin-bottom:14px}.hand-label{font-size:13px;color:var(--muted);margin-bottom:6px}.hand{display:flex;gap:10px;flex-wrap:wrap}.card{display:flex;flex-direction:column;gap:6px;align-items:flex-start;width:110px;height:150px;background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:12px;padding:12px}.card:hover:not(:disabled){border-color:var(--accent);transform:translateY(-3px)}.cardname{font-weight:700}.cardeff{font-size:11px;color:var(--accent2);margin-top:auto}.error{color:var(--warn);padding:8px 12px;border:1px solid var(--warn);border-radius:8px;margin-bottom:12px}.log{background:var(--panel);border-radius:10px;padding:10px 14px;font-size:12px;color:var(--muted);max-height:200px;overflow:auto}.log-label{text-transform:uppercase;letter-spacing:.05em;font-size:10px;margin-bottom:6px}.logline{padding:1px 0;font-family:ui-monospace,monospace}h2{font-size:15px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:24px 0 10px}.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.template{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px;display:flex;flex-direction:column;align-items:center;gap:8px}.tt-emoji{font-size:34px}.tt-actions{display:flex;gap:8px;margin-top:4px}.tt-actions button{padding:6px 12px}.saves{display:flex;flex-direction:column;gap:8px}.save-row{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px}.builder{display:flex;flex-direction:column;gap:12px}.toolbar{display:flex;align-items:center;gap:8px;position:sticky;top:0;background:var(--bg);padding:8px 0;z-index:5;flex-wrap:wrap}.spacer{flex:1}.title-input{font-size:18px;font-weight:700;background:transparent;border:1px solid transparent;border-radius:8px;color:var(--text);padding:6px 10px}.title-input:hover,.title-input:focus{border-color:var(--line);outline:none}.banner{background:#1c2c44;border:1px solid var(--accent);border-radius:8px;padding:8px 12px;font-size:13px}.cols{display:grid;grid-template-columns:360px 1fr;gap:16px;align-items:start}.col{display:flex;flex-direction:column;gap:12px;min-width:0}.section{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 14px}.section-head{display:flex;justify-content:space-between;align-items:center;font-weight:700;margin-bottom:8px}.subbox{border-left:2px solid var(--line);padding-left:10px;margin:6px 0 6px 4px;display:flex;flex-direction:column;gap:6px}.sub-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted);margin-top:6px}.inline{display:flex;align-items:center;gap:6px;margin:4px 0}.inline.wrap{flex-wrap:wrap}.inline.small,.lbl{font-size:12px;color:var(--muted)}.grow{flex:1;min-width:0}.builder input[type=number]{width:64px}.builder input,.builder select{background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:7px;padding:6px 8px;font:inherit;font-size:13px}.builder input[type=color]{width:34px;height:30px;padding:2px}.builder input.art{width:42px;text-align:center;font-size:18px}.toggle{display:flex;align-items:center;gap:8px;padding:6px 0;cursor:pointer}.chk{display:flex;align-items:center;gap:4px}.tiny{padding:3px 8px;font-size:12px;border-radius:6px}.linklike{background:none;border:none;padding:0;margin:0;font:inherit;color:var(--accent2);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.linklike:hover{filter:brightness(1.2)}.tiny.add{align-self:flex-start;color:var(--accent2)}.card-edit{border:1px solid var(--line);border-left-width:4px;border-radius:10px;padding:10px;margin-bottom:10px;background:var(--panel2)}.space-row{border:1px solid var(--line);border-radius:8px;padding:8px;margin-bottom:8px}.effect{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px 8px;margin:6px 0}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:20}.modal{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px 22px;width:min(520px,92vw)}.modal h3{margin:0}.bars{display:flex;flex-direction:column;gap:8px;margin:14px 0}.bar-row{display:flex;align-items:center;gap:10px}.bar-label{width:48px;font-weight:700}.bar{flex:1;height:16px;background:var(--panel2);border-radius:8px;overflow:hidden}.fill{height:100%;background:var(--accent)}.fill.draw{background:var(--muted)}.bar-pct{width:42px;text-align:right;font-variant-numeric:tabular-nums}.flags{margin:10px 0 0;padding-left:18px;font-size:13px;line-height:1.5}.game-bar{display:flex;align-items:center;gap:12px;margin-bottom:10px}.card-art{font-size:30px}.roll{display:inline-block;animation:pop .3s ease}@keyframes pop{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.25)}to{transform:scale(1);opacity:1}}.piece{transition:all .2s ease}.win-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#080b14c7;display:flex;align-items:center;justify-content:center;z-index:30;animation:fade .3s ease}.win-card{text-align:center;background:var(--panel);border:1px solid var(--accent2);border-radius:16px;padding:32px 48px}.win-emoji{font-size:64px;animation:pop .5s ease}.win-card h2{color:var(--accent2);font-size:26px;text-transform:none;letter-spacing:0;margin:6px 0 18px}@keyframes fade{0%{opacity:0}to{opacity:1}}@media (max-width: 760px){.cols{grid-template-columns:1fr}}.artfield{display:flex;align-items:center;gap:4px}.art-preview{width:34px;height:34px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:18px;overflow:hidden;flex:none;border:1px solid var(--line)}.art-preview img{width:100%;height:100%;object-fit:cover}.upload{cursor:pointer;display:inline-flex;align-items:center}.card-art-img{width:100%;height:70px;object-fit:cover;border-radius:8px}.save-row.highlight{border-color:var(--accent2);background:#16261f}.win-card p{color:var(--muted);margin:0 0 16px}.join-bar{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:8px;flex-wrap:wrap}.join-bar input{width:90px;padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);color:var(--text);font:inherit;letter-spacing:.2em;text-transform:uppercase;text-align:center}.card.cardback{display:flex;align-items:center;justify-content:center;font-size:40px;color:var(--muted);background:repeating-linear-gradient(45deg,#1d2638,#1d2638 8px,#232c40 8px,#232c40 16px)}.tier-bar{display:flex;align-items:center;gap:10px;margin-bottom:12px}.notify-bar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:12px;font-size:13px}.tier{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:4px 12px}.tier.premium{color:#ffd76b;border-color:#ffd76b55}.tier.live{color:#6be29a;border-color:#6be29a55}.tier.warn{color:#ffb86b;border-color:#ffb86b55}.match-pill{font-size:11px;font-weight:600;border-radius:20px;padding:3px 10px;border:1px solid transparent;white-space:nowrap}.match-pill.your-turn{color:#7ee0a6;background:#1c3a2a;border-color:#2f6b4a}.match-pill.waiting{color:#9fb4d6;background:#232c40;border-color:#3a4566}.match-pill.over{color:#c9b8e8;background:#2c2440;border-color:#4a3a6b}.gallery-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.gallery-search{flex:1;min-width:180px}.gallery-toolbar .chk{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);white-space:nowrap}.balance-badge{font-size:11px;font-weight:600;border-radius:20px;padding:3px 9px;border:1px solid transparent;white-space:nowrap}.balance-badge.balanced{color:#7ee0a6;background:#1c3a2a;border-color:#2f6b4a}.balance-badge.swingy,.balance-badge.unstable{color:#f4c66b;background:#3a2f17;border-color:#6b562a}.balance-badge.stalls{color:#9fb4d6;background:#232c40;border-color:#3a4566}.dice-pick .tiny.on{background:var(--accent);border-color:var(--accent);color:#fff}.version-row{border-top:1px solid var(--line);padding-top:8px}.name-input{width:130px;padding:6px 10px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);color:var(--text);font:inherit}.idtag{font-family:ui-monospace,monospace;font-size:11px}.battle{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.side{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.side-head{font-size:13px;color:var(--muted);margin-bottom:6px}.side-head .total{color:var(--accent2);font-weight:700;font-size:16px}.brow{display:flex;align-items:center;gap:8px;border-top:1px solid var(--line);padding:5px 0;min-height:36px}.rowname{width:56px;font-size:10px;color:var(--muted);text-transform:uppercase}.rowcards{display:flex;gap:5px;flex-wrap:wrap}.bcard{position:relative;width:34px;height:30px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;font-size:16px;border:1px solid var(--line)}.bcard .bart-img{width:100%;height:100%;object-fit:cover;border-radius:5px}.bcard .bstr{position:absolute;bottom:-1px;right:1px;font-size:10px;font-weight:700;color:#fff;text-shadow:0 0 3px #000,0 0 3px #000}
