.auth-page{display:flex;justify-content:center}.auth-shell{width:100%;max-width:420px;display:grid;gap:var(--space-6)}.auth-branding{text-align:center}.auth-logo{width:64px;height:64px;margin:0 auto var(--space-3);border-radius:12px}.auth-form{display:grid;gap:var(--space-4)}.form-label{font-size:.95rem;font-weight:600}.password-input-wrapper{position:relative}.password-input{padding-right:88px}.password-toggle{position:absolute;top:50%;right:10px;transform:translateY(-50%);border:none;background:transparent;color:var(--color-primary-hover);font-size:.9rem;font-weight:600;cursor:pointer;padding:4px 6px;border-radius:var(--radius-sm);transition:background-color .2s ease,color .2s ease}.password-toggle:hover{background:var(--color-primary-soft)}.password-toggle:focus-visible{outline:none;box-shadow:0 0 0 4px #f59e0b26}.password-checklist{margin:var(--space-2) 0 0;padding-left:18px;font-size:.9rem;color:var(--color-text-secondary)}.password-checklist li{margin-bottom:4px}.password-checklist li.is-valid{color:var(--color-success);font-weight:600}.auth-error-box{border:1px solid rgba(220,38,38,.25);background:#fef2f2;color:var(--color-danger);border-radius:var(--radius-md);padding:12px 14px;font-size:.95rem}.auth-success-box{border:1px solid rgba(22,163,74,.25);background:#16a34a14;color:var(--color-success);border-radius:var(--radius-md);padding:12px 14px;font-size:.95rem}.auth-actions{display:grid;gap:var(--space-3)}.auth-footer{text-align:center;color:var(--color-text-secondary)}.auth-footer a{margin-left:6px}@media(max-width:640px){.auth-shell{max-width:100%}}.app-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:44px;padding:0 16px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--color-text);font:inherit;font-weight:600;line-height:1;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s ease,border-color .2s ease,color .2s ease,box-shadow .2s ease,transform .2s ease}.app-button:hover:not(:disabled){transform:translateY(-1px)}.app-button:active:not(:disabled){transform:translateY(0)}.app-button:focus-visible{outline:none;box-shadow:0 0 0 4px #f59e0b33}.app-button:disabled,.app-button.is-disabled{opacity:.65;cursor:not-allowed;transform:none;box-shadow:none}.app-button--primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.app-button--primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.app-button--secondary{background:var(--color-surface);border-color:var(--color-border);color:var(--color-text)}.app-button--secondary:hover:not(:disabled){background:var(--color-surface-muted);border-color:#cbd5e1}.app-button--ghost{background:transparent;border-color:transparent;color:var(--color-text-secondary)}.app-button--ghost:hover:not(:disabled){background:var(--color-surface-muted);color:var(--color-text)}.app-button--danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.app-button--danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.app-button--danger-soft{background:#fef2f2;border-color:#dc262633;color:var(--color-danger)}.app-button--danger-soft:hover:not(:disabled){background:#fee2e2;border-color:#dc262659}.app-button--sm{min-height:36px;padding:0 12px;font-size:.9rem}.app-button--lg{min-height:48px;padding:0 18px}.app-button--full{width:100%}.app-button-group{display:flex;flex-wrap:wrap;gap:var(--space-3)}.app-badge{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:0 10px;border-radius:var(--radius-pill);border:1px solid transparent;font-size:.85rem;font-weight:600;line-height:1;white-space:nowrap}.app-badge--neutral{background:var(--color-surface-muted);border-color:var(--color-border);color:var(--color-text)}.app-badge--success{background:#16a34a1a;color:var(--color-success);border-color:#16a34a2e}.app-badge--warning{background:#d977061f;color:var(--color-warning);border-color:#d9770633}.app-badge--danger{background:#dc26261a;color:var(--color-danger);border-color:#dc26262e}.app-badge--info{background:#2563eb1a;color:var(--color-info);border-color:#2563eb2e}.app-badge--brand{background:var(--color-primary-soft);color:var(--color-primary-hover);border-color:#f59e0b38}.app-badge--muted{background:#e2e8f0;color:#334155;border-color:#cbd5e1}.app-badge--sm{min-height:24px;padding:0 8px;font-size:.78rem}html{height:100%;--mat-sys-background: light-dark(#faf9fd, #121316);--mat-sys-error: light-dark(#ba1a1a, #ffb4ab);--mat-sys-error-container: light-dark(#ffdad6, #93000a);--mat-sys-inverse-on-surface: light-dark(#f2f0f4, #2f3033);--mat-sys-inverse-primary: light-dark(#abc7ff, #005cbb);--mat-sys-inverse-surface: light-dark(#2f3033, #e3e2e6);--mat-sys-on-background: light-dark(#1a1b1f, #e3e2e6);--mat-sys-on-error: light-dark(#ffffff, #690005);--mat-sys-on-error-container: light-dark(#93000a, #ffdad6);--mat-sys-on-primary: light-dark(#ffffff, #002f65);--mat-sys-on-primary-container: light-dark(#00458f, #d7e3ff);--mat-sys-on-primary-fixed: light-dark(#001b3f, #001b3f);--mat-sys-on-primary-fixed-variant: light-dark(#00458f, #00458f);--mat-sys-on-secondary: light-dark(#ffffff, #283041);--mat-sys-on-secondary-container: light-dark(#3e4759, #dae2f9);--mat-sys-on-secondary-fixed: light-dark(#131c2b, #131c2b);--mat-sys-on-secondary-fixed-variant: light-dark(#3e4759, #3e4759);--mat-sys-on-surface: light-dark(#1a1b1f, #e3e2e6);--mat-sys-on-surface-variant: light-dark(#44474e, #e0e2ec);--mat-sys-on-tertiary: light-dark(#ffffff, #0001ac);--mat-sys-on-tertiary-container: light-dark(#0000ef, #e0e0ff);--mat-sys-on-tertiary-fixed: light-dark(#00006e, #00006e);--mat-sys-on-tertiary-fixed-variant: light-dark(#0000ef, #0000ef);--mat-sys-outline: light-dark(#74777f, #8e9099);--mat-sys-outline-variant: light-dark(#c4c6d0, #44474e);--mat-sys-primary: light-dark(#005cbb, #abc7ff);--mat-sys-primary-container: light-dark(#d7e3ff, #00458f);--mat-sys-primary-fixed: light-dark(#d7e3ff, #d7e3ff);--mat-sys-primary-fixed-dim: light-dark(#abc7ff, #abc7ff);--mat-sys-scrim: light-dark(#000000, #000000);--mat-sys-secondary: light-dark(#565e71, #bec6dc);--mat-sys-secondary-container: light-dark(#dae2f9, #3e4759);--mat-sys-secondary-fixed: light-dark(#dae2f9, #dae2f9);--mat-sys-secondary-fixed-dim: light-dark(#bec6dc, #bec6dc);--mat-sys-shadow: light-dark(#000000, #000000);--mat-sys-surface: light-dark(#faf9fd, #121316);--mat-sys-surface-bright: light-dark(#faf9fd, #38393c);--mat-sys-surface-container: light-dark(#efedf0, #1f2022);--mat-sys-surface-container-high: light-dark(#e9e7eb, #292a2c);--mat-sys-surface-container-highest: light-dark(#e3e2e6, #343537);--mat-sys-surface-container-low: light-dark(#f4f3f6, #1a1b1f);--mat-sys-surface-container-lowest: light-dark(#ffffff, #0d0e11);--mat-sys-surface-dim: light-dark(#dbd9dd, #121316);--mat-sys-surface-tint: light-dark(#005cbb, #abc7ff);--mat-sys-surface-variant: light-dark(#e0e2ec, #44474e);--mat-sys-tertiary: light-dark(#343dff, #bec2ff);--mat-sys-tertiary-container: light-dark(#e0e0ff, #0000ef);--mat-sys-tertiary-fixed: light-dark(#e0e0ff, #e0e0ff);--mat-sys-tertiary-fixed-dim: light-dark(#bec2ff, #bec2ff);--mat-sys-neutral-variant20: #2d3038;--mat-sys-neutral10: #1a1b1f;--mat-sys-level0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-sys-level1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-sys-level2: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-sys-level3: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-sys-level4: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-sys-level5: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-sys-body-large: 400 1rem / 1.5rem Roboto;--mat-sys-body-large-font: Roboto;--mat-sys-body-large-line-height: 1.5rem;--mat-sys-body-large-size: 1rem;--mat-sys-body-large-tracking: .031rem;--mat-sys-body-large-weight: 400;--mat-sys-body-medium: 400 .875rem / 1.25rem Roboto;--mat-sys-body-medium-font: Roboto;--mat-sys-body-medium-line-height: 1.25rem;--mat-sys-body-medium-size: .875rem;--mat-sys-body-medium-tracking: .016rem;--mat-sys-body-medium-weight: 400;--mat-sys-body-small: 400 .75rem / 1rem Roboto;--mat-sys-body-small-font: Roboto;--mat-sys-body-small-line-height: 1rem;--mat-sys-body-small-size: .75rem;--mat-sys-body-small-tracking: .025rem;--mat-sys-body-small-weight: 400;--mat-sys-display-large: 400 3.562rem / 4rem Roboto;--mat-sys-display-large-font: Roboto;--mat-sys-display-large-line-height: 4rem;--mat-sys-display-large-size: 3.562rem;--mat-sys-display-large-tracking: -.016rem;--mat-sys-display-large-weight: 400;--mat-sys-display-medium: 400 2.812rem / 3.25rem Roboto;--mat-sys-display-medium-font: Roboto;--mat-sys-display-medium-line-height: 3.25rem;--mat-sys-display-medium-size: 2.812rem;--mat-sys-display-medium-tracking: 0;--mat-sys-display-medium-weight: 400;--mat-sys-display-small: 400 2.25rem / 2.75rem Roboto;--mat-sys-display-small-font: Roboto;--mat-sys-display-small-line-height: 2.75rem;--mat-sys-display-small-size: 2.25rem;--mat-sys-display-small-tracking: 0;--mat-sys-display-small-weight: 400;--mat-sys-headline-large: 400 2rem / 2.5rem Roboto;--mat-sys-headline-large-font: Roboto;--mat-sys-headline-large-line-height: 2.5rem;--mat-sys-headline-large-size: 2rem;--mat-sys-headline-large-tracking: 0;--mat-sys-headline-large-weight: 400;--mat-sys-headline-medium: 400 1.75rem / 2.25rem Roboto;--mat-sys-headline-medium-font: Roboto;--mat-sys-headline-medium-line-height: 2.25rem;--mat-sys-headline-medium-size: 1.75rem;--mat-sys-headline-medium-tracking: 0;--mat-sys-headline-medium-weight: 400;--mat-sys-headline-small: 400 1.5rem / 2rem Roboto;--mat-sys-headline-small-font: Roboto;--mat-sys-headline-small-line-height: 2rem;--mat-sys-headline-small-size: 1.5rem;--mat-sys-headline-small-tracking: 0;--mat-sys-headline-small-weight: 400;--mat-sys-label-large: 500 .875rem / 1.25rem Roboto;--mat-sys-label-large-font: Roboto;--mat-sys-label-large-line-height: 1.25rem;--mat-sys-label-large-size: .875rem;--mat-sys-label-large-tracking: .006rem;--mat-sys-label-large-weight: 500;--mat-sys-label-large-weight-prominent: 700;--mat-sys-label-medium: 500 .75rem / 1rem Roboto;--mat-sys-label-medium-font: Roboto;--mat-sys-label-medium-line-height: 1rem;--mat-sys-label-medium-size: .75rem;--mat-sys-label-medium-tracking: .031rem;--mat-sys-label-medium-weight: 500;--mat-sys-label-medium-weight-prominent: 700;--mat-sys-label-small: 500 .688rem / 1rem Roboto;--mat-sys-label-small-font: Roboto;--mat-sys-label-small-line-height: 1rem;--mat-sys-label-small-size: .688rem;--mat-sys-label-small-tracking: .031rem;--mat-sys-label-small-weight: 500;--mat-sys-title-large: 400 1.375rem / 1.75rem Roboto;--mat-sys-title-large-font: Roboto;--mat-sys-title-large-line-height: 1.75rem;--mat-sys-title-large-size: 1.375rem;--mat-sys-title-large-tracking: 0;--mat-sys-title-large-weight: 400;--mat-sys-title-medium: 500 1rem / 1.5rem Roboto;--mat-sys-title-medium-font: Roboto;--mat-sys-title-medium-line-height: 1.5rem;--mat-sys-title-medium-size: 1rem;--mat-sys-title-medium-tracking: .009rem;--mat-sys-title-medium-weight: 500;--mat-sys-title-small: 500 .875rem / 1.25rem Roboto;--mat-sys-title-small-font: Roboto;--mat-sys-title-small-line-height: 1.25rem;--mat-sys-title-small-size: .875rem;--mat-sys-title-small-tracking: .006rem;--mat-sys-title-small-weight: 500;--mat-sys-corner-extra-large: 28px;--mat-sys-corner-extra-large-top: 28px 28px 0 0;--mat-sys-corner-extra-small: 4px;--mat-sys-corner-extra-small-top: 4px 4px 0 0;--mat-sys-corner-full: 9999px;--mat-sys-corner-large: 16px;--mat-sys-corner-large-end: 0 16px 16px 0;--mat-sys-corner-large-start: 16px 0 0 16px;--mat-sys-corner-large-top: 16px 16px 0 0;--mat-sys-corner-medium: 12px;--mat-sys-corner-none: 0;--mat-sys-corner-small: 8px;--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12}body{color-scheme:light;background-color:var(--mat-sys-surface);color:var(--mat-sys-on-surface);font:var(--mat-sys-body-medium);margin:0;height:100%}:root{--color-primary: #f59e0b;--color-primary-hover: #d97706;--color-primary-soft: #fff7e6;--color-bg: #f8fafc;--color-surface: #ffffff;--color-surface-muted: #f1f5f9;--color-border: #e2e8f0;--color-text: #0f172a;--color-text-secondary: #475569;--color-text-muted: #64748b;--color-dark: #111827;--color-dark-hover: #1f2937;--color-on-dark: #f9fafb;--color-success: #16a34a;--color-warning: #d97706;--color-danger: #dc2626;--color-info: #2563eb;--radius-sm: 8px;--radius-md: 10px;--radius-lg: 16px;--radius-pill: 999px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 8px 24px rgba(15, 23, 42, .08);--content-width: 1100px;--content-narrow: 760px;--font-family-base: Inter, "Segoe UI", Roboto, Arial, sans-serif}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}body{font-family:var(--font-family-base);background:var(--color-bg);color:var(--color-text);line-height:1.5}img{max-width:100%;display:block}a{color:inherit}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6{margin:0 0 var(--space-4);color:var(--color-text);line-height:1.2}h1{font-size:2rem;font-weight:700}h2{font-size:1.5rem;font-weight:700}p{margin:0 0 var(--space-4)}.page-container{width:min(100% - 32px,var(--content-width));margin:0 auto;padding:var(--space-8) 0}.page-container--narrow{width:min(100% - 32px,var(--content-narrow));margin:0 auto;padding:var(--space-8) 0}.page-header{margin-bottom:var(--space-6)}.page-title{margin-bottom:var(--space-2)}.page-subtitle{color:var(--color-text-secondary);margin:0}.app-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-5)}.app-card+.app-card{margin-top:var(--space-4)}.form-field{display:flex;flex-direction:column;gap:var(--space-2)}.form-label{font-size:.95rem;font-weight:600;color:var(--color-text)}.form-control{width:100%;min-height:44px;border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:#fff;color:var(--color-text);padding:0 44px 0 14px;transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease}select.form-control{appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M5 7.5L10 12.5L15 7.5' stroke='%23475569' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:16px}select.form-control::-ms-expand{display:none}textarea.form-control{min-height:120px;padding:12px 14px;resize:vertical}.form-control:hover{border-color:#cbd5e1}.form-control:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 4px #f59e0b26}.form-control.ng-invalid.ng-touched{border-color:var(--color-danger)}.form-control.ng-invalid.ng-touched:focus{box-shadow:0 0 0 4px #dc262626}.app-link{color:#7c3aed;text-decoration:none;font-weight:600}.app-link:hover{text-decoration:underline}.app-link--accent{color:var(--color-primary-hover)}.text-muted{color:var(--color-text-muted)}.error-text{color:var(--color-danger);font-size:.95rem;margin-top:var(--space-3)}.loading-text{color:var(--color-text-secondary)}.empty-state{padding:var(--space-4);border-radius:var(--radius-md);background:var(--color-surface-muted);color:var(--color-text-secondary)}.app-list{list-style:none;margin:0;padding:0}.app-list-item+.app-list-item{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.app-datepicker-panel .mat-datepicker-content{border-radius:20px;box-shadow:0 12px 30px #0f172a1f;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text)}.app-datepicker-panel .mat-calendar{background:var(--color-surface);color:var(--color-text);font-family:inherit}.app-datepicker-panel .mat-calendar-header{padding:12px 16px 0}.app-datepicker-panel .mat-calendar-period-button,.app-datepicker-panel .mat-calendar-previous-button,.app-datepicker-panel .mat-calendar-next-button{color:var(--color-text);font-weight:700;letter-spacing:.02em}.app-datepicker-panel .mat-calendar-table-header th{color:var(--color-text-secondary);font-weight:600}.app-datepicker-panel .mat-calendar-body-cell-content{border-radius:999px;border:1px solid transparent;transition:background-color .18s ease,border-color .18s ease,color .18s ease}.app-datepicker-panel .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover .mat-calendar-body-cell-content{background:var(--color-surface-muted);border-color:var(--color-border)}.app-datepicker-panel .mat-calendar-body-selected{background:var(--color-primary)!important;color:#fff!important}.app-datepicker-panel .mat-calendar-body-today:not(.mat-calendar-body-selected){border-color:var(--color-primary);color:var(--color-primary-hover)}.app-datepicker-panel .mat-calendar-body-disabled .mat-calendar-body-cell-content{color:#94a3b8;opacity:.45}.app-datepicker-panel .mat-calendar-arrow{fill:currentColor}@media(max-width:640px){.page-container,.page-container--narrow{width:min(100% - 24px,var(--content-width));padding:var(--space-6) 0}h1{font-size:1.75rem}h2{font-size:1.25rem}.app-card{padding:var(--space-4)}}
