:root{--px-blue-900: #002d62;--px-blue-800: #0f187c;--px-blue-700: #0640b5;--px-blue-600: #1153d6;--px-blue-500: #2f6bea;--px-blue-100: #dbe7ff;--px-blue-050: #eef4ff;--px-accent-700: #008b80;--px-accent-600: #00a294;--px-accent-500: #00b3a4;--px-accent-400: #2fd0c2;--px-accent-100: #d3f7f3;--px-amber-600: #d98a00;--px-amber-500: #ffb020;--px-amber-100: #fff2d6;--px-success-600: #148a52;--px-success-500: #1aa563;--px-success-100: #d7f5e6;--px-warning-600: #b7791f;--px-warning-500: #e69a1f;--px-warning-100: #fdefd2;--px-danger-600: #c0392b;--px-danger-500: #e0483a;--px-danger-100: #fbe0dd;--px-info-500: #2f6bea;--px-info-100: #dbe7ff;--px-ink-900: #0c1836;--px-ink-700: #2a3554;--px-ink-600: #47506b;--px-ink-500: #6b7391;--px-ink-400: #8b92ac;--px-line: #dfe4f0;--px-line-strong: #c6cee0;--px-surface: #ffffff;--px-surface-2: #f5f8ff;--px-surface-3: #eef2fb;--px-bg: #f0f4fc;--color-bg: var(--px-bg);--color-surface: var(--px-surface);--color-surface-2: var(--px-surface-2);--color-surface-3: var(--px-surface-3);--color-text: var(--px-ink-900);--color-text-muted: var(--px-ink-500);--color-text-subtle: var(--px-ink-600);--color-border: var(--px-line);--color-border-strong: var(--px-line-strong);--color-primary: var(--px-blue-700);--color-primary-hover: var(--px-blue-800);--color-primary-active: var(--px-blue-900);--color-primary-soft: var(--px-blue-050);--color-on-primary: #ffffff;--color-accent: var(--px-accent-500);--color-accent-hover: var(--px-accent-600);--color-accent-soft: var(--px-accent-100);--color-on-accent: #04322e;--color-success: var(--px-success-500);--color-warning: var(--px-warning-500);--color-danger: var(--px-danger-500);--color-info: var(--px-info-500);--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Poppins", var(--font-sans);--fs-xs: .75rem;--fs-sm: .8125rem;--fs-md: .875rem;--fs-base: .9375rem;--fs-lg: 1.0625rem;--fs-xl: 1.25rem;--fs-2xl: 1.5rem;--fs-3xl: 1.875rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--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;--space-12: 48px;--shadow-xs: 0 1px 2px rgba(12, 24, 54, .06);--shadow-sm: 0 2px 6px rgba(12, 24, 54, .08);--shadow-md: 0 8px 24px rgba(12, 24, 54, .1);--shadow-lg: 0 18px 48px rgba(12, 24, 54, .16);--shadow-focus: 0 0 0 3px rgba(6, 64, 181, .28);--shadow-focus-accent: 0 0 0 3px rgba(0, 179, 164, .3);--sidebar-w: 256px;--topbar-h: 64px;--z-drawer: 60;--z-modal: 70;--z-popover: 80;--z-toast: 90;--z-tooltip: 100;--transition-fast: .12s ease;--transition: .18s ease}[data-theme=dark]{--color-bg: #0a1128;--color-surface: #101a3a;--color-surface-2: #15224a;--color-surface-3: #1b2a56;--color-text: #eaf0ff;--color-text-muted: #9aa6cc;--color-text-subtle: #b7c1e0;--color-border: #26345f;--color-border-strong: #34457a;--color-primary: #4d80f5;--color-primary-hover: #6a95f8;--color-primary-active: #86aafb;--color-primary-soft: #16244c;--color-on-primary: #05122e;--color-accent: #22cdbe;--color-accent-hover: #3fd9cb;--color-accent-soft: #0d2f2c;--color-on-accent: #04211e;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .4);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .45);--shadow-md: 0 10px 28px rgba(0, 0, 0, .5);--shadow-lg: 0 20px 50px rgba(0, 0, 0, .6)}.px-btn{--btn-bg: var(--color-primary);--btn-fg: var(--color-on-primary);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-sans);font-weight:600;font-size:var(--fs-md);line-height:1;border:1px solid transparent;border-radius:var(--radius-md);padding:0 var(--space-4);height:40px;cursor:pointer;white-space:nowrap;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast);background:var(--btn-bg);color:var(--btn-fg);-webkit-user-select:none;user-select:none}.px-btn:active{transform:translateY(1px)}.px-btn:disabled,.px-btn[aria-disabled=true]{opacity:.55;cursor:not-allowed}.px-btn:focus-visible{box-shadow:var(--shadow-focus)}.px-btn--sm{height:32px;font-size:var(--fs-sm);padding:0 var(--space-3)}.px-btn--lg{height:48px;font-size:var(--fs-lg);padding:0 var(--space-6)}.px-btn--block{width:100%}.px-btn--primary{--btn-bg: var(--color-primary);--btn-fg: var(--color-on-primary)}.px-btn--primary:hover:not(:disabled){--btn-bg: var(--color-primary-hover)}.px-btn--accent{--btn-bg: var(--color-accent);--btn-fg: var(--color-on-accent)}.px-btn--accent:hover:not(:disabled){--btn-bg: var(--color-accent-hover)}.px-btn--danger{--btn-bg: var(--color-danger);--btn-fg: #fff}.px-btn--danger:hover:not(:disabled){filter:brightness(.95)}.px-btn--success{--btn-bg: var(--color-success);--btn-fg: #fff}.px-btn--success:hover:not(:disabled){filter:brightness(.95)}.px-btn--secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.px-btn--secondary:hover:not(:disabled){background:var(--color-surface-2);border-color:var(--color-primary)}.px-btn--ghost{background:transparent;color:var(--color-text-subtle)}.px-btn--ghost:hover:not(:disabled){background:var(--color-surface-3);color:var(--color-text)}.px-btn--outline{background:transparent;color:var(--color-primary);border-color:var(--color-primary)}.px-btn--outline:hover:not(:disabled){background:var(--color-primary-soft)}.px-btn__spinner{width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-top-color:transparent;animation:px-spin .7s linear infinite}@keyframes px-spin{to{transform:rotate(360deg)}}.px-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);border:1px solid transparent;background:transparent;color:var(--color-text-subtle);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.px-iconbtn:hover{background:var(--color-surface-3);color:var(--color-text)}.px-iconbtn:focus-visible{box-shadow:var(--shadow-focus)}.px-field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-4)}.px-field__label{font-size:var(--fs-sm);font-weight:600;color:var(--color-text-subtle)}.px-field__req{color:var(--color-danger);margin-left:2px}.px-field__hint{font-size:var(--fs-xs);color:var(--color-text-muted)}.px-field__error{font-size:var(--fs-xs);color:var(--color-danger);font-weight:500}.px-input,.px-textarea{width:100%;font-family:var(--font-sans);font-size:var(--fs-md);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:0 var(--space-3);height:40px;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none}.px-textarea{height:auto;min-height:88px;padding:var(--space-3);resize:vertical;line-height:1.5}.px-input::placeholder,.px-textarea::placeholder{color:var(--color-text-muted)}.px-input:focus,.px-textarea:focus{border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.px-input:disabled,.px-textarea:disabled{background:var(--color-surface-3);color:var(--color-text-muted);cursor:not-allowed}.px-input--invalid,.px-textarea--invalid{border-color:var(--color-danger)}.px-input--invalid:focus,.px-textarea--invalid:focus{box-shadow:0 0 0 3px var(--px-danger-100)}.px-input-wrap{position:relative;display:flex;align-items:center}.px-input-wrap .px-input{padding-right:40px}.px-input-wrap__affix{position:absolute;right:6px;display:inline-flex}.px-select-wrap{position:relative;width:100%}.px-select-trigger{position:relative;width:100%;height:40px;display:flex;align-items:center;font-family:var(--font-sans);font-size:var(--fs-md);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:0 36px 0 var(--space-3);cursor:pointer;text-align:left;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none}.px-select-trigger:hover:not(:disabled){border-color:var(--color-primary)}.px-select-trigger.is-open,.px-select-trigger:focus-visible{border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.px-select-trigger:disabled{background:var(--color-surface-3);color:var(--color-text-muted);cursor:not-allowed}.px-select-trigger--invalid{border-color:var(--color-danger)}.px-select-trigger--invalid.is-open,.px-select-trigger--invalid:focus-visible{box-shadow:0 0 0 3px var(--px-danger-100)}.px-select-trigger__label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.px-select-trigger__label.is-placeholder{color:var(--color-text-muted)}.px-select-trigger__chevron{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--color-text-muted);pointer-events:none;transition:transform var(--transition-fast)}.px-select-wrap[data-open] .px-select-trigger__chevron{transform:translateY(-50%) rotate(180deg)}.px-select-menu{margin:0;padding:4px;list-style:none;width:100%;max-height:240px;overflow-y:auto;background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}.px-select-option{padding:8px 12px;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-md);color:var(--color-text);-webkit-user-select:none;user-select:none}.px-select-option.is-highlighted{background:var(--color-surface-3)}.px-select-option.is-selected{background:var(--color-primary-soft);color:var(--color-primary);font-weight:600}.px-select-option.is-selected.is-highlighted{background:var(--color-primary-soft)}.px-select-option.is-disabled{opacity:.45;cursor:not-allowed}.px-select-option.is-empty{color:var(--color-text-muted);cursor:default;font-size:var(--fs-sm)}.px-check{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--fs-md);color:var(--color-text);-webkit-user-select:none;user-select:none}.px-check input{position:absolute;opacity:0;width:0;height:0}.px-check__box{width:20px;height:20px;border:2px solid var(--color-border-strong);border-radius:6px;display:inline-flex;align-items:center;justify-content:center;background:var(--color-surface);transition:all var(--transition-fast);flex:0 0 auto;color:#fff}.px-check__box svg{opacity:0;transform:scale(.6);transition:all var(--transition-fast)}.px-check input:checked+.px-check__box{background:var(--color-primary);border-color:var(--color-primary)}.px-check input:checked+.px-check__box svg{opacity:1;transform:scale(1)}.px-check input:focus-visible+.px-check__box{box-shadow:var(--shadow-focus)}.px-check--radio .px-check__box{border-radius:50%}.px-check--radio .px-check__dot{width:10px;height:10px;border-radius:50%;background:#fff;transform:scale(0);transition:transform var(--transition-fast)}.px-check--radio input:checked+.px-check__box .px-check__dot{transform:scale(1)}.px-check input:disabled+.px-check__box{opacity:.5}.px-switch{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;-webkit-user-select:none;user-select:none}.px-switch input{position:absolute;opacity:0;width:0;height:0}.px-switch__track{width:42px;height:24px;border-radius:999px;background:var(--color-border-strong);position:relative;transition:background var(--transition);flex:0 0 auto}.px-switch__thumb{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:var(--shadow-sm);transition:transform var(--transition)}.px-switch input:checked+.px-switch__track{background:var(--color-accent)}.px-switch input:checked+.px-switch__track .px-switch__thumb{transform:translate(18px)}.px-switch input:focus-visible+.px-switch__track{box-shadow:var(--shadow-focus)}.px-segmented{display:inline-flex;background:var(--color-surface-3);border-radius:var(--radius-md);padding:4px;gap:4px}.px-segmented__item{border:none;background:transparent;color:var(--color-text-subtle);font-weight:600;font-size:var(--fs-sm);padding:8px 16px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:all var(--transition-fast)}.px-segmented__item:hover{color:var(--color-text)}.px-segmented__item[aria-pressed=true],.px-segmented__item.is-active{background:var(--color-surface);color:var(--color-primary);box-shadow:var(--shadow-xs)}.px-segmented__item:focus-visible{box-shadow:var(--shadow-focus)}.px-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.px-card__header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.px-card__title{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:600}.px-card__subtitle{font-size:var(--fs-sm);color:var(--color-text-muted);margin-top:2px}.px-card__body{padding:var(--space-5)}.px-card__footer{padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border);display:flex;gap:var(--space-2);justify-content:flex-end}.px-badge{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-xs);font-weight:600;padding:3px 10px;border-radius:var(--radius-pill);line-height:1.5;white-space:nowrap}.px-badge__dot{width:6px;height:6px;border-radius:50%;background:currentColor}.px-badge--neutral{background:var(--color-surface-3);color:var(--color-text-subtle)}.px-badge--primary{background:var(--px-blue-050);color:var(--px-blue-700)}.px-badge--accent{background:var(--color-accent-soft);color:var(--px-accent-700)}.px-badge--success{background:var(--px-success-100);color:var(--px-success-600)}.px-badge--warning{background:var(--px-warning-100);color:var(--px-warning-600)}.px-badge--danger{background:var(--px-danger-100);color:var(--px-danger-600)}.px-badge--info{background:var(--px-info-100);color:var(--px-info-500)}.px-avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:linear-gradient(135deg,var(--px-blue-700),var(--px-accent-500));color:#fff;font-weight:700;font-family:var(--font-display);overflow:hidden;flex:0 0 auto;-webkit-user-select:none;user-select:none}.px-avatar img{width:100%;height:100%;object-fit:cover}.px-avatar--sm{width:30px;height:30px;font-size:var(--fs-sm)}.px-avatar--md{width:40px;height:40px;font-size:var(--fs-md)}.px-avatar--lg{width:56px;height:56px;font-size:var(--fs-xl)}.px-tooltip{position:relative;display:inline-flex}.px-tooltip__bubble{position:absolute;z-index:var(--z-tooltip);bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--px-ink-900);color:#fff;font-size:var(--fs-xs);font-weight:500;padding:6px 10px;border-radius:var(--radius-sm);white-space:nowrap;box-shadow:var(--shadow-md);pointer-events:none;opacity:0;transition:opacity var(--transition-fast)}.px-tooltip:hover .px-tooltip__bubble,.px-tooltip:focus-within .px-tooltip__bubble{opacity:1}.px-tooltip__bubble:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--px-ink-900)}.px-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0614368c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:var(--space-4);z-index:var(--z-modal);animation:px-fade .15s ease}@keyframes px-fade{0%{opacity:0}}.px-modal{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:520px;max-height:calc(100vh - 48px);display:flex;flex-direction:column;animation:px-pop .18s ease}.px-modal--sm{max-width:420px}.px-modal--lg{max-width:780px}@keyframes px-pop{0%{opacity:0;transform:translateY(8px) scale(.98)}}.px-modal__header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-5);border-bottom:1px solid var(--color-border)}.px-modal__title{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:600}.px-modal__body{padding:var(--space-5);overflow:auto}.px-modal__footer{padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border);display:flex;gap:var(--space-2);justify-content:flex-end}.px-drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#06143680;z-index:var(--z-drawer);animation:px-fade .15s ease}.px-drawer{position:fixed;top:0;right:0;height:100%;width:min(440px,92vw);background:var(--color-surface);box-shadow:var(--shadow-lg);z-index:var(--z-drawer);display:flex;flex-direction:column;animation:px-slide-in .22s ease}@keyframes px-slide-in{0%{transform:translate(100%)}}.px-drawer__header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-5);border-bottom:1px solid var(--color-border)}.px-drawer__title{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:600}.px-drawer__body{padding:var(--space-5);overflow:auto;flex:1}.px-drawer__footer{padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border);display:flex;gap:var(--space-2);justify-content:flex-end}.px-tabs__list{display:flex;gap:var(--space-1);border-bottom:1px solid var(--color-border);overflow-x:auto}.px-tabs__tab{border:none;background:transparent;padding:12px 16px;font-weight:600;font-size:var(--fs-md);color:var(--color-text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:color var(--transition-fast),border-color var(--transition-fast)}.px-tabs__tab:hover{color:var(--color-text)}.px-tabs__tab.is-active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.px-tabs__tab:focus-visible{box-shadow:var(--shadow-focus);border-radius:var(--radius-sm)}.px-tabs__panel{padding-top:var(--space-5)}.px-table-wrap{width:100%;overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface)}.px-table{width:100%;border-collapse:collapse;font-size:var(--fs-md)}.px-table thead th{text-align:left;font-weight:600;font-size:var(--fs-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);background:var(--color-surface-2);padding:12px 16px;border-bottom:1px solid var(--color-border);white-space:nowrap;position:sticky;top:0}.px-table th.px-th--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.px-table th.px-th--sortable:hover{color:var(--color-text)}.px-table__sort{display:inline-flex;align-items:center;gap:4px}.px-table__sort-icon{opacity:.4}.px-table__sort-icon.is-active{opacity:1;color:var(--color-primary)}.px-table tbody td{padding:12px 16px;border-bottom:1px solid var(--color-border);color:var(--color-text);vertical-align:middle}.px-table tbody tr:last-child td{border-bottom:none}.px-table tbody tr:hover{background:var(--color-surface-2)}.px-table__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:12px 16px;border-top:1px solid var(--color-border);flex-wrap:wrap}.px-table__count{font-size:var(--fs-sm);color:var(--color-text-muted)}.px-pagination{display:inline-flex;align-items:center;gap:4px}.px-pagination button{min-width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-subtle);font-weight:600;font-size:var(--fs-sm);cursor:pointer;transition:all var(--transition-fast)}.px-pagination button:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.px-pagination button.is-active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.px-pagination button:disabled{opacity:.45;cursor:not-allowed}.px-toast-region{position:fixed;top:var(--space-5);right:var(--space-5);display:flex;flex-direction:column;gap:var(--space-3);z-index:var(--z-toast);max-width:380px;width:calc(100vw - 40px);pointer-events:none}.px-toast{pointer-events:auto;background:var(--color-surface);border:1px solid var(--color-border);border-left:4px solid var(--color-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--space-3) var(--space-4);display:flex;gap:var(--space-3);align-items:flex-start;animation:px-toast-in .2s ease}@keyframes px-toast-in{0%{opacity:0;transform:translate(20px)}}.px-toast--success{border-left-color:var(--color-success)}.px-toast--error{border-left-color:var(--color-danger)}.px-toast--warning{border-left-color:var(--color-warning)}.px-toast--info{border-left-color:var(--color-info)}.px-toast__icon{flex:0 0 auto;margin-top:1px}.px-toast--success .px-toast__icon{color:var(--color-success)}.px-toast--error .px-toast__icon{color:var(--color-danger)}.px-toast--warning .px-toast__icon{color:var(--color-warning)}.px-toast--info .px-toast__icon{color:var(--color-info)}.px-toast__title{font-weight:600;font-size:var(--fs-md)}.px-toast__msg{font-size:var(--fs-sm);color:var(--color-text-muted);margin-top:2px}.px-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-10) var(--space-5);gap:var(--space-3);color:var(--color-text-muted)}.px-empty__icon{width:56px;height:56px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--color-surface-3);color:var(--color-primary)}.px-empty__title{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:600;color:var(--color-text)}.px-empty__desc{font-size:var(--fs-sm);max-width:360px}.px-skeleton{background:linear-gradient(90deg,var(--color-surface-3) 25%,var(--color-surface-2) 37%,var(--color-surface-3) 63%);background-size:400% 100%;animation:px-shimmer 1.3s ease-in-out infinite;border-radius:var(--radius-sm)}@keyframes px-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.px-datepicker{position:relative}.px-calendar{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-3);width:300px}.px-calendar--floating{box-shadow:var(--shadow-lg)}.px-calendar__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-2);gap:var(--space-2)}.px-calendar__title{font-family:var(--font-display);font-weight:600;font-size:var(--fs-md)}.px-calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.px-calendar__dow{text-align:center;font-size:var(--fs-xs);font-weight:600;color:var(--color-text-muted);padding:6px 0}.px-calendar__cell{aspect-ratio:1;border:none;background:transparent;border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--color-text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;position:relative;transition:background var(--transition-fast)}.px-calendar__cell:hover:not(:disabled){background:var(--color-primary-soft)}.px-calendar__cell.is-outside{color:var(--color-text-muted);opacity:.5}.px-calendar__cell.is-today{font-weight:700;color:var(--color-primary)}.px-calendar__cell.is-selected{background:var(--color-primary);color:#fff;font-weight:600}.px-calendar__cell.is-selected:hover{background:var(--color-primary-hover)}.px-calendar__cell:disabled{color:var(--color-text-muted);opacity:.4;cursor:not-allowed}.px-calendar__cell:focus-visible{box-shadow:var(--shadow-focus)}.px-calendar__dot{position:absolute;bottom:4px;left:50%;transform:translate(-50%);width:5px;height:5px;border-radius:50%}.px-monthcal{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.px-monthcal__dow{text-align:center;font-size:var(--fs-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;padding-bottom:4px}.px-monthcal__cell{min-height:84px;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:8px;display:flex;flex-direction:column;gap:4px;background:var(--color-surface)}.px-monthcal__cell.is-outside{background:var(--color-surface-2);opacity:.55}.px-monthcal__cell.is-today{border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}.px-monthcal__date{font-size:var(--fs-sm);font-weight:600;color:var(--color-text-subtle)}.px-monthcal__cell.is-weekend .px-monthcal__date{color:var(--color-text-muted)}.px-timepicker{display:inline-flex;align-items:center;gap:6px}.px-timepicker .px-select-wrap{width:auto;min-width:72px}.px-timepicker .px-select-trigger{min-width:72px}.px-stat{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow-xs);position:relative;overflow:hidden}.px-stat__label{font-size:var(--fs-sm);color:var(--color-text-muted);font-weight:500}.px-stat__value{font-family:var(--font-display);font-size:var(--fs-3xl);font-weight:700;color:var(--color-text);line-height:1}.px-stat__meta{font-size:var(--fs-xs);color:var(--color-text-muted)}.px-stat__icon{position:absolute;top:var(--space-4);right:var(--space-4);width:40px;height:40px;border-radius:var(--radius-md);display:inline-flex;align-items:center;justify-content:center;background:var(--color-primary-soft);color:var(--color-primary)}.px-alert{display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--fs-md);align-items:flex-start;border:1px solid transparent}.px-alert__icon{flex:0 0 auto;margin-top:1px}.px-alert--info{background:var(--px-info-100);color:var(--px-blue-900);border-color:var(--px-blue-100)}.px-alert--success{background:var(--px-success-100);color:var(--px-success-600)}.px-alert--warning{background:var(--px-warning-100);color:var(--px-warning-600)}.px-alert--danger{background:var(--px-danger-100);color:var(--px-danger-600)}.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:100vh;height:100vh;overflow:hidden}.app-sidebar{background:linear-gradient(180deg,var(--px-blue-900) 0%,var(--px-blue-800) 100%);color:#fff;display:flex;flex-direction:column;padding:var(--space-4);gap:var(--space-2);overflow-y:auto}.app-sidebar__brand{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-2) var(--space-5)}.app-sidebar__logo{height:34px;width:auto;filter:brightness(0) invert(1)}.app-sidebar__brand-text{font-family:var(--font-display);font-weight:700;font-size:var(--fs-md);line-height:1.2}.app-sidebar__brand-sub{font-size:11px;color:#fff9;font-weight:500}.app-nav{display:flex;flex-direction:column;gap:3px}.app-nav__section{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#ffffff73;font-weight:700;padding:var(--space-4) var(--space-3) var(--space-2)}.app-nav__link{display:flex;align-items:center;gap:var(--space-3);padding:10px var(--space-3);border-radius:var(--radius-md);color:#ffffffd1;font-weight:500;font-size:var(--fs-md);text-decoration:none;transition:background var(--transition-fast),color var(--transition-fast);border:1px solid transparent}.app-nav__link:hover{background:#ffffff14;color:#fff;text-decoration:none}.app-nav__link.is-active{background:#00b3a429;color:#fff;border-color:#00b3a466}.app-nav__link.is-active svg{color:var(--px-accent-400)}.app-sidebar__footer{margin-top:auto;padding-top:var(--space-4)}.app-main{display:flex;flex-direction:column;overflow:hidden;background:var(--color-bg)}.app-topbar{height:var(--topbar-h);min-height:var(--topbar-h);display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.app-topbar__title{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:600}.app-topbar__user{display:flex;align-items:center;gap:var(--space-3);padding:4px 6px 4px 12px;border-radius:var(--radius-pill);border:1px solid var(--color-border);cursor:default}.app-topbar__user-name{font-weight:600;font-size:var(--fs-sm);line-height:1.1}.app-topbar__user-role{font-size:11px;color:var(--color-text-muted)}.app-content{flex:1;overflow-y:auto;padding:var(--space-6)}.app-content__inner{max-width:1180px;margin:0 auto;width:100%}.page-head{display:flex;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-6);flex-wrap:wrap}.page-head__title{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:700}.page-head__desc{color:var(--color-text-muted);font-size:var(--fs-md);margin-top:2px}.page-head__actions{margin-left:auto;display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.grid{display:grid;gap:var(--space-5)}.grid--stats{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.grid--2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.grid--3{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 var(--space-4)}.stack-lg{display:flex;flex-direction:column;gap:var(--space-6)}.stack-md{display:flex;flex-direction:column;gap:var(--space-4)}.row-gap{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap}.auth-wrap{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.auth-hero{background:linear-gradient(150deg,var(--px-blue-900),var(--px-blue-700) 55%,var(--px-accent-600));color:#fff;padding:var(--space-12);display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.auth-hero:after{content:"";position:absolute;right:-120px;bottom:-120px;width:380px;height:380px;border-radius:50%;background:#ffffff14}.auth-hero:before{content:"";position:absolute;right:60px;top:-80px;width:220px;height:220px;border-radius:50%;background:#00b3a440}.auth-hero__logo{height:40px;width:auto;filter:brightness(0) invert(1);align-self:flex-start}.auth-hero__headline{font-family:var(--font-display);font-size:2.4rem;font-weight:700;line-height:1.15;max-width:440px;position:relative;z-index:1}.auth-hero__sub{font-size:var(--fs-lg);color:#fffc;max-width:420px;margin-top:var(--space-4);position:relative;z-index:1}.auth-hero__features{display:flex;flex-direction:column;gap:var(--space-3);position:relative;z-index:1}.auth-hero__feature{display:flex;align-items:center;gap:var(--space-3);font-size:var(--fs-md);color:#ffffffeb}.auth-hero__feature-icon{width:34px;height:34px;border-radius:var(--radius-md);background:#ffffff24;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.auth-panel{display:flex;align-items:center;justify-content:center;padding:var(--space-8);background:var(--color-surface)}.auth-card{width:100%;max-width:400px}.auth-card__logo{height:40px;margin-bottom:var(--space-6);display:none}.auth-card__title{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:700;margin-bottom:4px}.auth-card__sub{color:var(--color-text-muted);margin-bottom:var(--space-6)}.auth-demo{margin-top:var(--space-5);padding:var(--space-3);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);font-size:var(--fs-xs);color:var(--color-text-muted);background:var(--color-surface-2)}.checkin{background:linear-gradient(135deg,var(--px-blue-800),var(--px-blue-700));color:#fff;border-radius:var(--radius-xl);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-5);position:relative;overflow:hidden;box-shadow:var(--shadow-md)}.checkin:after{content:"";position:absolute;right:-80px;top:-80px;width:260px;height:260px;border-radius:50%;background:#00b3a438}.checkin__clock{font-family:var(--font-display);font-size:2.6rem;font-weight:700;line-height:1;position:relative;z-index:1}.checkin__date{color:#ffffffc7;position:relative;z-index:1}.checkin__status{display:flex;gap:var(--space-5);position:relative;z-index:1;flex-wrap:wrap}.checkin__stat-label{font-size:var(--fs-xs);color:#ffffffb3;text-transform:uppercase;letter-spacing:.05em}.checkin__stat-value{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:600}.checkin__actions{display:flex;gap:var(--space-3);position:relative;z-index:1;flex-wrap:wrap;align-items:center}.checkin .px-segmented{background:#ffffff24}.checkin .px-segmented__item{color:#ffffffd9}.checkin .px-segmented__item.is-active{background:#fff;color:var(--px-blue-800)}.balance-ring{--pct: 0;width:84px;height:84px;border-radius:50%;background:conic-gradient(var(--color-accent) calc(var(--pct) * 1%),var(--color-surface-3) 0);display:grid;place-items:center;flex:0 0 auto}.balance-ring__inner{width:62px;height:62px;border-radius:50%;background:var(--color-surface);display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:var(--fs-lg)}.balance-card{display:flex;align-items:center;gap:var(--space-4)}.kv{display:flex;justify-content:space-between;gap:var(--space-4);padding:8px 0;border-bottom:1px solid var(--color-border);font-size:var(--fs-md)}.kv:last-child{border-bottom:none}.kv__key{color:var(--color-text-muted)}.kv__val{font-weight:600}.legend{display:flex;gap:var(--space-4);flex-wrap:wrap;font-size:var(--fs-sm);color:var(--color-text-muted)}.legend__item{display:inline-flex;align-items:center;gap:6px}.legend__dot{width:10px;height:10px;border-radius:3px}.app-loading{min-height:100vh;display:grid;place-items:center;gap:var(--space-4);color:var(--color-text-muted)}.mobile-only{display:none}@media (max-width: 1024px){.auth-wrap{grid-template-columns:1fr}.auth-hero{display:none}.auth-card__logo{display:block}}@media (max-width: 860px){.app-shell{grid-template-columns:1fr}.app-sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);z-index:var(--z-drawer);transform:translate(-100%);transition:transform var(--transition)}.app-sidebar.is-open{transform:translate(0);box-shadow:var(--shadow-lg)}.app-sidebar__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#06143680;z-index:calc(var(--z-drawer) - 1)}.mobile-only{display:inline-flex}.app-content{padding:var(--space-4)}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-base);line-height:1.5;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5{font-family:var(--font-display);margin:0;color:var(--color-text);line-height:1.25}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}:focus-visible{outline:none;box-shadow:var(--shadow-focus);border-radius:var(--radius-sm)}::selection{background:var(--px-accent-100);color:var(--px-blue-900)}*{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:999px;border:2px solid transparent;background-clip:content-box}.px-visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.px-stack{display:flex;flex-direction:column}.px-row{display:flex;align-items:center}.px-spacer{flex:1 1 auto}.px-muted{color:var(--color-text-muted)}.px-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
