:root{--bg:#F5F3EA;--surface:#FFFFFF;--surface-2:#EEF2EA;--text:#23302A;--muted:#6B7A70;--line:#DDE3D9;--green:#3F6B52;--green-soft:#DDEDE0;--green-text:#2F5A3F;--purple:#6E5A9E;--purple-soft:#E9E3F4;--red:#B45B5B;--red-soft:#F7DEDE;--amber:#D6A445;--amber-soft:#F7EFD9;--shadow:0 10px 30px rgba(35,48,42,.1);--radius:14px;--w-pos:54px;--w-pilot:132px;--w-car:152px;--w-total:112px;--w-dif:104px}[data-theme=dark]{--bg:#131A16;--surface:#1C2621;--surface-2:#223028;--text:#E9EFE9;--muted:#9AA99E;--line:#2C3A31;--green:#86B394;--green-soft:#24382C;--green-text:#BFE0C8;--purple:#B49BE0;--purple-soft:#322843;--red:#E08A8A;--red-soft:#3E2626;--amber:#E3B65E;--amber-soft:#3A3120;--shadow:0 10px 30px rgba(0,0,0,.35)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;background:radial-gradient(1200px 600px at 90% -10%,rgba(63,107,82,.1),transparent 60%),var(--bg);color:var(--text);min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}.app{max-width:1560px;margin:0 auto;padding:18px 22px 42px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;min-width:260px}.logo{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(135deg,#4f8161,#2f5a3f);color:#fff;font-weight:800;letter-spacing:.5px;box-shadow:0 6px 16px #2f5a3f47;flex:0 0 auto}.logo.big{width:66px;height:66px;font-size:22px;border-radius:18px;margin:0 auto 12px}.brand h1{font-size:18px;line-height:1.1;margin:0}.brand p{margin:3px 0 0;font-size:12px;color:var(--muted)}.clockbox{display:flex;align-items:center;gap:14px}.clock{font-size:22px;font-weight:700;letter-spacing:.4px;font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.countdown{min-width:96px;text-align:center;border:1px solid var(--line);border-radius:999px;padding:7px 16px 8px;background:var(--surface);box-shadow:var(--shadow)}.countdown .num{font-size:28px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.countdown .lbl{font-size:9px;color:var(--muted);margin-top:3px}.countdown.hot .num{color:var(--red)}.countdown.warn .num{color:var(--amber)}.countdown.zero .num{color:var(--green)}.toolbar{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:10px;padding:8px 10px;font-size:12px;line-height:1;transition:background .15s,border-color .15s,transform .05s}.btn:hover{background:var(--surface-2)}.btn:active{transform:translateY(1px)}.btn.active{border-color:var(--green);background:var(--green-soft);color:var(--green-text)}.btn.primary{background:var(--green);border-color:var(--green);color:#fff;font-weight:700;justify-content:center;padding:11px 14px}.btn.primary:hover{background:#355c46}.btn.danger{color:var(--red);border-color:#b45b5b59}.btn.small{padding:6px 8px;font-size:11px;border-radius:8px}.btn .ico{font-size:14px}.btn-label{white-space:nowrap}.tabs{display:flex;gap:6px;margin:14px 0 4px;overflow-x:auto;padding-bottom:2px}.tab{border:1px solid transparent;background:transparent;color:var(--muted);padding:8px 14px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.tab:hover{background:var(--surface-2);color:var(--text)}.tab.active{background:var(--surface);border-color:var(--line);color:var(--text);box-shadow:var(--shadow)}.statusbar{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.chip{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:999px;padding:6px 11px;font-size:11px;font-weight:600;white-space:nowrap}.chip.small{padding:3px 8px;font-size:10px}.chip.ghost{color:var(--muted);font-weight:500}.chip.warn{border-color:#d6a44573;background:var(--amber-soft);color:#7a5a12}[data-theme=dark] .chip.warn{color:#eccb82}.chip.live{border-color:#3f6b5259;background:var(--green-soft);color:var(--green-text)}.dot{width:7px;height:7px;border-radius:50%;display:inline-block;background:var(--muted);flex:0 0 auto}.dot.ok{background:var(--green)}.dot.warn{background:var(--amber)}.dot.live{background:var(--green);box-shadow:0 0 #3f6b5280;animation:pulse 1.8s infinite}@keyframes pulse{0%{box-shadow:0 0 #3f6b5273}70%{box-shadow:0 0 0 7px #3f6b5200}to{box-shadow:0 0 #3f6b5200}}.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:8px 0 10px}.switch{display:inline-flex;align-items:center;gap:9px;font-size:12px;color:var(--text);-webkit-user-select:none;user-select:none;cursor:pointer}.switch input{position:absolute;opacity:0;pointer-events:none}.slider{width:38px;height:22px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);position:relative;transition:background .15s,border-color .15s;flex:0 0 auto}.slider:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--muted);transition:transform .15s,background .15s}.switch input:checked+.slider{background:var(--green-soft);border-color:var(--green)}.switch input:checked+.slider:after{transform:translate(16px);background:var(--green)}.hint{font-size:11px;color:var(--muted)}.hint b{color:var(--text);font-weight:700}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:auto;max-height:66vh;box-shadow:var(--shadow)}table#rally-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:13px}#rally-table th,#rally-table td{border-bottom:1px solid var(--line)}#rally-table thead th{position:sticky;top:0;z-index:6;background:var(--surface-2);text-align:center;font-size:11px;color:var(--muted);font-weight:700;padding:8px 6px;white-space:nowrap}#rally-table thead th.col-pos,#rally-table thead th.col-pilot,#rally-table thead th.col-car{z-index:9;text-align:left}#rally-table thead th.col-pos{text-align:center}#rally-table tbody td{padding:8px 6px;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";background:var(--surface)}#rally-table tbody td.col-pos,#rally-table tbody td.col-pilot,#rally-table tbody td.col-car{position:sticky;z-index:4;text-align:left}#rally-table tbody td.col-pos{text-align:center}#rally-table tbody tr:hover td.col-pos,#rally-table tbody tr:hover td.col-pilot,#rally-table tbody tr:hover td.col-car{background:var(--surface-2)}#rally-table thead th.col-total,#rally-table thead th.col-dif{position:sticky;z-index:9;background:var(--surface-2)}#rally-table tbody td.col-total,#rally-table tbody td.col-dif{position:sticky;z-index:4;background:var(--surface)}#rally-table thead th.col-total,#rally-table tbody td.col-total{right:calc(var(--w-dif) * 2);border-left:1px solid var(--line)}#rally-table thead th.col-dif:nth-last-child(2),#rally-table tbody td.col-dif:nth-last-child(2){right:var(--w-dif)}#rally-table thead th.col-dif:last-child,#rally-table tbody td.col-dif:last-child{right:0}#rally-table tbody tr:hover td.col-total,#rally-table tbody tr:hover td.col-dif{background:var(--surface-2)}.col-pos{width:var(--w-pos);min-width:var(--w-pos);left:0}.col-pilot{width:var(--w-pilot);min-width:var(--w-pilot);left:var(--w-pos)}.col-car{width:var(--w-car);min-width:var(--w-car);left:calc(var(--w-pos) + var(--w-pilot))}.col-total{width:var(--w-total);min-width:var(--w-total)}.col-dif{width:var(--w-dif);min-width:var(--w-dif)}.stage-head{min-width:124px;vertical-align:bottom;padding:0!important;border-left:1px solid var(--line)}.stage-head.live{box-shadow:inset 0 3px 0 var(--green)}.stage-head.pending{opacity:.86}.stage-btn{all:unset;display:flex;flex-direction:column;gap:2px;align-items:center;width:100%;padding:8px 6px 7px;cursor:pointer;border-radius:0}.stage-btn:hover{background:#3f6b520f}.stage-code{font-size:11px;font-weight:800;letter-spacing:.3px;color:var(--text)}.stage-name{font-size:11px;color:var(--muted);line-height:1.15;max-width:116px;white-space:normal}.stage-record{font-size:10px;color:var(--amber);font-weight:700;font-variant-numeric:tabular-nums;margin-top:2px}.stage-chip{display:inline-block;margin-top:4px;border-radius:999px;padding:2px 7px;font-size:9px;font-weight:700;border:1px solid var(--line);color:var(--muted);background:var(--surface)}.stage-chip.closed{color:var(--green-text);border-color:#3f6b524d;background:var(--green-soft)}.stage-chip.live{color:#7a5a12;border-color:#d6a44573;background:var(--amber-soft)}[data-theme=dark] .stage-chip.live{color:#eccb82}.stage-chip.pending{color:var(--muted)}.stage-chip.void{color:var(--red);border-color:#b45b5b59;background:var(--red-soft)}.pos{font-weight:800;color:var(--text)}.leader .pos{color:var(--green)}.pilot{font-weight:700;color:var(--text)}.car{color:var(--muted);font-size:12px}.retired-row{opacity:.55}.retired-row .pilot{text-decoration:line-through}.cell{position:relative}.cell .time{font-weight:700}.cell.best{background:var(--purple-soft)!important}.cell.best .time,.cell.best{color:var(--purple)}.cell.valid{background:var(--green-soft)!important}.cell.valid .time,.cell.valid{color:var(--green-text)}.cell.penalty{background:var(--red-soft)!important}.cell.penalty .time,.cell.penalty{color:var(--red)}.cell.retired-cell,.cell.ec-cell{color:var(--muted)!important;background:var(--surface-2)!important;font-weight:700}.gap-line{display:none;font-size:10px;line-height:1.3;margin-top:2px;color:var(--muted);letter-spacing:.1px;white-space:normal}#rally-table.show-gaps .gap-line{display:block}.gap-best{font-weight:700;color:var(--muted)}.gap-prev{color:var(--muted);opacity:.85}.gap-ref{color:var(--muted);font-weight:600;opacity:.95;white-space:nowrap}.dif-prev .ref{display:block;font-size:9px;font-weight:500;color:var(--muted);opacity:.85;white-space:nowrap;margin-top:1px}.prov-dot,.prov{color:var(--amber);font-weight:800}.crown{font-size:10px;margin-left:2px}.badge{display:inline-block;font-size:9px;font-weight:800;line-height:1;border-radius:5px;padding:2px 4px;margin-left:3px;vertical-align:1px}.badge.p{color:var(--red);background:#b45b5b24}.badge.ec{color:var(--muted);background:var(--surface-2);border:1px solid var(--line)}.badge.ret{color:var(--muted);background:var(--surface-2);border:1px solid var(--line);text-decoration:none}.total{font-weight:800}.total.partial{color:var(--muted);font-weight:600}.dif-leader{color:var(--red);font-weight:700}.dif-prev{color:var(--muted);font-weight:600}.legend{display:flex;gap:13px;flex-wrap:wrap;margin-top:11px;font-size:11px;color:var(--muted)}.legend>span{display:inline-flex;align-items:center;gap:5px}.sw{width:12px;height:12px;border-radius:4px;display:inline-block;border:1px solid rgba(0,0,0,.05)}.sw.purple{background:var(--purple-soft)}.sw.green{background:var(--green-soft)}.sw.red{background:var(--red-soft)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:14px 0}.page-head h2{margin:0;font-size:20px}.page-head p{margin:4px 0 0}.search{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:10px;padding:10px 12px;min-width:240px;font-size:12px;outline:none}.search:focus{border-color:var(--green)}.records-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:16px}.record-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.record-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.record-name{font-size:16px;font-weight:800}.record-time{font-size:23px;font-weight:800;color:var(--purple);font-variant-numeric:tabular-nums;white-space:nowrap}.record-meta{font-size:11px;color:var(--muted);margin-top:3px;line-height:1.45}.tag{display:inline-block;font-size:9px;font-weight:800;letter-spacing:.4px;background:var(--purple-soft);color:var(--purple);border-radius:5px;padding:2px 5px;vertical-align:2px;margin-left:4px}.top-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:11px}.top-table th{text-align:left;color:var(--muted);font-weight:700;padding:5px 4px;border-bottom:1px solid var(--line)}.top-table td{padding:5px 4px;border-bottom:1px solid var(--line);vertical-align:top}.top-table tr:last-child td{border-bottom:0}.mono{font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}.history-list{display:grid;gap:12px}.history-card{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}.history-card.active{border-color:var(--green);box-shadow:0 0 0 2px var(--green-soft),var(--shadow)}.history-name{font-weight:800;font-size:14px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}.history-actions{display:flex;gap:6px;flex-wrap:wrap}.footer{margin-top:26px;padding-top:14px;border-top:1px solid var(--line);font-size:10px;color:var(--muted);text-align:center}.view{display:none}.view.active{display:block}.modal{position:fixed;inset:0;z-index:50;display:none;align-items:center;justify-content:center;background:#131a1680;padding:18px}.modal.open{display:flex}.modal-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;width:min(820px,96vw);max-height:90vh;overflow:auto;padding:20px;box-shadow:var(--shadow)}.invite-card{width:min(620px,96vw)}.invite-row{display:flex;gap:8px;margin:14px 0 4px;flex-wrap:wrap}.invite-row input{flex:1;min-width:220px;border:1px solid var(--line);background:var(--surface-2);color:var(--text);border-radius:9px;padding:10px;font-size:12px;font-family:ui-monospace,Consolas,monospace}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.modal-head h2{margin:0;font-size:20px}.icon-btn{border:1px solid var(--line);background:var(--surface);color:var(--text);width:32px;height:32px;border-radius:9px;display:grid;place-items:center;font-size:15px;flex:0 0 auto}.icon-btn:hover{background:var(--surface-2)}.record-callout{display:flex;gap:14px;align-items:center;border:1px solid rgba(214,164,69,.4);background:var(--amber-soft);border-radius:12px;padding:12px 14px;margin:10px 0 14px}.record-callout .crown.big{font-size:28px}.record-big{font-size:22px;font-weight:800;color:var(--amber);font-variant-numeric:tabular-nums}[data-theme=dark] .record-big{color:#eccb82}.small{font-size:11px}.muted{color:var(--muted)}.panel-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}.panel-table th{text-align:left;color:var(--muted);font-size:10px;padding:7px 6px;border-bottom:1px solid var(--line);background:var(--surface-2)}.panel-table td{padding:7px 6px;border-bottom:1px solid var(--line);vertical-align:middle}.panel-table td:nth-child(4),.panel-table td:nth-child(5),.panel-table td:nth-child(6),.panel-table th:nth-child(4),.panel-table th:nth-child(5),.panel-table th:nth-child(6){text-align:right}.panel-table td.cell{padding:7px 6px;border-radius:0}.row-muted{opacity:.6}.config-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1 / -1}.field label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.field input,.field select{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:9px;padding:9px 10px;font-size:12px;outline:none;width:100%}.field input:focus,.field select:focus{border-color:var(--green)}.config-list{display:grid;gap:7px}.config-row{display:grid;grid-template-columns:58px 1fr 32px;gap:7px;align-items:center}.config-row.pilot{grid-template-columns:1fr 1fr 32px}.config-row .code{font-size:11px;font-weight:800;color:var(--muted)}.add-row{display:flex;gap:7px;margin-top:8px;flex-wrap:wrap}.add-row input{flex:1;min-width:120px}.inline{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.inline input{width:100px}.inline select{width:auto}.check{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text);text-transform:none;letter-spacing:0;font-weight:500}.check input{width:auto}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}.login{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:20px;background:radial-gradient(900px 500px at 50% 0%,rgba(63,107,82,.16),transparent 65%),var(--bg)}.login.hidden{display:none}.login-card{width:min(420px,94vw);background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:28px 26px 24px;box-shadow:var(--shadow);text-align:center}.login-card h1{font-size:22px;margin:0 0 4px}.login-card>p{margin:0 0 18px;color:var(--muted);font-size:12px}.login-card form{display:flex;flex-direction:column;gap:8px;text-align:left}.login-card label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.login-card input{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:10px;padding:12px;font-size:14px;outline:none}.login-card input:focus{border-color:var(--green)}.login-error{color:var(--red);font-size:11px;min-height:14px}.linkish{border:0;background:transparent;color:var(--green);font-size:11px;text-decoration:underline;margin-top:10px;padding:4px}.toast{position:fixed;left:50%;bottom:22px;z-index:200;transform:translate(-50%,12px);background:var(--text);color:var(--bg);padding:10px 16px;border-radius:11px;font-size:12px;font-weight:600;max-width:92vw;text-align:center;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;box-shadow:var(--shadow)}.toast.show{opacity:1;transform:translate(-50%)}.toast.record{background:var(--amber);color:#2b210b}[hidden],body.spectator .tabs,body.spectator .admin-only{display:none!important}body.spectator .table-wrap{max-height:78vh}@media(max-width:1000px){:root{--w-pos:48px;--w-pilot:116px;--w-car:132px;--w-total:104px;--w-dif:96px}.app{padding:12px 12px 30px}.brand{min-width:0}.clockbox{width:100%;justify-content:space-between}.toolbar{width:100%;justify-content:flex-start}.table-wrap{max-height:60vh}.config-grid{grid-template-columns:1fr}.modal-card{width:96vw;padding:16px}.records-grid{grid-template-columns:1fr}.page-head{align-items:flex-start}.search{width:100%;min-width:0}.history-card{align-items:flex-start}.stage-head{min-width:112px}}@media(max-width:620px){.btn-label{display:none}#rally-table thead th.col-total,#rally-table thead th.col-dif,#rally-table tbody td.col-total,#rally-table tbody td.col-dif{position:static}}@media(max-width:620px){.brand h1{font-size:16px}.clock{font-size:18px}.countdown{min-width:82px}.countdown .num{font-size:22px}.legend{gap:9px;font-size:10px}.login-card{padding:22px 18px}.panel-table{font-size:11px}.panel-table th,.panel-table td{padding:6px 4px}}app-clock{display:contents}app-rally-table{display:block}app-stage-panel{display:contents}app-root{display:block}.logo{overflow:hidden}.logo img{width:100%;height:100%;object-fit:cover;display:block}.login-card input[type=file]{padding:8px;font-size:11px}
