:root{color-scheme:light;--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-mono: ui-monospace, "Cascadia Code", "Segoe UI Mono", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.625;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgb(15 23 42 / 6%);--shadow-md: 0 4px 12px rgb(15 23 42 / 8%);--shadow-lg: 0 12px 32px rgb(15 23 42 / 10%);--duration-fast: .15s;--duration-normal: .2s;--ease-out: cubic-bezier(.33, 1, .68, 1);--color-neutral-50: #fafaf9;--color-neutral-100: #f5f5f4;--color-neutral-200: #e7e5e4;--color-neutral-300: #d6d3d1;--color-neutral-400: #a8a29e;--color-neutral-500: #78716c;--color-neutral-600: #57534e;--color-neutral-700: #44403c;--color-neutral-800: #292524;--color-neutral-900: #1c1917;--color-neutral-950: #0c0a09;--color-bg: var(--color-neutral-100);--color-surface: #ffffff;--color-surface-raised: #ffffff;--color-border-subtle: var(--color-neutral-200);--color-border: var(--color-neutral-300);--color-text: var(--color-neutral-900);--color-text-muted: var(--color-neutral-600);--color-text-subtle: var(--color-neutral-500);--color-primary: #059669;--color-primary-hover: #047857;--color-primary-foreground: #ffffff;--color-primary-muted: rgb(5 150 105 / 12%);--color-success: #059669;--color-success-bg: rgb(5 150 105 / 10%);--color-error: #dc2626;--color-error-bg: rgb(220 38 38 / 10%);--color-warning: #d97706;--color-warning-bg: rgb(217 119 6 / 10%);--color-info: #2563eb;--color-info-bg: rgb(37 99 235 / 10%);--color-chart-primary: #059669;--color-chart-secondary: #64748b;--sidebar-width: 15rem;--color-sidebar-group: var(--color-neutral-400);--color-sidebar-link: var(--color-neutral-700);--content-max-width: 75rem;--focus-ring: 0 0 0 2px var(--color-bg), 0 0 0 4px var(--color-primary)}[data-theme=dark]{color-scheme:dark;--color-bg: var(--color-neutral-950);--color-surface: var(--color-neutral-900);--color-surface-raised: var(--color-neutral-800);--color-border-subtle: var(--color-neutral-800);--color-border: var(--color-neutral-700);--color-text: var(--color-neutral-50);--color-text-muted: var(--color-neutral-400);--color-text-subtle: var(--color-neutral-500);--color-primary: #34d399;--color-primary-hover: #6ee7b7;--color-primary-foreground: var(--color-neutral-950);--color-primary-muted: rgb(52 211 153 / 15%);--color-success: #34d399;--color-success-bg: rgb(52 211 153 / 12%);--color-error: #f87171;--color-error-bg: rgb(248 113 113 / 12%);--color-warning: #fbbf24;--color-warning-bg: rgb(251 191 36 / 12%);--color-info: #60a5fa;--color-info-bg: rgb(96 165 250 / 12%);--color-chart-primary: #34d399;--color-chart-secondary: #94a3b8;--shadow-sm: 0 1px 2px rgb(0 0 0 / 30%);--shadow-md: 0 4px 12px rgb(0 0 0 / 35%);--shadow-lg: 0 12px 32px rgb(0 0 0 / 45%);--color-sidebar-group: var(--color-neutral-600);--color-sidebar-link: var(--color-neutral-300);--focus-ring: 0 0 0 2px var(--color-bg), 0 0 0 4px var(--color-primary)}*,*:before,*:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip;max-width:100%}body{margin:0;overflow-x:clip;max-width:100%;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background:var(--color-bg)}h1,h2,h3,h4{margin:0;font-weight:var(--font-semibold);line-height:var(--leading-tight);letter-spacing:-.02em}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}p{margin:0 0 var(--space-3)}p:last-child{margin-bottom:0}ul,ol{margin:0;padding:0;list-style:none}a{color:var(--color-primary);text-decoration:none;transition:color var(--duration-fast) var(--ease-out)}a:hover{color:var(--color-primary-hover)}:focus{outline:none}:focus-visible{outline:none;box-shadow:var(--focus-ring)}::selection{background:var(--color-primary-muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.page-header{margin-bottom:var(--space-6)}.page-header__title{font-size:var(--text-2xl);margin-bottom:var(--space-1)}.page-header__desc{color:var(--color-text-muted);font-size:var(--text-sm)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.stack--lg{gap:var(--space-6)}.row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-3)}.row>.field{margin-bottom:0;flex:1 1 9rem;max-width:13rem}.action-bar{display:flex;flex-wrap:wrap;gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--color-border-subtle)}@media (max-width: 767px){.action-bar--sticky{position:sticky;bottom:0;margin:var(--space-4) calc(-1 * var(--space-4)) 0;padding:var(--space-3) var(--space-4);background:var(--color-surface);box-shadow:0 -4px 12px #0000000f}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:inherit;font-weight:var(--font-medium);font-size:var(--text-sm);line-height:1;border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out)}.btn--md{padding:var(--space-2) var(--space-4);min-height:2.25rem}.btn--sm{padding:var(--space-1) var(--space-3);min-height:1.875rem;font-size:var(--text-xs)}.btn--icon{padding:var(--space-2);min-width:1.875rem}.btn--icon svg{width:1rem;height:1rem;display:block}.btn--primary{background:var(--color-primary);color:var(--color-primary-foreground)}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border);box-shadow:var(--shadow-sm)}.btn--secondary:hover:not(:disabled){background:var(--color-neutral-50);border-color:var(--color-neutral-400)}[data-theme=dark] .btn--secondary:hover:not(:disabled){background:var(--color-neutral-800)}.btn--ghost{background:transparent;color:var(--color-text-muted)}.btn--ghost:hover:not(:disabled){background:var(--color-primary-muted);color:var(--color-text)}.btn--danger{background:var(--color-error);color:#fff}.btn--danger:hover:not(:disabled){filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{box-shadow:var(--focus-ring)}.field{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-3)}.field:last-child{margin-bottom:0}.field__label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text)}.field__hint{font-size:var(--text-xs);color:var(--color-text-subtle)}.field__error{font-size:var(--text-xs);color:var(--color-error)}.input,.select,.textarea{width:100%;font:inherit;font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);min-height:2.25rem;transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.input:hover,.select:hover,.textarea:hover{border-color:var(--color-neutral-400)}.input:focus-visible,.select:focus-visible,.textarea:focus-visible{border-color:var(--color-primary);box-shadow:var(--focus-ring)}.input:disabled,.select:disabled,.textarea:disabled{opacity:.6;cursor:not-allowed}.input[type=date]{display:block}.input[type=date]::-webkit-datetime-edit-fields-wrapper{padding:0}.input[type=date]::-webkit-calendar-picker-indicator{margin-left:var(--space-1)}.textarea{min-height:6rem;resize:vertical;line-height:var(--leading-relaxed)}.textarea--mono{font-family:var(--font-mono);font-size:var(--text-xs)}.checkbox{display:inline-flex;align-items:flex-start;gap:var(--space-2);cursor:pointer;font-size:var(--text-sm);color:var(--color-text)}.checkbox input{width:1rem;height:1rem;margin-top:.125rem;accent-color:var(--color-primary);cursor:pointer}.file-zone{border:2px dashed var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);text-align:center;background:var(--color-neutral-50);transition:border-color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}[data-theme=dark] .file-zone{background:var(--color-neutral-900)}.file-zone:hover{border-color:var(--color-primary);background:var(--color-primary-muted)}.file-zone input[type=file]{font-size:var(--text-sm)}.progress-bar{width:100%;height:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:var(--radius-full);overflow:hidden;background:var(--color-border-subtle)}.progress-bar::-webkit-progress-bar{background:var(--color-border-subtle);border-radius:var(--radius-full)}.progress-bar::-webkit-progress-value{background:var(--color-primary);border-radius:var(--radius-full);transition:width var(--duration-normal) var(--ease-out)}.progress-bar::-moz-progress-bar{background:var(--color-primary);border-radius:var(--radius-full)}.card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-subtle);overflow:hidden}.card__header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border-subtle)}.card__title{font-size:var(--text-lg);font-weight:var(--font-semibold)}.card__body{padding:var(--space-5)}.card--nested{box-shadow:none;background:var(--color-neutral-50)}[data-theme=dark] .card--nested{background:var(--color-neutral-950)}.table-wrap{overflow-x:auto;border-radius:var(--radius-md)}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th,.table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--color-border-subtle)}.table th{font-weight:var(--font-medium);color:var(--color-text-muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;background:var(--color-neutral-50)}[data-theme=dark] .table th{background:var(--color-neutral-950)}.table tbody tr{transition:background var(--duration-fast) var(--ease-out)}.table tbody tr:hover{background:var(--color-primary-muted)}.table__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2)}.badge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-2);font-size:var(--text-xs);font-weight:var(--font-medium);line-height:1;border-radius:var(--radius-full);white-space:nowrap}.badge--default{background:var(--color-neutral-200);color:var(--color-neutral-800)}[data-theme=dark] .badge--default{background:var(--color-neutral-700);color:var(--color-neutral-100)}.badge--success{background:var(--color-success-bg);color:var(--color-success)}.badge--warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge--error{background:var(--color-error-bg);color:var(--color-error)}.badge--info{background:var(--color-info-bg);color:var(--color-info)}.alert{display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);margin-bottom:var(--space-3)}.alert:last-child{margin-bottom:0}.alert--error{background:var(--color-error-bg);color:var(--color-error);border:1px solid rgb(220 38 38 / 20%)}.alert--warning{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid rgb(217 119 6 / 20%)}.alert--info{background:var(--color-info-bg);color:var(--color-info);border:1px solid rgb(37 99 235 / 20%)}.alert--success{background:var(--color-success-bg);color:var(--color-success);border:1px solid rgb(5 150 105 / 20%)}.empty-state{text-align:center;padding:var(--space-10) var(--space-4);color:var(--color-text-muted)}.empty-state__title{font-weight:var(--font-semibold);color:var(--color-text);margin-bottom:var(--space-2)}.spinner{width:1.25rem;height:1.25rem;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}.spinner--lg{width:2rem;height:2rem}.loading-block{display:flex;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-8);color:var(--color-text-muted);font-size:var(--text-sm)}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--color-border-subtle) 25%,var(--color-neutral-200) 50%,var(--color-border-subtle) 75%);background-size:200% 100%;animation:shimmer 1.2s ease-in-out infinite;border-radius:var(--radius-sm);height:1rem}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}[data-tooltip]{position:relative;cursor:help;border-bottom:1px dotted var(--color-text-subtle)}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);padding:var(--space-1) var(--space-2);font-size:var(--text-xs);font-weight:var(--font-normal);white-space:nowrap;background:var(--color-neutral-900);color:var(--color-neutral-50);border-radius:var(--radius-sm);opacity:0;pointer-events:none;transition:opacity var(--duration-fast) var(--ease-out);z-index:50}[data-tooltip]:hover:after,[data-tooltip]:focus-visible:after{opacity:1}.modal::backdrop{background:#00000073;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{border:none;border-radius:var(--radius-lg);padding:0;max-width:min(28rem,calc(100vw - 2rem));box-shadow:var(--shadow-lg);background:var(--color-surface);color:var(--color-text)}.modal__header{padding:var(--space-5);border-bottom:1px solid var(--color-border-subtle)}.modal__title{font-size:var(--text-lg);font-weight:var(--font-semibold)}.modal__body{padding:var(--space-5);font-size:var(--text-sm);color:var(--color-text-muted)}.modal__footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border-subtle)}.dropdown{position:relative;display:inline-block}.dropdown__menu{position:absolute;right:0;top:calc(100% + 4px);min-width:10rem;padding:var(--space-1);background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:40}.dropdown__item{display:block;width:100%;padding:var(--space-2) var(--space-3);text-align:left;font:inherit;font-size:var(--text-sm);color:var(--color-text);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer}.dropdown__item:hover{background:var(--color-primary-muted)}.dropdown__item--danger{color:var(--color-error)}.app-layout{display:flex;min-height:100vh;width:100%;max-width:100%;overflow-x:clip}.sidebar{display:none;flex-direction:column;width:var(--sidebar-width);flex-shrink:0;background:var(--color-surface);border-right:1px solid var(--color-border-subtle);position:sticky;top:0;height:100vh;overflow-y:auto}@media (min-width: 768px){.sidebar{display:flex}}.sidebar__brand{padding:var(--space-5) var(--space-4);font-size:var(--text-lg);font-weight:var(--font-semibold);letter-spacing:-.03em;border-bottom:1px solid var(--color-border-subtle)}.sidebar__brand span{color:var(--color-primary)}.sidebar__nav{flex:1;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-4)}.sidebar__group:not(:first-child){margin-top:var(--space-1);padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle)}.sidebar__group-label{font-size:.6875rem;font-weight:var(--font-normal);text-transform:uppercase;letter-spacing:.1em;color:var(--color-sidebar-group);padding:0 var(--space-3);margin-bottom:var(--space-2);-webkit-user-select:none;user-select:none;cursor:default}.sidebar__links{display:flex;flex-direction:column;gap:2px}.sidebar-link{display:block;width:100%;padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-sidebar-link);border-radius:var(--radius-md);transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}button.sidebar-link{border:none;background:transparent;text-align:left;cursor:pointer;font:inherit}.sidebar-link:hover{background:var(--color-primary-muted);color:var(--color-text)}.sidebar-link.active{background:var(--color-primary-muted);color:var(--color-primary)}.sidebar__footer{padding:var(--space-4);border-top:1px solid var(--color-border-subtle)}.app-main{flex:1;min-width:0;display:flex;flex-direction:column}.mobile-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border-subtle);position:sticky;top:0;z-index:30}@media (min-width: 768px){.mobile-header{display:none}}.mobile-header__title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;font-size:var(--text-base);font-weight:var(--font-semibold)}.mobile-header .btn{flex-shrink:0}.mobile-nav-toggle{padding:var(--space-2)}.mobile-drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;pointer-events:none;visibility:hidden;overflow:hidden}.mobile-drawer--open{pointer-events:auto;visibility:visible}.mobile-drawer__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0006;opacity:0;transition:opacity var(--duration-normal) var(--ease-out)}.mobile-drawer--open .mobile-drawer__backdrop{opacity:1}.mobile-drawer__panel{position:absolute;top:0;left:0;bottom:0;width:min(var(--sidebar-width),85vw);background:var(--color-surface);border-right:1px solid var(--color-border-subtle);transform:translate(-100%);transition:transform var(--duration-normal) var(--ease-out);display:flex;flex-direction:column;overflow-y:auto}.mobile-drawer--open .mobile-drawer__panel{transform:translate(0)}.app-content{flex:1;min-width:0;padding:var(--space-4);max-width:var(--content-max-width);width:100%;margin:0 auto;overflow-x:clip;animation:fade-in var(--duration-normal) var(--ease-out)}@media (min-width: 768px){.app-content{padding:var(--space-6) var(--space-8)}}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.auth-layout{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.auth-layout__card{width:100%;max-width:24rem}.image-grid{display:flex;flex-wrap:wrap;gap:var(--space-3)}.image-grid img{max-width:100%;max-height:240px;border-radius:var(--radius-md);border:1px solid var(--color-border-subtle);object-fit:contain;background:var(--color-neutral-50)}.norm-item{padding-bottom:var(--space-5);margin-bottom:var(--space-5);border-bottom:1px solid var(--color-border-subtle)}.norm-item:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.dashboard-grid{display:grid;gap:var(--space-4)}@media (min-width: 768px){.dashboard-grid--stats{grid-template-columns:repeat(3,1fr)}}.chart-card{min-height:320px}.chart-host{min-width:0;width:100%;overflow:hidden}.error{color:var(--color-error);font-size:var(--text-sm)}.card{margin-bottom:var(--space-4)}.card:last-child{margin-bottom:0}
