@font-face{font-family:Archivo;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/archivo-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/archivo-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/archivo-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/archivo-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/archivo-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/archivo-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/archivo-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/archivo-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/archivo-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(/fonts/archivo-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(/fonts/archivo-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(/fonts/archivo-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/hanken-grotesk-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/hanken-grotesk-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/hanken-grotesk-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/hanken-grotesk-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/hanken-grotesk-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/hanken-grotesk-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/hanken-grotesk-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/hanken-grotesk-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/hanken-grotesk-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/hanken-grotesk-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/hanken-grotesk-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/hanken-grotesk-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/hanken-grotesk-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/hanken-grotesk-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/hanken-grotesk-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/hanken-grotesk-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-cyrillic-ext-400.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-cyrillic-400.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-vietnamese-400.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-ext-400.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-cyrillic-ext-500.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-cyrillic-500.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-vietnamese-500.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-ext-500.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-500.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-cyrillic-ext-600.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-cyrillic-600.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-vietnamese-600.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-ext-600.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-600.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--trac-50: #FDF3EC;--trac-100: #FBE6D7;--trac-200: #F6C9A8;--trac-300: #F0A878;--trac-400: #EC8849;--trac-500: #E86C2B;--trac-600: #D6541A;--trac-700: #B8480F;--trac-800: #8F380C;--ink-50: #EAF0F2;--ink-100: #CBD8DD;--ink-300: #6E8893;--ink-500: #3E5A66;--ink-600: #2E5462;--ink-700: #1F4250;--ink-800: #143240;--ink-900: #0D2330;--paper: #F7F3EC;--paper-deep: #F1ECE3;--surface: #FFFFFF;--surface-2: #FBF9F4;--line: #E7E1D8;--line-strong: #D8CFC1;--gray-700: #4A5A63;--gray-500: #7A8891;--gray-400: #9AA6AD;--success-600: #1E8A5B;--success-100: #E2F2EA;--success-700:#176B47;--info-600: #2D6CB5;--info-100: #E4EEF8;--info-700: #225488;--warning-600: #C9881A;--warning-100: #FAF0DA;--warning-700:#9C6A12;--danger-600: #C2412E;--danger-100: #F8E4DF;--danger-700: #9A3122;--wf-requests: #D6541A;--wf-quotes: #9E2B4E;--wf-jobs: #1E8A5B;--wf-invoices: #2D6CB5;--bg-app: var(--paper);--bg-surface: var(--surface);--bg-sunken: var(--paper-deep);--bg-brand: var(--trac-600);--bg-brand-soft: var(--trac-50);--fg-1: var(--ink-900);--fg-2: var(--gray-700);--fg-3: var(--gray-500);--fg-onbrand: #FFFFFF;--fg-link: var(--ink-700);--border: var(--line);--border-strong: var(--line-strong);--focus-ring: var(--trac-500);--font-display: "Archivo", system-ui, sans-serif;--font-sans: "Hanken Grotesk", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--text-xs: 12px;--text-sm: 14px;--text-base: 16px;--text-md: 18px;--text-lg: 21px;--text-xl: 26px;--text-2xl: 32px;--text-3xl: 42px;--text-4xl: 54px;--text-5xl: 68px;--lh-tight: 1.08;--lh-snug: 1.25;--lh-body: 1.55;--tracking-tight: -.02em;--tracking-snug: -.01em;--tracking-wide: .04em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-pill: 999px;--shadow-xs: 0 1px 2px rgba(13, 35, 48, .06);--shadow-sm: 0 1px 2px rgba(13, 35, 48, .05), 0 2px 6px rgba(13, 35, 48, .05);--shadow-md: 0 4px 12px rgba(13, 35, 48, .08), 0 1px 3px rgba(13, 35, 48, .06);--shadow-lg: 0 12px 30px rgba(13, 35, 48, .12), 0 4px 10px rgba(13, 35, 48, .06);--shadow-pop: 0 10px 28px rgba(13, 35, 48, .16)}.gt-h1{font-family:var(--font-display);font-weight:800;font-size:var(--text-4xl);line-height:var(--lh-tight);letter-spacing:var(--tracking-tight);color:var(--fg-1)}.gt-h2{font-family:var(--font-display);font-weight:700;font-size:var(--text-2xl);line-height:var(--lh-snug);letter-spacing:var(--tracking-snug);color:var(--fg-1)}.gt-h3{font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);line-height:var(--lh-snug);color:var(--fg-1)}.gt-title{font-family:var(--font-display);font-weight:600;font-size:var(--text-md);line-height:var(--lh-snug);color:var(--fg-1)}.gt-body{font-family:var(--font-sans);font-weight:400;font-size:var(--text-base);line-height:var(--lh-body);color:var(--fg-2)}.gt-small{font-family:var(--font-sans);font-weight:400;font-size:var(--text-sm);line-height:var(--lh-body);color:var(--fg-2)}.gt-meta{font-family:var(--font-sans);font-weight:500;font-size:var(--text-xs);line-height:1.4;color:var(--fg-3)}.gt-overline{font-family:var(--font-sans);font-weight:600;font-size:var(--text-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--fg-3)}.gt-num{font-family:var(--font-display);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:var(--tracking-tight);color:var(--fg-1)}.gt-mono{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--fg-2)}html,body{margin:0;height:100%;overflow-x:hidden;max-width:100%}body{background:var(--paper);font-family:var(--font-sans)}*{box-sizing:border-box}::selection{background:var(--trac-200)}input,textarea,button,select{font-family:var(--font-sans)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:5px;border:2px solid var(--paper)}@keyframes gtPop{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:none}}@keyframes gtToast{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}@keyframes gtScrim{0%{opacity:0}to{opacity:1}}@keyframes gtDraw{0%{transform:translate(-100%)}to{transform:none}}@keyframes gtView{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: no-preference){.view{animation:gtView .22s ease both}}@media (prefers-reduced-motion: no-preference){.auth-view{animation:gtView .26s cubic-bezier(.2,.8,.2,1) both}}@media (max-width: 880px){.auth-brand{display:none!important}}@media (max-width: 820px){.dgrid,.dgrid2{grid-template-columns:minmax(0,1fr)!important}.cal-row{flex-wrap:wrap!important}.cal-main{flex:1 1 100%!important;min-width:0!important}.cal-side{flex:1 1 100%!important;width:100%!important;min-width:0!important}.cust-hero-actions{flex:1 1 100%!important}.cust-hero-actions>button:last-child{flex:1}}main{overflow-x:hidden}.dgrid>*,.dgrid2>*{min-width:0}.app-shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr;background:var(--bg-app);color:var(--fg-2)}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-6);height:60px;background:var(--ink-900);color:#fff;box-shadow:var(--shadow-sm)}.brand{display:flex;align-items:center;gap:var(--space-3);font-family:var(--font-display);font-weight:800;font-size:var(--text-lg);letter-spacing:var(--tracking-tight);color:#fff}.brand-mark{width:26px;height:26px;border-radius:var(--radius-sm);background:var(--trac-600);display:grid;place-items:center;color:#fff;font-weight:800;font-family:var(--font-display)}.topbar-right{display:flex;align-items:center;gap:var(--space-4)}.topbar-user{color:var(--ink-100);font-size:var(--text-sm)}.shell-body{display:grid;grid-template-columns:240px 1fr;min-height:0}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:var(--space-5) var(--space-3);display:flex;flex-direction:column;gap:var(--space-1)}.sidebar .section-label{font-family:var(--font-sans);font-weight:600;font-size:var(--text-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--fg-3);margin:var(--space-4) var(--space-2) var(--space-1)}.nav-item{display:flex;align-items:center;gap:var(--space-2);padding:9px var(--space-3);border-radius:var(--radius-md);border:none;background:transparent;color:var(--fg-2);font:inherit;font-weight:500;text-align:left;cursor:pointer;width:100%}.nav-item:hover{background:var(--bg-brand-soft);color:var(--trac-700)}.nav-item.active{background:var(--bg-brand-soft);color:var(--trac-700);font-weight:600}.nav-static{padding:9px var(--space-3);color:var(--fg-2);font-size:var(--text-sm)}.main{padding:var(--space-8);overflow:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:9px var(--space-5);border-radius:var(--radius-md);border:1px solid transparent;font:inherit;font-weight:600;font-size:var(--text-sm);cursor:pointer;transition:background .15s,border-color .15s,transform .05s}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--trac-600);color:#fff}.btn-primary:hover:not(:disabled){background:var(--trac-700)}.btn-ghost{background:var(--surface);color:var(--fg-1);border-color:var(--border-strong)}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-danger{background:var(--surface);color:var(--danger-700);border-color:var(--danger-100)}.btn-danger:hover:not(:disabled){background:var(--danger-100)}.btn-sm{padding:5px var(--space-3);font-size:var(--text-xs)}.btn-link{background:none;border:none;color:var(--fg-link);cursor:pointer;font:inherit;text-decoration:underline}.field{display:grid;gap:var(--space-1)}.field>span{font-size:var(--text-sm);font-weight:500;color:var(--fg-2)}.input,.select{width:100%;box-sizing:border-box;padding:9px var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface);color:var(--fg-1);font:inherit;font-size:var(--text-sm)}.input:focus,.select:focus{outline:none;border-color:var(--focus-ring);box-shadow:0 0 0 3px var(--trac-50)}.select{cursor:pointer}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm)}.card+.card{margin-top:var(--space-5)}.card-title{margin:0 0 var(--space-4)}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-strong);color:var(--fg-3);font-weight:600;font-size:var(--text-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase}.table td{padding:10px var(--space-3);border-bottom:1px solid var(--border);color:var(--fg-1)}.table tr:last-child td{border-bottom:none}.row-inactive{opacity:.5}.badge{display:inline-flex;align-items:center;padding:2px var(--space-2);border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:600}.badge-ok{background:var(--success-100);color:var(--success-700)}.badge-muted{background:var(--paper-deep);color:var(--fg-3)}.auth-wrap{min-height:100vh;display:grid;place-items:center;background:radial-gradient(1200px 500px at 50% -10%,var(--trac-50),transparent 60%),var(--bg-app);padding:var(--space-6)}.auth-card{width:100%;max-width:400px}.auth-head{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-5)}.msg-error{color:var(--danger-700);font-size:var(--text-sm)}.msg-ok{color:var(--success-700);font-size:var(--text-sm)}.stack{display:grid;gap:var(--space-3)}.muted{color:var(--fg-3)}
