:root{--bg-void:#080906;--bg-surface:#12140d;--bg-surface-raised:#1c1f14;--bg-inset:#080906;--border-hairline:#262a1c;--border-strong:#565c3f;--border-accent:#c9d84a;--text-primary:#fff;--text-secondary:#c7cab8;--text-tertiary:#a3a894;--text-disabled:#565c3f;--text-on-accent:#14160a;--accent:#c9d84a;--accent-strong:#e2f05a;--status-standby:#d4a83a;--status-standby-wash:#d4a83a24;--status-alert:#d9503f;--status-alert-wash:#d9503f24;--shadow-md:0 8px 24px #00000073;--font-display:"Oswald", sans-serif;--font-body:"Inter", sans-serif;--font-mono:"JetBrains Mono", monospace;--radius-sm:2px;--radius-md:4px;--radius-lg:6px;--radius-pill:999px}:root[data-theme=light]{--bg-void:#f7f4ea;--bg-surface:#fff;--bg-surface-raised:#eee8d5;--bg-inset:#fbf9f0;--border-hairline:#ddd7c0;--border-strong:#b6ad86;--border-accent:#7c8a2f;--text-primary:#1b1e12;--text-secondary:#4c5138;--text-tertiary:#767c5c;--text-disabled:#a8ab8e;--text-on-accent:#14160a;--accent:#7c8a2f;--accent-strong:#5f6b20;--status-standby:#a97a14;--status-standby-wash:#a97a141f;--status-alert:#b23f2f;--status-alert-wash:#b23f2f1f;--shadow-md:0 8px 24px #1b1e122e}*{box-sizing:border-box}html,body{background:var(--bg-void);font-family:var(--font-body);color:var(--text-primary);-webkit-font-smoothing:antialiased;margin:0}button,input{font:inherit;color:inherit}input::placeholder{color:var(--text-tertiary)}#root{min-height:100dvh}.app-shell{background:var(--bg-void);justify-content:center;min-height:100dvh;display:flex}.app-frame{background:var(--bg-void);border-left:1px solid var(--border-hairline);border-right:1px solid var(--border-hairline);flex-direction:column;width:100%;max-width:480px;min-height:100dvh;display:flex;position:relative}.scroll-area{flex:1;overflow-y:auto}.eyebrow{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--text-tertiary);font-size:11px}.screen-title{font-family:var(--font-display);text-transform:uppercase;color:var(--text-primary);margin-top:2px;font-size:24px}.screen-copy{font-family:var(--font-body);color:var(--text-secondary);margin:8px 0 0;font-size:13px;line-height:1.5}.topbar{padding:calc(env(safe-area-inset-top,0px) + 16px) 20px 12px;border-bottom:1px solid var(--border-hairline);flex-shrink:0}.topbar-title{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.01em;color:var(--text-primary);margin-top:2px;font-size:24px}.topbar-row{justify-content:space-between;align-items:center;gap:10px;margin-top:12px;display:flex}.topbar-switch{all:unset;cursor:pointer;font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary);align-items:center;gap:4px;min-width:0;font-size:11px;display:flex}.topbar-switch:hover{color:var(--accent)}.theme-switch{all:unset;cursor:pointer;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-tertiary);border:1px solid var(--border-hairline);border-radius:var(--radius-pill);flex-shrink:0;align-items:center;gap:6px;padding:6px 10px;font-size:10px;display:flex}.theme-switch:hover{color:var(--accent);border-color:var(--accent)}.page-header-row{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.onboarding{min-height:100dvh;padding:calc(env(safe-area-inset-top,0px) + 32px) 24px 40px;flex-direction:column;display:flex}.onboarding-title{font-family:var(--font-display);text-transform:uppercase;color:var(--text-primary);margin-top:6px;font-size:32px;line-height:1.1}.onboarding-edition{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-top:6px;font-size:11px}.onboarding-copy{font-family:var(--font-body);color:var(--text-secondary);margin:12px 0 28px;font-size:14px;line-height:1.6}.onboarding-subhead{font-family:var(--font-mono);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.1em;margin-bottom:12px;font-size:11px}.welcome{min-height:100dvh;padding:calc(env(safe-area-inset-top,0px) + 32px) 24px 40px;flex-direction:column;display:flex}.welcome-install{margin:8px 0 28px}.install-steps{flex-direction:column;gap:16px;margin:0;padding:0;list-style:none;display:flex}.install-step{align-items:flex-start;gap:12px;display:flex}.install-step-num{background:var(--bg-surface-raised);border:1px solid var(--border-hairline);width:24px;height:24px;color:var(--accent);font-family:var(--font-mono);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;display:flex}.install-step-title{font-family:var(--font-body);color:var(--text-primary);font-size:14px;font-weight:600}.install-step-body{font-family:var(--font-body);color:var(--text-secondary);margin:4px 0 0;font-size:13px;line-height:1.5}.gate{background:var(--bg-surface-raised);border:1px solid var(--border-accent);border-radius:var(--radius-md);margin-top:16px;padding:20px}.gate-actions{gap:8px;display:flex}.gate-actions .btn{letter-spacing:.06em;flex:1;height:48px;font-size:14px;font-weight:700}.gate--denied{text-align:center}.gate-retry{width:100%;height:48px;font-size:13px;font-weight:700}.family-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.family-card{background:var(--bg-surface);border:1px solid var(--border-hairline);border-radius:var(--radius-md);cursor:pointer;text-align:center;flex-direction:column;align-items:center;gap:8px;padding:14px 10px;display:flex}.family-card--active{background:var(--bg-surface-raised);border-color:var(--border-accent)}.family-card-name{font-family:var(--font-body);color:var(--text-primary);font-size:12px}.family-card-name--bold{margin-top:2px;font-size:13px;font-weight:600}.avatar{background:var(--bg-surface-raised);color:var(--text-tertiary);font-family:var(--font-mono);object-fit:cover;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.avatar--56{width:56px;height:56px;font-size:16px}.avatar--64{border:2px solid var(--border-hairline);width:64px;height:64px;font-size:18px}.avatar--64.avatar--ring-active{border-color:var(--accent);color:var(--accent)}.status-tag{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);margin-top:4px;font-size:9px}.status-tag--logged{color:var(--accent)}.vote-header{padding:16px 20px 8px}.vote-header-row{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.progress-pill{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border-radius:var(--radius-pill);border:1px solid var(--border-hairline);color:var(--text-tertiary);padding:3px 10px;font-size:10px}.progress-pill--complete{border-color:var(--accent);color:var(--accent)}.weekend-list{flex-direction:column;gap:14px;padding:8px 20px 16px;display:flex}.weekend-card{background:var(--bg-surface);border:1px solid var(--border-hairline);border-radius:var(--radius-md);padding:16px}.weekend-card-top{align-items:center;gap:12px;margin-bottom:14px;display:flex}.weekend-no{font-family:var(--font-mono);color:var(--text-tertiary);letter-spacing:.1em;font-size:11px}.weekend-tag{font-family:var(--font-mono);color:var(--status-standby);border:1px solid var(--status-standby);border-radius:var(--radius-pill);text-transform:uppercase;letter-spacing:.08em;padding:2px 8px;font-size:10px}.weekend-date-row{align-items:baseline;gap:8px;margin-bottom:14px;display:flex}.weekend-date{font-family:var(--font-display);text-transform:uppercase;color:var(--text-primary);font-size:24px}.weekend-dow{font-family:var(--font-mono);color:var(--text-tertiary);font-size:12px}.rating-grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.rating-pill{font-family:var(--font-mono);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.03em;cursor:pointer;text-align:center;color:var(--text-tertiary);border:1px solid var(--border-hairline);background:0 0;padding:10px 2px;font-size:11px;transition:all .12s ease-out}.rating-pill--sel-1{background:var(--accent);color:var(--text-on-accent);border-color:var(--accent)}.rating-pill--sel-2{background:var(--bg-surface-raised);color:var(--text-primary);border-color:var(--border-strong)}.rating-pill--sel-3{background:var(--status-standby-wash);color:var(--status-standby);border-color:var(--status-standby)}.rating-pill--sel-0{background:var(--status-alert-wash);color:var(--status-alert);border-color:var(--status-alert)}.rating-chip{border-radius:var(--radius-sm);padding:3px 8px;font-size:10px;display:inline-block}.save-bar{padding:12px 20px calc(env(safe-area-inset-bottom,0px) + 12px);background:var(--bg-void);border-top:1px solid var(--border-hairline);flex-shrink:0;position:sticky;bottom:0}.save-button{width:100%;font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;border-radius:var(--radius-md);border:1px solid var(--border-hairline);background:var(--bg-surface-raised);color:var(--text-tertiary);cursor:not-allowed;padding:13px 0;font-size:14px;display:block}.save-button--ready{border-color:var(--accent);background:var(--accent);color:var(--text-on-accent);cursor:pointer}.live-standings{border-top:1px solid var(--border-hairline);padding:20px}.live-standings-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.live-standings-list{flex-direction:column;gap:8px;display:flex}.live-standings-row{background:var(--bg-surface);border:1px solid var(--border-hairline);border-radius:var(--radius-sm);align-items:center;gap:10px;padding:8px 10px;display:flex}.live-standings-rank{font-family:var(--font-display);color:var(--text-tertiary);flex-shrink:0;width:20px;font-size:14px}.live-standings-date{font-family:var(--font-mono);text-transform:uppercase;color:var(--text-primary);flex:1;font-size:12px}.live-standings-score{font-family:var(--font-mono);color:var(--text-tertiary);font-size:11px}.vote-log{border-top:1px solid var(--border-hairline);padding:20px}.vote-log-list{flex-direction:column;gap:10px;margin-top:12px;display:flex}.vote-log-entry{background:var(--bg-surface);border:1px solid var(--border-hairline);border-radius:var(--radius-sm);padding:10px 12px}.vote-log-time{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:6px;font-size:10px;display:block}.vote-log-chips{flex-wrap:wrap;gap:6px;display:flex}.board-empty{border:1px dashed var(--border-hairline);border-radius:var(--radius-md);text-align:center;color:var(--text-tertiary);margin:24px 20px;padding:28px 20px}.board-empty p{font-family:var(--font-body);color:var(--text-secondary);margin:12px 0 0;font-size:14px}.board-list{flex-direction:column;gap:10px;padding:8px 20px 16px;display:flex}.board-row{background:var(--bg-surface);border:1px solid var(--border-hairline);border-radius:var(--radius-md);overflow:hidden}.board-row-btn{all:unset;cursor:pointer;box-sizing:border-box;align-items:center;gap:12px;width:100%;padding:14px 16px;display:flex}.board-rank{font-family:var(--font-display);color:var(--text-tertiary);flex-shrink:0;width:28px;font-size:22px}.board-row-main{text-align:left;flex:1;min-width:0}.board-date{font-family:var(--font-display);text-transform:uppercase;color:var(--text-primary);font-size:18px;display:block}.board-stat-line{font-family:var(--font-mono);color:var(--text-tertiary);margin-top:2px;font-size:11px;line-height:1.4;display:block}.badge{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border-radius:var(--radius-pill);flex-shrink:0;padding:3px 8px;font-size:9px}.badge--leading{border:1px solid var(--accent);color:var(--accent)}.badge--tied{border:1px solid var(--status-standby);color:var(--status-standby)}.chevron{color:var(--text-tertiary);flex-shrink:0;display:flex}.board-breakdown{border-top:1px solid var(--border-hairline);flex-direction:column;gap:8px;padding:12px 16px;display:flex}.board-breakdown-row{justify-content:space-between;align-items:center;display:flex}.board-breakdown-name{font-family:var(--font-body);color:var(--text-secondary);font-size:13px}.sync-status{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:16px;font-size:10px}.sync-status--live{color:var(--accent)}.panel-label{font-family:var(--font-mono);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.1em;margin-bottom:10px;font-size:11px}.hint-copy{font-family:var(--font-body);color:var(--text-tertiary);margin:0;font-size:13px}.responses-list{flex-direction:column;gap:8px;display:flex}.response-row{border:1px solid var(--border-hairline);border-radius:var(--radius-sm);background:var(--bg-surface);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.response-name{font-family:var(--font-body);color:var(--text-primary);font-size:13px}.btn{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;border-radius:var(--radius-md);cursor:pointer;border:1px solid #0000;flex:1;height:36px;padding:0 14px;font-size:12px}.btn-primary{background:var(--accent);color:var(--text-on-accent);border-color:var(--accent)}.btn-secondary{color:var(--text-primary);border-color:var(--border-strong);background:0 0}.tabbar{border-top:1px solid var(--border-hairline);background:var(--bg-surface);padding-bottom:env(safe-area-inset-bottom,0px);flex-shrink:0;display:flex}.tab-btn{all:unset;cursor:pointer;color:var(--text-tertiary);box-sizing:border-box;flex-direction:column;flex:1;align-items:center;gap:4px;padding:10px 4px 12px;display:flex}.tab-btn--active{color:var(--accent)}.tab-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;text-align:center;min-height:2.6em;font-size:9px;line-height:1.3}.toast{background:var(--bg-surface-raised);border:1px solid var(--border-accent);color:var(--text-primary);font-family:var(--font-mono);border-radius:var(--radius-pill);box-shadow:var(--shadow-md);z-index:50;white-space:nowrap;padding:10px 18px;font-size:12px;position:fixed;bottom:90px;left:50%;transform:translate(-50%)}
