:root{color-scheme:dark;--bg: #0f1720;--card: #17222e;--card2: #1e2b39;--line: #2a3a4c;--text: #e8eef4;--muted: #8ea3b8;--pos: #3fd68a;--neg: #ff6b6b;--accent: #4c8dff;--accent2: #2f6bd6}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:15px/1.4 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}h1{font-size:22px;margin:0 0 4px}h2{font-size:19px;margin:4px 0 12px}h3{font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:20px 0 8px}code{background:var(--card2);padding:1px 5px;border-radius:5px;font-size:12px}.muted{color:var(--muted)}.small{font-size:12px;font-weight:400}.pos{color:var(--pos)}.neg,.error{color:var(--neg)}.center{min-height:100%;display:grid;place-items:center;padding:24px}.app{display:flex;flex-direction:column;height:100vh;height:100dvh}.topbar{flex:0 0 auto;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--bg);border-bottom:1px solid var(--line);padding-top:max(12px,env(safe-area-inset-top))}.brand{font-weight:700}.top-right{display:flex;align-items:center;gap:8px}.icon-btn{background:none;border:1px solid var(--line);color:var(--text);width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:0 0 34px}.icon-btn:active{background:var(--card2)}.spin{animation:spin .8s linear infinite;transform-origin:center}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spin{animation:none}}.who{background:none;border:1px solid var(--line);color:var(--text);padding:5px 10px;border-radius:20px;font-size:12px}.account-menu{position:relative}.menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9}.menu{position:absolute;top:calc(100% + 8px);right:0;z-index:10;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px;width:220px;box-shadow:0 12px 30px -12px #000000b3;display:flex;flex-direction:column;gap:4px}.menu-name{font-weight:700}.menu-email{font-size:12px;color:var(--muted);word-break:break-all}.menu-role{font-size:12px;color:var(--muted);margin-bottom:8px}.menu .btn{width:100%}.role{color:var(--accent);text-transform:capitalize}.content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.pad{padding:16px;max-width:640px;margin:0 auto;width:100%}.head-row{display:flex;justify-content:space-between;align-items:baseline}.tabbar{flex:0 0 auto;z-index:5;display:flex;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.tabbar a{flex:1}.player-pick{display:flex;align-items:center;gap:12px;margin-bottom:14px}.player-pick select{flex:1;background:var(--card);border:1px solid var(--line);color:var(--text);border-radius:12px;padding:12px;font-size:17px;font-weight:600}.tabbar a{display:flex;flex-direction:column;align-items:center;gap:3px;padding:9px 0 11px;text-decoration:none;color:var(--muted);transition:color .15s}.tabbar a svg{width:23px;height:23px}.tabbar a span{font-size:10px;font-weight:500}.tabbar a.active{color:var(--accent)}.tabbar a.active svg{filter:drop-shadow(0 0 6px rgba(76,141,255,.5))}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:12px}.board{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}.board-head,.board-row{display:grid;grid-template-columns:28px 1fr 70px 52px 52px;align-items:center;gap:6px;padding:10px 12px}.board-head{color:var(--muted);font-size:11px;text-transform:uppercase;border-bottom:1px solid var(--line)}.board-row{border-top:1px solid var(--line)}.board-row:first-child{border-top:none}.board-row.tappable{cursor:pointer}.board-row.tappable:active{background:var(--card2)}.rank{color:var(--muted);font-size:13px}.pname{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.detail{display:flex;gap:16px;flex-wrap:wrap;padding:8px 12px 12px;background:var(--card2);font-size:12px;color:var(--muted)}.detail b{color:var(--text)}.game-body .board-row,.round .board-row{grid-template-columns:1fr auto}.board:has(.tag) .board-row{grid-template-columns:1fr auto}.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.field input{background:var(--card);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:10px;font-size:16px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{background:var(--card);border:1px solid var(--line);color:var(--text);border-radius:20px;padding:8px 14px;font-size:14px}.chip.on{background:var(--accent2);border-color:var(--accent);color:#fff}.chip.static{opacity:.8}.round-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.round-head strong{flex:1}.bal{font-size:12px}.bal.ok{color:var(--pos)}.bal.bad{color:var(--neg)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px}.cell{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--muted)}.cell input{background:var(--card2);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:8px;font-size:16px;text-align:center;width:100%}.signwrap{display:flex;gap:4px;align-items:stretch}.signbtn{flex:0 0 34px;border:1px solid var(--line);border-radius:8px;background:var(--card);font-size:20px;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center}.signbtn.pos{color:var(--pos)}.signbtn.neg{color:var(--neg);border-color:var(--neg);background:#ff6b6b1f}.signwrap input{flex:1}.req{color:var(--neg)}.loc-input{width:100%;background:var(--card);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:11px;font-size:16px;margin-top:8px}.legend{display:flex;flex-direction:column;gap:8px;font-size:12px;color:var(--muted);background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:8px}.legend>div{display:flex;gap:8px;align-items:baseline}.legend .tag{flex:0 0 auto}.legend>div>:last-child{flex:1}.addplayer{display:flex;gap:8px;margin-top:10px}.addplayer input{flex:1;background:var(--card);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:10px;font-size:15px}.btn{border:none;border-radius:24px;padding:12px 18px;font-size:15px;font-weight:600}.btn.primary{background:var(--accent);color:#fff;width:100%}.btn.ghost{background:var(--card2);color:var(--text);border:1px solid var(--line)}.btn:disabled{opacity:.6}.actions{margin:20px 0;display:flex;gap:10px}.link{background:none;border:none;color:var(--accent);font-size:13px;padding:4px}.link.danger{color:var(--neg)}.banner{padding:10px 16px;text-align:center;font-size:13px}.banner.error{background:#3a1c1c;color:#ffb3b3}.login-card{text-align:center;max-width:340px;padding:28px}.logo{font-size:44px}.gbtn{display:flex;justify-content:center;margin-top:14px}.setup-list{list-style:none;padding:0;text-align:left;font-size:13px}.setup-list li{padding:6px 0}.setup-list li.done{color:var(--pos)}.oauth-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin-top:10px;min-height:46px;background:#2b2f36;color:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 16px;font-size:15px;font-weight:600}.oauth-btn:first-of-type{margin-top:6px}.oauth-btn:active{background:#22262c}.oauth-btn:disabled{opacity:.6}.oauth-btn svg{flex:0 0 auto}.signing{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:14px;color:var(--muted);font-size:14px}.spinner{width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}.or{display:flex;align-items:center;color:var(--muted);font-size:12px;margin:16px 0 6px}.or:before,.or:after{content:"";flex:1;height:1px;background:var(--line)}.or span{padding:0 10px}.email-signin{display:flex;flex-direction:column;gap:10px;margin-top:8px}.email-signin input{background:var(--card2);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:11px;font-size:16px;text-align:center}.tag{font-size:11px;padding:3px 10px;border-radius:20px;text-transform:capitalize}.tag.admin{background:#3a2c12;color:#ffcf7a}.tag.editor{background:#12303a;color:#7ad4ff}.tag.viewer{background:var(--card2);color:var(--muted)}.cards{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:4px}.stat{margin-bottom:0;padding:12px 14px}.stat-label{font-size:11px;color:var(--muted)}.stat-value{font-size:22px;font-weight:700;margin:4px 0 2px;font-variant-numeric:tabular-nums}.stat-value.pos{color:var(--pos)}.stat-value.neg{color:var(--neg)}.stat-sub{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chart-card{padding:10px 8px 4px}.chart{width:100%;height:auto;display:block}.chart .grid{stroke:var(--line);stroke-width:1;opacity:.5}.chart .zero{stroke:var(--muted);stroke-width:1;opacity:.6}.chart .axis{fill:var(--muted);font-size:8px}.chart .lbl{font-size:8px;font-weight:700}.board-head.lead-head,.board-row.lead-row{grid-template-columns:30px 1fr 70px 32px 52px}.fbar{width:5px;border-radius:2px;display:inline-block}.fbar.pos{background:var(--pos)}.fbar.neg{background:var(--neg)}.form-inline{display:inline-flex;align-items:flex-end;gap:3px}.filter{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}.filter button{background:var(--card);border:1px solid var(--line);color:var(--muted);font-size:12px;font-weight:600;padding:6px 12px;border-radius:16px}.filter button.on{background:var(--accent2);border-color:var(--accent);color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:1000;display:flex;align-items:flex-end;justify-content:center}.dialog-msg{font-size:15px;line-height:1.5;margin:6px 2px 18px;color:var(--text)}.modal{background:var(--bg);border:1px solid var(--line);border-bottom:none;border-radius:18px 18px 0 0;width:100%;max-width:640px;max-height:85vh;overflow-y:auto;padding:20px 16px calc(20px + env(safe-area-inset-bottom))}.modal h3{margin-top:0;color:var(--text)}.seg2{display:flex;background:var(--card);border:1px solid var(--line);border-radius:24px;padding:4px;gap:2px;margin-bottom:14px}.seg2 button{flex:1;background:none;border:none;color:var(--muted);font:inherit;font-weight:600;font-size:13px;padding:9px;border-radius:20px}.seg2 button.on{background:var(--accent);color:#fff}.board-row.two{grid-template-columns:1fr auto;gap:10px}.num.big{font-size:17px}.you{color:var(--accent);font-size:11px}.savebadge{font-size:12px;color:var(--muted)}.today{border-color:var(--accent)}.today-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.today-head strong{font-size:15px}.live{font-size:10px;font-weight:700;letter-spacing:.06em;color:#fff;background:var(--neg);padding:2px 7px;border-radius:20px;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@media(prefers-reduced-motion:reduce){.live{animation:none}}.day{margin-bottom:4px}.today-wrap{margin-bottom:14px}.shareable{display:flex;flex-direction:column;gap:10px}.share-card{background:linear-gradient(160deg,#17222e,#101a24);border:1px solid var(--line);border-radius:16px;padding:16px}.sc-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.sc-logo{width:40px;height:40px;border-radius:50%;flex:0 0 40px;background:radial-gradient(circle at 50% 40%,#17a862,#0a6d3c);color:#fff;font-size:22px;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 3px #ffffff1f inset}.sc-title{font-size:17px;font-weight:700}.sc-sub{font-size:12px;color:var(--muted)}.sc-foot{text-align:center;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:12px}.share-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%}.share-btn svg{width:18px;height:18px}.settle{display:flex;flex-direction:column;gap:8px}.pay{display:grid;grid-template-columns:1fr auto 1fr 64px;gap:10px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.pay .from{color:var(--neg);font-weight:600;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pay .to{color:var(--pos);font-weight:600;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pay .arrow{color:var(--muted)}.pay .amt{background:var(--card2);border-radius:8px;padding:3px 10px;font-weight:700;font-variant-numeric:tabular-nums}.grant{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center}.grant input{background:var(--card);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:10px;font-size:15px}.access-ctrls{display:flex;align-items:center;gap:10px}.grant select,.role-select{background:var(--card2);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:9px;font-size:13px;text-transform:capitalize}.btn.sm{padding:10px 14px;font-size:14px;width:auto}.game-head{width:100%;display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;background:none;border:none;color:var(--text);font-size:14px;padding:2px}.game-head .date{font-weight:600}.game-head .loc{color:var(--muted);text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-head .seq{color:var(--accent)}.game-body{margin-top:8px}.manage{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}.manage-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0}.manage-actions{display:flex;gap:8px}.edit-net{background:var(--card2);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:8px 10px;font-size:16px;text-align:right;width:90px}.account{margin:28px 0 8px;display:flex;flex-direction:column;gap:10px;align-items:center;text-align:center}.account .btn{width:auto;padding:10px 24px}.per-game{margin-top:10px}.per-game summary{font-size:12px;color:var(--accent);cursor:pointer;padding:4px 0}.pg{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}.pg-h{font-size:12px;color:var(--muted);margin-bottom:4px}
