*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-success: #22c55e;--color-warning: #f59e0b;--color-danger: #ef4444;--color-primary: #3b82f6;--color-primary-d: #2563eb;--color-primary-light: rgba(59, 130, 246, .14);--theme-wash: rgba(59, 130, 246, .18);--theme-wash-strong: rgba(14, 165, 233, .16);--theme-ring: rgba(59, 130, 246, .24);--theme-sidebar: rgba(59, 130, 246, .06);--theme-topbar: rgba(255, 255, 255, .82);--color-bg: #f8fafc;--color-surface: #ffffff;--color-surface-alt: #f1f5f9;--color-border: #e2e8f0;--color-text: #1e293b;--color-text-sub: #64748b;--color-overlay: rgba(0, 0, 0, .45);--font-size-xs: 11px;--font-size-sm: 13px;--font-size-base: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 22px;--font-size-2xl: 28px;--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing: 12px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--btn-height: 38px;--btn-height-lg: 48px;--btn-font: var(--font-size-base);--input-height: 40px;--touch-min: 44px;--sidebar-w: 220px;--topbar-h: 56px;--bottomnav-h: 0px;--shadow-sm: 0 1px 3px rgba(0,0,0,.08);--shadow: 0 4px 12px rgba(0,0,0,.1);--shadow-lg: 0 8px 24px rgba(0,0,0,.12);--transition: .18s ease}[data-ui-theme=default]{--color-primary: #3b82f6;--color-primary-d: #2563eb;--color-primary-light: rgba(59, 130, 246, .14);--theme-wash: rgba(59, 130, 246, .18);--theme-wash-strong: rgba(14, 165, 233, .16);--theme-ring: rgba(59, 130, 246, .24);--theme-sidebar: rgba(59, 130, 246, .06);--theme-topbar: rgba(255, 255, 255, .82)}[data-ui-theme=dawn]{--color-primary: #ec4899;--color-primary-d: #db2777;--color-primary-light: rgba(236, 72, 153, .14);--theme-wash: rgba(251, 191, 36, .18);--theme-wash-strong: rgba(244, 114, 182, .14);--theme-ring: rgba(236, 72, 153, .24);--theme-sidebar: rgba(251, 191, 36, .08);--theme-topbar: rgba(255, 250, 245, .88)}[data-ui-theme=forest]{--color-primary: #16a34a;--color-primary-d: #15803d;--color-primary-light: rgba(22, 163, 74, .14);--theme-wash: rgba(34, 197, 94, .16);--theme-wash-strong: rgba(20, 184, 166, .12);--theme-ring: rgba(22, 163, 74, .22);--theme-sidebar: rgba(22, 163, 74, .08);--theme-topbar: rgba(247, 253, 250, .88)}[data-ui-theme=amber]{--color-primary: #d97706;--color-primary-d: #b45309;--color-primary-light: rgba(217, 119, 6, .14);--theme-wash: rgba(251, 191, 36, .18);--theme-wash-strong: rgba(249, 115, 22, .14);--theme-ring: rgba(217, 119, 6, .24);--theme-sidebar: rgba(251, 191, 36, .1);--theme-topbar: rgba(255, 251, 235, .9)}[data-ui-theme=plum]{--color-primary: #8b5cf6;--color-primary-d: #7c3aed;--color-primary-light: rgba(139, 92, 246, .16);--theme-wash: rgba(139, 92, 246, .18);--theme-wash-strong: rgba(56, 189, 248, .1);--theme-ring: rgba(139, 92, 246, .24);--theme-sidebar: rgba(139, 92, 246, .1);--theme-topbar: rgba(248, 245, 255, .88)}[data-ui-theme=sanctum]{--color-primary: #5b6bbf;--color-primary-d: #4a5aaf;--color-primary-light: rgba(91, 107, 191, .14);--theme-wash: rgba(91, 107, 191, .12);--theme-wash-strong: rgba(130, 141, 211, .09);--theme-ring: rgba(91, 107, 191, .26);--theme-sidebar: rgba(91, 107, 191, .07);--theme-topbar: rgba(246, 247, 255, .9)}[data-ui-theme=glass]{--color-primary: #06b6d4;--color-primary-d: #0891b2;--color-primary-light: rgba(6, 182, 212, .14);--theme-wash: rgba(6, 182, 212, .16);--theme-wash-strong: rgba(99, 102, 241, .1);--theme-ring: rgba(6, 182, 212, .24);--theme-sidebar: rgba(6, 182, 212, .08);--theme-topbar: rgba(240, 253, 255, .88)}[data-ui-theme=city]{--color-primary: #e879f9;--color-primary-d: #d946ef;--color-primary-light: rgba(232, 121, 249, .18);--theme-wash: rgba(232, 121, 249, .2);--theme-wash-strong: rgba(99, 102, 241, .14);--theme-ring: rgba(232, 121, 249, .3);--theme-sidebar: rgba(232, 121, 249, .1);--theme-topbar: rgba(15, 10, 30, .85);--color-bg: #0d0a1e;--color-surface: rgba(20, 14, 40, .9);--color-surface-alt: rgba(35, 24, 60, .92);--color-border: #3b2060;--color-text: #f0e8ff;--color-text-sub: #b89cd8}[data-ui-appearance=dark]{--color-bg: #0f172a;--color-surface: rgba(15, 23, 42, .88);--color-surface-alt: rgba(30, 41, 59, .92);--color-border: #334155;--color-text: #e2e8f0;--color-text-sub: #94a3b8;--color-overlay: rgba(2, 6, 23, .7);--theme-topbar: rgba(15, 23, 42, .76);--shadow-sm: 0 2px 10px rgba(2, 6, 23, .32);--shadow: 0 8px 24px rgba(2, 6, 23, .38);--shadow-lg: 0 16px 40px rgba(2, 6, 23, .45)}[data-ui-theme=sanctum][data-ui-appearance=dark]{--color-primary: #9aa8f4;--color-primary-d: #afbbf7;--color-primary-light: rgba(154, 168, 244, .18);--theme-ring: rgba(154, 168, 244, .28)}[data-ui-theme=plum][data-ui-appearance=dark]{--color-primary: #a78bfa;--color-primary-d: #c4b5fd;--color-primary-light: rgba(167, 139, 250, .18);--theme-ring: rgba(167, 139, 250, .28)}[data-ui-mode=elderly]{--font-size-xs: 16px;--font-size-sm: 18px;--font-size-base: 22px;--font-size-md: 24px;--font-size-lg: 28px;--font-size-xl: 32px;--font-size-2xl: 38px;--spacing-xs: 8px;--spacing-sm: 12px;--spacing: 16px;--spacing-md: 20px;--spacing-lg: 28px;--spacing-xl: 40px;--btn-height: 60px;--btn-height-lg: 72px;--btn-font: var(--font-size-md);--input-height: 60px;--touch-min: 64px;--radius-sm: 10px;--radius: 16px;--radius-lg: 24px;--sidebar-w: 280px;--topbar-h: 72px}html,body{height:100%}body{font-family:-apple-system,PingFang TC,Microsoft JhengHei,Noto Sans TC,sans-serif;font-size:var(--font-size-base);color:var(--color-text);background:radial-gradient(circle at top right,var(--theme-wash),transparent 24%),radial-gradient(circle at bottom left,var(--theme-wash-strong),transparent 26%),var(--color-bg);line-height:1.6;-webkit-font-smoothing:antialiased;transition:background var(--transition),color var(--transition)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);height:var(--btn-height);min-width:var(--touch-min);padding:0 var(--spacing-md);font-size:var(--btn-font);font-weight:600;border-radius:var(--radius);border:none;cursor:pointer;transition:background var(--transition),color var(--transition),transform var(--transition),border-color var(--transition),box-shadow var(--transition);white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:active{transform:scale(.97)}.btn-primary{background:var(--color-primary);color:#fff;box-shadow:0 8px 18px var(--color-primary-light)}.btn-primary:hover{background:var(--color-primary-d)}.btn-outline{background:transparent;color:var(--color-primary);border:2px solid var(--color-primary)}.btn-outline:hover{background:var(--color-primary);color:#fff}.btn-danger{background:var(--color-danger);color:#fff}.btn-ghost{background:transparent;color:var(--color-text)}.btn-ghost:hover{background:var(--color-surface-alt)}.btn-lg{height:var(--btn-height-lg);font-size:var(--font-size-md)}.btn-block{width:100%}.card{background:linear-gradient(180deg,var(--color-surface),var(--color-surface-alt));border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-sm);border:1px solid var(--color-border);transition:border-color var(--transition),box-shadow var(--transition),background var(--transition)}.input{width:100%;height:var(--input-height);padding:0 var(--spacing-md);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius);outline:none;transition:border-color var(--transition),box-shadow var(--transition),background var(--transition)}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px var(--theme-ring)}.badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:var(--font-size-xs);font-weight:700;border-radius:999px;background:var(--color-border);color:var(--color-text-sub)}.badge-primary{background:#3b82f626;color:var(--color-primary)}.badge-success{background:#22c55e26;color:var(--color-success)}.badge-warning{background:#f59e0b26;color:var(--color-warning)}.badge-danger{background:#ef444426;color:var(--color-danger)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-sm{gap:var(--spacing-sm)}.gap{gap:var(--spacing)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.w-full{width:100%}.text-sub{color:var(--color-text-sub)}.text-sm{font-size:var(--font-size-sm)}.text-lg{font-size:var(--font-size-lg)}.text-xl{font-size:var(--font-size-xl)}.font-bold{font-weight:700}.mt-sm{margin-top:var(--spacing-sm)}.mt{margin-top:var(--spacing)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mb-lg{margin-bottom:var(--spacing-lg)}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite;margin:auto}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.fade-in{animation:fadeIn .22s ease}[data-ui-mode=elderly] .card{border-width:2px;padding:var(--spacing-xl)}[data-ui-mode=elderly] .input{border-width:3px;font-size:var(--font-size-md)}[data-ui-mode=elderly] .btn{border-radius:var(--radius-lg);font-size:var(--font-size-md)}[data-ui-appearance=dark] .badge,[data-ui-appearance=dark] .btn-ghost:hover{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.app-shell{display:grid;grid-template-rows:var(--topbar-h) 1fr;grid-template-columns:var(--sidebar-w) 1fr;height:100vh;overflow:hidden}.app-shell.sidebar-collapsed{grid-template-columns:60px 1fr}.app-shell.mode-assistive{grid-template-columns:1fr}.app-topbar{grid-column:1 / -1;height:var(--topbar-h);display:flex;align-items:center;padding:0 var(--spacing-md);background:var(--theme-topbar);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border);z-index:100}.app-topbar.topbar-assistive{background:var(--color-primary);border-bottom:none;justify-content:flex-start}.topbar-vera-logo{display:flex;align-items:center;gap:var(--spacing-sm);color:#fff;font-size:var(--font-size-lg);font-weight:700;margin:0 auto}.topbar-vera-logo img{width:36px;height:36px;border-radius:50%;border:2px solid rgba(255,255,255,.5)}@media (max-width: 768px){.app-shell{grid-template-columns:1fr}}
