@charset "UTF-8";html{color-scheme:light;--mat-sys-background: light-dark(#fff8f2, #16130c);--mat-sys-error: light-dark(#b12b2a, #ffb3ac);--mat-sys-error-container: light-dark(#ffdad6, #8f1015);--mat-sys-inverse-on-surface: light-dark(#f9efe4, #343028);--mat-sys-inverse-primary: light-dark(#9acbff, #00629e);--mat-sys-inverse-surface: light-dark(#343028, #eae1d6);--mat-sys-on-background: light-dark(#1f1b14, #eae1d6);--mat-sys-on-error: light-dark(#ffffff, #680008);--mat-sys-on-error-container: light-dark(#8f1015, #ffdad6);--mat-sys-on-primary: light-dark(#ffffff, #003355);--mat-sys-on-primary-container: light-dark(#004a78, #cfe5ff);--mat-sys-on-primary-fixed: light-dark(#001d34, #001d34);--mat-sys-on-primary-fixed-variant: light-dark(#004a78, #004a78);--mat-sys-on-secondary: light-dark(#ffffff, #193249);--mat-sys-on-secondary-container: light-dark(#314961, #cfe5ff);--mat-sys-on-secondary-fixed: light-dark(#011d33, #011d33);--mat-sys-on-secondary-fixed-variant: light-dark(#314961, #314961);--mat-sys-on-surface: light-dark(#1f1b14, #eae1d6);--mat-sys-on-surface-variant: light-dark(#414750, #dce3ee);--mat-sys-on-tertiary: light-dark(#ffffff, #482900);--mat-sys-on-tertiary-container: light-dark(#673d00, #ffddbb);--mat-sys-on-tertiary-fixed: light-dark(#2b1700, #2b1700);--mat-sys-on-tertiary-fixed-variant: light-dark(#673d00, #673d00);--mat-sys-outline: light-dark(#717881, #8a919b);--mat-sys-outline-variant: light-dark(#c0c7d1, #414750);--mat-sys-primary: light-dark(#00629e, #9acbff);--mat-sys-primary-container: light-dark(#cfe5ff, #004a78);--mat-sys-primary-fixed: light-dark(#cfe5ff, #cfe5ff);--mat-sys-primary-fixed-dim: light-dark(#9acbff, #9acbff);--mat-sys-scrim: light-dark(#000000, #000000);--mat-sys-secondary: light-dark(#49607a, #b0c9e6);--mat-sys-secondary-container: light-dark(#cfe5ff, #314961);--mat-sys-secondary-fixed: light-dark(#cfe5ff, #cfe5ff);--mat-sys-secondary-fixed-dim: light-dark(#b0c9e6, #b0c9e6);--mat-sys-shadow: light-dark(#000000, #000000);--mat-sys-surface: light-dark(#fff8f2, #16130c);--mat-sys-surface-bright: light-dark(#fff8f2, #3d3931);--mat-sys-surface-container: light-dark(#f6ede1, #231f18);--mat-sys-surface-container-high: light-dark(#f0e7dc, #2e2922);--mat-sys-surface-container-highest: light-dark(#eae1d6, #39342d);--mat-sys-surface-container-low: light-dark(#fcf2e7, #1f1b14);--mat-sys-surface-container-lowest: light-dark(#ffffff, #110e08);--mat-sys-surface-dim: light-dark(#e1d9ce, #16130c);--mat-sys-surface-tint: light-dark(#00629e, #9acbff);--mat-sys-surface-variant: light-dark(#dce3ee, #414750);--mat-sys-tertiary: light-dark(#885200, #ffb867);--mat-sys-tertiary-container: light-dark(#ffddbb, #673d00);--mat-sys-tertiary-fixed: light-dark(#ffddbb, #ffddbb);--mat-sys-tertiary-fixed-dim: light-dark(#ffb867, #ffb867);--mat-sys-neutral-variant20: #2a3139;--mat-sys-neutral10: #1f1b14;--mat-sys-level0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-sys-level1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-sys-level2: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-sys-level3: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-sys-level4: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-sys-level5: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-sys-body-large: 400 1rem / 1.5rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-body-large-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-body-large-line-height: 1.5rem;--mat-sys-body-large-size: 1rem;--mat-sys-body-large-tracking: .031rem;--mat-sys-body-large-weight: 400;--mat-sys-body-medium: 400 .875rem / 1.25rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-body-medium-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-body-medium-line-height: 1.25rem;--mat-sys-body-medium-size: .875rem;--mat-sys-body-medium-tracking: .016rem;--mat-sys-body-medium-weight: 400;--mat-sys-body-small: 400 .75rem / 1rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-body-small-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-body-small-line-height: 1rem;--mat-sys-body-small-size: .75rem;--mat-sys-body-small-tracking: .025rem;--mat-sys-body-small-weight: 400;--mat-sys-display-large: 400 3.562rem / 4rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-display-large-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-display-large-line-height: 4rem;--mat-sys-display-large-size: 3.562rem;--mat-sys-display-large-tracking: -.016rem;--mat-sys-display-large-weight: 400;--mat-sys-display-medium: 400 2.812rem / 3.25rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-display-medium-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-display-medium-line-height: 3.25rem;--mat-sys-display-medium-size: 2.812rem;--mat-sys-display-medium-tracking: 0;--mat-sys-display-medium-weight: 400;--mat-sys-display-small: 400 2.25rem / 2.75rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-display-small-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-display-small-line-height: 2.75rem;--mat-sys-display-small-size: 2.25rem;--mat-sys-display-small-tracking: 0;--mat-sys-display-small-weight: 400;--mat-sys-headline-large: 400 2rem / 2.5rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-headline-large-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-headline-large-line-height: 2.5rem;--mat-sys-headline-large-size: 2rem;--mat-sys-headline-large-tracking: 0;--mat-sys-headline-large-weight: 400;--mat-sys-headline-medium: 400 1.75rem / 2.25rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-headline-medium-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-headline-medium-line-height: 2.25rem;--mat-sys-headline-medium-size: 1.75rem;--mat-sys-headline-medium-tracking: 0;--mat-sys-headline-medium-weight: 400;--mat-sys-headline-small: 400 1.5rem / 2rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-headline-small-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-headline-small-line-height: 2rem;--mat-sys-headline-small-size: 1.5rem;--mat-sys-headline-small-tracking: 0;--mat-sys-headline-small-weight: 400;--mat-sys-label-large: 600 .875rem / 1.25rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-label-large-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-label-large-line-height: 1.25rem;--mat-sys-label-large-size: .875rem;--mat-sys-label-large-tracking: .006rem;--mat-sys-label-large-weight: 600;--mat-sys-label-large-weight-prominent: 700;--mat-sys-label-medium: 600 .75rem / 1rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-label-medium-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-label-medium-line-height: 1rem;--mat-sys-label-medium-size: .75rem;--mat-sys-label-medium-tracking: .031rem;--mat-sys-label-medium-weight: 600;--mat-sys-label-medium-weight-prominent: 700;--mat-sys-label-small: 600 .688rem / 1rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-label-small-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-label-small-line-height: 1rem;--mat-sys-label-small-size: .688rem;--mat-sys-label-small-tracking: .031rem;--mat-sys-label-small-weight: 600;--mat-sys-title-large: 400 1.375rem / 1.75rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-title-large-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-title-large-line-height: 1.75rem;--mat-sys-title-large-size: 1.375rem;--mat-sys-title-large-tracking: 0;--mat-sys-title-large-weight: 400;--mat-sys-title-medium: 600 1rem / 1.5rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-title-medium-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-title-medium-line-height: 1.5rem;--mat-sys-title-medium-size: 1rem;--mat-sys-title-medium-tracking: .009rem;--mat-sys-title-medium-weight: 600;--mat-sys-title-small: 600 .875rem / 1.25rem "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-title-small-font: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--mat-sys-title-small-line-height: 1.25rem;--mat-sys-title-small-size: .875rem;--mat-sys-title-small-tracking: .006rem;--mat-sys-title-small-weight: 600;--mat-checkbox-touch-target-display: block;--mat-checkbox-state-layer-size: 36px;--mat-chip-container-height: 28px;--mat-expansion-header-collapsed-state-height: 44px;--mat-expansion-header-expanded-state-height: 60px;--mat-fab-small-touch-target-display: ;--mat-fab-touch-target-display: block;--mat-button-filled-touch-target-display: block;--mat-button-filled-container-height: 36px;--mat-button-outlined-container-height: 36px;--mat-button-outlined-touch-target-display: block;--mat-button-protected-touch-target-display: block;--mat-button-protected-container-height: 36px;--mat-button-text-touch-target-display: block;--mat-button-text-container-height: 36px;--mat-button-tonal-container-height: 36px;--mat-button-tonal-touch-target-display: block;--mat-form-field-container-height: 52px;--mat-form-field-filled-label-display: block;--mat-form-field-container-vertical-padding: 14px;--mat-form-field-filled-with-label-container-padding-top: 22px;--mat-form-field-filled-with-label-container-padding-bottom: 6px;--mat-icon-button-touch-target-display: block;--mat-icon-button-state-layer-size: 36px;--mat-list-list-item-leading-icon-start-space: 12px;--mat-list-list-item-leading-icon-end-space: 12px;--mat-list-list-item-one-line-container-height: 44px;--mat-list-list-item-two-line-container-height: 60px;--mat-list-list-item-three-line-container-height: 84px;--mat-paginator-container-size: 52px;--mat-paginator-form-field-container-height: 40px;--mat-paginator-form-field-container-vertical-padding: 8px;--mat-paginator-touch-target-display: block;--mat-radio-touch-target-display: block;--mat-radio-state-layer-size: 36px;--mat-tab-container-height: 44px;--mat-select-arrow-transform: translateY(-8px);--mat-button-toggle-height: 40px;--mat-stepper-header-height: 68px;--mat-table-header-container-height: 52px;--mat-table-footer-container-height: 48px;--mat-table-row-item-container-height: 48px;--mat-toolbar-standard-height: 60px;--mat-toolbar-mobile-height: 52px;--mat-tree-node-min-height: 44px;--mat-sys-corner-extra-large: 28px;--mat-sys-corner-extra-large-top: 28px 28px 0 0;--mat-sys-corner-extra-small: 4px;--mat-sys-corner-extra-small-top: 4px 4px 0 0;--mat-sys-corner-full: 9999px;--mat-sys-corner-large: 16px;--mat-sys-corner-large-end: 0 16px 16px 0;--mat-sys-corner-large-start: 16px 0 0 16px;--mat-sys-corner-large-top: 16px 16px 0 0;--mat-sys-corner-medium: 12px;--mat-sys-corner-none: 0;--mat-sys-corner-small: 8px;--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12;--mat-button-filled-container-shape: var(--radius-md);--mat-button-outlined-container-shape: var(--radius-md);--mat-button-protected-container-shape: var(--radius-md);--mat-button-text-container-shape: var(--radius-md);--mat-button-tonal-container-shape: var(--radius-md)}html,body{height:100%;margin:0;background:var(--bg);color:var(--text-primary)}body{font-family:var(--font-sans)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.shell{height:100vh;background:var(--bg)}.shell .shell-drawer{width:248px;border-right:none;background:transparent}.shell .shell-drawer .mat-drawer-inner-container{overflow:hidden}.shell af-sidebar{display:flex;flex-direction:column;height:100%}.shell .main{display:flex;flex-direction:column;height:100vh;overflow:hidden}.shell .canvas{min-height:0}@media(max-width:600px){.topbar .tb-menu{width:44px;height:44px}}:root{--blue-50: #edf4fb;--blue-100: #d3e5f6;--blue-200: #a8cded;--blue-300: #74aedd;--blue-400: #3f8ac6;--blue-500: #1c70ae;--blue-600: #175c90;--blue-700: #164a72;--blue-800: #153d5b;--blue-900: #142f45;--amber-50: #fdf6e8;--amber-100: #fae6be;--amber-200: #f5cf84;--amber-300: #f0b84f;--amber-400: #eda428;--amber-500: #e8910c;--amber-600: #c2760a;--amber-700: #985c0b;--amber-800: #79490c;--amber-900: #5c380b;--stone-0: #ffffff;--stone-50: #faf9f7;--stone-100: #f4f3ef;--stone-200: #e9e6e0;--stone-300: #d9d5cd;--stone-400: #b7b1a7;--stone-500: #8c857b;--stone-600: #6f6960;--stone-700: #514d46;--stone-800: #34312d;--stone-900: #1c1a17;--green-weak: #ebf4ea;--green-500: #3e8e4f;--green-strong: #2f6e3e;--amberst-weak: #fbf0da;--amberst-500: #c9780a;--amberst-strong: #9e5e07;--red-weak: #f9e9e6;--red-500: #c53a36;--red-strong: #9e2b28;--sky-weak: #e5f2f8;--sky-500: #1e8fbe;--sky-strong: #156f95;--bg: var(--stone-50);--surface: var(--stone-0);--surface-2: var(--stone-100);--overlay-scrim: rgba(28, 26, 23, .48);--border: var(--stone-200);--border-strong: var(--stone-300);--border-focus: var(--blue-500);--text-primary: var(--stone-900);--text-secondary: var(--stone-600);--text-muted: var(--stone-500);--text-disabled: var(--stone-400);--text-on-accent: var(--stone-900);--primary: var(--blue-500);--primary-hover: var(--blue-600);--primary-active: var(--blue-700);--primary-weak: var(--blue-50);--primary-border: var(--blue-200);--on-primary: #ffffff;--accent: var(--amber-500);--accent-hover: var(--amber-600);--accent-weak: var(--amber-50);--on-accent: var(--stone-900);--success: var(--green-500);--success-bg: var(--green-weak);--success-strong: var(--green-strong);--warning: var(--amberst-500);--warning-bg: var(--amberst-weak);--warning-strong: var(--amberst-strong);--error: var(--red-500);--error-bg: var(--red-weak);--error-strong: var(--red-strong);--info: var(--sky-500);--info-bg: var(--sky-weak);--info-strong: var(--sky-strong);--on-status: #ffffff;--font-sans: "Hanken Grotesk", system-ui, -apple-system, Segoe UI, Roboto, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--fw-extrabold: 800;--t-display: 44px;--lh-display: 48px;--ls-display: -.03em;--t-h1: 32px;--lh-h1: 38px;--ls-h1: -.025em;--t-h2: 26px;--lh-h2: 32px;--ls-h2: -.022em;--t-h3: 21px;--lh-h3: 28px;--ls-h3: -.02em;--t-h4: 18px;--lh-h4: 24px;--ls-h4: -.018em;--t-body-lg: 16px;--lh-body-lg: 24px;--t-body: 15px;--lh-body: 22px;--t-body-sm: 13px;--lh-body-sm: 20px;--t-caption: 12px;--lh-caption: 16px;--ls-caption: .01em;--t-overline: 11px;--lh-overline: 16px;--ls-overline: .08em;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--space-24: 96px;--radius-xs: 6px;--radius-sm: 8px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--radius-2xl: 24px;--radius-full: 999px;--elev-0: none;--elev-1: 0 1px 2px rgba(20, 30, 40, .06);--elev-2: 0 2px 4px -1px rgba(20, 30, 40, .08), 0 1px 2px rgba(20, 30, 40, .05);--elev-3: 0 8px 18px -8px rgba(20, 30, 40, .16), 0 2px 6px -2px rgba(20, 30, 40, .08);--elev-4: 0 18px 36px -14px rgba(20, 30, 40, .22);--elev-5: 0 28px 56px -22px rgba(20, 30, 40, .28);--dur-fast: .12s;--dur-base: .18s;--dur-moderate: .24s;--dur-slow: .32s;--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-out: cubic-bezier(.2, .8, .2, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--bp-sm: 600px;--bp-md: 1024px;--bp-lg: 1440px;--touch-min: 44px}:root[data-theme=dark]{--bg: #16181c;--surface: #1e2127;--surface-2: #262a31;--overlay-scrim: rgba(0, 0, 0, .6);--border: #2e333b;--border-strong: #3a4049;--border-focus: var(--blue-300);--text-primary: #eceef1;--text-secondary: #aeb4bd;--text-muted: #7e858f;--text-disabled: #565c66;--primary: var(--blue-300);--primary-hover: var(--blue-200);--primary-active: var(--blue-100);--primary-weak: rgba(116, 174, 221, .14);--primary-border: rgba(116, 174, 221, .32);--on-primary: #0b1722;--accent: var(--amber-400);--accent-hover: var(--amber-300);--accent-weak: rgba(237, 164, 40, .14);--on-accent: #231703;--success: #5bb06c;--success-bg: rgba(91, 176, 108, .16);--warning: #e0951f;--warning-bg: rgba(224, 149, 31, .16);--error: #e36561;--error-bg: rgba(227, 101, 97, .16);--info: #4fb0da;--info-bg: rgba(79, 176, 218, .16)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--font-sans);background:var(--bg);color:var(--text-primary);-webkit-font-smoothing:antialiased;line-height:1.5;letter-spacing:-.01em}.wrap{max-width:1120px;margin:0 auto;padding:0 32px}.docnav{position:sticky;top:0;z-index:40;background:#faf9f7d9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.docnav .row{max-width:1120px;margin:0 auto;padding:0 32px;height:60px;display:flex;align-items:center;gap:22px}.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;letter-spacing:-.04em}.brand .mark{width:26px;height:26px;border-radius:8px;background:linear-gradient(140deg,var(--blue-500),var(--sky-500));position:relative;overflow:hidden}.brand .mark:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(125deg,transparent 0 6px,rgba(255,255,255,.28) 6px 7px)}.docnav nav{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}.docnav a{font-size:13px;font-weight:600;text-decoration:none;color:var(--text-secondary);padding:7px 12px;border-radius:8px;transition:background var(--dur-fast) var(--ease-standard),color var(--dur-fast)}.docnav a:hover{background:var(--surface-2);color:var(--text-primary)}.docnav a.active{background:var(--primary-weak);color:var(--primary-active)}.docnav a.soon{color:var(--text-disabled);pointer-events:none}.docnav a.soon:after{content:" \b7  em breve";font-family:var(--font-mono);font-size:9px}.hero{padding:60px 0 30px}.kicker{font-family:var(--font-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}h1{font-size:clamp(32px,5vw,50px);letter-spacing:-.04em;line-height:1.03;margin:16px 0 0}.lede{font-size:17px;color:var(--text-secondary);max-width:66ch;margin-top:16px;line-height:1.55}.hero-tags{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}.htag{font-family:var(--font-mono);font-size:11.5px;color:var(--text-secondary);background:var(--surface);border:1px solid var(--border);padding:7px 12px;border-radius:var(--radius-full)}section{padding:52px 0;border-top:1px solid var(--border)}.sec-head{margin-bottom:28px}.sec-head .kicker{display:block;margin-bottom:12px}h2{font-size:var(--t-h1);line-height:var(--lh-h1);letter-spacing:var(--ls-h1);margin:0}.sec-head p{color:var(--text-secondary);max-width:72ch;margin:12px 0 0;font-size:15px}.mat{font-family:var(--font-mono);font-size:12px;color:var(--primary-active);background:var(--primary-weak);padding:2px 7px;border-radius:6px}.row-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin:0 0 14px;font-weight:600}.row-label:not(:first-child){margin-top:28px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:26px;box-shadow:var(--elev-1)}.btn{font-family:var(--font-sans);font-weight:var(--fw-semibold);font-size:13.5px;line-height:1;height:40px;padding:0 18px;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;letter-spacing:-.01em;transition:background var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast),border-color var(--dur-fast),transform var(--dur-fast),color var(--dur-fast);white-space:nowrap}.btn:active{transform:translateY(1px)}.btn-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:hover,.btn-primary.is-hover{background:var(--primary-hover);box-shadow:var(--elev-2)}.btn-primary.is-focus{box-shadow:0 0 0 3px var(--primary-weak),0 0 0 4px var(--primary);outline:none}.btn-primary:active,.btn-primary.is-active{background:var(--primary-active)}.btn-secondary{background:var(--surface);color:var(--text-primary);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--surface-2);border-color:var(--text-muted)}.btn-secondary.is-focus{box-shadow:0 0 0 3px var(--primary-weak)}.btn-text{background:transparent;color:var(--primary);padding:0 10px}.btn-text:hover{background:var(--primary-weak)}.btn-accent{background:var(--accent);color:var(--on-accent)}.btn-accent:hover{background:var(--accent-hover);box-shadow:var(--elev-2)}.btn-danger{background:var(--surface);color:var(--error);border-color:var(--error)}.btn-danger:hover{background:var(--error);color:#fff}.btn-icon{width:40px;height:40px;padding:0;background:transparent;color:var(--text-secondary);border-color:transparent}.btn-icon:hover{background:var(--surface-2);color:var(--text-primary)}.ic-dots{width:4px;height:4px;border-radius:50%;background:currentColor;box-shadow:0 -6px 0 currentColor,0 6px 0 currentColor}.btn[disabled]{background:var(--surface-2);color:var(--text-disabled);border-color:transparent;cursor:not-allowed;box-shadow:none;transform:none}.btn.is-loading{pointer-events:none}.btn-sm{height:32px;font-size:12.5px;padding:0 14px;border-radius:var(--radius-sm)}.btn-lg{height:48px;font-size:15px;padding:0 24px}.btn-block{width:100%}.spin{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:spin .7s linear infinite}.spin.big{width:22px;height:22px;border-width:3px;border-color:var(--primary-weak);border-top-color:var(--primary)}@keyframes spin{to{transform:rotate(360deg)}}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px}.field{display:flex;flex-direction:column;gap:6px}.field.span-2{grid-column:1/-1}.field>label{font-size:12.5px;font-weight:var(--fw-semibold);color:var(--text-secondary)}.input{min-height:42px;background:var(--surface);border:1.5px solid var(--border-strong);border-radius:var(--radius-md);display:flex;align-items:center;gap:8px;padding:0 13px;font-size:14px;color:var(--text-primary);transition:border-color var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast)}.input .ph{color:var(--text-muted)}.input .val{color:var(--text-primary)}.input .prefix{color:var(--text-muted);font-family:var(--font-mono);font-size:13px}.input:hover{border-color:var(--text-muted)}.input.is-focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--primary-weak)}.input.is-error{border-color:var(--error);box-shadow:0 0 0 3px var(--error-bg)}.input.is-disabled{background:var(--surface-2);border-color:var(--border);color:var(--text-disabled);cursor:not-allowed}.input.is-filled{border-color:var(--border-strong)}.caret{width:1.5px;height:18px;background:var(--primary);margin-left:-2px;animation:blink 1s step-end infinite}@keyframes blink{50%{opacity:0}}.help{font-size:12px;color:var(--text-muted)}.help.err{color:var(--error);font-weight:500}.input.textarea{min-height:78px;align-items:flex-start;padding:11px 13px;line-height:1.5}.input.select{justify-content:space-between;cursor:pointer}.chev{width:8px;height:8px;border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);transform:rotate(45deg) translateY(-2px)}.cal{width:15px;height:15px;border:1.6px solid var(--text-muted);border-radius:3px;position:relative}.cal:before{content:"";position:absolute;top:-3px;left:2px;right:2px;height:3px;border-left:1.6px solid var(--text-muted);border-right:1.6px solid var(--text-muted)}.upload{border:1.5px dashed var(--border-strong);border-radius:var(--radius-md);padding:20px;display:flex;align-items:center;gap:14px;background:var(--surface-2);cursor:pointer;transition:border-color var(--dur-fast),background var(--dur-fast)}.upload:hover{border-color:var(--primary);background:var(--primary-weak)}.upload .up-ic{width:34px;height:34px;border-radius:var(--radius-sm);border:1.5px solid var(--primary);position:relative;flex:none}.upload .up-ic:before{content:"";position:absolute;left:50%;top:9px;transform:translate(-50%);width:2px;height:13px;background:var(--primary)}.upload .up-ic:after{content:"";position:absolute;left:50%;top:9px;transform:translate(-50%) rotate(0);width:9px;height:9px;border-top:2px solid var(--primary);border-right:2px solid var(--primary);rotate:-45deg;transform-origin:top;display:none}.upload div b{display:block;font-size:13.5px}.upload div span{font-size:12px;color:var(--text-muted)}.controls-row{display:flex;flex-wrap:wrap;gap:22px;align-items:center}.ctrl{display:inline-flex;align-items:center;gap:9px;font-size:14px;cursor:pointer;-webkit-user-select:none;user-select:none;min-height:44px}.cbx{width:19px;height:19px;border-radius:5px;border:1.8px solid var(--border-strong);flex:none;position:relative;transition:all var(--dur-fast) var(--ease-standard)}.cbx.checked{background:var(--primary);border-color:var(--primary)}.cbx.checked:after{content:"";position:absolute;left:5.5px;top:2px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.cbx.indet{background:var(--primary);border-color:var(--primary)}.cbx.indet:after{content:"";position:absolute;left:3px;top:7.5px;width:11px;height:2px;background:#fff;border-radius:1px}.cbx[data-d]{background:var(--surface-2);border-color:var(--border);cursor:not-allowed}.rdo{width:19px;height:19px;border-radius:50%;border:1.8px solid var(--border-strong);flex:none;position:relative;transition:all var(--dur-fast)}.rdo.checked{border-color:var(--primary)}.rdo.checked:after{content:"";position:absolute;inset:3.5px;border-radius:50%;background:var(--primary)}.sw-toggle{width:40px;height:23px;border-radius:999px;background:var(--border-strong);flex:none;position:relative;cursor:pointer;transition:background var(--dur-base) var(--ease-standard)}.sw-toggle .knob{position:absolute;top:2.5px;left:2.5px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:var(--elev-2);transition:transform var(--dur-base) var(--ease-out)}.sw-toggle.on{background:var(--primary)}.sw-toggle.on .knob{transform:translate(17px)}.chip-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.badge{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:var(--fw-semibold);padding:5px 11px;border-radius:var(--radius-full)}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}.b-ok{color:var(--success-strong);background:var(--success-bg)}.b-warn{color:var(--warning-strong);background:var(--warning-bg)}.b-err{color:var(--error-strong);background:var(--error-bg)}.b-info{color:var(--info-strong);background:var(--info-bg)}.b-neutral{color:var(--text-secondary);background:var(--surface-2)}.chip{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:500;padding:7px 12px;border-radius:var(--radius-full);background:var(--surface-2);border:1px solid var(--border);color:var(--text-primary)}.chip .x{width:14px;height:14px;border-radius:50%;background:var(--border-strong);position:relative;cursor:pointer;flex:none;transition:background var(--dur-fast)}.chip .x:before,.chip .x:after{content:"";position:absolute;left:3.5px;top:6px;width:7px;height:1.5px;background:var(--surface)}.chip .x:before{transform:rotate(45deg)}.chip .x:after{transform:rotate(-45deg)}.chip .x:hover{background:var(--text-secondary)}.chip-add{border-style:dashed;background:transparent;color:var(--primary);cursor:pointer}.tag{font-size:11.5px;font-weight:600;padding:4px 9px;border-radius:var(--radius-xs);background:var(--primary-weak);color:var(--primary-active)}.count-wrap{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--text-secondary)}.count{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--primary);color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.count-err{background:var(--error)}.cards-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--elev-2);transition:box-shadow var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out)}.card:hover{box-shadow:var(--elev-3);transform:translateY(-3px)}.stat-card .sc-top{display:flex;align-items:center;justify-content:space-between}.sc-lab{font-size:12.5px;color:var(--text-secondary);font-weight:500}.sc-ic{width:30px;height:30px;border-radius:var(--radius-sm)}.sc-ic.info{background:var(--info-bg)}.sc-ic.ok{background:var(--success-bg)}.sc-ic.err{background:var(--error-bg)}.sc-val{font-family:var(--font-mono);font-size:30px;font-weight:600;letter-spacing:-.02em;margin:14px 0 6px}.sc-trend{font-size:12px;font-weight:600}.up{color:var(--success)}.down{color:var(--error)}.op-card{display:flex;flex-direction:column;gap:12px}.oc-head{display:flex;align-items:center;justify-content:space-between}.oc-code{font-family:var(--font-mono);font-size:12px;color:var(--text-muted)}.oc-route{font-size:16px;font-weight:600;letter-spacing:-.02em}.oc-route .arr{color:var(--text-muted);margin:0 4px}.oc-meta{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-secondary);flex-wrap:wrap}.dot-sep{width:3px;height:3px;border-radius:50%;background:var(--border-strong)}.oc-foot{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--border);padding-top:12px}.oc-val{font-family:var(--font-mono);font-size:15px;font-weight:600}.nav-demo{display:grid;grid-template-columns:228px 1fr;border:1px solid var(--border);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--elev-2);background:var(--surface)}.demo-side{background:var(--surface);border-right:1px solid var(--border);padding:16px 12px}.ds-brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:14px;letter-spacing:-.03em;padding:6px 8px 14px}.ds-logo{width:24px;height:24px;border-radius:7px;background:var(--primary);color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center}.ds-group{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);padding:14px 10px 6px}.ds-item{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:var(--radius-sm);font-size:13.5px;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:background var(--dur-fast),color var(--dur-fast);position:relative}.ds-item:hover{background:var(--surface-2);color:var(--text-primary)}.ds-item.active{background:var(--primary-weak);color:var(--primary-active);font-weight:600}.ds-item.active:before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--primary);animation:dsInk var(--dur-base) var(--ease-out)}@keyframes dsInk{0%{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}.ds-ic{width:16px;height:16px;border-radius:5px;border:1.7px solid currentColor;opacity:.7;flex:none}.ds-item.active .ds-ic{background:var(--primary);border-color:var(--primary);opacity:1}.ds-badge{margin-left:auto;font-family:var(--font-mono);font-size:10.5px;font-weight:700;background:var(--primary);color:#fff;border-radius:999px;padding:1px 7px}.demo-main{display:flex;flex-direction:column}.demo-top{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border);gap:14px}.breadcrumb{font-size:13px;color:var(--text-muted);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.breadcrumb a{color:var(--text-secondary);text-decoration:none;cursor:pointer}.breadcrumb a:hover{color:var(--primary)}.bc-sep{color:var(--border-strong)}.bc-cur{color:var(--text-primary);font-weight:600;font-family:var(--font-mono);font-size:12px}.dt-right{display:flex;align-items:center;gap:12px}.dt-search{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:7px 12px;min-width:160px}.s-ic{width:13px;height:13px;border:1.7px solid var(--text-muted);border-radius:50%;position:relative;flex:none}.s-ic:after{content:"";position:absolute;right:-3px;bottom:-3px;width:5px;height:1.7px;background:var(--text-muted);transform:rotate(45deg)}.dt-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--accent))}.tabs{display:flex;gap:4px;padding:0 16px;border-bottom:1px solid var(--border);position:relative}.tab{padding:13px 14px;font-size:13.5px;font-weight:600;color:var(--text-secondary);cursor:pointer;border-bottom:2px solid transparent;display:flex;align-items:center;gap:7px;transition:color var(--dur-base) var(--ease-standard);margin-bottom:-1px}.tab:hover{color:var(--text-primary)}.tab.active{color:var(--primary-active)}.tab-ink{position:absolute;bottom:-1px;height:2px;background:var(--primary);border-radius:2px 2px 0 0;transition:left var(--dur-base) var(--ease-standard),width var(--dur-base) var(--ease-standard)}.tab-count{font-family:var(--font-mono);font-size:10.5px;background:var(--surface-2);color:var(--text-secondary);border-radius:999px;padding:1px 6px;transition:background var(--dur-fast),color var(--dur-fast)}.tab.active .tab-count{background:var(--primary-weak);color:var(--primary-active)}.tab-body{padding:24px 20px;font-size:14px;color:var(--text-secondary)}.tab-body.swap{animation:tabFade var(--dur-moderate) var(--ease-out)}@keyframes tabFade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.fb-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}.dialog-shell{background:var(--overlay-scrim);border-radius:var(--radius-lg);padding:32px;display:flex;align-items:center;justify-content:center}.dialog{background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--elev-5);width:100%;max-width:380px;padding:24px;animation:dlgIn var(--dur-slow) var(--ease-out)}@keyframes dlgIn{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}.dlg-head h4{margin:0;font-size:18px;letter-spacing:-.02em}.dlg-body{font-size:14px;color:var(--text-secondary);line-height:1.55;margin:12px 0 22px}.dlg-foot{display:flex;justify-content:flex-end;gap:10px}.alert{display:flex;gap:12px;align-items:flex-start;border-radius:var(--radius-md);padding:13px 15px;margin-bottom:10px;border:1px solid transparent}.alert b{font-size:13.5px;display:block}.alert span{font-size:12.5px;color:var(--text-secondary)}.al-ic{width:18px;height:18px;border-radius:50%;flex:none;margin-top:1px;position:relative}.al-ic:after{content:"!";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#fff}.a-info{background:var(--info-bg);border-color:color-mix(in srgb,var(--info) 22%,transparent)}.a-info .al-ic{background:var(--info)}.a-info .al-ic:after{content:"i"}.a-ok{background:var(--success-bg);border-color:color-mix(in srgb,var(--success) 22%,transparent)}.a-ok .al-ic{background:var(--success)}.a-ok .al-ic:after{content:"\2713";font-size:11px}.a-warn{background:var(--warning-bg);border-color:color-mix(in srgb,var(--warning) 26%,transparent)}.a-warn .al-ic{background:var(--warning)}.a-err{background:var(--error-bg);border-color:color-mix(in srgb,var(--error) 24%,transparent)}.a-err .al-ic{background:var(--error)}.toast{display:flex;align-items:center;gap:11px;background:var(--stone-900);color:#fff;border-radius:var(--radius-md);padding:12px 14px;font-size:13.5px;margin-bottom:10px;box-shadow:var(--elev-4)}.t-ic{width:16px;height:16px;border-radius:50%;flex:none}.t-ic.ok{background:var(--success)}.t-ic.err{background:var(--error)}.t-action{margin-left:auto;background:transparent;border:none;color:var(--blue-200);font-weight:700;font-size:13px;cursor:pointer;font-family:var(--font-sans)}.tip-row{display:flex;align-items:center;gap:18px}.tip-host{position:relative;font-weight:600;font-size:14px;border-bottom:1.5px dotted var(--text-muted);cursor:help;padding-bottom:1px}.tip{position:absolute;bottom:calc(100% + 9px);left:50%;transform:translate(-50%) translateY(4px);background:var(--stone-900);color:#fff;font-size:12px;font-weight:500;white-space:nowrap;padding:7px 11px;border-radius:var(--radius-sm);opacity:0;pointer-events:none;transition:opacity var(--dur-fast),transform var(--dur-fast) var(--ease-out);box-shadow:var(--elev-3)}.tip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--stone-900)}.tip-host:hover .tip{opacity:1;transform:translate(-50%) translateY(0)}.state-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;align-items:start}.sk-card{display:flex;flex-direction:column;gap:11px}.sk{background:linear-gradient(90deg,var(--surface-2) 25%,var(--stone-100) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:6px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.sk-line{height:13px}.w90{width:90%}.w60{width:60%}.w40{width:40%}.sk-row{display:flex;gap:10px;margin-top:4px}.sk-pill{height:26px;width:80px;border-radius:999px}.prog{height:5px;border-radius:999px;background:var(--primary-weak);overflow:hidden;margin:18px 0 14px;position:relative}.prog span{position:absolute;left:0;top:0;bottom:0;width:38%;background:var(--primary);border-radius:999px;animation:indet 1.4s var(--ease-standard) infinite}@keyframes indet{0%{left:-40%}to{left:100%}}.spinners{display:flex;align-items:center;gap:11px;font-size:13.5px;color:var(--text-secondary)}.panel.empty{text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px;padding:36px 26px}.panel.empty h4{margin:6px 0 0;font-size:16px}.panel.empty p{margin:0;font-size:13px;color:var(--text-muted);max-width:30ch;line-height:1.5}.panel.empty .btn{margin-top:10px}.empty-ill{width:64px;height:64px;border-radius:var(--radius-lg);background:var(--surface-2);border:2px dashed var(--border-strong);position:relative}.empty-ill:after{content:"";position:absolute;inset:18px;border:2px solid var(--border-strong);border-radius:6px}.empty-ill.err{border-color:color-mix(in srgb,var(--error) 40%,transparent);background:var(--error-bg)}.empty-ill.err:after{border-color:var(--error);border-radius:50%}.foot{padding:46px 0 70px;color:var(--text-muted);font-family:var(--font-mono);font-size:12px;text-align:center}@media(max-width:880px){.grid-2{grid-template-columns:1fr}.cards-grid{grid-template-columns:1fr 1fr}.state-grid,.fb-grid,.nav-demo{grid-template-columns:1fr}.demo-side{display:none}section{padding:42px 0}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.tablecard{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--elev-2);overflow:hidden}.tbl-toolbar{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--border);flex-wrap:wrap}.tbl-search{display:flex;align-items:center;gap:9px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);padding:9px 13px;min-width:230px;font-size:13.5px;color:var(--text-secondary);transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}.tbl-search:focus-within{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--primary-weak);background:var(--surface)}.tbl-search input{border:none;background:transparent;outline:none;font-family:var(--font-sans);font-size:13.5px;color:var(--text-primary);width:100%}.tbl-search .s-ic{width:14px;height:14px;border:1.7px solid var(--text-muted);border-radius:50%;position:relative;flex:none}.tbl-search .s-ic:after{content:"";position:absolute;right:-3px;bottom:-3px;width:5px;height:1.7px;background:var(--text-muted);transform:rotate(45deg)}.tbl-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.filter-chip{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:500;padding:8px 12px;border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border-strong);cursor:pointer;transition:all var(--dur-fast) var(--ease-standard)}.filter-chip:hover{border-color:var(--text-muted);background:var(--surface-2)}.filter-chip.active{background:var(--primary-weak);border-color:var(--primary-border);color:var(--primary-active)}.filter-chip .fc-chev{width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.6}.filter-chip .fc-count{font-family:var(--font-mono);font-size:10.5px;background:var(--primary);color:#fff;border-radius:999px;padding:0 6px;line-height:16px}.tbl-spacer{margin-left:auto}.sel-bar{display:flex;align-items:center;gap:14px;padding:0 18px;background:var(--primary);color:#fff;overflow:hidden;max-height:0;transition:max-height var(--dur-base) var(--ease-standard),padding var(--dur-base)}.sel-bar.show{max-height:60px;padding:13px 18px}.sel-bar b{font-family:var(--font-mono);font-size:13px}.sel-bar .sb-actions{display:flex;gap:8px;margin-left:auto}.sb-btn{font-family:var(--font-sans);font-weight:600;font-size:13px;background:#ffffff29;color:#fff;border:1px solid rgba(255,255,255,.28);border-radius:var(--radius-sm);padding:7px 13px;cursor:pointer;transition:background var(--dur-fast)}.sb-btn:hover{background:#ffffff42}.sb-btn.danger:hover{background:var(--error);border-color:var(--error)}.dt{width:100%;border-collapse:collapse}.dt thead th{position:sticky;top:0;background:var(--surface-2);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary);font-weight:700;text-align:left;padding:12px 16px;border-bottom:1px solid var(--border);white-space:nowrap;-webkit-user-select:none;user-select:none}.dt th.sortable{cursor:pointer;transition:color var(--dur-fast)}.dt th.sortable:hover{color:var(--text-primary)}.sort-ind{display:inline-flex;flex-direction:column;gap:1px;margin-left:6px;vertical-align:middle}.sort-ind i{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;opacity:.3;transition:opacity var(--dur-fast)}.sort-ind .up{border-bottom:5px solid currentColor}.sort-ind .dn{border-top:5px solid currentColor}th.sort-asc .sort-ind .up{opacity:1}th.sort-asc .sort-ind .dn{opacity:.2}th.sort-desc .sort-ind .dn{opacity:1}th.sort-desc .sort-ind .up{opacity:.2}.dt tbody td{padding:13px 16px;font-size:13.5px;border-bottom:1px solid var(--border);color:var(--text-primary);vertical-align:middle}.dt tbody tr{transition:background var(--dur-fast) var(--ease-standard)}.dt tbody tr.sel-row-hover,.dt tbody tr:hover{background:var(--surface-2)}.dt tbody tr.selected{background:var(--primary-weak)}.dt tbody tr:last-child td{border-bottom:none}.dt .c-code{font-family:var(--font-mono);font-size:12.5px;color:var(--text-muted)}.dt .c-route{font-weight:600}.dt .c-route .sub{display:block;font-weight:400;font-size:12px;color:var(--text-muted);margin-top:1px}.dt .c-val{font-family:var(--font-mono);font-weight:600;text-align:right}.dt th.num,.dt td.num{text-align:right}.dt .drv{display:flex;align-items:center;gap:9px}.drv .av{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none}.rcbx{width:18px;height:18px;border-radius:5px;border:1.8px solid var(--border-strong);position:relative;cursor:pointer;transition:all var(--dur-fast);display:inline-block;vertical-align:middle}.rcbx.checked{background:var(--primary);border-color:var(--primary)}.rcbx.checked:after{content:"";position:absolute;left:5px;top:1.5px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.rcbx.indet{background:var(--primary);border-color:var(--primary)}.rcbx.indet:after{content:"";position:absolute;left:3px;top:7px;width:10px;height:2px;background:#fff;border-radius:1px}th.col-check,td.col-check{width:46px;padding-right:0}td.col-act{width:54px;text-align:right}.row-menu{position:relative;display:inline-block}.rm-trigger{width:30px;height:30px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background var(--dur-fast),color var(--dur-fast)}tr:hover .rm-trigger{color:var(--text-primary)}.rm-trigger:hover{background:var(--border)}.rm-dots{width:3.5px;height:3.5px;border-radius:50%;background:currentColor;box-shadow:0 -5px 0 currentColor,0 5px 0 currentColor}.rm-menu{position:absolute;right:0;top:calc(100% + 4px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--elev-3);padding:5px;min-width:168px;z-index:20;opacity:0;transform:translateY(-6px) scale(.97);transform-origin:top right;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.row-menu.open .rm-menu{opacity:1;transform:none;pointer-events:auto}.rm-item{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:var(--radius-sm);font-size:13px;color:var(--text-primary);cursor:pointer;transition:background var(--dur-fast)}.rm-item:hover{background:var(--surface-2)}.rm-item.danger{color:var(--error)}.rm-item.danger:hover{background:var(--error-bg)}.rm-sep{height:1px;background:var(--border);margin:4px 0}.rm-ic{width:14px;height:14px;border:1.6px solid currentColor;border-radius:3px;opacity:.7;flex:none}.dt tbody tr{opacity:1;animation:rowIn var(--dur-base) var(--ease-out)}@keyframes rowIn{0%{transform:translateY(5px)}to{transform:none}}.pager{display:flex;align-items:center;justify-content:space-between;padding:13px 18px;border-top:1px solid var(--border);flex-wrap:wrap;gap:12px}.pager .info{font-size:13px;color:var(--text-secondary)}.pager .info b{color:var(--text-primary);font-family:var(--font-mono)}.pg-right{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.pg-size{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary)}.pg-size .input.select{min-height:34px;padding:0 10px;font-size:13px;gap:10px}.pg-nav{display:flex;gap:4px;align-items:center}.pg-btn{width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);font-size:13px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all var(--dur-fast)}.pg-btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--text-muted);color:var(--text-primary)}.pg-btn.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}.pg-btn:disabled{opacity:.4;cursor:not-allowed}.dt-empty,.dt-loading,.dt-error{padding:48px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}.dt-empty h4,.dt-error h4{margin:8px 0 0;font-size:16px}.dt-empty p,.dt-error p{margin:0;font-size:13px;color:var(--text-muted);max-width:34ch}.sk-table .skrow{display:grid;grid-template-columns:46px 90px 1fr 160px 120px 90px 54px;gap:16px;padding:14px 16px;border-bottom:1px solid var(--border);align-items:center}.sk-table .skc{height:14px;border-radius:5px;background:linear-gradient(90deg,var(--surface-2) 25%,var(--stone-100) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}.demo-controls{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.demo-controls .btn{height:36px}@media(max-width:920px){.tbl-spacer{margin-left:0;width:100%}.sk-table .skrow{grid-template-columns:46px 1fr 90px 54px}}.app{display:grid;grid-template-columns:248px 1fr;height:100vh;overflow:hidden}.side{background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 12px;overflow-y:auto}.side-brand{display:flex;align-items:center;gap:11px;font-weight:800;font-size:17px;letter-spacing:-.03em;padding:6px 8px 18px}.side-brand .lg{width:30px;height:30px;border-radius:9px;background:linear-gradient(140deg,var(--blue-500),var(--sky-500));position:relative;overflow:hidden}.side-brand .lg:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(125deg,transparent 0 6px,rgba(255,255,255,.28) 6px 7px)}.side-group{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);padding:16px 10px 7px}.nav-i{display:flex;align-items:center;gap:11px;padding:10px 11px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;color:var(--text-secondary);cursor:pointer;position:relative;transition:background var(--dur-fast),color var(--dur-fast)}.nav-i:hover{background:var(--surface-2);color:var(--text-primary)}.nav-i.active{background:var(--primary-weak);color:var(--primary-active);font-weight:600}.nav-i.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--primary);animation:dsInk var(--dur-base) var(--ease-out)}.nav-i .ic{width:17px;height:17px;border-radius:5px;border:1.7px solid currentColor;opacity:.7;flex:none}.nav-i.active .ic{background:var(--primary);border-color:var(--primary);opacity:1}.nav-i .ct{margin-left:auto;font-family:var(--font-mono);font-size:10.5px;font-weight:700;background:var(--surface-2);color:var(--text-secondary);border-radius:999px;padding:1px 7px}.nav-i.active .ct{background:var(--primary);color:#fff}.side-foot{margin-top:auto;display:flex;align-items:center;gap:10px;padding:10px;border-radius:var(--radius-md);background:var(--surface-2)}.side-foot .av{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--accent));flex:none}.side-foot .nm{font-size:13px;font-weight:600;line-height:1.2;white-space:nowrap}.side-foot>div{min-width:0}.side-foot .rl{font-size:11px;color:var(--text-muted);line-height:1.2;margin-top:2px}.main{display:flex;flex-direction:column;overflow:hidden}.topbar{display:flex;align-items:center;gap:16px;padding:14px 26px;background:var(--surface);border-bottom:1px solid var(--border);flex:none}.tb-bc{font-size:13px;color:var(--text-muted);display:flex;align-items:center;gap:8px}.tb-bc .cur{color:var(--text-primary);font-weight:600}.tb-bc .sep{color:var(--border-strong)}.tb-search{margin-left:auto;display:flex;align-items:center;gap:9px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);padding:9px 13px;min-width:240px;font-size:13.5px;color:var(--text-muted);transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}.tb-search:focus-within{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--primary-weak);background:var(--surface)}.tb-search input{border:none;background:transparent;outline:none;font:inherit;font-family:var(--font-sans);color:var(--text-primary);width:100%}.tb-search .s-ic{width:14px;height:14px;border:1.7px solid var(--text-muted);border-radius:50%;position:relative;flex:none}.tb-search .s-ic:after{content:"";position:absolute;right:-3px;bottom:-3px;width:5px;height:1.7px;background:var(--text-muted);transform:rotate(45deg)}.tb-bell{width:40px;height:40px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative}.tb-bell .b-ic{width:14px;height:15px;border:1.8px solid var(--text-secondary);border-radius:7px 7px 0 0;position:relative}.tb-bell:after{content:"";position:absolute;top:8px;right:9px;width:7px;height:7px;border-radius:50%;background:var(--error);border:2px solid var(--surface)}.canvas{flex:1;overflow-y:auto;padding:26px;background:var(--bg)}.screen{opacity:1;animation:scrIn var(--dur-moderate) var(--ease-out)}@keyframes scrIn{0%{transform:translateY(8px)}to{transform:none}}.scr-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}.scr-head h1{font-size:26px;letter-spacing:-.025em;margin:0}.scr-head .sub{font-size:13.5px;color:var(--text-secondary);margin-top:5px}.scr-actions{display:flex;gap:10px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}.dash-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:16px}.block{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--elev-2);overflow:hidden}.block-h{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--border)}.block-h h3{font-size:15px;margin:0;letter-spacing:-.01em}.block-h a{font-size:12.5px;color:var(--primary);text-decoration:none;font-weight:600;cursor:pointer}.block-body{padding:6px 0}.li{display:flex;align-items:center;gap:14px;padding:12px 18px;border-bottom:1px solid var(--border);transition:background var(--dur-fast);cursor:pointer}.li:last-child{border-bottom:none}.li:hover{background:var(--surface-2)}.li .li-code{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);width:78px;flex:none}.li .li-route{font-weight:600;font-size:13.5px;flex:1}.li .li-route .s{display:block;font-weight:400;font-size:11.5px;color:var(--text-muted)}.li .li-val{font-family:var(--font-mono);font-size:13px;font-weight:600}.chart{display:flex;align-items:flex-end;gap:10px;height:160px;padding:18px}.chart .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;height:100%;justify-content:flex-end}.chart .col .bar{width:100%;max-width:34px;background:var(--primary);border-radius:5px 5px 0 0;transition:height var(--dur-slow) var(--ease-out)}.chart .col:nth-child(2n) .bar{background:var(--primary-border)}.chart .col .lb{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}.brk{padding:16px 18px;display:flex;flex-direction:column;gap:14px}.brk-row .brk-top{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:6px}.brk-row .brk-top b{font-family:var(--font-mono)}.brk-bar{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden}.brk-bar i{display:block;height:100%;border-radius:999px}.det-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:16px;align-items:start}.det-hero{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--elev-2);padding:22px;margin-bottom:16px}.det-route{display:flex;align-items:center;gap:18px;margin:14px 0 0}.det-route .pt{flex:1}.det-route .pt .city{font-size:20px;font-weight:700;letter-spacing:-.02em}.det-route .pt .addr{font-size:12.5px;color:var(--text-muted);margin-top:2px}.det-route .line{flex:none;width:120px;height:2px;background:var(--border-strong);position:relative}.det-route .line:after{content:"";position:absolute;right:0;top:-3px;border:4px solid transparent;border-left-color:var(--border-strong)}.det-route .line .truck{position:absolute;top:-7px;left:40%;width:16px;height:16px;border-radius:4px;background:var(--primary)}.kv{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);border-radius:var(--radius-md);overflow:hidden;margin-top:20px}.kv .cell{background:var(--surface);padding:13px 15px}.kv .k{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.kv .v{font-size:15px;font-weight:600;margin-top:4px;font-family:var(--font-mono)}.tl-line{padding:8px 18px 16px}.tl-item{display:flex;gap:14px;padding:10px 0;position:relative}.tl-item .dot{width:13px;height:13px;border-radius:50%;border:2.5px solid var(--border-strong);background:var(--surface);flex:none;margin-top:2px;z-index:2}.tl-item.done .dot{background:var(--success);border-color:var(--success)}.tl-item.active .dot{background:var(--primary);border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-weak)}.tl-item:not(:last-child):before{content:"";position:absolute;left:6px;top:18px;bottom:-10px;width:2px;background:var(--border)}.tl-item.done:not(:last-child):before{background:var(--success)}.tl-item .tx b{font-size:13.5px;display:block}.tl-item .tx span{font-size:12px;color:var(--text-muted)}@media(max-width:1100px){.kpis{grid-template-columns:1fr 1fr}.dash-grid,.det-grid{grid-template-columns:1fr}}@media(max-width:760px){.side{display:none}.app{grid-template-columns:1fr}}
/*# sourceMappingURL=styles-G3FRJWTH.css.map */
