@font-face{font-family:'Prompt';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/prompt-thai-400.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Prompt';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/prompt-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:'Prompt';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/prompt-thai-500.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Prompt';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/prompt-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:'Prompt';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/prompt-thai-600.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Prompt';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/prompt-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}@font-face{font-family:'Prompt';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/prompt-thai-700.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Prompt';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/prompt-latin-700.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:'Sarabun';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/sarabun-thai-400.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Sarabun';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/sarabun-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:'Sarabun';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/sarabun-thai-500.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Sarabun';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/sarabun-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:'Sarabun';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/sarabun-thai-600.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Sarabun';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/sarabun-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}@font-face{font-family:'Sarabun';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/sarabun-thai-700.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Sarabun';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/sarabun-latin-700.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:'Kanit';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/kanit-thai-400.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Kanit';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/kanit-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:'Kanit';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/kanit-thai-500.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Kanit';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/kanit-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:'Kanit';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/kanit-thai-600.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Kanit';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/kanit-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}@font-face{font-family:'Kanit';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/kanit-thai-700.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Kanit';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/kanit-latin-700.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 Sans Thai';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-thai-thai-400.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'IBM Plex Sans Thai';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-thai-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 Sans Thai';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-thai-thai-500.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'IBM Plex Sans Thai';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-thai-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 Sans Thai';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-thai-thai-600.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'IBM Plex Sans Thai';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-thai-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}@font-face{font-family:'IBM Plex Sans Thai';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-thai-thai-700.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'IBM Plex Sans Thai';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-thai-latin-700.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:'Noto Sans Thai';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/noto-sans-thai-thai-400.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/noto-sans-thai-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:'Noto Sans Thai';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/noto-sans-thai-thai-500.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/noto-sans-thai-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:'Noto Sans Thai';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/noto-sans-thai-thai-600.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/noto-sans-thai-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}@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/noto-sans-thai-thai-700.woff2') format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:'Noto Sans Thai';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/noto-sans-thai-latin-700.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{--tpw-primary: #0D47A1;--tpw-secondary: #1565C0;--tpw-accent: #1976D2;--tpw-primary-rgb: 13,71,161;--tpw-accent-rgb: 25,118,210;--tpw-on-primary: #FFFFFF;--tpw-bg: #F5F7FA;--tpw-card: #FFFFFF;--tpw-surface-2: #EEF2F8;--tpw-border: #E2E8F0;--tpw-text: #1F2937;--tpw-text-muted: #5B6B82;--tpw-link: var(--tpw-secondary);--tpw-success: #15803D;--tpw-warning: #B45309;--tpw-danger: #B91C1C;--tpw-info: #0369A1;--tpw-success-bg: #DCFCE7;--tpw-warning-bg: #FEF3C7;--tpw-danger-bg: #FEE2E2;--tpw-info-bg: #E0F2FE;--tpw-grad-hero: linear-gradient(135deg,#0D47A1 0%,#1565C0 50%,#1976D2 100%);--tpw-grad-soft: linear-gradient(180deg,rgba(25,118,210,.08),transparent);--tpw-grad-text: linear-gradient(90deg,#0D47A1,#1976D2);--font-heading: 'Prompt','Sarabun',system-ui,-apple-system,'Segoe UI',sans-serif;--font-body: 'Sarabun','Noto Sans Thai',system-ui,-apple-system,'Segoe UI',sans-serif;--font-ui: 'IBM Plex Sans Thai','Sarabun',system-ui,-apple-system,'Segoe UI',sans-serif;--fs-display: clamp(2.25rem,1.5rem + 3vw,4rem);--fs-h1: clamp(1.75rem,1.3rem + 1.8vw,2.75rem);--fs-h2: clamp(1.5rem,1.2rem + 1.2vw,2.125rem);--fs-h3: 1.375rem;--fs-body: 1rem;--fs-sm: .875rem;--fs-xs: .75rem;--lh-body: 1.75;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--sp-8: 64px;--sp-9: 96px;--r-sm: 8px;--r-md: 14px;--r-lg: 20px;--r-xl: 28px;--r-pill: 999px;--sh-1: 0 1px 2px rgba(13,71,161,.06),0 1px 3px rgba(13,71,161,.08);--sh-2: 0 4px 12px rgba(13,71,161,.08);--sh-3: 0 12px 32px rgba(13,71,161,.12);--sh-glow: 0 0 0 4px rgba(25,118,210,.25);--sh-neu: 8px 8px 16px #D9DDE3,-8px -8px 16px #FFFFFF;--glass-bg: rgba(255,255,255,.14);--glass-bg-solid: rgba(255,255,255,.92);--glass-border: rgba(255,255,255,.28);--glass-blur: 16px;--glass-card-bg: rgba(255,255,255,.72);--ease-out: cubic-bezier(.16,1,.3,1);--dur-fast: 150ms;--dur: 250ms;--dur-slow: 500ms;--navbar-h: 72px;--sidebar-w: 272px;--sidebar-w-collapsed: 80px;--topbar-h: 64px;--bs-primary: var(--tpw-primary);--bs-primary-rgb: var(--tpw-primary-rgb);--bs-link-color: var(--tpw-link);--bs-link-color-rgb: 21,101,192;--bs-link-hover-color: var(--tpw-primary);--bs-body-font-family: var(--font-body);--bs-body-bg: var(--tpw-bg);--bs-body-color: var(--tpw-text);--bs-border-color: var(--tpw-border);--bs-secondary-color: var(--tpw-text-muted);--bs-border-radius: var(--r-sm);--bs-border-radius-lg: var(--r-md);--bs-focus-ring-color: rgba(25,118,210,.25)}html[data-bs-theme="dark"]{--tpw-primary: #64B5F6;--tpw-secondary: #90CAF9;--tpw-accent: #42A5F5;--tpw-primary-rgb: 100,181,246;--tpw-accent-rgb: 66,165,245;--tpw-on-primary: #0B1220;--tpw-bg: #0B1220;--tpw-card: #111A2E;--tpw-surface-2: #16223A;--tpw-border: #22304A;--tpw-text: #E6EDF7;--tpw-text-muted: #94A3B8;--tpw-success: #4ADE80;--tpw-warning: #FBBF24;--tpw-danger: #F87171;--tpw-info: #38BDF8;--tpw-success-bg: rgba(74,222,128,.12);--tpw-warning-bg: rgba(251,191,36,.12);--tpw-danger-bg: rgba(248,113,113,.12);--tpw-info-bg: rgba(56,189,248,.12);--tpw-grad-hero: linear-gradient(135deg,#0A2A5E 0%,#0D47A1 55%,#1565C0 100%);--tpw-grad-text: linear-gradient(90deg,#90CAF9,#42A5F5);--sh-1: 0 1px 2px rgba(0,0,0,.3);--sh-2: 0 4px 12px rgba(0,0,0,.35);--sh-3: 0 12px 32px rgba(0,0,0,.45);--sh-neu: 8px 8px 16px #070C16,-8px -8px 16px #16223A;--glass-bg: rgba(17,26,46,.55);--glass-bg-solid: rgba(17,26,46,.95);--glass-border: rgba(255,255,255,.10);--glass-card-bg: rgba(17,26,46,.72);--bs-link-color-rgb: 144,202,249;--bs-body-bg: var(--tpw-bg);--bs-body-color: var(--tpw-text);--bs-border-color: var(--tpw-border);--bs-secondary-color: var(--tpw-text-muted);--bs-tertiary-bg: var(--tpw-surface-2);--bs-secondary-bg: var(--tpw-surface-2);--bs-emphasis-color: #FFFFFF}html.a11y-contrast{--tpw-text: #000000;--tpw-text-muted: #1F2937;--tpw-border: #6B7280;--tpw-primary: #0A3A85;--tpw-link: #0A3A85}html.a11y-contrast[data-bs-theme="dark"]{--tpw-text: #FFFFFF;--tpw-text-muted: #E5E7EB;--tpw-border: #9CA3AF;--tpw-primary: #BBDEFB;--tpw-link: #BBDEFB}
html{scroll-behavior: smooth;-webkit-text-size-adjust: 100%}html.a11y-text-lg{font-size: 112.5%}html.a11y-text-xl{font-size: 125%}body{font-family: var(--font-body);font-size: var(--fs-body);line-height: var(--lh-body);color: var(--tpw-text);background: var(--tpw-bg);-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-rendering: optimizeLegibility}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family: var(--font-heading);font-weight: 600;line-height: 1.35;color: var(--tpw-text);letter-spacing: -.005em}h1,.h1{font-size: var(--fs-h1);line-height: 1.25}h2,.h2{font-size: var(--fs-h2);line-height: 1.3}h3,.h3{font-size: var(--fs-h3);line-height: 1.4}a{color: var(--tpw-link);text-decoration-thickness: 1px;text-underline-offset: 3px;transition: color var(--dur-fast)}a:hover{color: var(--tpw-primary)}small,.small{font-size: var(--fs-sm);line-height: 1.6}.text-xs{font-size: var(--fs-xs);line-height: 1.5}.text-muted-tpw{color: var(--tpw-text-muted) !important}.text-primary-tpw{color: var(--tpw-primary) !important}.text-gradient{background: var(--tpw-grad-text);-webkit-background-clip: text;background-clip: text;color: transparent}.font-heading{font-family: var(--font-heading)}.font-ui{font-family: var(--font-ui)}.fw-semibold{font-weight: 600 !important}::selection{background: rgba(var(--tpw-accent-rgb),.22)}:focus{outline: none}:focus-visible{outline: 3px solid var(--tpw-accent);outline-offset: 2px;border-radius: 4px}.btn:focus-visible,.form-control:focus,.form-select:focus,.form-check-input:focus{box-shadow: var(--sh-glow);border-color: var(--tpw-accent);outline: none}.skip-link{position: absolute;left: var(--sp-4);top: -100px;z-index: 2000;padding: var(--sp-2) var(--sp-4);background: var(--tpw-primary);color: var(--tpw-on-primary);border-radius: var(--r-sm);font-weight: 600;transition: top var(--dur)}.skip-link:focus{top: var(--sp-3);color: var(--tpw-on-primary)}.visually-hidden-focusable:not(:focus):not(:focus-within){position: absolute !important}img{max-width: 100%;height: auto}img[loading="lazy"]{background: var(--tpw-surface-2)}hr{border-color: var(--tpw-border);opacity: 1}*{scrollbar-width: thin;scrollbar-color: rgba(var(--tpw-primary-rgb),.3) transparent}*::-webkit-scrollbar{width: 8px;height: 8px}*::-webkit-scrollbar-thumb{background: rgba(var(--tpw-primary-rgb),.25);border-radius: 8px}*::-webkit-scrollbar-track{background: transparent}.card,.dropdown-menu,.modal-content,.offcanvas,.list-group-item,.popover,.toast{--bs-card-bg: var(--tpw-card);--bs-dropdown-bg: var(--tpw-card);--bs-modal-bg: var(--tpw-card);--bs-offcanvas-bg: var(--tpw-card);--bs-list-group-bg: var(--tpw-card);--bs-card-border-color: var(--tpw-border);--bs-dropdown-border-color: var(--tpw-border);--bs-list-group-border-color: var(--tpw-border);color: var(--tpw-text)}.dropdown-menu{border-radius: var(--r-md);box-shadow: var(--sh-3);padding: var(--sp-2)}.dropdown-item{border-radius: var(--r-sm);padding: .5rem .75rem}.dropdown-item:active{background: var(--tpw-primary);color: var(--tpw-on-primary)}.modal-content{border-radius: var(--r-lg);border: 1px solid var(--tpw-border);box-shadow: var(--sh-3)}.form-control,.form-select{background-color: var(--tpw-card);border-color: var(--tpw-border);color: var(--tpw-text);border-radius: var(--r-sm);min-height: 44px}.form-control::placeholder{color: var(--tpw-text-muted);opacity: .75}.form-control-lg,.form-select-lg{min-height: 52px;border-radius: var(--r-md)}.form-label{font-weight: 500;margin-bottom: .375rem}.form-text{color: var(--tpw-text-muted)}.form-check-input:checked{background-color: var(--tpw-primary);border-color: var(--tpw-primary)}.table{--bs-table-bg: transparent;--bs-table-color: var(--tpw-text);--bs-table-border-color: var(--tpw-border)}.table>:not(caption)>*>*{padding: .75rem .875rem}@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration: .01ms !important;animation-iteration-count: 1 !important;transition-duration: .01ms !important;scroll-behavior: auto !important}}html.a11y-reduce-motion *,html.a11y-reduce-motion *::before,html.a11y-reduce-motion *::after{animation-duration: .01ms !important;animation-iteration-count: 1 !important;transition-duration: .01ms !important}.nobr{white-space: nowrap}.zs{font-size: 0;user-select: none}.jline{display: block;text-align: left;text-align-last: left;white-space: nowrap}.jline.is-last{white-space: normal}
.btn{font-family: var(--font-ui);font-weight: 500;min-height: 44px;display: inline-flex;align-items: center;justify-content: center;gap: .4rem}.btn-sm{min-height: 34px}.btn-tpw,.btn-tpw-outline,.btn-tpw-ghost,.btn-glass{position: relative;overflow: hidden;border-radius: var(--r-pill);padding: .55rem 1.35rem;transition: transform var(--dur-fast) var(--ease-out),box-shadow var(--dur) var(--ease-out),background-color var(--dur),color var(--dur)}.btn-tpw{background: var(--tpw-grad-hero);color: #FFFFFF;border: 0;box-shadow: 0 6px 18px rgba(var(--tpw-primary-rgb),.28)}.btn-tpw:hover,.btn-tpw:focus-visible{color: #FFFFFF;transform: translateY(-1px);box-shadow: 0 10px 24px rgba(var(--tpw-primary-rgb),.34)}.btn-tpw:active{transform: translateY(0)}html[data-bs-theme="dark"] .btn-tpw{color: #FFFFFF}.btn-tpw-outline{background: transparent;color: var(--tpw-primary);border: 1.5px solid currentColor}.btn-tpw-outline:hover{background: rgba(var(--tpw-primary-rgb),.08);color: var(--tpw-primary)}.btn-tpw-ghost{background: transparent;color: var(--tpw-text);border: 0}.btn-tpw-ghost:hover{background: rgba(var(--tpw-primary-rgb),.08);color: var(--tpw-primary)}.btn-glass{background: var(--glass-bg);color: #FFFFFF;border: 1px solid var(--glass-border);-webkit-backdrop-filter: blur(var(--glass-blur));backdrop-filter: blur(var(--glass-blur))}.btn-glass:hover{background: rgba(255,255,255,.24);color: #FFFFFF}.btn-icon{width: 40px;height: 40px;min-height: 40px;padding: 0;border-radius: 50%}.btn-danger-soft{background: var(--tpw-danger-bg);color: var(--tpw-danger);border: 0;border-radius: var(--r-pill)}.btn-danger-soft:hover{background: var(--tpw-danger);color: #FFFFFF}.ripple{position: absolute;border-radius: 50%;transform: scale(0);background: rgba(255,255,255,.45);animation: ripple 600ms var(--ease-out);pointer-events: none}@keyframes ripple{to{transform: scale(4);opacity: 0}}.btn.is-loading{pointer-events: none;color: transparent !important}.btn.is-loading::after{content: "";position: absolute;width: 1.1rem;height: 1.1rem;border: 2px solid rgba(255,255,255,.5);border-top-color: #FFFFFF;border-radius: 50%;animation: spin .7s linear infinite}.btn-tpw-outline.is-loading::after,.btn-tpw-ghost.is-loading::after{border-color: rgba(var(--tpw-primary-rgb),.3);border-top-color: var(--tpw-primary)}@keyframes spin{to{transform: rotate(360deg)}}.glass{background: var(--glass-card-bg);border: 1px solid var(--glass-border);border-radius: var(--r-xl);box-shadow: var(--sh-3);-webkit-backdrop-filter: blur(var(--glass-blur)) saturate(140%);backdrop-filter: blur(var(--glass-blur)) saturate(140%)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.glass{background: var(--glass-bg-solid)}}.card-tpw{position: relative;background: var(--tpw-card);border: 1px solid var(--tpw-border);border-radius: var(--r-lg);box-shadow: var(--sh-1);transition: transform var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out),border-color var(--dur)}.card-tpw .card-body{padding: var(--sp-5)}.card-tpw .card-header{background: transparent;border-bottom: 1px solid var(--tpw-border);padding: var(--sp-4) var(--sp-5);font-family: var(--font-heading);font-weight: 600}.hover-lift:hover{transform: translateY(-4px);box-shadow: var(--sh-3);border-color: rgba(var(--tpw-accent-rgb),.35)}.hover-glow{overflow: hidden}.hover-glow::before{content: "";position: absolute;inset: 0;background: radial-gradient(600px circle at var(--mx,50%) var(--my,50%),rgba(var(--tpw-accent-rgb),.12),transparent 40%);opacity: 0;transition: opacity var(--dur);pointer-events: none}.hover-glow:hover::before{opacity: 1}.stat-tile{display: flex;gap: var(--sp-4);align-items: center;padding: var(--sp-5)}.stat-tile-icon{flex: 0 0 52px;width: 52px;height: 52px;display: grid;place-items: center;border-radius: var(--r-md);background: var(--tpw-grad-hero);color: #FFFFFF;font-size: 1.25rem;box-shadow: 0 8px 18px rgba(var(--tpw-primary-rgb),.25)}.stat-tile-value{font-family: var(--font-heading);font-size: 1.75rem;font-weight: 600;line-height: 1.1;color: var(--tpw-text)}.stat-tile-label{color: var(--tpw-text-muted);font-size: var(--fs-sm)}.stat-trend-up{color: var(--tpw-success)}.stat-trend-down{color: var(--tpw-danger)}.chip{display: inline-flex;align-items: center;gap: .35rem;padding: .2rem .75rem;border-radius: var(--r-pill);font-size: var(--fs-xs);font-weight: 600;font-family: var(--font-ui);background: rgba(var(--tpw-primary-rgb),.1);color: var(--tpw-primary);line-height: 1.6}.badge-status{display: inline-flex;align-items: center;gap: .35rem;padding: .2rem .65rem;border-radius: var(--r-pill);font-size: var(--fs-xs);font-weight: 600;font-family: var(--font-ui)}.badge-status::before{content: "";width: .45rem;height: .45rem;border-radius: 50%;background: currentColor}.badge-status-published,.badge-status-active,.badge-status-success{background: var(--tpw-success-bg);color: var(--tpw-success)}.badge-status-draft,.badge-status-read{background: var(--tpw-surface-2);color: var(--tpw-text-muted)}.badge-status-pending,.badge-status-new{background: var(--tpw-warning-bg);color: var(--tpw-warning)}.badge-status-archived,.badge-status-suspended,.badge-status-failed{background: var(--tpw-danger-bg);color: var(--tpw-danger)}.badge-status-replied{background: var(--tpw-info-bg);color: var(--tpw-info)}.alert-tpw{display: flex;gap: var(--sp-3);align-items: flex-start;border: 0;border-radius: var(--r-md);padding: var(--sp-3) var(--sp-4);font-size: var(--fs-sm)}.alert-tpw i{margin-top: .3rem}.alert-tpw-success{background: var(--tpw-success-bg);color: var(--tpw-success)}.alert-tpw-danger{background: var(--tpw-danger-bg);color: var(--tpw-danger)}.alert-tpw-warning{background: var(--tpw-warning-bg);color: var(--tpw-warning)}.alert-tpw-info{background: var(--tpw-info-bg);color: var(--tpw-info)}.form-field{margin-bottom: var(--sp-4)}.input-icon{position: relative}.input-icon>i{position: absolute;left: 1rem;top: 50%;transform: translateY(-50%);color: var(--tpw-text-muted);pointer-events: none}.input-icon>.form-control{padding-left: 2.75rem}.input-icon>.toggle-password{position: absolute;right: .35rem;top: 50%;transform: translateY(-50%);border: 0;background: transparent;color: var(--tpw-text-muted);width: 40px;height: 40px;border-radius: 50%}.input-icon>.toggle-password:hover{color: var(--tpw-primary);background: rgba(var(--tpw-primary-rgb),.08)}.input-icon>.form-control.has-toggle{padding-right: 3rem}.invalid-feedback{font-size: var(--fs-sm)}.password-meter{height: 6px;border-radius: var(--r-pill);background: var(--tpw-surface-2);overflow: hidden;margin-top: .5rem}.password-meter>span{display: block;height: 100%;width: 0;border-radius: inherit;transition: width var(--dur) var(--ease-out),background-color var(--dur)}.password-meter[data-score="1"]>span{width: 25%;background: var(--tpw-danger)}.password-meter[data-score="2"]>span{width: 50%;background: var(--tpw-warning)}.password-meter[data-score="3"]>span{width: 75%;background: var(--tpw-info)}.password-meter[data-score="4"]>span{width: 100%;background: var(--tpw-success)}.empty-state{text-align: center;padding: var(--sp-8) var(--sp-4);color: var(--tpw-text-muted)}.empty-state-icon{width: 88px;height: 88px;margin: 0 auto var(--sp-4);display: grid;place-items: center;border-radius: 50%;background: rgba(var(--tpw-primary-rgb),.08);color: var(--tpw-primary);font-size: 2rem}.skeleton{position: relative;overflow: hidden;background: var(--tpw-surface-2);border-radius: var(--r-sm);min-height: 1em}.skeleton::after{content: "";position: absolute;inset: 0;transform: translateX(-100%);background: linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);animation: shimmer 1.4s infinite}html[data-bs-theme="dark"] .skeleton::after{background: linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent)}@keyframes shimmer{100%{transform: translateX(100%)}}.toast-stack{position: fixed;top: var(--sp-4);right: var(--sp-4);left: var(--sp-4);z-index: 1090;display: flex;flex-direction: column;align-items: flex-end;gap: var(--sp-2);pointer-events: none}.toast-tpw{pointer-events: auto;display: flex;gap: var(--sp-3);align-items: flex-start;width: min(380px,100%);padding: var(--sp-3) var(--sp-4);background: var(--tpw-card);color: var(--tpw-text);border: 1px solid var(--tpw-border);border-left: 4px solid var(--tpw-info);border-radius: var(--r-md);box-shadow: var(--sh-3);font-size: var(--fs-sm);animation: toast-in var(--dur-slow) var(--ease-out)}.toast-tpw.is-leaving{animation: toast-out var(--dur) ease-in forwards}.toast-tpw-success{border-left-color: var(--tpw-success)}.toast-tpw-success .toast-icon{color: var(--tpw-success)}.toast-tpw-error{border-left-color: var(--tpw-danger)}.toast-tpw-error .toast-icon{color: var(--tpw-danger)}.toast-tpw-warning{border-left-color: var(--tpw-warning)}.toast-tpw-warning .toast-icon{color: var(--tpw-warning)}.toast-tpw-info .toast-icon{color: var(--tpw-info)}.toast-icon{font-size: 1.1rem;margin-top: .15rem}.toast-close{margin-left: auto;border: 0;background: transparent;color: var(--tpw-text-muted);padding: 0 .25rem}@keyframes toast-in{from{opacity: 0;transform: translateY(-8px) scale(.98)}to{opacity: 1;transform: none}}@keyframes toast-out{to{opacity: 0;transform: translateX(16px)}}.float-shape{position: absolute;border-radius: 50%;filter: blur(2px);opacity: .5;pointer-events: none;animation: float 12s ease-in-out infinite}@keyframes float{0%,100%{transform: translate(0,0) rotate(0)}50%{transform: translate(18px,-24px) rotate(8deg)}}.error-page{min-height: 100vh;background: var(--tpw-grad-hero)}.error-wrap{position: relative;min-height: 100vh;display: grid;place-items: center;padding: var(--sp-4);overflow: hidden}.error-card{position: relative;z-index: 1;width: min(480px,100%);padding: var(--sp-7) var(--sp-5)}.error-icon{width: 72px;height: 72px;margin: 0 auto var(--sp-3);display: grid;place-items: center;border-radius: 50%;background: rgba(var(--tpw-primary-rgb),.1);color: var(--tpw-primary);font-size: 1.75rem}.error-code{font-family: var(--font-heading);font-size: 4rem;font-weight: 700;line-height: 1;margin-bottom: var(--sp-2);background: var(--tpw-grad-text);-webkit-background-clip: text;background-clip: text;color: transparent}.error-shape{position: absolute;border-radius: 50%;background: rgba(255,255,255,.12)}.error-shape-1{width: 420px;height: 420px;top: -120px;right: -100px}.error-shape-2{width: 280px;height: 280px;bottom: -80px;left: -60px}.brand-mark{display: inline-grid;place-items: center;width: 44px;height: 44px;border-radius: var(--r-md);background: var(--tpw-grad-hero);color: #FFFFFF;font-size: 1.15rem;box-shadow: 0 6px 16px rgba(var(--tpw-primary-rgb),.3);flex-shrink: 0}.brand-logo{width: 44px;height: 44px;object-fit: contain;flex-shrink: 0}:root{--ic-1: linear-gradient(135deg,#1565C0,#42A5F5);--ic-2: linear-gradient(135deg,#00897B,#4DD0E1);--ic-3: linear-gradient(135deg,#6A1B9A,#AB47BC);--ic-4: linear-gradient(135deg,#EF6C00,#FFB300);--ic-5: linear-gradient(135deg,#C2185B,#F06292);--ic-6: linear-gradient(135deg,#2E7D32,#9CCC65);--ic-7: linear-gradient(135deg,#0277BD,#26C6DA);--ic-8: linear-gradient(135deg,#AD1457,#FF7043);--ic-1-shadow: rgba(21,101,192,.35);--ic-2-shadow: rgba(0,137,123,.35);--ic-3-shadow: rgba(106,27,154,.35);--ic-4-shadow: rgba(239,108,0,.35);--ic-5-shadow: rgba(194,24,91,.35);--ic-6-shadow: rgba(46,125,50,.35);--ic-7-shadow: rgba(2,119,189,.35);--ic-8-shadow: rgba(173,20,87,.35)}.icon-cycle>:nth-child(8n+1){--ic: var(--ic-1);--ic-shadow: var(--ic-1-shadow)}.icon-cycle>:nth-child(8n+2){--ic: var(--ic-2);--ic-shadow: var(--ic-2-shadow)}.icon-cycle>:nth-child(8n+3){--ic: var(--ic-3);--ic-shadow: var(--ic-3-shadow)}.icon-cycle>:nth-child(8n+4){--ic: var(--ic-4);--ic-shadow: var(--ic-4-shadow)}.icon-cycle>:nth-child(8n+5){--ic: var(--ic-5);--ic-shadow: var(--ic-5-shadow)}.icon-cycle>:nth-child(8n+6){--ic: var(--ic-6);--ic-shadow: var(--ic-6-shadow)}.icon-cycle>:nth-child(8n+7){--ic: var(--ic-7);--ic-shadow: var(--ic-7-shadow)}.icon-cycle>:nth-child(8n+8){--ic: var(--ic-8);--ic-shadow: var(--ic-8-shadow)}.stat-tile-icon{background: var(--ic,var(--tpw-grad-hero));box-shadow: 0 8px 18px var(--ic-shadow,rgba(var(--tpw-primary-rgb),.25))}.hero-slide-media{position: absolute;inset: 0;z-index: 0;overflow: hidden;transform: translate3d(var(--fx-tx,0px),calc(var(--fx-y,0px) + var(--fx-ty,0px)),0) scale(var(--fx-scale,1)) rotateX(var(--fx-rx,0deg)) rotateY(var(--fx-ry,0deg));transition: transform 400ms var(--ease-out);will-change: transform}.hero-slide-media .hero-slide-img{position: absolute;inset: 0;width: 100%;height: 100%}.fx-parallax,.fx-tilt{--fx-scale: 1.1}.fx-parallax .hero-slide-media{transition: none}.fx-kenburns.is-active .hero-slide-img,.banner-preview.fx-kenburns img{animation: fx-kenburns 18s ease-in-out infinite alternate}@keyframes fx-kenburns{from{transform: scale(1)}to{transform: scale(1.12) translate(-1.5%,-1%)}}.fx-layer{position: absolute;inset: 0;z-index: 2;pointer-events: none;overflow: hidden}.fx-vignette-layer{background: radial-gradient(ellipse at center,transparent 50%,rgba(0,0,0,.5) 100%)}.fx-bottomfade-layer{background: linear-gradient(180deg,transparent 50%,rgba(5,12,28,.6) 100%)}.fx-shine-layer::before{content: "";position: absolute;top: -20%;bottom: -20%;left: -60%;width: 40%;background: linear-gradient(100deg,transparent 0%,rgba(255,255,255,.28) 50%,transparent 100%);transform: skewX(-18deg);animation: fx-shine 7s ease-in-out infinite;mix-blend-mode: soft-light}@keyframes fx-shine{0%,55%{left: -60%}100%{left: 130%}}.fx-aurora-layer{mix-blend-mode: screen;opacity: .55}.fx-aurora-layer span{position: absolute;width: 55%;height: 70%;border-radius: 50%;filter: blur(70px);animation: fx-aurora 16s ease-in-out infinite alternate}.fx-aurora-layer span:nth-child(1){background: #42A5F5;top: -25%;left: -10%}.fx-aurora-layer span:nth-child(2){background: #AB47BC;bottom: -30%;right: -10%;animation-delay: -5s}.fx-aurora-layer span:nth-child(3){background: #26C6DA;top: 20%;left: 40%;width: 35%;height: 45%;animation-delay: -10s;opacity: .8}@keyframes fx-aurora{0%{transform: translate(0,0) scale(1)}50%{transform: translate(8%,6%) scale(1.15)}100%{transform: translate(-6%,4%) scale(.95)}}.fx-bokeh-layer span{position: absolute;bottom: -12%;border-radius: 50%;background: radial-gradient(circle,rgba(255,255,255,.55) 0%,rgba(255,255,255,.15) 45%,transparent 70%);animation: fx-bokeh linear infinite}.fx-bokeh-layer span:nth-child(1){left: 5%;width: 60px;height: 60px;animation-duration: 18s}.fx-bokeh-layer span:nth-child(2){left: 14%;width: 28px;height: 28px;animation-duration: 13s;animation-delay: -4s}.fx-bokeh-layer span:nth-child(3){left: 23%;width: 90px;height: 90px;animation-duration: 22s;animation-delay: -9s}.fx-bokeh-layer span:nth-child(4){left: 32%;width: 40px;height: 40px;animation-duration: 16s;animation-delay: -2s}.fx-bokeh-layer span:nth-child(5){left: 41%;width: 22px;height: 22px;animation-duration: 12s;animation-delay: -7s}.fx-bokeh-layer span:nth-child(6){left: 50%;width: 70px;height: 70px;animation-duration: 20s;animation-delay: -12s}.fx-bokeh-layer span:nth-child(7){left: 59%;width: 34px;height: 34px;animation-duration: 15s;animation-delay: -5s}.fx-bokeh-layer span:nth-child(8){left: 68%;width: 100px;height: 100px;animation-duration: 24s;animation-delay: -15s}.fx-bokeh-layer span:nth-child(9){left: 77%;width: 26px;height: 26px;animation-duration: 11s;animation-delay: -3s}.fx-bokeh-layer span:nth-child(10){left: 84%;width: 56px;height: 56px;animation-duration: 19s;animation-delay: -10s}.fx-bokeh-layer span:nth-child(11){left: 91%;width: 38px;height: 38px;animation-duration: 14s;animation-delay: -6s}.fx-bokeh-layer span:nth-child(12){left: 97%;width: 20px;height: 20px;animation-duration: 10s;animation-delay: -1s}@keyframes fx-bokeh{0%{transform: translateY(0);opacity: 0}15%{opacity: .9}85%{opacity: .7}100%{transform: translateY(-130vh);opacity: 0}}.banner-preview .fx-bokeh-layer span{animation-name: fx-bokeh-preview}@keyframes fx-bokeh-preview{0%{transform: translateY(0);opacity: 0}20%{opacity: .9}100%{transform: translateY(-360px);opacity: 0}}@media (prefers-reduced-motion: reduce){.fx-shine-layer,.fx-bokeh-layer,.fx-aurora-layer span{animation: none !important}.fx-bokeh-layer{display: none}}html.a11y-reduce-motion .fx-shine-layer,html.a11y-reduce-motion .fx-bokeh-layer{display: none}
