:root{--color-primary: #2A83FF;--color-secondary: #60A5FA;--color-background: #FFFFFF;--color-surface: #F9FAFB;--color-text: #1F2937;--color-text-secondary: #6B7280;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--color-info: #3B82F6;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 24px;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-base: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 30px;--font-size-4xl: 36px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--z-dropdown: 1000;--z-modal: 2000;--z-toast: 3000;--z-tooltip: 4000;--transition-fast: .15s ease-in-out;--transition-base: .2s ease-in-out;--transition-slow: .3s ease-in-out;--sidebar-width: 280px;--sidebar-width-collapsed: 0px;--header-height: 60px;--max-content-width: 1400px}body.dark{--color-background: #191919;--color-surface: #242424;--color-text: #F1F5F9;--color-text-secondary: #94A3B8;--color-border: #333333;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -1px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -2px rgba(0, 0, 0, .3);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .4), 0 10px 10px -5px rgba(0, 0, 0, .3)}body.session-expired-active ion-router-outlet>.ion-page:not(:last-child){display:none!important}body.session-expired-active app-session-expired{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;z-index:99999!important;background:#fff!important}app-login{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;z-index:99999!important;background:#fff!important}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;height:100dvh;overflow:hidden}body{font-family:var(--font-sans);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--transition-slow),color var(--transition-slow)}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text)}h1{font-size:var(--font-size-4xl)}h2{font-size:var(--font-size-3xl)}h3{font-size:var(--font-size-2xl)}h4{font-size:var(--font-size-xl)}h5{font-size:var(--font-size-lg)}h6{font-size:var(--font-size-base)}p{margin-bottom:var(--spacing-md)}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-secondary)}code{font-family:var(--font-mono);font-size:.875em;background-color:var(--color-surface);padding:2px 6px;border-radius:var(--radius-sm)}button{font-family:inherit;font-size:inherit;line-height:inherit;cursor:pointer;border:none;background:none;color:inherit}button:disabled{cursor:not-allowed;opacity:.6}input,textarea,select{font-family:inherit;font-size:inherit;line-height:inherit;color:inherit;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md);background-color:var(--color-background);transition:border-color var(--transition-fast)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-border);box-shadow:none}input::placeholder,textarea::placeholder,select::placeholder{color:var(--color-text-secondary)}input:disabled,textarea:disabled,select:disabled{background-color:var(--color-surface);cursor:not-allowed}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-track{background:var(--color-surface)}*::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}*::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}:focus:not(:focus-visible){outline:none;box-shadow:none}.m-0{margin:0}.mt-1{margin-top:var(--spacing-xs)}.mt-2{margin-top:var(--spacing-sm)}.mt-3{margin-top:var(--spacing-md)}.mt-4{margin-top:var(--spacing-lg)}.mb-1{margin-bottom:var(--spacing-xs)}.mb-2{margin-bottom:var(--spacing-sm)}.mb-3{margin-bottom:var(--spacing-md)}.mb-4{margin-bottom:var(--spacing-lg)}.p-0{padding:0}.p-1{padding:var(--spacing-xs)}.p-2{padding:var(--spacing-sm)}.p-3{padding:var(--spacing-md)}.p-4{padding:var(--spacing-lg)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-bold{font-weight:var(--font-weight-bold)}.text-semibold{font-weight:var(--font-weight-semibold)}.text-medium{font-weight:var(--font-weight-medium)}.text-xs{font-size:var(--font-size-xs)}.text-sm{font-size:var(--font-size-sm)}.text-base{font-size:var(--font-size-base)}.text-lg{font-size:var(--font-size-lg)}.text-xl{font-size:var(--font-size-xl)}.text-2xl{font-size:var(--font-size-2xl)}.text-primary{color:var(--color-primary)}.text-secondary{color:var(--color-text-secondary)}.text-success{color:var(--color-success)}.text-error{color:var(--color-error)}.text-warning{color:var(--color-warning)}.bg-surface{background-color:var(--color-surface)}.bg-primary{background-color:var(--color-primary)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--spacing-xs)}.gap-2{gap:var(--spacing-sm)}.gap-3{gap:var(--spacing-md)}.gap-4{gap:var(--spacing-lg)}.hidden{display:none}.block{display:block}.inline-block{display:inline-block}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideInUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInDown{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fade-in{animation:fadeIn var(--transition-base)}.slide-in-up{animation:slideInUp var(--transition-slow)}.slide-in-down{animation:slideInDown var(--transition-slow)}.skeleton{background:linear-gradient(90deg,var(--color-surface) 0%,var(--color-border) 50%,var(--color-surface) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.spinner{width:24px;height:24px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}ion-content{--background: var(--color-background);--color: var(--color-text)}ion-icon{color:inherit}ion-toggle{--background: var(--color-border);--background-checked: var(--color-primary);--handle-background: white;--handle-background-checked: white}@media print{.no-print{display:none!important}body{background:#fff;color:#000}}.admin-menu-btn{display:flex!important;flex-direction:row!important;align-items:center!important;gap:12px;width:100%;padding:14px 20px;background:transparent;border:none;cursor:pointer;font-size:14px;font-weight:500;color:var(--color-primary);text-align:left;transition:background .15s;position:relative;overflow:visible}.admin-menu-btn ion-icon{font-size:20px;color:var(--color-primary);flex-shrink:0}.admin-menu-btn>span:first-of-type{flex:1}.admin-menu-btn .admin-hint{position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%);padding:6px 12px;background:var(--color-primary);color:#fff;font-size:12px;font-weight:500;white-space:nowrap;border-radius:8px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease,visibility .2s ease;z-index:99999;box-shadow:0 4px 12px #00000026}.admin-menu-btn .admin-hint:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--color-primary)}.admin-menu-btn:hover{background:#4f9cf91a}.admin-menu-btn:hover .admin-hint{opacity:1;visibility:visible}.logout-menu-btn{display:flex!important;flex-direction:row!important;align-items:center!important;gap:12px;width:100%;padding:14px 20px;background:transparent;border:none;cursor:pointer;font-size:14px;font-weight:500;color:#ef4444;text-align:left;transition:background .15s}.logout-menu-btn ion-icon{font-size:20px;color:#ef4444;flex-shrink:0}.logout-menu-btn>span{flex:1}.logout-menu-btn:hover{background:#ef44441a}.user-dropdown{overflow:visible!important}.user-dropdown>div:first-child{border-radius:16px 16px 0 0}
