:root{--bg:#040a0e;--panel:#08131b;--panel2:#0c1e2a;--line:#244255;--cyan:#62b7ff;--blue:#3d87d9;--white:#eaf4ff;--muted:#8296a7;--orange:#f0a36d;--red:#ff6b61;--green:#71e4ac;--shadow:rgba(0,0,0,.62)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#020609;color:var(--white);font-family:Arial,Helvetica,sans-serif}.hpcc-body{background:radial-gradient(circle at 50% -20%,#183e52 0,#07131c 32%,#020609 72%);min-height:100vh;letter-spacing:.02em}.scanlines{position:fixed;inset:0;pointer-events:none;z-index:100;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.012) 0,rgba(255,255,255,.012) 1px,transparent 1px,transparent 4px);mix-blend-mode:screen}.top-shell{height:112px;display:flex;align-items:center;justify-content:space-between;padding:12px clamp(18px,4vw,56px);border-bottom:2px solid #a6bdca;background:linear-gradient(180deg,rgba(6,20,29,.98),rgba(3,10,15,.92));box-shadow:0 10px 34px var(--shadow);position:relative;z-index:5}.top-shell:after{content:"";position:absolute;bottom:-7px;left:0;right:0;border-bottom:1px solid #1e4254}.brand{display:flex;align-items:center;gap:22px;min-width:0}.brand img{width:min(330px,35vw);max-height:82px;object-fit:contain;filter:drop-shadow(0 7px 12px #000)}.brand h1{font-size:clamp(18px,2.1vw,31px);margin:2px 0 0;text-transform:uppercase;font-style:italic;letter-spacing:.08em}.eyebrow,.section-kicker{color:var(--orange);font-weight:900;font-size:11px;letter-spacing:.24em;text-transform:uppercase}.page-wrap{width:min(1420px,94vw);margin:34px auto 60px}.hero-strip{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;margin-bottom:22px;border-top:1px solid #9fb4c0;border-bottom:1px solid #9fb4c0;background:linear-gradient(90deg,transparent,rgba(18,45,59,.72) 18%,rgba(18,45,59,.72) 82%,transparent)}.hero-strip h2,.page-title h2{margin:5px 0 0;font-size:clamp(24px,3vw,42px);font-style:italic;letter-spacing:.05em;text-transform:uppercase}.status-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.panel{background:linear-gradient(145deg,rgba(11,31,43,.96),rgba(4,12,18,.96));border:1px solid #264557;box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 12px 30px var(--shadow);padding:20px;position:relative;overflow:hidden}.panel:before{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:linear-gradient(90deg,transparent,#75b9df,transparent);opacity:.6}.panel-title{font-style:italic;color:var(--cyan);font-weight:900;letter-spacing:.13em;font-size:14px;margin-bottom:16px}.panel-title-row{display:flex;justify-content:space-between;align-items:center}.metric-row{display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid rgba(95,136,158,.18);color:var(--muted)}.metric-row strong{color:var(--white);text-align:right}.race-feature{padding:10px 0 14px}.race-track{color:var(--orange);font-weight:900;font-style:italic;font-size:22px}.race-sub{color:var(--cyan);margin-top:5px}.player-list{display:grid;gap:8px}.player-card{padding:10px 12px;border-left:3px solid var(--blue);background:rgba(44,103,141,.13)}.player-card strong{display:block;color:#fff}.player-card span{display:block;color:var(--muted);font-size:12px;margin-top:3px}.next-event{padding-top:18px}.next-event span{display:block;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.14em}.next-event strong{display:block;color:var(--orange);margin-top:7px}.wide-panel{margin-top:16px}.race-results{display:grid;gap:8px}.result-row{display:grid;grid-template-columns:55px 1.2fr 1fr 1fr 1fr;align-items:center;gap:12px;padding:11px 14px;background:rgba(32,74,96,.16);border-left:3px solid var(--blue)}.result-row .pos{font-size:20px;font-weight:900;color:var(--orange)}.result-row .driver{font-weight:900}.result-row span{color:var(--muted);font-size:13px}.table-wrap{overflow:auto}.hp-table{width:100%;border-collapse:collapse}.hp-table th{text-align:left;color:var(--cyan);font-size:11px;letter-spacing:.12em;text-transform:uppercase;padding:10px;border-bottom:1px solid #365467}.hp-table td{padding:11px 10px;border-bottom:1px solid rgba(78,112,129,.16);color:#d5e3ed}.hp-table tbody tr:hover{background:rgba(61,135,217,.08)}.status-lamp{padding:8px 14px;clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%);font-weight:900;font-size:11px;letter-spacing:.1em}.status-lamp.online{background:rgba(78,208,146,.15);color:var(--green);border:1px solid #3c9e76}.status-lamp.offline{background:rgba(255,91,83,.12);color:#ff8279;border:1px solid #9a4943}.status-lamp.unknown{background:rgba(113,136,151,.12);color:#a3b6c3;border:1px solid #496071}.game-button{appearance:none;border:0;color:#fff;font-weight:900;font-style:italic;text-transform:uppercase;letter-spacing:.08em;padding:13px 28px;cursor:pointer;background:linear-gradient(180deg,#1f516e,#0c2535);clip-path:polygon(13px 0,100% 0,calc(100% - 13px) 100%,0 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.28);transition:.15s}.game-button:hover{background:linear-gradient(180deg,#a55834,#592515);color:#fff;transform:translateY(-1px)}.game-button.secondary{background:linear-gradient(180deg,#244158,#102431)}.game-button.danger{background:linear-gradient(180deg,#6b2d2d,#351317)}.game-button.compact{padding:10px 21px;text-decoration:none;font-size:12px}.muted{color:var(--muted)}.empty-state{padding:20px;color:var(--muted);font-style:italic}footer{text-align:center;color:#536a78;font-size:11px;letter-spacing:.12em;padding:25px}footer span{color:#9d683f;margin:0 7px}.login-stage{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(520px,94vw);text-align:center;padding:34px}.login-logo{width:320px;max-width:90%;margin-bottom:18px}.login-card h1{font-style:italic;text-transform:uppercase;letter-spacing:.06em}.form-stack,.form-grid{display:grid;gap:14px}.form-stack{margin:22px 0;text-align:left}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}label{display:grid;gap:7px;color:#a9c2d3;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.09em}input,select{width:100%;background:#061018;color:#e8f5ff;border:1px solid #35566c;padding:12px 13px;outline:none;font:inherit}input:focus,select:focus{border-color:#69b8ee;box-shadow:0 0 0 2px rgba(69,155,214,.15)}select{cursor:pointer}.text-link{color:var(--cyan);text-decoration:none}.form-error{color:#ff8178;min-height:20px}.hidden{display:none!important}.admin-layout{display:grid;grid-template-columns:255px 1fr;min-height:calc(100vh - 112px)}.game-nav{padding:38px 18px;background:linear-gradient(180deg,#050e14,#02070b);border-right:1px solid #1d3949;display:flex;flex-direction:column;gap:7px}.nav-item{display:block;width:100%;border:0;text-align:left;padding:15px 20px;background:transparent;color:#5ba4e4;font-weight:900;font-size:15px;font-style:italic;letter-spacing:.05em;cursor:pointer;text-decoration:none;clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%)}.nav-item:hover,.nav-item.active{background:linear-gradient(90deg,rgba(136,61,31,.78),rgba(42,21,17,.18));color:#ffd0af}.nav-link{margin-top:auto}.admin-main{padding:34px clamp(22px,4vw,55px);overflow:auto}.admin-page{display:none}.admin-page.active{display:block}.page-title{margin-bottom:22px}.page-title p{color:var(--muted);max-width:900px}.control-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.control-actions{grid-column:1/-1;display:flex;gap:12px;justify-content:flex-end;margin-top:5px}.command-report{margin-top:16px}.result-lines{white-space:pre-wrap;line-height:1.55}.result-ok{color:var(--green)}.result-warn{color:#f5c079}.result-bad{color:#ff7c73}.two-col{display:grid;grid-template-columns:1fr 1.4fr;gap:16px}.button-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.schedule-rows{display:grid;gap:8px;margin:16px 0}.schedule-row{display:grid;grid-template-columns:45px 1fr 130px 1.5fr 50px;gap:9px;align-items:end;padding:10px;background:rgba(53,102,128,.1)}.schedule-row .remove-schedule{height:42px;border:1px solid #633;color:#e98;background:#201116;cursor:pointer}.toggle-row{display:flex;align-items:center;gap:10px;text-transform:none;font-size:14px;letter-spacing:0}.toggle-row input{width:auto}.server-settings{margin-bottom:16px}.account-card{max-width:720px}.mono{font-family:Consolas,'Courier New',monospace}.header-actions{display:flex;align-items:center;gap:12px}.toast{position:fixed;right:24px;bottom:24px;z-index:200;max-width:460px;padding:14px 18px;background:#0c202b;border:1px solid #3d6b82;box-shadow:0 10px 25px #000;color:#fff}.toast.good{border-color:#3f8b68}.toast.bad{border-color:#9b5049}@media(max-width:1050px){.status-grid{grid-template-columns:1fr 1fr}.admin-layout{grid-template-columns:1fr}.game-nav{position:sticky;top:0;z-index:20;flex-direction:row;overflow:auto;padding:10px;border-right:0;border-bottom:1px solid #1d3949}.nav-item{width:auto;white-space:nowrap}.nav-link{margin-top:0}.control-grid{grid-template-columns:1fr 1fr}.two-col{grid-template-columns:1fr}}@media(max-width:680px){.top-shell{height:auto;min-height:92px;padding:10px 14px}.brand img{width:160px}.brand h1{font-size:14px}.eyebrow{font-size:8px}.page-wrap{width:94vw;margin-top:20px}.status-grid{grid-template-columns:1fr}.result-row{grid-template-columns:40px 1fr 1fr}.result-row .hide-mobile{display:none}.form-grid,.control-grid{grid-template-columns:1fr}.control-actions{justify-content:stretch}.control-actions .game-button{flex:1}.schedule-row{grid-template-columns:36px 1fr 1fr}.schedule-row .profile-cell{grid-column:2/4}.schedule-row .remove-schedule{grid-column:1}.top-shell .status-lamp{display:none}.admin-main{padding:20px 14px}}
.asac-layout{align-items:start}.asac-drop{border:1px dashed #47748c;background:linear-gradient(145deg,rgba(31,78,105,.16),rgba(2,10,15,.35));padding:28px 20px;text-align:center;display:grid;gap:10px;justify-items:center;transition:.15s}.asac-drop.dragging{border-color:var(--orange);background:rgba(152,75,35,.16);box-shadow:inset 0 0 35px rgba(240,163,109,.08)}.asac-drop-title{font-size:20px;font-style:italic;font-weight:900;letter-spacing:.08em;color:var(--cyan)}.asac-drop input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.asac-selected{display:grid;gap:7px;margin:14px 0}.asac-file-row{display:flex;justify-content:space-between;gap:12px;padding:9px 11px;background:rgba(48,96,121,.12);border-left:3px solid var(--blue);color:#ddecf6}.asac-file-row small{color:var(--muted)}.asac-note{color:var(--muted);font-size:12px;line-height:1.55;margin-top:16px}.asac-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.asac-stats>div{background:rgba(44,103,141,.12);padding:18px;border-left:3px solid var(--orange)}.asac-stats strong{display:block;font-size:30px;color:#fff}.asac-stats span{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.1em;margin-top:3px}.asac-history{display:grid;gap:8px}.asac-history-row{padding:10px 12px;border-bottom:1px solid rgba(78,112,129,.18)}.asac-history-row strong,.asac-history-row span,.asac-history-row small{display:block}.asac-history-row strong{color:#eaf4ff}.asac-history-row span{color:var(--cyan);font-size:12px;margin-top:3px}.asac-history-row small{color:var(--muted);margin-top:3px}.game-button:disabled{opacity:.45;cursor:not-allowed;transform:none!important}


/* ==========================================================================
   v0.12 Public Race Center / integrated HP2 Race Control frontend
   ========================================================================== */
.public-header{position:sticky;top:0;z-index:40}.public-nav{position:sticky;top:112px;z-index:35;display:flex;justify-content:center;gap:6px;padding:9px clamp(12px,3vw,40px);background:linear-gradient(180deg,rgba(3,12,18,.98),rgba(2,7,11,.97));border-bottom:1px solid #284557;box-shadow:0 8px 24px rgba(0,0,0,.42);overflow-x:auto}.public-nav-item{appearance:none;border:0;background:transparent;color:#5ba4e4;padding:10px 18px;min-width:145px;text-align:left;cursor:pointer;font-style:italic;clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%)}.public-nav-item span,.public-nav-item small{display:block}.public-nav-item span{font-size:14px;font-weight:900;text-transform:uppercase;letter-spacing:.06em}.public-nav-item small{color:#687f8e;font-size:10px;margin-top:2px;letter-spacing:.04em}.public-nav-item:hover,.public-nav-item.active{background:linear-gradient(90deg,rgba(136,61,31,.8),rgba(42,21,17,.22));color:#ffd0af}.public-nav-item.active small{color:#d99b73}.race-center-wrap{margin-top:28px}.public-view{display:none}.public-view.active{display:block}.overview-stat-grid,.rating-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.stat-tile{background:linear-gradient(145deg,rgba(11,31,43,.96),rgba(4,12,18,.96));border:1px solid #264557;border-left:3px solid #3d87d9;padding:17px 18px;box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 10px 28px rgba(0,0,0,.45)}.stat-tile span,.stat-tile small,.stat-tile strong{display:block}.stat-tile span{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.14em}.stat-tile strong{font-size:28px;color:#fff;margin-top:5px;font-style:italic}.stat-tile small{color:#688293;margin-top:4px}.analytics-title{padding:6px 2px 20px;border-bottom:1px solid rgba(83,120,141,.28);margin-bottom:18px}.analytics-title p{max-width:940px;line-height:1.55}.analytics-title h2{font-size:clamp(30px,4vw,50px)}.filter-panel{margin-bottom:16px}.filter-heading,.rating-toolbar{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:16px}.filter-heading h3,.rating-toolbar h3,.rating-explainer h3,.future-rating h3{margin:5px 0 0;font-style:italic;text-transform:uppercase}.filter-count{text-align:right}.filter-count strong,.filter-count span{display:block}.filter-count strong{font-size:28px;color:var(--orange)}.filter-count span{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.analytics-filters{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.filter-field{min-width:0}.filter-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px;padding-top:13px;border-top:1px solid rgba(65,101,120,.25)}.filter-chips{display:flex;gap:7px;flex-wrap:wrap}.filter-chip{padding:5px 9px;background:rgba(54,117,158,.15);border:1px solid #32546a;color:#a8d7f5;font-size:11px}.text-action{border:0;background:transparent;color:var(--cyan);font:inherit;font-weight:800;cursor:pointer}.text-action:hover{color:var(--orange)}.clickable-table tbody tr{cursor:pointer}.hp-table td small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.rank-cell{font-weight:900;color:var(--orange);font-size:18px}.leaderboard-time{color:var(--orange);font-weight:900}.class-badge,.source-badge,.status-tag{display:inline-block;padding:5px 9px;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;border:1px solid #31546a;background:rgba(42,98,135,.16);color:#a7d8f8}.source-badge.asac{border-color:#95623e;color:#f0b283;background:rgba(133,74,34,.16)}.source-badge.hpcc{border-color:#3d6980;color:#8fd2fb}.rating-explainer{display:grid;grid-template-columns:1.5fr .8fr;gap:20px;align-items:center;margin-bottom:16px}.rating-explainer p,.future-rating p{color:var(--muted);line-height:1.6}.rating-formula{padding:20px;background:linear-gradient(135deg,rgba(139,65,30,.24),rgba(34,17,13,.12));border-left:3px solid var(--orange)}.rating-formula span,.rating-formula strong,.rating-formula small{display:block}.rating-formula span{font-size:10px;letter-spacing:.14em;color:#eab185}.rating-formula strong{font-size:20px;margin:8px 0;color:#fff}.rating-formula small{color:var(--muted)}.compact-filter{width:260px}.rating-list{display:grid;gap:11px}.rating-card{display:grid;grid-template-columns:68px 1fr;border:1px solid rgba(66,105,126,.32);background:rgba(38,80,103,.08)}.rating-rank{display:grid;place-items:center;font-size:26px;font-weight:900;color:var(--orange);background:rgba(127,61,30,.12);border-right:1px solid rgba(124,75,51,.32)}.rating-main{padding:16px}.rating-name-line{display:flex;justify-content:space-between;gap:20px}.rating-name-line h3{margin:0;font-size:22px}.rating-name-line span{color:var(--muted);font-size:12px}.rating-score{text-align:right}.rating-score span,.rating-score strong{display:block}.rating-score span{font-size:9px;letter-spacing:.14em;color:var(--orange)}.rating-score strong{font-size:26px}.rating-progress{height:8px;background:#02080c;margin:13px 0 7px;border:1px solid #1c3948}.rating-progress i{display:block;height:100%;background:linear-gradient(90deg,#27669a,#e18750);box-shadow:0 0 10px rgba(76,166,224,.28)}.rating-progress-label{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.rating-progress-label strong{color:#fff}.rating-mini-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:13px}.rating-mini-grid>div,.class-rating{padding:9px 10px;background:rgba(45,91,116,.1)}.rating-mini-grid span,.rating-mini-grid strong{display:block}.rating-mini-grid span{font-size:9px;text-transform:uppercase;color:var(--muted);letter-spacing:.08em}.rating-mini-grid strong{font-size:16px;margin-top:3px}.class-rating-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-top:8px}.class-rating span,.class-rating strong,.class-rating small{display:block}.class-rating span{font-size:9px;text-transform:uppercase;color:var(--cyan)}.class-rating strong{font-size:18px;margin-top:2px}.class-rating small{color:var(--muted);margin-top:2px}.future-rating{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:16px}.bad-tag{color:#ff8a81;border-color:#8c4742;background:rgba(118,43,39,.18)}.analytics-card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.analytics-card{min-height:250px}.analytics-card h3{margin:10px 0 16px;font-size:22px;font-style:italic}.driver-avatar{width:58px;height:58px;display:grid;place-items:center;background:linear-gradient(145deg,#1a5274,#0b2434);border:1px solid #3f7798;font-size:19px;font-weight:900;color:#d8efff;clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%)}.metric-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.metric-grid>div{padding:10px;background:rgba(43,89,113,.1)}.metric-grid span,.metric-grid strong{display:block}.metric-grid span{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.metric-grid strong{margin-top:4px}.card-list{font-size:11px;line-height:1.55;margin-top:14px}.car-stripe{height:3px;background:linear-gradient(90deg,var(--orange),var(--cyan),transparent);margin:-20px -20px 15px}.car-card-title{display:flex;align-items:start;justify-content:space-between;gap:12px}.car-card-title h3{margin-top:0}.result-row-button{width:100%;border-top:0;border-right:0;border-bottom:0;color:inherit;text-align:left;font:inherit;cursor:pointer}.result-row-button:hover{background:rgba(49,112,150,.24)}.race-modal{position:fixed;inset:0;z-index:500;display:grid;place-items:center;padding:24px}.race-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.82);backdrop-filter:blur(3px)}.race-modal-card{position:relative;z-index:1;width:min(1120px,96vw);max-height:90vh;overflow:auto;padding:28px}.modal-close{position:absolute;right:14px;top:12px;border:1px solid #456174;background:#061018;color:#d9e8f1;width:38px;height:38px;font-size:24px;cursor:pointer}.modal-close:hover{color:var(--orange);border-color:#a46d48}.modal-head{display:flex;justify-content:space-between;align-items:start;gap:20px;padding-right:50px;margin-bottom:18px}.modal-head h2{font-size:34px;font-style:italic;text-transform:uppercase;margin:5px 0}.modal-head p{color:var(--muted)}.detail-player{padding:16px;margin-top:12px;border:1px solid rgba(66,104,125,.32);background:rgba(28,65,85,.08)}.detail-player-head{display:grid;grid-template-columns:55px 1fr auto;gap:13px;align-items:center}.detail-position{font-size:25px;color:var(--orange);font-weight:900}.detail-player-head h3{margin:0;font-size:20px}.detail-player-head p{margin:4px 0 0;color:var(--muted);font-size:12px}.detail-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:14px}.detail-metrics>div{padding:10px;background:rgba(43,91,116,.12)}.detail-metrics span,.detail-metrics strong{display:block}.detail-metrics span{font-size:9px;text-transform:uppercase;color:var(--muted)}.detail-metrics strong{margin-top:4px}.lap-title{display:flex;justify-content:space-between;margin-top:16px;color:var(--cyan);font-size:12px}.lap-title span{color:var(--muted)}.lap-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:8px}.lap-grid>div{padding:10px;background:#061018;border-left:2px solid #2d6588}.lap-grid span,.lap-grid strong,.lap-grid small{display:block}.lap-grid span{color:var(--muted);font-size:9px;text-transform:uppercase}.lap-grid strong{margin-top:3px}.lap-grid small{color:#637d8d;margin-top:3px}.compact-empty{padding:10px}.modal-open{overflow:hidden}

@media(max-width:1150px){.analytics-filters{grid-template-columns:repeat(3,1fr)}.analytics-card-grid{grid-template-columns:repeat(2,1fr)}.public-nav{justify-content:flex-start}.overview-stat-grid,.rating-stat-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.public-nav{top:92px}.public-nav-item{min-width:130px;padding:9px 13px}.analytics-filters{grid-template-columns:repeat(2,1fr)}.rating-explainer{grid-template-columns:1fr}.rating-card{grid-template-columns:45px 1fr}.rating-mini-grid{grid-template-columns:repeat(2,1fr)}.class-rating-grid{grid-template-columns:repeat(2,1fr)}.analytics-card-grid{grid-template-columns:1fr}.detail-metrics,.lap-grid{grid-template-columns:repeat(2,1fr)}.filter-heading,.filter-foot,.rating-toolbar,.future-rating{align-items:stretch;flex-direction:column}.compact-filter{width:100%}.modal-head{flex-direction:column}.overview-stat-grid,.rating-stat-grid{grid-template-columns:1fr 1fr}}@media(max-width:480px){.analytics-filters,.overview-stat-grid,.rating-stat-grid,.detail-metrics,.lap-grid{grid-template-columns:1fr}.rating-name-line{flex-direction:column}.rating-score{text-align:left}.class-rating-grid{grid-template-columns:1fr 1fr}}


/* v0.13 community data / PC class corrections */
.team-badge{display:inline-block;margin-right:6px;padding:2px 5px;border:1px solid #477a9b;background:rgba(35,92,128,.2);color:#8ed2ff;font-size:10px;font-weight:900;letter-spacing:.04em;vertical-align:middle}.team-badge.approved{border-color:#b07045;background:rgba(138,69,32,.17);color:#ffc294}.team-badge.unregistered{border-color:#555f66;color:#89969e;background:rgba(65,72,77,.13)}.racer-name{vertical-align:middle}.invalid-badge{display:inline-block;margin-left:6px;padding:4px 7px;border:1px solid #984d47;background:rgba(134,46,41,.2);color:#ff8e86;font-size:9px;font-weight:900;letter-spacing:.08em}.invalid-notice{display:flex;gap:12px;align-items:center;padding:11px 13px;margin-bottom:12px;border-left:3px solid #c85d50;background:rgba(133,45,40,.13);color:#ffaca4}.invalid-notice span{color:#b9a09d}.modal-status-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.flag-invalid-btn{appearance:none;border:1px solid #8a4d49;background:rgba(96,35,32,.22);color:#ff9b92;padding:5px 9px;font:inherit;font-size:10px;font-weight:900;text-transform:uppercase;cursor:pointer}.flag-invalid-btn:hover{background:rgba(145,55,47,.34)}.community-request-grid{margin-bottom:16px}.request-form{margin:14px 0}.full-field{grid-column:1/-1}.approved-team-panel{margin-bottom:16px}.team-directory{display:flex;gap:8px;flex-wrap:wrap}.approved-team-chip{display:inline-flex;gap:7px;align-items:center;padding:8px 11px;border:1px solid #365d74;background:rgba(37,86,115,.13);font-size:11px}.approved-team-chip strong{color:var(--orange)}.rating-toolbar-filters{display:flex;gap:10px;flex-wrap:wrap}.moderation-list{display:grid;gap:9px}.moderation-request{display:grid;grid-template-columns:1fr minmax(320px,.7fr);gap:16px;align-items:center;padding:13px;border:1px solid rgba(65,103,124,.35);background:rgba(30,70,91,.09)}.moderation-request-main strong,.moderation-request-main span,.moderation-request-main small{display:block}.moderation-request-main strong{color:var(--orange);text-transform:uppercase;font-size:11px;letter-spacing:.08em}.moderation-request-main span{margin-top:5px}.moderation-request-main small{margin-top:5px;color:var(--muted)}.moderation-actions{display:grid;grid-template-columns:1fr auto auto;gap:7px}.moderation-actions input{min-width:0}.moderation-approved{margin-top:16px}.moderation-directory>div{display:flex;flex-direction:column;padding:8px 0;border-bottom:1px solid rgba(69,103,120,.22)}.moderation-directory>div:last-child{border-bottom:0}.moderation-directory strong{color:#d5efff}.moderation-directory span{color:var(--muted);font-size:11px;margin-top:3px}
@media(max-width:900px){.moderation-request{grid-template-columns:1fr}.moderation-actions{grid-template-columns:1fr 1fr}.moderation-actions input{grid-column:1/-1}.rating-toolbar-filters{width:100%}.rating-toolbar-filters .compact-filter{flex:1;min-width:200px}}

.three-col{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.analytics-filters{grid-template-columns:repeat(auto-fit,minmax(145px,1fr))}@media(max-width:900px){.three-col{grid-template-columns:1fr}}


/* v0.14 observer + backup/restore */
.observer-state{color:#f3ae78!important;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.backup-list{display:grid;gap:8px}.backup-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 14px;border:1px solid rgba(64,103,125,.35);background:rgba(31,72,94,.09)}.backup-row strong,.backup-row span{display:block}.backup-row strong{color:#d7f0ff}.backup-row span{margin-top:4px;color:var(--muted);font-size:11px}.backup-actions{display:flex;gap:7px;align-items:center}.backup-download{text-decoration:none;display:inline-flex;align-items:center}.button-stack{display:flex;gap:9px;flex-wrap:wrap;margin:16px 0}@media(max-width:720px){.backup-row{align-items:stretch;flex-direction:column}.backup-actions{width:100%;flex-wrap:wrap}}


/* ==========================================================================
   v0.15 Competitive scoring, Race Rating, standard multiplayer car matrix
   ========================================================================== */
.standings-panel{margin-bottom:16px}.standings-table .rating-number,.rating-number{font-size:18px;font-weight:900;color:#dff3ff}.rating-up{color:#7ee6a6!important;font-weight:900}.rating-down{color:#ff8d85!important;font-weight:900}.rating-secondary-title{margin-top:30px}.competition-explainer{border-left:3px solid var(--orange)}.competitive-rating-list{display:grid;gap:10px}.competitive-rating-card{display:grid;grid-template-columns:64px 1fr;border:1px solid rgba(66,105,126,.36);background:linear-gradient(135deg,rgba(22,55,74,.18),rgba(8,21,29,.18))}.competitive-rank{display:grid;place-items:center;font-size:25px;font-weight:900;color:var(--orange);border-right:1px solid rgba(97,76,61,.38);background:rgba(124,58,29,.11)}.competitive-main{padding:16px}.competitive-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.competitive-head h3{margin:0;font-size:21px}.competitive-head>div>span{display:block;color:var(--muted);font-size:11px;margin-top:5px}.competitive-score{text-align:right}.competitive-score span,.competitive-score strong,.competitive-score small{display:block}.competitive-score span{font-size:9px;color:var(--orange);letter-spacing:.13em}.competitive-score strong{font-size:31px;line-height:1.05;margin-top:3px}.competitive-score small{margin-top:4px;font-size:11px}.competitive-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:13px}.competitive-metrics>div{padding:9px 10px;background:rgba(44,88,111,.11)}.competitive-metrics span,.competitive-metrics strong{display:block}.competitive-metrics span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.competitive-metrics strong{font-size:17px;margin-top:3px}.about-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.about-card h3{font-size:21px;text-transform:uppercase;font-style:italic;margin:7px 0 10px}.about-card p{line-height:1.65;color:var(--muted)}.about-card strong{color:#e7f5ff}.about-callout,.formula-box{margin:14px 0;padding:12px 14px;background:rgba(44,94,121,.12);border-left:3px solid var(--cyan);font-weight:900;color:#d7efff}.formula-box{font-family:Consolas,monospace;border-left-color:var(--orange);color:#ffc79e;font-size:12px;overflow-wrap:anywhere}.standings-table .team-badge{margin-left:6px;margin-right:0}
@media(max-width:1050px){.about-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.competitive-rating-card{grid-template-columns:46px 1fr}.competitive-head{flex-direction:column}.competitive-score{text-align:left}.competitive-metrics{grid-template-columns:repeat(2,1fr)}.about-grid{grid-template-columns:1fr}}


/* ==========================================================================
   v0.16 Combo analytics / unrun combo progression / race-state placeholder
   ========================================================================== */
.hero-strip{align-items:center}.race-state-placeholder{margin-left:auto;margin-right:18px;min-width:190px;padding:9px 13px;border:1px solid #6f6044;border-left:3px solid #d18b4b;background:linear-gradient(135deg,rgba(111,72,37,.17),rgba(11,26,35,.2));text-align:center}.race-state-placeholder span,.race-state-placeholder strong,.race-state-placeholder small{display:block}.race-state-placeholder span{font-size:9px;letter-spacing:.14em;color:#caa47d}.race-state-placeholder strong{font-size:15px;color:#ffc38f;margin-top:2px}.race-state-placeholder small{font-size:9px;color:#7f929e;margin-top:2px}.combo-button{border-color:#b47744!important;background:linear-gradient(135deg,rgba(145,73,31,.42),rgba(59,29,17,.36))!important}.combo-randomizer-status{margin-top:11px;padding:9px 11px;border-left:2px solid #b77543;background:rgba(111,60,29,.1);color:#c6a589;font-size:11px;line-height:1.45}.combo-tier-panel{margin-bottom:16px}.combo-tier-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.combo-tier{padding:11px;border:1px solid rgba(64,103,124,.32);background:rgba(30,71,92,.09)}.combo-tier.active-tier{border-color:#a66d42;background:rgba(130,68,32,.13);box-shadow:inset 0 0 18px rgba(145,75,35,.08)}.combo-tier-head{display:flex;justify-content:space-between;gap:8px;align-items:center}.combo-tier-head strong{font-size:11px;color:#d7efff}.combo-tier-head span{font-size:10px;color:var(--muted)}.combo-tier-progress{height:6px;background:#02080c;border:1px solid #183443;margin:8px 0}.combo-tier-progress i{display:block;height:100%;background:linear-gradient(90deg,#2a6b97,#d27c45)}.combo-tier small{color:var(--muted);font-size:9px}.combo-filter-row{display:grid;grid-template-columns:repeat(2,minmax(180px,280px));gap:10px;margin-bottom:14px}
@media(max-width:1100px){.combo-tier-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:760px){.hero-strip{flex-wrap:wrap}.race-state-placeholder{order:3;width:100%;margin:10px 0 0}.combo-tier-grid{grid-template-columns:repeat(2,1fr)}.combo-filter-row{grid-template-columns:1fr}}


.profile-details{margin:12px 0 16px;padding:12px;border-left:3px solid var(--blue);background:rgba(44,103,141,.12);line-height:1.5;text-transform:none;letter-spacing:0}

/* v0.16.1 schedule time-zone support */
@media(min-width:901px){
  .schedule-row{grid-template-columns:1fr 120px 1.4fr 170px 110px auto!important}
  .schedule-row .profile-cell{grid-column:auto!important}
  .schedule-row .remove-schedule{grid-column:auto!important}
}


/* ==========================================================================\n   v0.17 Records page\n   ========================================================================== */
.record-controls{margin-bottom:16px}.record-control-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.record-class-tabs{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.record-class-tab{appearance:none;border:1px solid #36566a;background:#07131b;color:#78b7df;padding:9px 17px;font:inherit;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;clip-path:polygon(7px 0,100% 0,calc(100% - 7px) 100%,0 100%)}.record-class-tab:hover,.record-class-tab.active{border-color:#a6643d;background:linear-gradient(135deg,rgba(145,68,31,.45),rgba(55,26,16,.3));color:#ffc195}.record-direction-filter{min-width:230px}.record-summary-line{display:flex;justify-content:space-between;gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid rgba(65,101,120,.28);font-size:11px}.record-summary-line strong{color:#d9effd;text-transform:uppercase}.record-summary-line span{color:var(--muted)}.records-table-panel{padding:0;overflow:hidden}.records-table th:first-child,.records-table td:first-child{padding-left:18px}.records-table th{white-space:nowrap}.records-table td{vertical-align:middle}.record-track strong,.record-track small{display:block}.record-track strong{font-size:13px;color:#d9effd}.record-track small{margin-top:3px;color:#607988;font-size:9px}.record-value-card{display:block;width:100%;min-width:225px;padding:10px 11px;border:1px solid rgba(52,91,113,.26);background:rgba(22,56,73,.08);color:inherit;text-align:left;font:inherit;cursor:pointer}.record-value-card:hover{border-color:#4c7c99;background:rgba(40,91,117,.15)}.record-value-card>strong{display:block;color:#fff;font-size:17px}.record-value-card>strong small{display:inline;font-size:9px;color:#8ca1ae;margin-left:2px}.record-speed{color:#ffc08f!important}.record-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:7px;font-size:9px;color:#79909f}.record-meta .racer-name{color:#a8d5ef}.direction-flag{display:inline-flex;align-items:center;gap:4px;padding:2px 5px;border:1px solid #3f6379;background:rgba(34,77,101,.18);color:#99d5f7;font-size:8px;font-weight:900;letter-spacing:.06em}.direction-flag i{font-style:normal}.direction-flag.dir-1,.direction-flag.dir-3{border-color:#98603e;color:#efad7d;background:rgba(121,61,31,.16)}.direction-flag.dir-2,.direction-flag.dir-3{box-shadow:inset 0 -2px 0 rgba(255,255,255,.12)}.record-empty{font-size:20px;color:#485d69;padding:12px}.record-footnote{color:#6f8592;font-size:10px;line-height:1.5;margin:9px 2px 20px}
@media(max-width:800px){.record-control-row{align-items:stretch;flex-direction:column}.record-direction-filter{width:100%;min-width:0}.record-class-tabs{display:grid;grid-template-columns:repeat(3,1fr)}.record-class-tab{padding:8px}.records-table{min-width:930px}}


/* ==========================================================================
   v0.17.8 centered public title/probe + Daily schedule + command reference
   ========================================================================== */
.public-header{display:grid!important;grid-template-columns:minmax(180px,1fr) minmax(360px,auto) minmax(180px,1fr)!important;align-items:center!important;gap:18px!important}.header-logo{justify-self:start}.header-logo img{display:block;max-width:210px;height:auto}.public-title-center{grid-column:2;justify-self:center;text-align:center}.public-title-center .eyebrow{display:block;text-align:center}.public-title-center h1{text-align:center!important;margin-left:auto!important;margin-right:auto!important}.public-header .header-actions{grid-column:3;justify-self:end}.centered-probe-strip{display:grid!important;grid-template-columns:1fr minmax(220px,300px) 1fr!important;align-items:center!important;gap:24px!important}.hero-server-block{justify-self:start;min-width:0}.centered-race-state{justify-self:center!important;width:100%!important;max-width:300px!important;margin:0!important}.hero-online-block{justify-self:end}.command-help{margin-top:14px}.command-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:12px}.command-grid>div{padding:9px 11px;background:rgba(35,78,102,.11);border-left:2px solid #356985}.command-grid code{display:block;color:#d9effd;font-size:11px;overflow-wrap:anywhere}.command-grid span{display:block;color:var(--muted);font-size:9px;margin-top:4px}.command-values{margin-top:10px;border:1px solid rgba(62,98,118,.28);padding:8px 10px}.command-values summary{cursor:pointer;color:var(--cyan);font-size:11px;font-weight:900}.command-value-list{color:var(--muted);font-size:10px;line-height:1.6;margin-top:8px}.protected-schedule{border-color:rgba(177,112,66,.5)!important;background:rgba(116,60,29,.08)!important}.protected-schedule select:disabled{opacity:.82;color:#d8c5b7}.locked-profile{display:block;color:#c98e63;font-size:9px;margin-top:4px;text-transform:uppercase;letter-spacing:.07em}.admin-footer{text-align:center;color:#607988;font-size:10px;padding:22px 12px 28px}.admin-footer span{color:#9e6e4c}
@media(max-width:900px){.public-header{grid-template-columns:1fr auto!important}.header-logo{display:none}.public-title-center{grid-column:1;text-align:center;justify-self:center}.public-title-center .eyebrow,.public-title-center h1{text-align:center!important}.public-header .header-actions{grid-column:2}.centered-probe-strip{grid-template-columns:1fr auto!important}.hero-server-block{grid-column:1}.hero-online-block{grid-column:2}.centered-race-state{grid-column:1/-1;grid-row:2;max-width:420px!important;justify-self:center!important}.command-grid{grid-template-columns:1fr}}@media(max-width:560px){.public-header{grid-template-columns:1fr!important}.public-title-center{grid-column:1}.public-header .header-actions{grid-column:1;justify-self:center}.centered-probe-strip{grid-template-columns:1fr!important}.hero-server-block,.hero-online-block,.centered-race-state{grid-column:1;justify-self:center!important;text-align:center}.hero-online-block{grid-row:3}}


/* ==========================================================================
   v0.17.8 — Hot Pursuit Dispatch Center / centered Administrator Access
   ========================================================================== */
.dispatch-login-stage{
  min-height:100vh!important;
  width:100%!important;
  display:grid!important;
  place-items:center!important;
  padding:28px 18px!important;
  box-sizing:border-box;
}
.dispatch-login-card{
  width:min(650px,100%)!important;
  max-width:650px!important;
  margin:0 auto!important;
  padding:28px 38px 32px!important;
  text-align:center!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
}
.dispatch-login-brand{
  width:100%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
}
.dispatch-login-brand .login-logo{
  display:block;
  width:min(400px,90%);
  max-width:400px!important;
  height:auto;
  margin:0 auto 12px!important;
}
.dispatch-kicker{
  display:block;
  color:var(--orange);
  font-size:12px;
  font-weight:900;
  letter-spacing:.32em;
  text-transform:uppercase;
  margin-top:4px;
}
.dispatch-name{
  display:block;
  color:#dff2fe;
  font-size:18px;
  font-weight:900;
  letter-spacing:.27em;
  text-transform:uppercase;
  margin-top:7px;
}
.dispatch-login-brand h1{
  width:100%;
  margin:22px auto 5px!important;
  text-align:center!important;
  font-size:clamp(34px,5.4vw,55px)!important;
  line-height:1!important;
  font-style:italic;
  letter-spacing:.045em;
}
.dispatch-subtitle{
  display:block;
  margin:8px auto 0;
  color:#688393;
  font-size:9px;
  font-weight:900;
  letter-spacing:.22em;
  text-transform:uppercase;
}
.dispatch-login-brand::after{
  content:"";
  display:block;
  width:min(500px,88%);
  height:1px;
  margin:18px auto 0;
  background:linear-gradient(90deg,transparent,#2b6382 18%,#c36d3d 50%,#2b6382 82%,transparent);
}
.dispatch-login-copy{
  width:100%;
  max-width:500px;
  margin:18px auto 14px!important;
  text-align:center!important;
}
.dispatch-login-form{
  width:100%;
  max-width:460px;
  margin:0 auto!important;
  text-align:left!important;
}
.dispatch-login-card .form-error,
.dispatch-login-card .text-link{
  width:100%;
  max-width:460px;
  margin-left:auto!important;
  margin-right:auto!important;
}
.dispatch-login-card .text-link{
  text-align:center!important;
  margin-top:14px!important;
}

/* Center visible admin branding as well. */
.admin-app .top-shell .brand{
  flex:1;
  justify-content:center!important;
  text-align:center!important;
}
.admin-app .top-shell .brand > div{
  text-align:center!important;
}
.admin-app .top-shell .brand h1,
.admin-app .top-shell .brand .eyebrow{
  text-align:center!important;
}
.admin-footer{
  text-align:center!important;
}

@media(max-width:650px){
  .dispatch-login-stage{padding:16px 10px!important}
  .dispatch-login-card{padding:20px 16px 24px!important}
  .dispatch-kicker{letter-spacing:.22em}
  .dispatch-name{font-size:15px;letter-spacing:.18em}
  .dispatch-login-brand h1{font-size:clamp(30px,9vw,43px)!important}
}


/* ==========================================================================
   v0.17.8 — Admin Login Hotfix
   Restore the known-working login DOM; presentation only is overridden here.
   ========================================================================== */
#loginView.login-stage{
  min-height:100vh!important;
  width:100%!important;
  display:grid!important;
  place-items:center!important;
  padding:24px!important;
}
#loginView .login-card{
  width:min(560px,94vw)!important;
  margin:0 auto!important;
  padding:34px!important;
  text-align:center!important;
  display:block!important;
}
#loginView .login-logo{
  display:block!important;
  width:min(360px,90%)!important;
  height:auto!important;
  margin:0 auto 18px!important;
}
#loginView .login-brand-kicker{
  display:block!important;
  width:100%!important;
  text-align:center!important;
  margin:0 auto 8px!important;
}
#loginView .login-card h1{
  width:100%!important;
  text-align:center!important;
  margin:8px auto 10px!important;
}
#loginView .login-card > p{
  text-align:center!important;
  margin-left:auto!important;
  margin-right:auto!important;
}
#loginView #loginForm{
  width:100%!important;
  max-width:470px!important;
  margin:22px auto!important;
  text-align:left!important;
}
#loginView #loginSubmit{
  width:100%!important;
}
#loginView .form-error{
  width:100%!important;
  max-width:470px!important;
  margin:0 auto!important;
  text-align:center!important;
}
#loginView .login-client-state{
  margin:5px auto 12px;
  color:#5e7888;
  font-size:9px;
  font-weight:900;
  letter-spacing:.14em;
  text-align:center;
}
#loginView .text-link{
  display:inline-block!important;
  margin:4px auto 0!important;
}


/* ==========================================================================
   v0.17.8 — Admin successful-login visibility hotfix
   The centered login stage must yield to the application's hidden state.
   ========================================================================== */
#loginView.login-stage.hidden{
  display:none!important;
}
#adminView.admin-app.hidden{
  display:none!important;
}
#adminView.admin-app:not(.hidden){
  display:block;
}


/* ==========================================================================
   v0.17.8 — OpenSpy administration / remote logs / connection guide
   ========================================================================== */
.openspy-admin-grid{align-items:start}
.openspy-actions{margin-top:12px;flex-wrap:wrap}
.openspy-source-note{margin-top:12px;line-height:1.55}
.external-tool-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:12px}
.external-tool-links a{display:block;padding:9px 10px;border:1px solid rgba(73,112,132,.35);background:rgba(31,70,91,.12);color:#8fd3f4;font-size:10px;font-weight:800;text-decoration:none}
.external-tool-links a:hover{border-color:#5d91ad;background:rgba(47,99,126,.2)}
.openspy-summary{display:flex;align-items:center;gap:12px;padding:10px 0 13px;border-bottom:1px solid rgba(62,99,118,.28)}
.openspy-summary p{margin:0;color:var(--muted);font-size:10px;line-height:1.45}
.openspy-checks{display:grid;gap:7px;margin-top:12px}
.openspy-check{display:grid;grid-template-columns:64px 1fr;gap:10px;align-items:start;padding:9px 10px;border:1px solid rgba(67,99,115,.3);background:rgba(14,35,46,.26)}
.openspy-check-state{font-size:9px;font-weight:900;letter-spacing:.09em;text-align:center;padding:4px 5px;border:1px solid currentColor}
.openspy-check.pass{border-left:3px solid #4ca675}.openspy-check.pass .openspy-check-state{color:#79d6a0}
.openspy-check.fail{border-left:3px solid #b95e48}.openspy-check.fail .openspy-check-state{color:#ef8d75}
.openspy-check.warn{border-left:3px solid #b89345}.openspy-check.warn .openspy-check-state{color:#e1c176}
.openspy-check strong,.openspy-check span{display:block}
.openspy-check strong{font-size:11px;color:#dcedf5}
.openspy-check span{margin-top:3px;color:#7e98a6;font-size:9px;line-height:1.45;overflow-wrap:anywhere}
.openspy-public-listing{margin-top:12px;padding:10px 11px;border:1px solid rgba(190,132,70,.38);background:rgba(135,77,35,.09)}
.openspy-public-listing strong,.openspy-public-listing span{display:block}
.openspy-public-listing strong{color:#efad76;font-size:10px;letter-spacing:.08em}
.openspy-public-listing span{color:var(--muted);font-size:9px;line-height:1.5;margin-top:5px}
.port-check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:10px 0 12px}
.port-check-grid>div{padding:11px;border:1px solid rgba(61,101,121,.35);background:rgba(26,60,78,.11)}
.port-check-grid strong,.port-check-grid code{display:block}
.port-check-grid strong{font-size:9px;color:#df8851;letter-spacing:.08em}
.port-check-grid code{margin-top:5px;color:#d8edf7;font-size:11px;overflow-wrap:anywhere}
.tool-command-list{display:grid;gap:8px}
.tool-command-list>div{padding:10px 11px;border-left:2px solid #3e7998;background:rgba(34,78,101,.10)}
.tool-command-list code,.tool-command-list span{display:block}
.tool-command-list code{color:#cfeaf8;font-size:10px;overflow-wrap:anywhere}
.tool-command-list span{color:var(--muted);font-size:9px;margin-top:4px}
.log-toolbar{display:grid;grid-template-columns:minmax(180px,1.5fr) 110px minmax(170px,1fr) auto auto;gap:10px;align-items:end}
.log-view-panel{padding:0!important;overflow:hidden}
.log-meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:10px 13px;border-bottom:1px solid rgba(65,99,116,.35);background:rgba(18,42,54,.55)}
.log-meta strong{color:#dceef7;font-size:11px}.log-meta span{color:#6f8997;font-size:9px;overflow-wrap:anywhere}
#logUpdated{margin-left:auto}
.admin-log-viewer{height:min(62vh,650px);min-height:340px;overflow:auto;margin:0;padding:14px 15px;background:#050d12;color:#b8d1dc;font:10px/1.5 Consolas,'Courier New',monospace;white-space:pre-wrap;word-break:break-word;tab-size:4}
.openspy-guide{margin-top:18px}
.openspy-guide h3{font-size:20px;margin:3px 0 7px}
.openspy-guide-lead{max-width:920px;color:#829aa8;line-height:1.6}
.connect-steps{counter-reset:connectstep;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:14px}
.connect-step{counter-increment:connectstep;position:relative;padding:13px 14px 13px 46px;border:1px solid rgba(58,98,119,.36);background:rgba(22,54,69,.11)}
.connect-step::before{content:counter(connectstep);position:absolute;left:12px;top:12px;width:23px;height:23px;display:grid;place-items:center;background:#9c4d27;color:#fff;font-size:10px;font-weight:900}
.connect-step strong,.connect-step span{display:block}.connect-step strong{color:#d9edf7;font-size:11px}.connect-step span{color:#8299a6;font-size:9.5px;line-height:1.5;margin-top:4px}
.connect-step code{color:#ffc093}
.openspy-guide-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px}
.openspy-guide-links a{padding:8px 10px;border:1px solid rgba(70,111,132,.4);color:#8ed2f3;text-decoration:none;font-size:9px;font-weight:900}
.openspy-guide-warning{margin-top:13px;padding:11px;border-left:3px solid #cf7844;background:rgba(113,59,29,.12);color:#9cafb9;font-size:9.5px;line-height:1.55}
.car-card.car-class-1{border-color:#d45454}.car-card.car-class-1 .car-stripe{background:linear-gradient(90deg,#ff5757,#8e2929,transparent)}.car-card.car-class-2{border-color:#d78339}.car-card.car-class-2 .car-stripe{background:linear-gradient(90deg,#ffad52,#8d4d1c,transparent)}.car-card.car-class-3{border-color:#d2bb43}.car-card.car-class-3 .car-stripe{background:linear-gradient(90deg,#ffe267,#857122,transparent)}.car-card.car-class-4{border-color:#4aaed1}.car-card.car-class-4 .car-stripe{background:linear-gradient(90deg,#64d3f5,#246681,transparent)}.car-card.car-class-5{border-color:#55b979}.car-card.car-class-5 .car-stripe{background:linear-gradient(90deg,#70e99c,#286d42,transparent)}
.racer-history-link{appearance:none;border:0;background:transparent;color:inherit;padding:0;text-align:left;cursor:pointer;font:inherit}.racer-history-link:hover{color:var(--orange)}.racer-history-link small{color:var(--cyan)!important}.racer-recent-list{display:grid;gap:9px}.racer-recent-race{display:grid;grid-template-columns:1fr 130px 130px;gap:14px;align-items:center;width:100%;padding:14px;border:1px solid rgba(66,104,125,.42);border-left:3px solid var(--blue);background:rgba(28,65,85,.18);color:var(--white);text-align:left;cursor:pointer}.racer-recent-race:hover{background:rgba(49,112,150,.24);border-left-color:var(--orange)}.racer-recent-race span,.racer-recent-race strong,.racer-recent-race small{display:block}.racer-recent-race small{color:var(--muted);margin-top:4px}
.auto-flag-settings{margin-bottom:16px}.auto-speed-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:16px 0}.auto-flag-settings .hp-table input{min-width:105px;padding:9px}.auto-flag-settings .table-wrap{max-height:520px}
@media(max-width:900px){.log-toolbar{grid-template-columns:1fr 120px}.log-toolbar .toggle-row{grid-column:1/-1}.port-check-grid{grid-template-columns:1fr}.connect-steps{grid-template-columns:1fr}}
@media(max-width:600px){.external-tool-links{grid-template-columns:1fr}.log-toolbar{grid-template-columns:1fr}.log-toolbar>*{grid-column:1!important}.admin-log-viewer{min-height:300px;height:55vh}.auto-speed-grid{grid-template-columns:1fr 1fr}}
.connected-racer-link{width:100%;border-top:0;border-right:0;border-bottom:0;color:inherit;text-align:left;font:inherit;cursor:pointer}.connected-racer-link:hover{background:rgba(49,112,150,.28)}
