:root{--bg:#f3f5f8;--surface:#fff;--surface-2:#e9edf2;--text:#15202b;--muted:#5b6b7c;--border:#d5dce4;--primary:#1b3a5c;--primary-text:#fff;--accent:#c8102e;--good:#1f8a4c;--good-bg:#e2f5ea;--bad:#c62828;--bad-bg:#fde7e7;--team-a:#1f6feb;--team-a-bg:#e4eefc;--team-b:#d9480f;--team-b-bg:#fde9df;--radius:14px;--shadow:0 1px 2px #0000000f, 0 4px 14px #0000000d;--tap:48px;--nav-h:64px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-text-size-adjust:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:17px;line-height:1.35}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0f1c2b;--surface:#182838;--surface-2:#203446;--text:#eef3f8;--muted:#9fb0c1;--border:#2d4256;--primary:#4f8ed6;--primary-text:#061220;--good:#4fc27a;--good-bg:#16352a;--bad:#ff6b6b;--bad-bg:#3c1d22;--team-a:#6aa6ff;--team-a-bg:#1a3350;--team-b:#ff9b66;--team-b-bg:#4a2a1a;--shadow:0 1px 2px #0006}}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;margin:0}h1,h2,h3{margin:0 0 .4em;line-height:1.2}h1{font-size:1.5rem}h2{font-size:1.2rem}h3{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:1rem;font-weight:600}p{margin:0 0 .75em}a{color:var(--primary)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.app{flex-direction:column;min-height:100dvh;display:flex}.topbar{z-index:10;padding:calc(env(safe-area-inset-top) + 8px) 12px 8px;background:var(--primary);color:var(--primary-text);align-items:center;gap:8px;min-height:56px;display:flex;position:sticky;top:0}.topbar h1{white-space:nowrap;text-overflow:ellipsis;flex:1;margin:0;font-size:1.15rem;overflow:hidden}.topbar .icon-btn{color:inherit}.page{padding:16px 16px calc(var(--nav-h) + 96px + env(safe-area-inset-bottom));flex:1;width:100%;max-width:720px;margin:0 auto}.page.no-nav{padding-bottom:calc(96px + env(safe-area-inset-bottom))}.bottom-nav{z-index:10;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);height:calc(var(--nav-h) + env(safe-area-inset-bottom));justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav a{color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:.8rem;font-weight:600;text-decoration:none;display:flex}.bottom-nav a .ico{font-size:1.4rem;line-height:1}.bottom-nav a.active{color:var(--primary)}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:14px;padding:14px}.card.tappable{cursor:pointer}.card.tappable:active{transform:scale(.99)}.section{margin-bottom:22px}.row{align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.stack>*+*{margin-top:10px}.list{flex-direction:column;gap:10px;display:flex}.empty{color:var(--muted);text-align:center;padding:28px 12px}.error{color:var(--bad);background:var(--bad-bg);border-radius:10px;margin-bottom:12px;padding:10px 12px}.notice{background:var(--surface-2);border-radius:10px;margin-bottom:12px;padding:10px 12px}.truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.btn{min-height:var(--tap);border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:1rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--primary);color:var(--primary-text);border-color:var(--primary)}.btn.danger{background:var(--bad-bg);color:var(--bad);border-color:#0000}.btn.ghost{color:var(--primary);background:0 0;border-color:#0000}.btn.block{width:100%}.btn.big{min-height:60px;font-size:1.15rem}.btn.small{border-radius:10px;min-height:38px;padding:6px 12px;font-size:.9rem}.icon-btn{min-width:var(--tap);min-height:var(--tap);color:var(--text);background:0 0;border:none;border-radius:12px;justify-content:center;align-items:center;font-size:1.3rem;display:inline-flex}.fab-bar{left:0;right:0;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom));z-index:9;pointer-events:none;background:linear-gradient(to top, var(--bg) 60%, transparent);justify-content:center;padding:10px 16px;display:flex;position:fixed}.fab-bar.no-nav{bottom:env(safe-area-inset-bottom)}.fab-bar>*{pointer-events:auto;width:100%;max-width:720px}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips.grid-4{grid-template-columns:repeat(4,1fr);display:grid}.chips.grid-3{grid-template-columns:repeat(3,1fr);display:grid}.chips.grid-2{grid-template-columns:repeat(2,1fr);display:grid}.chip{min-height:var(--tap);border:2px solid var(--border);background:var(--surface);color:var(--text);border-radius:12px;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-weight:600;display:inline-flex}.chip.selected{border-color:var(--primary);background:var(--primary);color:var(--primary-text)}.chip.team-A.selected{border-color:var(--team-a);background:var(--team-a);color:#fff}.chip.team-B.selected{border-color:var(--team-b);background:var(--team-b);color:#fff}.chip.team-A{border-color:var(--team-a)}.chip.team-B{border-color:var(--team-b)}.chip.good.selected{background:var(--good);border-color:var(--good);color:#fff}.chip.bad.selected{background:var(--bad);border-color:var(--bad);color:#fff}.seg{background:var(--surface-2);border-radius:12px;gap:4px;padding:4px;display:flex}.seg button{min-height:44px;color:var(--muted);background:0 0;border:none;border-radius:9px;flex:1;font-weight:600}.seg button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.stepper{align-items:center;gap:10px;display:flex}.stepper button{border:1px solid var(--border);background:var(--surface);border-radius:14px;width:64px;height:60px;font-size:1.6rem;font-weight:700}.stepper input{text-align:center;border:1px solid var(--border);background:var(--surface);-moz-appearance:textfield;border-radius:14px;flex:1;min-width:0;height:60px;font-size:2rem;font-weight:700}.stepper input::-webkit-inner-spin-button{-webkit-appearance:none}.stepper input::-webkit-outer-spin-button{-webkit-appearance:none}.input{width:100%;min-height:var(--tap);border:1px solid var(--border);background:var(--surface);border-radius:12px;padding:10px 12px}label.field{margin-bottom:12px;display:block}label.field>span{color:var(--muted);margin-bottom:4px;font-size:.85rem;font-weight:600;display:block}.avatar{color:#fff;background:var(--muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:1.1rem;font-weight:700;display:inline-flex}.avatar.sm{width:28px;height:28px;font-size:.9rem}.avatar.lg{width:56px;height:56px;font-size:1.7rem}.scoreboard{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;display:grid}.score-card{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);border-top:6px solid var(--border);padding:14px 12px}.score-card.team-A{border-top-color:var(--team-a)}.score-card.team-B{border-top-color:var(--team-b)}.score-card .team-name{margin-bottom:2px;font-size:.95rem;font-weight:700}.score-card .players{color:var(--muted);margin-bottom:6px;font-size:.8rem}.score-card .total{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:2.8rem;font-weight:800;line-height:1}.score-card .total.neg{color:var(--bad)}.score-card.leading .total{color:var(--good)}.progress{background:var(--surface-2);border-radius:999px;height:8px;margin-top:10px;overflow:hidden}.progress>div{border-radius:999px;height:100%;transition:width .4s}.team-A .progress>div{background:var(--team-a)}.team-B .progress>div{background:var(--team-b)}.progress-label{color:var(--muted);margin-top:4px;font-size:.75rem}.dealer-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:12px;margin-bottom:14px;padding:12px 14px;display:flex}.dealer-card .label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.75rem;font-weight:700}.dealer-card .name{font-size:1.25rem;font-weight:700}.banner{border-radius:var(--radius);background:var(--good-bg);color:var(--good);border:1px solid var(--good);margin-bottom:14px;padding:14px}.banner strong{font-size:1.1rem}.banner .btn{margin-top:10px}.hand-table{border-collapse:collapse;background:var(--surface);border-radius:var(--radius);width:100%;box-shadow:var(--shadow);font-size:.9rem;overflow:hidden}.hand-table th,.hand-table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);padding:8px 6px}.hand-table th{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--surface-2);font-size:.72rem}.hand-table tr:last-child td{border-bottom:none}.hand-table tbody tr{cursor:pointer}.hand-table tbody tr:active{background:var(--surface-2)}.hand-table .num{width:26px;color:var(--muted);font-weight:700}.hand-table .score-col{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;width:64px}.hand-table .delta{font-size:.85rem}.hand-table .delta.pos{color:var(--good)}.hand-table .delta.neg{color:var(--bad)}.hand-table .delta.set{color:var(--accent);font-weight:700}.hand-table .running{font-size:1rem;font-weight:700}.hand-table .line{display:block}.hand-table .line.small{color:var(--muted);font-size:.78rem}.hand-table .score-col.team-A{border-left:3px solid var(--team-a)}.hand-table .score-col.team-B{border-left:3px solid var(--team-b)}.badge{vertical-align:middle;border-radius:999px;padding:1px 7px;font-size:.72rem;font-weight:700;display:inline-block}.badge.good{background:var(--good-bg);color:var(--good)}.badge.bad{background:var(--bad-bg);color:var(--bad)}.badge.team-A{background:var(--team-a-bg);color:var(--team-a)}.badge.team-B{background:var(--team-b-bg);color:var(--team-b)}.badge.neutral{background:var(--surface-2);color:var(--muted)}.preview{border-radius:var(--radius);background:var(--surface-2);padding:14px}.preview.good{background:var(--good-bg)}.preview.bad{background:var(--bad-bg)}.preview .headline{margin-bottom:8px;font-size:1.2rem;font-weight:800}.preview .totals{grid-template-columns:1fr 1fr;gap:8px;display:grid}.preview .totals>div{background:var(--surface);border-radius:10px;padding:8px 10px}.preview .totals .n{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:800}.preview .totals .d{color:var(--muted);font-size:.85rem}.seat{background:var(--surface);border-left:5px solid var(--border);border-radius:12px;align-items:center;gap:10px;padding:8px 10px;display:flex}.seat.team-A{border-left-color:var(--team-a)}.seat.team-B{border-left-color:var(--team-b)}.seat .seat-no{width:22px;color:var(--muted);font-weight:700}.seat .arrows{gap:4px;display:flex}.seat .arrows button{border:1px solid var(--border);background:var(--surface-2);border-radius:10px;width:44px;height:44px;font-size:1.1rem}.stats-wrap{-webkit-overflow-scrolling:touch;border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}.stats-table{border-collapse:collapse;background:var(--surface);width:100%;min-width:560px;font-size:.9rem}.stats-table th,.stats-table td{text-align:right;border-bottom:1px solid var(--border);white-space:nowrap;font-variant-numeric:tabular-nums;padding:10px 8px}.stats-table th{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--surface-2);font-size:.72rem}.stats-table th:first-child,.stats-table td:first-child{text-align:left;background:var(--surface);position:sticky;left:0}.stats-table th:first-child{background:var(--surface-2)}.dialog-backdrop{z-index:50;background:#00000080;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.dialog{background:var(--surface);width:100%;max-width:520px;padding:18px 16px calc(18px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0}@media (width>=600px){.dialog-backdrop{align-items:center}.dialog{border-radius:18px}}.dialog h2{margin-bottom:8px}.dialog .actions{gap:10px;margin-top:16px;display:flex}.dialog .actions .btn{flex:1}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatch{border:3px solid #0000;border-radius:50%;width:40px;height:40px}.swatch.selected{border-color:var(--text)}.gate{flex-direction:column;justify-content:center;max-width:480px;min-height:100dvh;margin:0 auto;padding:24px 20px;display:flex}.gate .logo{text-align:center;font-size:3rem}.gate h1{text-align:center;margin-bottom:4px}.gate .sub{text-align:center;color:var(--muted);margin-bottom:24px}.gate .input{text-align:center;letter-spacing:.08em;min-height:58px;font-size:1.3rem}.spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:28px;height:28px;margin:24px auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.trump-dot{vertical-align:-2px;border:2px solid #ffffffb3;border-radius:50%;flex-shrink:0;width:14px;height:14px;display:inline-block;box-shadow:0 0 0 1px #00000040}.trump-dot.lg{width:22px;height:22px}.chip.trump{gap:8px}.chip.trump.selected{color:#fff;border-color:#0000}.trump-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:12px;margin-bottom:14px;padding:12px 14px;display:flex}.trump-card .label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.75rem;font-weight:700}.trump-card .name{font-size:1.25rem;font-weight:700}.trump-card .chips{margin-top:8px}.trump-card .chip{min-height:42px;padding:6px 10px;font-size:.9rem}
