/* DFD ONE · shared design system · WEB 12.47.0
   Loaded after module styles. State colours and access controls remain authoritative. */
:root {
  color-scheme: dark;
  --dfd-bg:#090b10; --dfd-surface:#12161e; --dfd-inset:#0d1118;
  --dfd-border:#2b323e; --dfd-text:#f4f6fa; --dfd-muted:#a8b3c3;
  --dfd-red:#e52335; --dfd-focus:#88caff; --dfd-radius:14px;
  --dfd-font:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --dfd-width:1440px; --dfd-gap:20px;
}
html {scroll-padding-top:24px; scrollbar-color:#515e71 var(--dfd-bg)}
body.dfd-site {
  --red:var(--dfd-red); --bg:var(--dfd-bg); --bg2:var(--dfd-surface); --bg3:#191f29;
  --bg4:#252e3c; --panel:var(--dfd-surface); --line:var(--dfd-border);
  --border:var(--dfd-border); --border2:#3b4656; --text:var(--dfd-text);
  --text2:#c2cbd8; --text3:var(--dfd-muted); --muted:var(--dfd-muted);
  margin:0; color:var(--dfd-text); min-height:100vh;
  background:radial-gradient(ellipse 900px 340px at 75% 0,rgba(229,35,53,.07),transparent 75%),var(--dfd-bg);
  font:400 15px/1.6 var(--dfd-font); -webkit-font-smoothing:antialiased;
}
.dfd-site *, .dfd-site *::before, .dfd-site *::after {box-sizing:border-box}
.dfd-site [hidden] {display:none!important}
body.dfd-site :is(h1,h2,h3,h4,p) {overflow-wrap:break-word}
body.dfd-site :is(button,input,select,textarea) {font-family:var(--dfd-font)}
body.dfd-site :is(button,a,input,select,textarea,summary,[tabindex]):focus-visible {outline:3px solid var(--dfd-focus);outline-offset:3px}
body.dfd-site :is(a,button,input,select,textarea) {touch-action:manipulation}
body.dfd-site :is(button,.btn,.btn-primary,.btn-secondary,.nav-cta) {border-radius:8px;min-height:44px;line-height:1.35;letter-spacing:.01em;text-shadow:none}
body.dfd-site :is(button,.btn) {font-size:.875rem}
.dfd-site button:disabled {opacity:.45;cursor:not-allowed}
body.dfd-site :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea) {
  min-width:0;max-width:100%;min-height:44px;background:var(--dfd-inset);border:1px solid #465268;
  border-radius:8px;padding:11px 13px;color:var(--dfd-text);font-size:1rem;line-height:1.5;
}
body.dfd-site :is(input[type=checkbox],input[type=radio]) {accent-color:var(--dfd-red);width:18px;height:18px;flex-shrink:0}
.dfd-site input::placeholder,.dfd-site textarea::placeholder {color:#94a2b5;opacity:1}
body.dfd-site :is(label,summary) {line-height:1.5}
.dfd-site textarea {resize:vertical}
.dfd-site .muted {color:var(--dfd-muted)}
body.dfd-site :is(table,code,pre) {font-variant-numeric:tabular-nums}
body.dfd-site :is(.table-wrap,.table-scroll) {max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;border-radius:10px}
body.dfd-site :is(th,td) {border-color:var(--dfd-border)}
body.dfd-site :is(th) {color:var(--dfd-muted);font-size:.75rem;font-weight:650;letter-spacing:.02em}
body.dfd-site :is(td) {font-size:.875rem}
.dfd-site .dfd-skip {position:fixed;left:16px;top:-100px;z-index:10000;padding:12px 18px;background:#fff;color:#10141b;border-radius:8px;font-weight:700}
.dfd-site .dfd-skip:focus {top:12px}
.dfd-site #dfd-content {scroll-margin-top:20px}
.dfd-site #dfd-content:focus:not(:focus-visible) {outline:none}

/* One frame for the complete authenticated portal and its public demo. */
body.dfd-portal :is(main,main.wide,.dash) {width:calc(100% - 64px);max-width:var(--dfd-width);margin:0 auto;padding:28px 0 64px}
.dfd-portal .dash {gap:20px}
body.dfd-portal :is(h1,.security-page h1,.race-page h1,.fleet-head h1,.care-head h1) {font-family:var(--dfd-font);font-size:clamp(1.55rem,2.6vw,2.25rem);font-weight:750;line-height:1.2;letter-spacing:-.035em}
body.dfd-portal :is(h2,.security-page h2) {font-family:var(--dfd-font);font-size:1.15rem;font-weight:700;line-height:1.35;letter-spacing:-.02em}
body.dfd-portal :is(h3) {font-family:var(--dfd-font);font-size:1rem;line-height:1.4}
body.dfd-portal :is(.page-head,.security-head,.race-head,.fleet-head,.care-head,.passport-head,.vehicle-toolbar) {margin:24px 0;gap:20px}
body.dfd-portal :is(.eyebrow,.vehicle-eyebrow) {font:700 .7rem/1.6 var(--dfd-font);letter-spacing:.1em}
body.dfd-portal :is(.panel,.vehicle-card,.fleet-card,.care-panel,.care-card,.meet-panel,.race-panel,.track-panel) {
  border:1px solid var(--dfd-border);border-radius:var(--dfd-radius);background:var(--dfd-surface);box-shadow:none;
}
.dfd-portal .panel {padding:24px;margin:20px 0}
body.dfd-portal :is(.panel-title,.vehicle-card-head) {margin-bottom:18px;gap:16px}
body.dfd-portal :is(.vehicle-grid,.fleet-grid,.care-grid,.security-checks,.race-grid,.two-col) {gap:20px}
body.dfd-portal :is(.metric,.stat,.vehicle-kpis>article,.vehicle-kpi,.fleet-kpi,.security-kpi,.race-kpi,.service-totals>div) {
  border:1px solid var(--dfd-border);border-radius:12px;background:var(--dfd-inset);padding:18px;min-width:0;box-shadow:none;
}
body.dfd-portal :is(.metric strong,.stat strong,.vehicle-kpi strong,.fleet-kpi strong,.security-kpi strong) {
  font-family:var(--dfd-font);font-size:clamp(1.65rem,2.8vw,2.1rem);line-height:1.25;font-weight:750;letter-spacing:-.04em;font-variant-numeric:tabular-nums;
}
.dfd-portal .security-kpi.good,.dfd-portal .stat.good {border-top:3px solid var(--green)}
.dfd-portal .security-kpi.warn,.dfd-portal .stat.warn {border-top:3px solid var(--amber)}
body.dfd-portal :is(.security-check,.empty-state,.vehicle-note,.vehicle-empty,.care-empty) {border-radius:10px;background:var(--dfd-inset)}
body.dfd-portal :is(.security-badge,.ops-badge,.vehicle-badge,.fleet-badge,.care-badge) {border-radius:6px;font-family:var(--dfd-font);font-size:.75rem;line-height:1.5;letter-spacing:.01em}
body.dfd-portal :is(.security-message,.vehicle-message,.care-message,.conn-banner,.alert-banner) {border-radius:10px;line-height:1.6}
body.dfd-portal :is(dialog,.credential-dialog,.security-dialog,.care-dialog) {border-radius:16px;border-color:var(--dfd-border);max-width:min(620px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto}
body.dfd-portal :is(dialog)::backdrop {background:#000b;backdrop-filter:blur(5px)}
body.dfd-portal :is(.security-tabs,.tabbar) {display:flex;flex-wrap:nowrap;gap:4px;padding:5px;border:1px solid var(--dfd-border);border-radius:12px;background:var(--dfd-inset);max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;align-items:stretch}
body.dfd-portal :is(.security-tabs button,.tabbar .tab) {flex:0 0 auto;margin:0;padding:11px 16px;border:1px solid transparent;min-height:44px;border-radius:7px;clip-path:none;background:transparent;color:var(--dfd-muted);font:600 .82rem/1.4 var(--dfd-font);letter-spacing:0;white-space:nowrap;box-shadow:none;text-shadow:none}
body.dfd-portal :is(.security-tabs button[aria-selected=true],.tabbar .tab.active) {background:#272e3a;color:#fff;box-shadow:inset 0 -2px var(--dfd-red)}
body.dfd-portal :is(.security-tabs button,.tabbar .tab):hover {background:#202733;color:#fff}
.dfd-portal .account-panel {max-width:600px}

/* Persistent vehicle identity: identical proportions in every vehicle section. */
.dfd-portal .dfd-unit-context {padding:12px 16px;margin:0 0 16px;border-radius:12px;background:var(--dfd-inset);border-color:var(--dfd-border);gap:16px}
.dfd-portal .dfd-unit-tabs {display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;padding:3px}
.dfd-portal .dfd-unit-tab {flex:0 0 auto;max-width:320px;padding:10px 14px;min-height:44px;border-radius:7px;line-height:1.5;background:#171e28;border-color:#394456;font-family:var(--dfd-font)}
.dfd-portal .dfd-unit-tab.active {background:#381923;border-color:#e85060;box-shadow:inset 0 -2px var(--dfd-red);color:#fff}
.dfd-portal .vehicle-shell {margin:0 0 24px;border-radius:14px;border:1px solid var(--dfd-border);background:var(--dfd-surface);overflow:hidden}
.dfd-portal .vehicle-identity {padding:20px 24px;display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:24px;border:0;border-radius:0;background:none;min-height:154px}
.dfd-portal .vehicle-identity-copy {min-width:0}
.dfd-portal .vehicle-identity :where(h1,h2) {font-size:1.75rem;line-height:1.2;margin:4px 0 8px;letter-spacing:-.03em}
.dfd-portal .vehicle-identity :where(p) {margin:4px 0;font-size:.8rem}
.dfd-portal .vehicle-identity .vehicle-eyebrow {font-size:.68rem;letter-spacing:.08em;color:#ff7d88}
.dfd-portal .vehicle-model {width:200px;flex:0 0 200px;max-width:200px;margin:0;align-self:center}
.dfd-portal .vehicle-model img {display:block;width:100%;height:104px;object-fit:contain;border-radius:8px}
.dfd-portal .vehicle-model figcaption {font-size:.66rem;line-height:1.4;color:var(--dfd-muted);text-align:center;margin-top:4px}
.dfd-portal .vehicle-sections {display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:flex-start;gap:2px;padding:0 16px;border:0;border-top:1px solid var(--dfd-border);border-radius:0;overflow-x:auto;scrollbar-width:thin;background:var(--dfd-inset)}
.dfd-portal .vehicle-sections a {display:flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:52px;padding:13px 14px;background:transparent;border:0;border-bottom:3px solid transparent;border-radius:0;color:var(--dfd-muted);font:600 .83rem/1.5 var(--dfd-font);white-space:nowrap;text-decoration:none}
.dfd-portal .vehicle-sections a[aria-current=page] {background:#1b202b;border-bottom-color:var(--dfd-red);color:#fff}
.dfd-portal .vehicle-sections a:hover {background:#202733;color:#fff}
.dfd-portal .vehicle-sections a:focus-visible {outline-offset:-4px}
.dfd-portal .vehicle-actions {gap:8px}
.dfd-portal .vehicle-actions a {border-radius:8px;font-size:.875rem;min-height:44px}

/* Telemetry retains its instruments, charts and controls inside the same shell. */
.dfd-telemetry .header {order:0;padding:0;margin:0;background:transparent;border:0;clip-path:none;box-shadow:none}
.dfd-telemetry .header::before,.dfd-telemetry .header::after {display:none}
.dfd-telemetry .header .brand,.dfd-telemetry .header .portal-language {display:none}
.dfd-telemetry .header .car-id {font:600 .8rem/1.5 var(--dfd-font);letter-spacing:.02em}
.dfd-telemetry .header .unit-status {font:500 .75rem/1.5 var(--dfd-font)}
.dfd-telemetry .header-actions {width:auto}
.dfd-telemetry .status-live {font:650 .75rem/1.4 var(--dfd-font);letter-spacing:.02em;border-radius:6px;clip-path:none}
.dfd-telemetry .telemetry-context-line {font-size:.75rem;color:var(--dfd-muted)}
.dfd-telemetry .telemetry-context-line:has(#secureLapStatus[hidden]) {display:none}
.dfd-telemetry .telemetry-context-line [data-portal-version] {display:none}
body.dfd-telemetry :is(.rec-panel,.metric-card,.gauge-panel,.session-panel,.map-panel,.chart-row,.alert-card,.pi-mini,.admin-card,.player,.stat-box,.rec-box,.sensor-card,.ride-card,.pi-metric,.sm-card,.rpm-box,.footer,.cam-stage) {clip-path:none;border:1px solid var(--dfd-border);border-radius:12px;background:var(--dfd-surface);box-shadow:none}
body.dfd-telemetry :is(.rec-panel,.metric-card,.gauge-panel,.session-panel,.map-panel,.chart-row,.alert-card,.pi-mini,.admin-card,.player,.stat-box,.rec-box,.sensor-card,.ride-card,.pi-metric,.sm-card,.rpm-box,.footer,.cam-stage)::before {display:none}
body.dfd-telemetry :is(button,.rec-btn,.sm-btn,.tab,.pi-btn,.cam-btn) {clip-path:none;border-radius:8px}
body.dfd-telemetry :is(.metric-label,.panel-title,.sensor-label,.stat-label,.sm-label,.pi-label,.chart-title,.rec-label,.gauge-label) {font-family:var(--dfd-font);font-size:.75rem;letter-spacing:.03em;color:var(--dfd-muted)}
body.dfd-telemetry :is(.metric-value,.metric-val,.stat-value,.stat-val,.gauge-val,.pi-val,.sm-val) {font-family:var(--dfd-font);font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.dfd-telemetry .tabbar .tab-home {display:none}
.dfd-telemetry .dfd-no-unit {display:block}

/* Public website: same brand, navigation rhythm, readable type and controls. */
.dfd-public > nav {background:rgba(9,11,16,.96);border-color:var(--dfd-border);padding:0 32px}
.dfd-public .nav-inner {max-width:var(--dfd-width);margin:auto;min-height:76px;height:auto;gap:22px}
.dfd-public .nav-logo img {height:32px!important;max-width:200px;object-fit:contain}
.dfd-public .nav-links {gap:20px}
.dfd-public .nav-links a {font:600 .78rem/1.5 var(--dfd-font);letter-spacing:.01em;text-transform:none}
.dfd-public .nav-links a.active {color:#ff7887}
body.dfd-public :is(.lang-switcher,.lang-switch) {border:1px solid var(--dfd-border);border-radius:8px;gap:2px;padding:3px;background:var(--dfd-inset)}
body.dfd-public :is(.lang-btn,.lang-switch button) {min-height:38px;padding:8px 10px;border:0;border-radius:5px;font:650 .7rem/1 var(--dfd-font);letter-spacing:0;color:var(--dfd-muted);margin:0}
body.dfd-public :is(.nav-cta,.btn-primary,.btn-secondary,.submit-btn) {font:650 .82rem/1.4 var(--dfd-font);letter-spacing:.01em;text-transform:none;display:inline-flex;align-items:center;justify-content:center}
body.dfd-public :is(.section-title,.step-title,h1,h2) {font-family:var(--dfd-font);letter-spacing:-.035em}
body.dfd-public :is(.section-sub,.hero-sub) {font-weight:400;letter-spacing:0}
body.dfd-public :is(.feature-card,.product-card,.shop-card,.info-card,.contact-form,.model-card,.option-card,.summary-card) {border-radius:12px}
body.dfd-public :is(.section-tag,.hero-tag,.step-label) {letter-spacing:.12em;font-size:.72rem}
.dfd-public .nav-burger {border:1px solid var(--dfd-border);border-radius:8px;min-width:44px;min-height:44px}
.dfd-standalone main {max-width:1000px;width:calc(100% - 48px);margin:auto;padding:32px 0 64px}
.dfd-login main {max-width:520px;padding-top:64px}
.dfd-login .brand {margin-bottom:28px;letter-spacing:.1em;font-weight:700}
.dfd-login .panel {padding:32px;background:var(--dfd-surface);border:1px solid var(--dfd-border);border-radius:16px;box-shadow:none}
.dfd-login h1 {font:750 1.9rem/1.2 var(--dfd-font);letter-spacing:-.03em}
.dfd-login .panel .eyebrow {font-size:.65rem;color:var(--dfd-muted)}
.dfd-login #f>button {width:100%;margin:20px 0 8px}
.dfd-login #f>.btn {width:100%;margin:0;text-align:center;background:#252d39}

@media(max-width:1050px) {
  body.dfd-portal :is(main,main.wide,.dash) {width:calc(100% - 40px)}
  .dfd-public > nav {padding:0 20px}
  .dfd-public .nav-links {gap:12px}
  .dfd-public .nav-logo img {max-width:165px}
  .dfd-public .nav-right {gap:8px}
}
@media(max-width:780px) {
  .dfd-site {--dfd-gap:14px}
  body.dfd-portal :is(main,main.wide,.dash) {width:calc(100% - 28px);padding-top:16px}
  body.dfd-portal :is(.panel,.vehicle-card,.fleet-card,.care-panel,.race-panel) {padding:18px;border-radius:12px}
  body.dfd-portal :is(.vehicle-grid,.fleet-grid,.care-grid,.two-col) {grid-template-columns:minmax(0,1fr);gap:14px}
  body.dfd-portal :is(.page-head,.security-head,.race-head,.fleet-head,.care-head,.passport-head,.vehicle-toolbar) {gap:12px;margin:20px 0}
  .dfd-portal .vehicle-identity {padding:16px;gap:16px;min-height:138px}
  .dfd-portal .vehicle-identity :where(h1,h2) {font-size:1.4rem}
  .dfd-portal .vehicle-model {width:112px;max-width:112px;flex-basis:112px}
  .dfd-portal .vehicle-model img {height:72px}
  .dfd-portal .vehicle-sections {padding:0 8px;gap:0}
  .dfd-portal .vehicle-sections a {padding:12px;min-height:48px}
  .dfd-portal .dfd-unit-context {gap:6px;padding:10px}
  .dfd-portal .dfd-unit-label {flex-basis:100%;padding:0 3px}
  .dfd-portal .dfd-unit-tab {max-width:240px;font-size:.8rem}
  body.dfd-portal :is(.security-tabs button,.tabbar .tab) {flex:0 0 auto;padding:11px 14px}
  .dfd-public .nav-inner {min-height:68px}
  .dfd-public .nav-right .nav-cta {display:none}
  .dfd-public .nav-links {top:68px;padding:14px 20px;background:var(--dfd-surface);border-color:var(--dfd-border)}
  .dfd-public .nav-links a {display:block;padding:12px 0;min-height:44px}
  .dfd-public .nav-logo img {max-width:142px;height:28px!important}
  .dfd-standalone main {width:calc(100% - 28px)}
}
@media(max-width:440px) {
  .dfd-public > nav {padding:0 12px}
  .dfd-public .nav-inner {gap:8px}
  .dfd-public .nav-right {gap:6px}
  .dfd-public .nav-logo img {max-width:112px}
  .dfd-public .lang-btn {padding:8px;min-width:32px}
  body.dfd-portal :is(.grid,.security-kpis,.vehicle-kpis,.fleet-kpis,.stats) {grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  body.dfd-portal :is(.metric,.stat,.security-kpi) {padding:12px}
  .dfd-portal .vehicle-identity {gap:12px}
  .dfd-portal .vehicle-model {flex-basis:96px;max-width:96px}
  .dfd-portal .vehicle-identity .vehicle-small {font-size:.72rem}
  .dfd-portal .vehicle-actions a {flex:1 1 140px;text-align:center}
  .dfd-login .panel {padding:22px}
}
@media(prefers-reduced-motion:reduce) {
  .dfd-site,.dfd-site *,.dfd-site *::before,.dfd-site *::after {scroll-behavior:auto!important;animation:none!important;transition:none!important}
}
@media print {
  .dfd-site .dfd-skip,.dfd-site .portal-nav,.dfd-site .dfd-unit-context,.dfd-site .vehicle-sections {display:none!important}
}

.dfd-portal .vehicle-shell,.dfd-portal .vehicle-page,.dfd-portal .fleet-page,.dfd-portal .care-page {font-family:var(--dfd-font)}
@media (min-width:781px) and (max-width:900px) {.dfd-public .nav-links {top:76px}}

.dfd-standalone h1 {font-family:var(--dfd-font);font-size:clamp(1.65rem,3vw,2.25rem);line-height:1.2;letter-spacing:-.035em}
.dfd-standalone h2 {font-family:var(--dfd-font);font-size:1.2rem;line-height:1.4;letter-spacing:-.02em}
.dfd-standalone .panel,.dfd-standalone .box {background:var(--dfd-surface);border:1px solid var(--dfd-border);border-radius:14px;box-shadow:none}
.dfd-public footer {border-color:var(--dfd-border);font-family:var(--dfd-font)}
