:root{color-scheme:light dark;--c-bmw:#1c69d4;--c-bmw-dark:#0a4bb0;--c-bmw-light:#4d92f0;--c-bg:#f5f6f8;--c-surface:#ffffff;--c-surface-2:#f0f2f5;--c-border:#e2e5ea;--c-text:#14181f;--c-text-muted:#5b6472;--c-text-faint:#8a93a3;--c-accent:var(--c-bmw);--c-accent-contrast:#ffffff;--c-ok:#0a7d2c;--c-warn:#b25e00;--c-danger:#c0182f;--c-danger-bg:#fdecee;--sch-line:#000000;--sch-line2:#333333;--sch-box:#cccccc;--sch-box2:#dfdfdf;--sch-text:#000000;--sch-link:#0066b1;--sch-swatch:#000000;--font-sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;--font-mono:ui-monospace,"SF Mono","JetBrains Mono","Cascadia Code",Menlo,Consolas,monospace;--fs-xs:0.78rem;--fs-sm:0.875rem;--fs-base:1rem;--fs-lg:1.15rem;--fs-xl:1.5rem;--fs-2xl:2rem;--fs-3xl:2.75rem;--sp-1:0.25rem;--sp-2:0.5rem;--sp-3:0.75rem;--sp-4:1rem;--sp-5:1.5rem;--sp-6:2rem;--sp-8:3rem;--radius-sm:6px;--radius:10px;--radius-lg:16px;--shadow-sm:0 1px 2px rgba(16,24,40,0.06),0 1px 3px rgba(16,24,40,0.08);--shadow:0 4px 12px rgba(16,24,40,0.08);--shadow-lg:0 12px 32px rgba(16,24,40,0.14);--container:1120px;--header-h:64px}@media (prefers-color-scheme:dark){:root{--c-bg:#0d1015;--c-surface:#161a21;--c-surface-2:#1e232c;--c-border:#2a303a;--c-text:#e9ecf1;--c-text-muted:#a2abba;--c-text-faint:#6f7887;--c-accent:var(--c-bmw-light);--c-danger-bg:#3a1a1f;--shadow-sm:0 1px 2px rgba(0,0,0,0.4);--shadow:0 4px 12px rgba(0,0,0,0.45);--shadow-lg:0 12px 32px rgba(0,0,0,0.55);--sch-line:#d2d2d2;--sch-line2:#b4b4b4;--sch-box:#363b44;--sch-box2:#363b44;--sch-text:#dcdcdc;--sch-link:#5aa2e6;--sch-swatch:#cfcfcf}}:root[data-theme=dark]{color-scheme:dark;--c-bg:#0d1015;--c-surface:#161a21;--c-surface-2:#1e232c;--c-border:#2a303a;--c-text:#e9ecf1;--c-text-muted:#a2abba;--c-text-faint:#6f7887;--c-accent:var(--c-bmw-light);--c-danger-bg:#3a1a1f;--shadow-sm:0 1px 2px rgba(0,0,0,0.4);--shadow:0 4px 12px rgba(0,0,0,0.45);--shadow-lg:0 12px 32px rgba(0,0,0,0.55);--sch-line:#d2d2d2;--sch-line2:#b4b4b4;--sch-box:#363b44;--sch-box2:#363b44;--sch-text:#dcdcdc;--sch-link:#5aa2e6;--sch-swatch:#cfcfcf}:root[data-theme=light]{color-scheme:light;--c-bg:#f5f6f8;--c-surface:#ffffff;--c-surface-2:#f0f2f5;--c-border:#e2e5ea;--c-text:#14181f;--c-text-muted:#5b6472;--c-text-faint:#8a93a3;--c-accent:var(--c-bmw);--c-danger-bg:#fdecee;--shadow-sm:0 1px 2px rgba(16,24,40,0.06),0 1px 3px rgba(16,24,40,0.08);--shadow:0 4px 12px rgba(16,24,40,0.08);--shadow-lg:0 12px 32px rgba(16,24,40,0.14);--sch-line:#000000;--sch-line2:#333333;--sch-box:#cccccc;--sch-box2:#dfdfdf;--sch-text:#000000;--sch-link:#0066b1;--sch-swatch:#000000}*,:after,:before{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--fs-base);line-height:1.6;color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100dvh}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--c-accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{line-height:1.2;font-weight:650;letter-spacing:-.01em}:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px;border-radius:4px}*{scrollbar-width:thin;scrollbar-color:var(--c-border) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--c-border);border:2px solid transparent;background-clip:padding-box;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--c-text-faint);background-clip:padding-box}::-webkit-scrollbar-corner{background:transparent}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--sp-5)}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:.6rem 1.1rem;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--c-surface-2);color:var(--c-text);font-size:var(--fs-sm);font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .05s ease,opacity .15s ease;white-space:nowrap}.btn,.btn:hover{text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--c-accent);color:var(--c-accent-contrast)}.btn-primary:hover:not(:disabled){background:var(--c-bmw-dark)}.btn-outline{background:transparent;border-color:var(--c-border)}.btn-outline:hover:not(:disabled){border-color:var(--c-accent);color:var(--c-accent)}.btn-ghost{background:transparent}.btn-ghost:hover:not(:disabled){background:var(--c-surface-2)}.btn-block{width:100%}.field{display:flex;flex-direction:column;gap:var(--sp-2)}.label{font-size:var(--fs-sm);font-weight:600;color:var(--c-text-muted)}.input{width:100%;padding:.65rem .8rem;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-sm);font-size:var(--fs-base);transition:border-color .15s ease}.input:focus{outline:none;border-color:var(--c-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--c-accent) 20%,transparent)}.alert{padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-sm);font-size:var(--fs-sm);border:1px solid transparent}.alert-danger{background:var(--c-danger-bg);border-color:color-mix(in srgb,var(--c-danger) 35%,transparent);color:var(--c-danger)}.alert-warning{background:color-mix(in srgb,var(--c-warn) 12%,var(--c-surface));border-color:color-mix(in srgb,var(--c-warn) 35%,transparent);color:color-mix(in srgb,var(--c-warn) 75%,var(--c-text))}.alert-success{background:color-mix(in srgb,var(--c-ok) 12%,var(--c-surface));border-color:color-mix(in srgb,var(--c-ok) 35%,transparent);color:color-mix(in srgb,var(--c-ok) 75%,var(--c-text))}.badge{display:inline-flex;align-items:center;gap:var(--sp-1);padding:.15rem .55rem;border-radius:999px;font-size:var(--fs-xs);font-weight:600;background:var(--c-surface-2)}.badge,.text-muted{color:var(--c-text-muted)}.mono{font-family:var(--font-mono);font-size:.9em}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;transition-duration:.001ms!important}}