:root{--ground: #FFFFFF;--surface: #F6F8F6;--ink: #191C1A;--muted: #5B625E;--rule: #E2E6E3;--rule-strong: #C8CECA;--accent: #26890D;--accent-mark: #86BC25;--accent-ink-on: #FFFFFF;--accent-soft: #EAF4E6;--ok: #1D7A34;--ok-soft: #E7F4EA;--warn: #B54708;--warn-soft: #FDF1E4;--crit: #B42318;--crit-soft: #FDEBE9;--info: #175CD3;--info-soft: #EAF1FD;--viz-1: #26890D;--viz-2: #175CD3;--viz-3: #6B7A74;--viz-4: #A8B5AF;--radius: 2px;--font: "Segoe UI", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif}@media (prefers-color-scheme: dark){:root{--ground: #121513;--surface: #1A1E1B;--ink: #E9EDEA;--muted: #98A29C;--rule: #272C29;--rule-strong: #38403B;--accent: #5DBA3C;--accent-mark: #86BC25;--accent-ink-on: #0C0F0D;--accent-soft: #1D2A18;--ok: #4CAF66;--ok-soft: #16241A;--warn: #E08A3C;--warn-soft: #2A2015;--crit: #E5604F;--crit-soft: #2A1815;--info: #6AA1F2;--info-soft: #172336;--viz-1: #5DBA3C;--viz-2: #6AA1F2;--viz-3: #8B968F;--viz-4: #4A524D}}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100vh;background:var(--ground);color:var(--ink);font-family:var(--font);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-family:var(--font);font-weight:650;color:var(--ink);letter-spacing:-.01em}p{margin:0}code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em;background:var(--surface);color:var(--ink);padding:1px 5px;border-radius:var(--radius)}a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--rule-strong)}a:hover{text-decoration-color:var(--ink)}hr{border:none;border-top:1px solid var(--rule);margin:0}:focus{outline:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.page-header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.page-title{font-size:28px;font-weight:650;letter-spacing:-.01em;color:var(--ink)}.title-period,.brand-period{color:var(--accent-mark)}.section-label{display:block;font-size:11.5px;font-weight:650;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.kpi-value{font-size:30px;font-weight:650;color:var(--ink);line-height:1}.eyebrow{font-size:12.5px;color:var(--muted)}.card{background:var(--ground);border:1px solid var(--rule);border-radius:var(--radius)}.module-card{padding:20px 22px}.module-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.module-head h2{margin:0;font-size:18px}.module-blurb{color:var(--muted);line-height:1.6;margin:12px 0 6px;font-size:14px}.module-meta{color:var(--muted);font-size:12.5px;line-height:1.6;margin:0}.module-stack{display:flex;flex-direction:column;gap:16px}.chip{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:650;letter-spacing:.05em;text-transform:uppercase;padding:3px 8px;border-radius:var(--radius);background:var(--surface);color:var(--muted);border:1px solid var(--rule)}.chip--ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}.chip--warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}.chip--crit{background:var(--crit-soft);color:var(--crit);border-color:transparent}.chip--info{background:var(--info-soft);color:var(--info);border-color:transparent}.btn{display:inline-flex;align-items:center;gap:8px;font:650 12.5px var(--font);padding:8px 14px;border-radius:var(--radius);border:1px solid var(--rule-strong);background:var(--ground);color:var(--ink);cursor:pointer;text-decoration:none}.btn:hover{background:var(--surface)}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink-on)}.btn--primary:hover{filter:brightness(.94)}.btn--ghost{background:transparent}.btn--secondary{background:var(--ground);border-color:var(--rule-strong);color:var(--ink)}.btn--secondary:hover{background:var(--surface)}.btn--danger{background:var(--ground);border-color:var(--crit);color:var(--crit)}.btn--danger:hover{background:var(--crit-soft)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:disabled:hover{background:var(--ground);filter:none}.config-screen{min-height:100vh;display:grid;place-items:center;padding:24px}.config-screen .card{max-width:560px;padding:28px}.config-screen p{color:var(--muted);line-height:1.6}.gate{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;padding:24px}.gate-brand{text-align:center}.gate-tag{color:var(--muted);font-size:13px;margin:8px 0 0}.brand--lg{font-size:28px}.brand{font-weight:650;color:var(--ink);white-space:nowrap}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;height:56px;flex-shrink:0;padding:0 20px;background:var(--ground);border-bottom:1px solid var(--rule)}.header-user{display:flex;align-items:center;gap:12px}.header-email{font-size:12.5px;color:var(--muted)}.shell-body{flex:1;display:flex;min-height:0}.rail{width:208px;flex-shrink:0;padding:12px 0;background:var(--ground);border-right:1px solid var(--rule)}.rail-nav{display:flex;flex-direction:column;gap:2px}.rail-link{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:10px 18px;border:none;border-left:2px solid transparent;background:transparent;color:var(--muted);font:650 13px var(--font);cursor:pointer}.rail-link:hover{background:var(--surface);color:var(--ink)}.rail-link--active{background:var(--surface);color:var(--ink);border-left-color:var(--accent)}.rail-link-phase{margin-left:auto;font-size:10px;font-weight:650;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.shell-main{flex:1;min-width:0;padding:24px 28px 40px;overflow-y:auto}.shell-main-inner{max-width:1120px;margin:0 auto;display:flex;flex-direction:column;gap:18px}.shell-footer{text-align:center;padding:10px;color:var(--muted);font-size:11px;border-top:1px solid var(--rule)}.placeholder-card{padding:44px 28px;text-align:center;color:var(--muted)}.placeholder-card .section-label{margin-bottom:10px}.placeholder-card p{margin-top:10px;font-size:13.5px;line-height:1.6}.smoke{border-radius:var(--radius);padding:12px 14px;font-size:13.5px;line-height:1.55;border:1px solid var(--rule)}.smoke--checking{background:var(--surface);color:var(--muted)}.smoke--pass{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}.smoke--fail{background:var(--crit-soft);border-color:var(--crit);color:var(--crit)}.smoke-detail{margin:6px 0 0;font-size:12.5px;color:var(--muted)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1px;margin-top:12px;background:var(--rule);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}.stat{background:var(--ground);padding:12px 14px;display:flex;flex-direction:column;gap:4px}.stat-label{font-size:10.5px;font-weight:650;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}.stat-value{font-size:22px;font-weight:650;color:var(--ink)}.stat-value--accent{color:var(--info)}.stat-hint{font-size:11px;color:var(--muted)}.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}.kpi-card{background:var(--ground);padding:14px 16px;display:flex;flex-direction:column;gap:6px}.kpi-card-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.kpi-hint{font-size:11px;color:var(--muted)}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;font-size:10.5px;font-weight:650;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:6px 10px;border-bottom:1px solid var(--rule-strong);white-space:nowrap}.table td{padding:8px 10px;border-bottom:1px solid var(--rule);color:var(--ink);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table td.num,.table th.num{text-align:right}.table-empty{padding:14px 10px;color:var(--muted);font-size:13px}.table-scroll{overflow-x:auto}.chip-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.donut-row{display:flex;flex-wrap:wrap;gap:20px;margin-top:10px}.donut-block{flex:1;min-width:220px}.donut-block--wide{flex:2;min-width:260px}.donut-block .section-label{margin-bottom:10px}.donut-wrap{display:flex;align-items:center;gap:18px}.donut-total{font-size:20px;font-weight:650;color:var(--ink)}.donut-total-label{font-size:9.5px;font-weight:650;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.donut-legend{display:flex;flex-direction:column;gap:7px;font-size:12.5px;flex:1;min-width:0}.donut-legend-item{display:flex;align-items:center;gap:8px}.donut-swatch{width:10px;height:10px;border-radius:var(--radius);flex-shrink:0}.donut-legend-label{flex:1;min-width:0;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.donut-legend-value{color:var(--muted);font-size:12px}.sparkline-block{display:flex;align-items:center;gap:10px}.sparkline-svg{display:block;flex-shrink:0}.checklist-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px;margin-top:10px}.checklist-item{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px;padding:8px 10px;border-radius:var(--radius);background:var(--surface);color:var(--ink)}.checklist-label{flex:1;min-width:0}.diagnostic{border-radius:var(--radius);padding:14px 16px;border:1px solid var(--crit);background:var(--crit-soft);color:var(--crit);font-size:13.5px;line-height:1.55}.diagnostic strong{color:var(--crit)}.modqueue{display:flex;flex-direction:column;gap:10px}.modqueue-empty{text-align:center;color:var(--muted);padding:32px 20px}.modcard{padding:16px 18px;display:flex;flex-direction:column;gap:12px}.modcard-row{display:flex;align-items:center;gap:14px}.modcard-thumb{width:88px;height:88px;flex-shrink:0;object-fit:cover;border-radius:var(--radius);border:1px solid var(--rule);background:var(--surface)}.modcard-thumb--empty{display:block}.modcard-body{min-width:0;display:flex;flex-direction:column;gap:4px}.modcard-venue{font-weight:650;color:var(--ink);font-size:14.5px}.modcard-meta{font-size:12px;color:var(--muted);word-break:break-word}.modcard-actions{display:flex;gap:8px;flex-wrap:wrap}.modcard-status{margin:0;font-size:12.5px}.modcard-status--ok{color:var(--ok)}.modcard-status--fail{color:var(--crit)}
