body{color:#1a1a1a;background:#fafafa;margin:0}html{overflow-x:hidden}*{box-sizing:border-box}.page{--page-plane:#f4f4f2;--surface-1:#fcfcfb;--text-primary:#0b0b0b;--text-secondary:#52514e;--text-muted:#898781;--border:#0b0b0b1a;--gridline:#e1e0d9;--accent:#2a78d6;--accent-ink:#fff;--good:#006300;--bad:#cf222e;--warn:#9a6700;--shadow:0 1px 2px #0b0b0b0a, 0 4px 12px #0b0b0b0d;background:var(--page-plane);width:100%;min-height:100vh;color:var(--text-primary);font-family:system-ui,-apple-system,Segoe UI,sans-serif;overflow-x:hidden}.container{width:100%;max-width:1040px;margin:0 auto;padding:1.75rem 1.25rem 3rem}.app-header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.75rem;display:flex}h1{letter-spacing:-.01em;margin:0;font-size:1.6rem;font-weight:700}.header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.75rem;display:flex}.admin-login-wrap{height:40px;position:relative}.admin-login-visual{border:1px solid var(--border);background:var(--surface-1);height:100%;color:var(--text-secondary);box-shadow:var(--shadow);border-radius:8px;justify-content:center;align-items:center;gap:.5rem;font-size:.85rem;font-weight:500;display:flex}.admin-login-real{opacity:0;position:absolute;inset:0;overflow:hidden}.auth-user{color:var(--text-secondary);align-items:center;gap:.5rem;font-size:.85rem;display:flex}.auth-avatar{border-radius:50%;width:26px;height:26px}.auth-name{white-space:nowrap}.auth-signout{border:1px solid var(--border);background:var(--surface-1);color:var(--text-secondary);cursor:pointer;border-radius:8px;padding:.3rem .7rem;font-size:.8rem}.auth-signout:hover{background:#0b0b0b08}.modal-overlay{z-index:10;background:#0b0b0b73;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--surface-1);box-shadow:var(--shadow);text-align:center;border-radius:16px;width:100%;max-width:320px;padding:1.75rem 1.75rem 1.5rem}.modal-icon{margin-bottom:.5rem;font-size:1.8rem}.modal h3{margin:0 0 .6rem;font-size:1.1rem}.modal p{color:var(--text-secondary);margin:0 0 .5rem;font-size:.9rem}.modal-countdown{font-variant-numeric:tabular-nums;color:var(--text-muted)}.modal-button{border:1px solid var(--border);background:var(--page-plane);color:var(--text-primary);cursor:pointer;border-radius:8px;margin-top:.75rem;padding:.5rem 1.1rem;font-size:.85rem}.modal-button:hover{background:var(--gridline)}h2{margin:0 0 .9rem;font-size:1rem;font-weight:600}.card{background:var(--surface-1);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:14px;margin-bottom:1.25rem;padding:1.25rem 1.4rem 1.4rem}.empty-state{text-align:center;padding:3rem 1rem}.upload-button{background:var(--accent);color:var(--accent-ink);cursor:pointer;box-shadow:var(--shadow);border-radius:10px;flex-shrink:0;align-items:center;padding:.65rem 1.3rem;font-size:.9rem;font-weight:600;transition:filter .15s;display:inline-flex}.upload-button:hover{filter:brightness(1.06)}.upload-button input{display:none}.results{flex-direction:column;gap:.2rem;margin:0 0 1.25rem;padding:0;font-size:.85rem;list-style:none;display:flex}.result-imported{color:var(--good)}.result-duplicate{color:var(--warn)}.result-error{color:var(--bad)}.error{color:var(--bad);margin:0 0 1rem}.empty{color:var(--text-muted);margin:0}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-bottom:1.25rem;display:grid}.stat-tile{background:var(--surface-1);border:1px solid var(--border);box-shadow:var(--shadow);text-align:center;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;min-height:108px;padding:1.1rem 1.25rem;display:flex}.stat-tile.featured .stat-value{font-size:2.6rem}.stat-label{text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);margin-bottom:.4rem;font-size:.75rem;font-weight:600}.stat-value{letter-spacing:-.01em;font-size:1.9rem;font-weight:700;line-height:1.1}.stat-sub{color:var(--text-secondary);margin-top:.3rem;font-size:.82rem}.stat-sub.good{color:var(--good)}.stat-sub.bad{color:var(--bad)}.chart-grid{grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));align-items:start;gap:1.25rem;margin-bottom:1.25rem;display:grid}.chart-grid .card{margin-bottom:0}.chart-wrap{position:relative}.chart{background:var(--surface-1);width:100%;height:auto;display:block}.legend{color:var(--text-secondary);gap:1rem;margin-bottom:.5rem;font-size:.85rem;display:flex}.legend-item{align-items:center;gap:.35rem;display:inline-flex}.legend-swatch{border-radius:2px;width:10px;height:10px}.legend-line{border-radius:1px;width:14px;height:2px}.chart-tooltip{background:var(--surface-1);border:1px solid var(--border);box-shadow:var(--shadow);color:var(--text-secondary);pointer-events:none;white-space:nowrap;z-index:2;border-radius:8px;padding:.5rem .7rem;font-size:.85rem;position:absolute;transform:translate(12px,-50%)}.chart-tooltip strong{color:var(--text-primary)}.tip-key{vertical-align:middle;border-radius:1px;width:10px;height:2px;margin-right:.35rem;display:inline-block}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.88rem}th{text-align:left;text-transform:uppercase;letter-spacing:.02em;color:var(--text-muted);border-bottom:1px solid var(--gridline);white-space:nowrap;padding:.55rem .7rem;font-size:.75rem;font-weight:600}td{text-align:left;border-bottom:1px solid var(--gridline);font-variant-numeric:tabular-nums;white-space:nowrap;padding:.6rem .7rem}tbody tr:last-child td{border-bottom:none}.swim-row{cursor:pointer;transition:background .1s}.swim-row:hover{background:#0b0b0b08}.swim-row.selected{background:#2a78d617}.delta{font-variant-numeric:tabular-nums;font-weight:600}.delta.good{color:var(--good)}.delta.bad{color:var(--bad)}.delta.muted{color:var(--text-muted);font-weight:400}.section-head{justify-content:space-between;align-items:center;margin-bottom:.9rem;display:flex}.section-head h2{margin:0}.toggle{border:1px solid var(--border);border-radius:8px;display:inline-flex;overflow:hidden}.toggle button{background:var(--surface-1);color:var(--text-secondary);cursor:pointer;border:none;padding:.35rem .9rem;font-size:.85rem}.toggle button+button{border-left:1px solid var(--border)}.toggle button.active{background:var(--accent);color:var(--accent-ink)}@media (width<=600px){.container{padding:1.25rem .9rem 2rem}.app-header{flex-direction:column}.header-actions{justify-content:flex-start}.card{padding:1rem 1rem 1.15rem}th,td{padding:.45rem .5rem}}
