:root{color:#11181c;background:#f4f6f8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}.app-shell{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:100vh}.sidebar{background:#0f1720;color:#fff;display:flex;flex-direction:column;gap:28px;height:100vh;overflow-y:auto;padding:28px;position:sticky;top:0}.sidebar h1{font-size:28px;line-height:1.1;margin:6px 0 0}.sidebar-header{align-items:start;display:flex;gap:16px;justify-content:space-between}.mobile-menu-toggle{display:none}.eyebrow{color:#6b7280;font-size:12px;font-weight:700;letter-spacing:0;margin:0;text-transform:uppercase}.sidebar .eyebrow{color:#8bb6c7}.nav{display:grid;gap:8px}.nav-button{background:transparent;border:1px solid rgba(255,255,255,.14);border-radius:8px;color:#d8e2e8;cursor:pointer;min-height:42px;padding:10px 12px;text-align:left}.nav-button.active,.nav-button:hover{background:#163546;border-color:#2b83a5;color:#fff}.server-footer{display:grid;gap:10px;margin-top:auto}.sidebar-action{width:100%}.server-chip{align-items:center;background:#ffffff14;border-radius:8px;display:flex;gap:10px;padding:12px}.server-chip strong,.server-chip span{display:block}.server-chip span{color:#b8c4cc;font-size:13px}.status-dot{background:#94a3b8;border-radius:999px;height:10px;width:10px}.status-dot.online{background:#16a34a}.main{align-content:start;display:grid;gap:18px;padding:26px}.section-header,.car-card-header,.session-title{align-items:center;display:flex;gap:16px;justify-content:space-between}.section-header p{color:#6b7280;margin:4px 0 0}.content-stack{align-content:start;display:grid;gap:16px}.content-stack.users-view{min-height:calc(100vh - 52px);grid-template-rows:auto 1fr}.content-stack.cars-view{min-height:calc(100vh - 52px)}.content-stack.presets-view{min-height:calc(100vh - 52px);grid-template-rows:auto 1fr}.panel,.car-card,.progress,.notice{background:#fff;border:1px solid #d7dde3;border-radius:8px;padding:16px}.panel h3,.section-header h2{margin:0}.panel-heading{align-items:center;display:flex;justify-content:space-between;margin-bottom:14px}.add-car-panel{padding:18px}.add-car-form{align-items:start;display:grid;gap:12px;grid-template-columns:minmax(260px,1.5fr) minmax(190px,1fr) 140px auto}.model-control{display:grid;gap:8px;min-width:0}.form-grid{align-items:start;display:grid;gap:12px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.field{align-content:start;display:grid;gap:6px}.field span,.toggle-line,.switch-line{color:#334155;font-weight:700}input,select{background:#f8fafc;border:1px solid #cbd5e1;border-radius:6px;color:#11181c;min-height:42px;padding:8px 10px;width:100%}.button{border:0;border-radius:6px;cursor:pointer;font-weight:700;min-height:40px;padding:9px 14px}.button.primary{background:#0a7ea4;color:#fff}.button.secondary{background:#e7eef2;color:#0f3d4b}.button.danger{background:#fee2e2;color:#991b1b}.button.ghost{background:#ffffff14;color:#d8e2e8}.icon-button{align-items:center;background:#e7eef2;border:0;border-radius:6px;color:#0f3d4b;cursor:pointer;display:inline-flex;font-weight:700;height:34px;justify-content:center;min-width:34px;padding:0 9px}.icon-button:disabled{cursor:default;opacity:.6}.button:disabled{cursor:default;opacity:.6}.add-button{align-self:start;margin-top:28px;min-width:110px}.preset-row{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.preset-editor,.user-editor{display:grid;gap:16px}.preset-cars-list{display:grid;gap:10px}.preset-car-row{align-items:start;display:grid;gap:12px;grid-template-columns:minmax(220px,1fr) minmax(180px,1fr) 130px auto}.preset-actions{display:flex;flex-wrap:wrap;gap:10px}.row-button{margin-top:28px}.dashboard-grid{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr))}.dashboard-grid.two-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-card{background:#fff;border:1px solid #d7dde3;border-radius:8px;display:grid;gap:6px;padding:16px}.dashboard-card span,.dashboard-list dt{color:#64748b;font-size:13px;font-weight:700}.dashboard-card strong{color:#11181c;font-size:26px;line-height:1.1}.dashboard-card p{color:#64748b;margin:0}.dashboard-panel{display:grid;gap:14px}.dashboard-list{display:grid;gap:10px;margin:0}.dashboard-list div{align-items:center;border-bottom:1px solid #e2e8f0;display:flex;gap:12px;justify-content:space-between;padding-bottom:10px}.dashboard-list div:last-child{border-bottom:0;padding-bottom:0}.dashboard-list dd{color:#11181c;font-weight:700;margin:0;text-align:right}.session-summary-grid{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.session-summary{background:#f8fafc;border:1px solid #d7dde3;border-radius:8px;display:grid;gap:4px;padding:12px}.session-summary span{color:#64748b}.dashboard-chip-list{display:flex;flex-wrap:wrap;gap:8px}.dashboard-chip-list span{background:#e7eef2;border-radius:6px;color:#0f3d4b;font-weight:700;padding:7px 9px}.table-list{display:grid;gap:0;overflow-x:auto}.table-row{align-items:center;background:transparent;border:0;border-bottom:1px solid #e2e8f0;color:#11181c;display:grid;gap:12px;grid-template-columns:1fr 1.4fr 140px;min-width:620px;padding:12px 0;text-align:left}.table-row:last-child{border-bottom:0}.table-list>.table-row:not(.table-head):nth-child(odd){background:#f8fafc}.table-head{color:#64748b;font-size:13px;font-weight:700;padding-top:0}.table-button{cursor:pointer;font:inherit;width:100%}.table-button:hover{color:#0f3d4b}.logs-table .table-row{grid-template-columns:180px 140px 170px minmax(260px,1fr);min-width:860px}.users-table .table-row{grid-template-columns:46px 1fr 1.4fr 140px;min-width:720px}.cars-table .table-row{grid-template-columns:46px 1.4fr 1.2fr 120px;min-width:680px}.presets-table .table-row{grid-template-columns:46px 1.4fr 120px 120px;min-width:680px}.cars-list-panel{align-content:start;min-height:calc(100vh - 430px)}.cars-list-panel .table-list{align-content:start;overflow:visible}.users-list-panel{align-content:start;min-height:100%}.users-list-panel .table-list{align-content:start;overflow:visible}.presets-list-panel{align-content:start;min-height:100%}.presets-list-panel .table-list{align-content:start;overflow:visible}.row-actions{display:flex;justify-content:flex-start;position:relative}.actions-menu{background:#fff;border:1px solid #d7dde3;border-radius:8px;box-shadow:0 12px 28px #0f172024;display:grid;min-width:150px;overflow:hidden;position:absolute;right:0;top:40px;z-index:10}.actions-menu button{background:transparent;border:0;color:#11181c;cursor:pointer;padding:10px 12px;text-align:left}.actions-menu button:hover{background:#f1f5f9}.actions-menu button:disabled{color:#94a3b8;cursor:default}.actions-menu button:disabled:hover{background:transparent}.drawer-backdrop{background:#0f172061;inset:0;position:fixed;z-index:30}.drawer{background:#fff;box-shadow:-18px 0 45px #0f172033;display:grid;grid-template-rows:auto 1fr auto;height:100%;margin-left:auto;max-width:min(440px,100vw);width:100%}.drawer.wide-drawer{max-width:min(760px,100vw)}.drawer-header{align-items:start;border-bottom:1px solid #d7dde3;display:flex;justify-content:space-between;padding:20px}.drawer-header h3{margin:4px 0 0}.drawer-body{align-content:start;display:grid;gap:14px;overflow-y:auto;padding:20px}.drawer-actions{border-top:1px solid #d7dde3;display:flex;gap:10px;justify-content:flex-end;padding:16px 20px}.folder-dropzone{align-items:start;background:#f8fafc;border:1px dashed #94a3b8;border-radius:8px;color:#475569;display:grid;gap:6px;min-height:128px;padding:16px}.folder-dropzone.dragging{background:#e7f4f8;border-color:#0a7ea4;color:#0f3d4b}.folder-dropzone strong{color:#334155}.folder-picker-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}.folder-picker-input{display:none}.import-loader{align-items:center;color:#0f3d4b;display:flex;gap:10px;margin-top:8px}.loader-dot{animation:loader-spin .8s linear infinite;border:3px solid #cbd5e1;border-top-color:#0a7ea4;border-radius:999px;height:20px;width:20px}@keyframes loader-spin{to{transform:rotate(360deg)}}.imported-cars{border-top:1px solid #d7dde3;display:grid;gap:0;margin-top:10px;padding-top:12px;width:100%}.imported-car-row{align-items:end;border-bottom:1px solid #d7dde3;display:grid;gap:12px;grid-template-columns:minmax(200px,1fr) minmax(220px,1fr) auto;padding:12px 0}.imported-car-row:first-child{padding-top:0}.imported-car-model{display:grid;gap:6px}.imported-car-model span{color:#334155;font-weight:700}.imported-delete-button{min-width:96px}.imported-car-row>span{color:#64748b;min-height:42px;padding:10px 0}.card-list{display:grid;gap:10px}.car-card{display:grid;gap:14px}.text-button{background:none;border:0;color:inherit;cursor:pointer;display:grid;gap:4px;padding:0;text-align:left}.text-button span{color:#6b7280}.toggle-line{align-items:center;display:flex;gap:8px}.toggle-line input,.switch-line input{min-height:auto;width:auto}.switch-line{align-items:center;background:#f8fafc;border:1px solid #d7dde3;border-radius:6px;display:flex;gap:9px;min-height:42px;padding:8px 12px;white-space:nowrap}.switch-line.compact{background:transparent;border:0;min-height:auto;padding:0}.race-grid{display:grid;gap:14px;grid-template-columns:repeat(3,minmax(0,1fr))}.progress,.notice{color:#475569}.notice{align-items:center;background:#fff7ed;border-color:#fed7aa;color:#9a3412;display:flex;gap:12px;justify-content:space-between}.notice strong{color:#7c2d12}.notice span{color:#9a3412}.toast{background:#0f1720;border-radius:8px;bottom:24px;box-shadow:0 12px 30px #0f172038;color:#fff;font-weight:700;padding:14px 16px;position:fixed;right:24px;z-index:20}.auth-screen{align-items:center;background:#0f1720;display:grid;min-height:100vh;padding:24px;place-items:center}.auth-card{background:#fff;border-radius:8px;box-shadow:0 20px 60px #00000038;display:grid;gap:16px;max-width:420px;padding:28px;width:100%}.auth-card h1,.auth-card p{margin:0}.auth-error{color:#991b1b;font-weight:700}@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{gap:14px;height:auto;overflow:visible;padding:16px;position:sticky;top:0;z-index:25}.sidebar h1{font-size:20px;margin-top:3px}.sidebar-header{align-items:center}.mobile-menu-toggle{display:inline-flex;min-height:38px;white-space:nowrap}.sidebar:not(.mobile-open) .nav,.sidebar:not(.mobile-open) .server-footer{display:none}.nav{grid-template-columns:repeat(2,minmax(0,1fr))}.server-footer{margin-top:0}.main{padding:18px}.section-header{gap:12px}.dashboard-grid,.dashboard-grid.two-columns,.form-grid.four,.form-grid.three,.form-grid.two,.add-car-form,.imported-car-row,.preset-car-row,.race-grid,.session-summary-grid{grid-template-columns:1fr}.row-button{margin-top:0}.section-header,.car-card-header,.notice{align-items:stretch;flex-direction:column}.actions-menu{left:0;right:auto;min-width:170px}.users-table .table-head,.cars-table .table-head,.presets-table .table-head{display:none}.users-table .table-row,.cars-table .table-row,.presets-table .table-row{align-items:start;gap:4px 10px;grid-template-columns:38px minmax(0,1fr);min-width:0;padding:12px 0}.users-table .row-actions,.cars-table .row-actions,.presets-table .row-actions{grid-row:1 / span 3}.users-table .table-row>span,.cars-table .table-row>span,.presets-table .table-row>span{min-width:0;overflow-wrap:anywhere}.users-table .table-row>span:first-of-type,.cars-table .table-row>span:first-of-type,.presets-table .table-row>span:first-of-type{font-weight:700}.toast{bottom:14px;left:14px;right:14px}}
