:root{--nv-primary: #263979;--nv-blue: #4a80f5;--nv-secondary: #3b3b3b;--nv-success: #608c45;--nv-warning: #fb9c50;--nv-error: #ff4d49;--nv-black: #111111;--nv-white: #ffffff;--nv-bg: #ebedf0;--nv-nav-bg: #f7f7f9;--nv-black-80: #3b3b3b;--nv-black-60: #8e8e8e;--nv-black-40: #a0a0a0;--nv-black-20: #b8b8b8;--nv-black-8: #d1d1d1;--form-height: 36px;--form-height-sm: 28px;--c-brand: #263979;--c-brand-hover: #1e2f66;--c-brand-bg: #eef1f8;--c-accent: #4a80f5;--c-text: #1a1a2e;--c-text-sub: #374151;--c-text-muted: #6b7280;--c-text-faint: #9ca3af;--c-border: #e5e7eb;--c-border-strong: #d1d5db;--c-surface: #ffffff;--c-surface-sub: #f3f4f6;--c-bg: #f0f2f5;--c-danger: #dc2626;--c-danger-bg: #fff5f5;--c-warning: #b45309;--c-warning-bg: #fffbeb;--c-success: #15803d;--c-success-bg: #f0fdf4;--c-info: #2563eb;--c-info-bg: #eff6ff;--cat-blue: #1d4ed8;--cat-blue-bg: #eff6ff;--cat-violet: #7c3aed;--cat-violet-bg: #f5f3ff;--cat-cyan: #0e7490;--cat-cyan-bg: #ecfeff;--cat-green: #4d7c0f;--cat-green-bg: #f7fee7;--cat-yellow: #a16207;--cat-yellow-bg: #fefce8;--cat-orange: #c2410c;--cat-orange-bg: #fff7ed;--cat-pink: #be185d;--cat-pink-bg: #fdf2f8;--cat-slate: #475569;--cat-slate-bg: #f1f5f9;--fs-xs: 11px;--fs-sm: 12px;--fs-base: 13px;--fs-md: 14px;--fs-lg: 16px;--fs-xl: 18px;--fs-2xl: 20px;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--r-sm: 6px;--r-md: 8px;--r-lg: 16px;--r-full: 999px;--sh-card: 0 1px 4px rgba(0, 0, 0, .04), 0 4px 12px rgba(0, 0, 0, .03);--sh-pop: 0 20px 60px rgba(0, 0, 0, .2);--ring: 0 0 0 3px rgba(74, 128, 245, .35);--c-on-brand: #ffffff;--c-on-dark: #ffffff;--c-on-dark-muted: rgba(255, 255, 255, .7);--c-on-dark-faint: rgba(255, 255, 255, .45);--c-dark-hover: rgba(255, 255, 255, .08);--c-dark-active: rgba(255, 255, 255, .14);--c-dark-border: rgba(255, 255, 255, .08);--c-on-dark-danger: #fca5a5;--c-backdrop: rgba(0, 0, 0, .5);--z-sticky: 20;--z-dropdown: 100;--z-sidebar: 200;--z-modal: 1000;--z-toast: 1100;--dur: .15s;--ease: ease;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:var(--nv-black);background-color:var(--nv-bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}button{font-family:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--nv-black-20);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--nv-black-60)}::selection{background:#4a80f533;color:var(--nv-black)}.chatbot-markdown p{margin:0 0 8px}.chatbot-markdown p:last-child{margin-bottom:0}.chatbot-markdown h1,.chatbot-markdown h2,.chatbot-markdown h3,.chatbot-markdown h4,.chatbot-markdown h5,.chatbot-markdown h6{margin:8px 0 4px;font-size:13px;font-weight:700}.chatbot-markdown h1{font-size:16px}.chatbot-markdown h2{font-size:15px}.chatbot-markdown h3{font-size:14px}.chatbot-markdown ul,.chatbot-markdown ol{margin:4px 0;padding-left:20px}.chatbot-markdown li{margin-bottom:2px}.chatbot-markdown code{background:#0000000f;padding:1px 4px;border-radius:3px;font-size:12px}.chatbot-markdown pre{background:#0000000f;padding:8px;border-radius:6px;overflow-x:auto;margin:4px 0}.chatbot-markdown pre code{background:none;padding:0}.chatbot-markdown blockquote{border-left:3px solid #ccc;margin:4px 0;padding:2px 8px;color:#666}.chatbot-markdown table{border-collapse:collapse;margin:4px 0;font-size:12px}.chatbot-markdown th,.chatbot-markdown td{border:1px solid #ddd;padding:4px 8px}.chatbot-markdown th{background:#0000000a;font-weight:600}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:15px}body{font-family:Pretendard,-apple-system,BlinkMacSystemFont,sans-serif;color:#1a1a2e;background:#f0f2f5;line-height:1.6;-webkit-font-smoothing:antialiased}#root{max-width:none;margin:0;padding:0;text-align:left}a{color:#4a80f5;text-decoration:none}.app-layout{display:flex;min-height:100vh}.sidebar{position:fixed;top:0;left:0;bottom:0;width:260px;background:linear-gradient(180deg,#1a2a52,#1e3264 40%,#162548);color:#fff;display:flex;flex-direction:column;z-index:100;overflow-y:auto;transition:width .25s ease,transform .25s ease;box-shadow:2px 0 12px #00000026}.sidebar.sidebar-collapsed{width:60px;overflow:hidden}.sidebar.sidebar-collapsed .sidebar-nav-item span,.sidebar.sidebar-collapsed .sidebar-nav-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar.sidebar-collapsed .sidebar-section-label{display:none}.sidebar-nav-item:hover{background:#ffffff12!important}.sidebar-nav-item .pin-star{opacity:0;transition:opacity .15s}.sidebar-nav-item:hover .pin-star,.sidebar-nav-item .pin-star.pinned{opacity:1}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-track{background:transparent}.sidebar::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:4px}.sidebar::-webkit-scrollbar-thumb:hover{background:#ffffff40}.main-content{flex:1;margin-left:260px;background:#f0f2f5;min-height:100vh;overflow-x:auto;transition:margin-left .25s ease}.app-layout:has(.sidebar-collapsed)>.main-content{margin-left:60px}.page{padding:32px 40px}.page-title{font-size:24px;font-weight:700;color:#263979;margin-bottom:24px}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;position:sticky;top:0;z-index:20;background:#f8f9fb;padding:12px 0;margin-top:-12px}.filter-bar{position:sticky;top:68px;z-index:19;background:#f8f9fb;padding:8px 0;margin-bottom:12px}.page-header .page-title{margin-bottom:0}.page-loading{display:flex;align-items:center;justify-content:center;min-height:300px;font-size:16px;color:#8e8e8e}.empty-text{text-align:center;color:#a0a0a0;padding:32px;font-size:15px}.card{background:#fff;border-radius:16px;box-shadow:0 1px 4px #0000000a,0 4px 12px #00000008;padding:24px;margin-bottom:24px}.card-title{font-size:18px;font-weight:600;color:#263979;margin-bottom:20px}.dashboard-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;margin-bottom:28px}.dashboard-card{background:#fff;border-radius:16px;box-shadow:0 1px 4px #0000000a,0 4px 12px #00000008;padding:24px}.dashboard-card-label{font-size:14px;color:#8e8e8e;font-weight:500;margin-bottom:10px}.dashboard-card-value{font-size:32px;font-weight:700;color:#263979}.table-wrapper{overflow-x:auto}.table-wrapper.scroll-page{overflow-y:auto;max-height:var(--table-max-height, calc(100vh - 320px) )}.table-wrapper.scroll-page thead th{position:sticky;top:0;z-index:2}table{width:100%;border-collapse:collapse}thead th{padding:14px 16px;text-align:left;font-weight:600;font-size:13px;color:#555;letter-spacing:.3px;border-bottom:2px solid #e5e7eb;background:#fafbfc;white-space:nowrap}tbody td{padding:14px 16px;font-size:14px;border-bottom:1px solid #f0f0f0;color:#1a1a2e}tbody tr:hover{background:#4a80f50a}tbody tr:last-child td{border-bottom:none}.hover-actions{opacity:0;transition:opacity .1s ease}tbody tr:hover .hover-actions,.hover-row:hover .hover-actions{opacity:1}@media(max-width:768px){.hover-actions{opacity:1}}.badge{display:inline-block;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}.badge-tone-neutral{background:var(--c-surface-sub);color:var(--c-text-sub)}.badge-tone-brand{background:var(--c-brand-bg);color:var(--c-brand)}.badge-tone-info{background:var(--c-info-bg);color:var(--c-info)}.badge-tone-success{background:var(--c-success-bg);color:var(--c-success)}.badge-tone-warning{background:var(--c-warning-bg);color:var(--c-warning)}.badge-tone-danger{background:var(--c-danger-bg);color:var(--c-danger)}.badge-not_started{background:#fb9c501f;color:#d97706}.badge-in_progress{background:#4a80f51f;color:#4a80f5}.badge-wrapping_up{background:#608c451f;color:#608c45}.badge-completed{background:#608c452e;color:#4a7a32}.badge-suspended{background:#ff4d491a;color:#ff4d49}.badge-cancelled{background:#8e8e8e1f;color:#585858}.badge-bidding{background:#e67e221f;color:#e67e22}.flag-row{display:flex;gap:8px;flex-wrap:wrap}.flag-badge{display:inline-block;padding:5px 14px;border-radius:8px;font-size:13px;font-weight:600;background:#f0f2f5;color:#a0a0a0}.flag-badge.flag-active{background:#263979;color:#fff}.btn{display:inline-flex;align-items:center;justify-content:center;height:var(--form-height);padding:0 22px;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;gap:8px;white-space:nowrap}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:#263979;color:#fff}.btn-primary:hover:not(:disabled){background:#1e2f66;transform:translateY(-1px);box-shadow:0 4px 12px #2639794d}.btn-secondary{background:#f0f2f5;color:#3b3b3b;border:1px solid #e0e0e0}.btn-secondary:hover:not(:disabled){background:#e5e7eb}.btn-danger{background:var(--c-danger);color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c;transform:translateY(-1px);box-shadow:0 4px 12px #dc26264d}.btn-ghost{background:transparent;color:var(--c-brand)}.btn-ghost:hover:not(:disabled){background:var(--c-brand-bg)}.btn:focus-visible,.modal-close:focus-visible{outline:none;box-shadow:var(--ring)}.btn-small{height:var(--form-height-sm);padding:0 14px;font-size:13px;border-radius:6px}.btn-full{width:100%}.action-buttons{display:flex;gap:8px}.link-text{color:#4a80f5;cursor:pointer;font-weight:500}.link-text:hover{text-decoration:underline}.filter-bar{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap;align-items:center}.filter-bar select,.filter-bar input{height:var(--form-height);padding:0 14px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;background:#fff;color:#1a1a2e;outline:none;transition:border-color .2s,box-shadow .2s}.filter-search{min-width:240px}.form-group{margin-bottom:16px;flex:1}.form-group label{display:block;font-size:14px;font-weight:600;color:#374151;margin-bottom:6px}.form-group input,.form-group select{width:100%;height:var(--form-height);padding:0 14px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;color:#1a1a2e;background:#fff;outline:none;transition:border-color .2s,box-shadow .2s}.form-group textarea{width:100%;padding:8px 14px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;color:#1a1a2e;background:#fff;outline:none;transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus,.filter-bar select:focus,.filter-bar input:focus{border-color:#4a80f5;box-shadow:0 0 0 3px #4a80f51f}.form-group input:disabled{background:#f9fafb;color:#9ca3af}.form-group textarea{resize:vertical;min-height:80px}.form-row{display:flex;gap:16px}.checkbox-row{flex-wrap:wrap}.checkbox-label{display:inline-flex!important;align-items:center;gap:8px;font-size:14px;font-weight:500;color:#374151;cursor:pointer}.checkbox-label input[type=checkbox]{width:auto;accent-color:#263979}.section-title{font-size:15px;font-weight:600;color:#263979;margin:20px 0 12px;padding-top:16px;border-top:1px solid #e5e7eb}.role-plans-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes toastIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.modal{background:#fff;border-radius:16px;width:640px;max-width:95vw;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0003;animation:slideUp .25s ease}.modal.modal-small{width:500px}body:has(.modal-overlay) .chatbot-fab{display:none!important}.modal.modal-large{width:860px}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:24px 28px;border-bottom:1px solid #e5e7eb}.modal-header h3{font-size:20px;font-weight:700;color:#263979}.modal-close{background:none;border:none;font-size:24px;color:#9ca3af;cursor:pointer;padding:4px;line-height:1;border-radius:6px;transition:all .15s}.modal-close:hover{color:#374151;background:#f3f4f6}.modal-body{padding:28px;overflow-y:auto;flex:1}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:20px 28px;border-top:1px solid #e5e7eb}.modal input,.modal textarea,.modal select{color:#374151!important}.modal .w-md-editor-text-input{color:#374151!important;-webkit-text-fill-color:#374151!important}.modal .w-md-editor{--color-fg-default: #374151 !important;--color-canvas-default: #fff !important;--color-canvas-subtle: #f6f8fa !important}.w-md-editor{border:none!important;box-shadow:none!important;width:100%!important;height:auto!important;min-height:150px}.w-md-editor .w-md-editor-content{height:auto!important;min-height:120px}.w-md-editor .w-md-editor-area{overflow:visible!important}.w-md-editor .w-md-editor-input{height:auto!important;min-height:120px}.w-md-editor .w-md-editor-text{min-height:120px}.w-md-editor .w-md-editor-text-pre,.w-md-editor .w-md-editor-text-input{min-height:120px!important}.w-md-editor .w-md-editor-preview{min-height:120px}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:24px}.detail-list{display:flex;flex-direction:column;gap:12px}.detail-item{display:flex;align-items:baseline;gap:16px}.detail-label{font-size:14px;font-weight:600;color:#8e8e8e;min-width:110px;flex-shrink:0}.detail-value{font-size:15px;color:#1a1a2e;word-break:break-word}.mobile-menu-btn{display:none;position:fixed;top:10px;left:10px;z-index:200;background:#263979d9;color:#fff;border:none;border-radius:8px;width:36px;height:36px;cursor:pointer;align-items:center;justify-content:center;box-shadow:0 2px 8px #26397940}.mobile-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:99}@media(max-width:768px){html{font-size:13px}.sidebar{transform:translate(-100%)}.sidebar.sidebar-open{transform:translate(0);width:260px}.sidebar.sidebar-collapsed{width:260px;transform:translate(-100%)}.main-content{margin-left:0;padding-top:40px}.app-layout:has(.sidebar-collapsed)>.main-content{margin-left:0}.mobile-menu-btn{display:flex}.mobile-overlay{display:block}.page{padding:12px}.page-title{font-size:18px;margin-bottom:12px}.page-header{margin-bottom:12px;gap:8px;flex-wrap:wrap}.page-header .page-title{white-space:nowrap;flex-shrink:0}.form-row{flex-direction:column;gap:0}.filter-bar{flex-direction:column;gap:8px;margin-bottom:12px}.filter-bar select,.filter-bar input{padding:8px 10px;font-size:13px}.filter-search{min-width:100%}.dashboard-cards{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px}.detail-grid{grid-template-columns:1fr}.role-plans-grid{grid-template-columns:repeat(2,1fr)}.modal{width:100%;max-height:95vh}.modal-header{padding:16px 18px}.modal-header h3{font-size:16px}.modal-body{padding:16px 18px}.modal-footer{padding:14px 18px}thead th{padding:8px 10px;font-size:12px}tbody td{padding:8px 10px;font-size:13px}.btn{padding:8px 16px;font-size:13px}.btn-small{padding:5px 10px;font-size:12px}.form-group label{font-size:13px;margin-bottom:4px}.form-group input,.form-group select{height:32px;padding:0 10px;font-size:13px}.form-group textarea{padding:6px 10px;font-size:13px}.section-title{font-size:14px;margin:14px 0 8px}.badge{padding:3px 8px;font-size:11px}}@media print{.sidebar,.mobile-menu-btn,.mobile-overlay,.no-print{display:none!important}.main-content{margin-left:0!important}.page{padding:10px!important}.print-only{display:block!important}.project-tabs{display:none!important}body{background:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.card{box-shadow:none!important;border:1px solid #ddd!important}}@media(max-width:768px){input[style*=width],select[style*=width]{max-width:100%!important}.modal{width:95vw!important;max-width:95vw!important}.dashboard-cards,[class*=summary]{grid-template-columns:repeat(2,1fr)!important}.calendar-grid{font-size:11px!important}.calendar-grid>div{padding:2px!important;min-height:32px!important}}@media(max-width:768px){.overview-metrics{grid-template-columns:repeat(2,1fr)!important;gap:8px!important}.overview-card-meta{margin-left:0!important;width:100%;font-size:11px!important}}.project-card-list{display:none}.project-table-desktop{display:block}@media(max-width:768px){.project-card-list{display:block}.project-table-desktop{display:none}}.project-info-more>summary{display:none}.project-info-more>div{display:grid!important}@media(max-width:768px){.project-tabs{gap:0!important;margin-bottom:16px!important}.project-tabs button{padding:8px 10px!important;font-size:11px!important;white-space:nowrap}.project-info-more>summary{display:list-item}.project-info-more:not([open])>div{display:none!important}.project-info-grid{gap:10px!important}}@media(max-width:480px){.dashboard-cards{grid-template-columns:1fr}.action-buttons{flex-direction:column}}@media(max-width:768px){.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-wrapper table{min-width:600px}}@media(max-width:768px){.dashboard-card{padding:12px;border-radius:10px}.dashboard-card-label{font-size:11px;margin-bottom:2px}.dashboard-card-value{font-size:20px}.card{padding:12px;border-radius:10px;margin-bottom:12px;box-shadow:0 1px 3px #0000000a}.card-title{font-size:15px;margin-bottom:12px}h2{font-size:18px;margin-bottom:12px!important}h3{font-size:14px}.mobile-scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -12px;padding:0 12px}.detail-item{gap:10px}.detail-label{font-size:12px;min-width:80px}.detail-value{font-size:13px}}@keyframes uiSpin{to{transform:rotate(360deg)}}.ui-spin{animation:uiSpin .8s linear infinite}.input{width:100%;height:var(--form-height);padding:0 var(--sp-3);border:1px solid var(--c-border-strong);border-radius:var(--r-md);font-family:inherit;font-size:var(--fs-md);color:var(--c-text);background:var(--c-surface);outline:none;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}textarea.input{height:auto;min-height:72px;padding:var(--sp-2) var(--sp-3);line-height:1.5;resize:vertical}.input-sm{height:var(--form-height-sm);padding:0 var(--sp-2);font-size:var(--fs-base);border-radius:var(--r-sm)}.input::placeholder{color:var(--c-text-faint)}.input:hover:not(:disabled):not(:focus){border-color:var(--c-text-faint)}.input:focus{border-color:var(--c-accent);box-shadow:0 0 0 3px #4a80f51f}.input:disabled{background:var(--c-surface-sub);color:var(--c-text-faint);cursor:not-allowed}.input[aria-invalid=true]{border-color:var(--c-danger)}.input[aria-invalid=true]:focus{box-shadow:0 0 0 3px #dc26261f}.field{display:flex;flex-direction:column;gap:var(--sp-1);min-width:0}.field-label{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--c-text-sub)}.field-required{margin-left:2px;color:var(--c-danger)}.field-hint{font-size:var(--fs-sm);color:var(--c-text-muted)}.field-error{font-size:var(--fs-sm);color:var(--c-danger)}.alert{display:flex;gap:var(--sp-2);align-items:flex-start;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);font-size:var(--fs-base);line-height:1.5}.alert>svg{margin-top:2px}.alert-info{background:var(--c-info-bg);color:var(--c-info)}.alert-success{background:var(--c-success-bg);color:var(--c-success)}.alert-warning{background:var(--c-warning-bg);color:var(--c-warning)}.alert-danger{background:var(--c-danger-bg);color:var(--c-danger)}.alert-body{flex:1;min-width:0}.alert-title{font-weight:var(--fw-semibold)}.list-row{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-2) var(--sp-1);background:none;border:none;border-top:1px solid var(--c-border);font-family:inherit;font-size:var(--fs-md);color:var(--c-text);text-align:left;cursor:pointer;transition:background var(--dur) var(--ease)}.list-row:hover{background:var(--c-surface-sub)}.list-row:focus-visible{outline:none;box-shadow:var(--ring)}.list-row[aria-pressed=true]{background:var(--c-brand-bg);box-shadow:inset 3px 0 0 var(--c-brand);font-weight:var(--fw-semibold)}.list-row-main{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-icon{width:var(--form-height);padding:0}.btn-small.btn-icon{width:var(--form-height-sm)}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);padding:var(--sp-5) var(--sp-4);font-size:var(--fs-base);color:var(--c-text-muted);text-align:center}.btn-ghost-danger{background:transparent;color:var(--c-text-muted)}.btn-ghost-danger:hover:not(:disabled),.btn-ghost-danger:focus-visible{background:var(--c-danger-bg);color:var(--c-danger)}.combo{position:relative;display:block}.combo-trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);text-align:left;cursor:pointer}.combo-trigger:disabled{cursor:not-allowed}.combo-trigger>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.combo-trigger>svg{color:var(--c-text-faint)}.combo-list{position:absolute;top:100%;left:0;right:0;z-index:var(--z-dropdown);min-width:160px;margin-top:2px;background:var(--c-surface);border:1px solid var(--c-border-strong);border-radius:var(--r-md);box-shadow:var(--sh-pop)}.combo-search{padding:var(--sp-1);border-bottom:1px solid var(--c-border)}.combo-options{max-height:220px;overflow-y:auto}.combo-option{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-base);color:var(--c-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.combo-option[aria-selected=true]{font-weight:var(--fw-semibold);background:var(--c-surface-sub)}.combo-option.is-active{background:var(--c-brand-bg)}.combo-empty{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-base);color:var(--c-text-faint)}.combo>.combo-trigger.input{width:100%}.combo .combo-search .input{width:100%;height:var(--form-height-sm);padding:0 var(--sp-2);font-size:var(--fs-base);border-radius:var(--r-sm)}.grid-action{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;background:none;border:none;border-radius:var(--r-sm);color:var(--c-text-faint);cursor:pointer}.grid-action svg{width:12px;height:12px}.grid-action:hover,.grid-action:focus-visible{background:var(--c-brand-bg);color:var(--c-brand);outline:none}.grid-action.is-danger:hover,.grid-action.is-danger:focus-visible{background:var(--c-danger-bg);color:var(--c-danger)}.filter-bar .input{width:auto}.badge-sm{padding:1px var(--sp-2);font-size:var(--fs-xs)}.badge-btn{display:inline-flex;align-items:center;gap:var(--sp-1);border:none;font-family:inherit;line-height:inherit;cursor:pointer;transition:box-shadow var(--dur) var(--ease)}.badge-btn:hover{box-shadow:inset 0 0 0 1px currentColor}.badge-btn[aria-pressed=true]{box-shadow:inset 0 0 0 2px currentColor;font-weight:var(--fw-bold)}.badge-btn:focus-visible{outline:none;box-shadow:var(--ring)}.chip{display:inline-flex;align-items:center;gap:var(--sp-1);height:var(--form-height-sm);padding:0 var(--sp-3);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-full);font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--c-text-muted);white-space:nowrap;cursor:pointer;transition:color var(--dur) var(--ease),background var(--dur) var(--ease),border-color var(--dur) var(--ease)}.chip:hover{border-color:var(--c-border-strong);color:var(--c-text)}.chip[aria-pressed=true]{background:var(--c-brand-bg);border-color:var(--c-brand);font-weight:var(--fw-semibold);color:var(--c-brand)}.chip:focus-visible{outline:none;box-shadow:var(--ring)}.data-table thead th{padding:var(--sp-2);font-size:var(--fs-sm);font-weight:var(--fw-semibold);letter-spacing:0;color:var(--c-text-muted);background:var(--c-surface-sub);border-bottom:1px solid var(--c-border)}.data-table tbody td{padding:var(--sp-2);font-size:var(--fs-base);color:var(--c-text);border-bottom:1px solid var(--c-border);vertical-align:middle}.data-table tbody tr:hover{background:var(--c-surface-sub)}.data-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.data-table .center{text-align:center}.data-table .nowrap{white-space:nowrap}.data-table .actions{text-align:right;white-space:nowrap}.cell-sub{display:block;font-size:var(--fs-sm);color:var(--c-text-muted)}.th-sort{display:inline-flex;align-items:center;gap:2px;padding:0;background:none;border:none;font:inherit;color:inherit;letter-spacing:inherit;cursor:pointer}.th-sort svg{width:12px;height:12px}.th-sort:hover{color:var(--c-text)}.th-sort:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--r-sm)}th[aria-sort=ascending] .th-sort,th[aria-sort=descending] .th-sort{color:var(--c-brand)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--sp-3)}.stat{padding:var(--sp-3) var(--sp-4);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-md);min-width:0}.stat-label{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--c-text-muted)}.stat-value{margin-top:var(--sp-1);font-size:var(--fs-2xl);font-weight:var(--fw-bold);line-height:1.2;color:var(--c-brand);font-variant-numeric:tabular-nums}.stat-unit{margin-left:2px;font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--c-text-muted)}.stat-sub{margin-top:var(--sp-1);font-size:var(--fs-sm);color:var(--c-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-danger{color:var(--c-danger)}.stat-warning{color:var(--c-warning)}.stat-success{color:var(--c-success)}.stat-info{color:var(--c-info)}@media(max-width:768px){.stat-sub{white-space:normal}}.tabs{display:flex;gap:var(--sp-1);border-bottom:1px solid var(--c-border);overflow-x:auto}.tab{margin-bottom:-1px;padding:var(--sp-2) var(--sp-3);background:none;border:none;border-bottom:2px solid transparent;font-family:inherit;font-size:var(--fs-base);color:var(--c-text-muted);white-space:nowrap;cursor:pointer;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.tab:hover{color:var(--c-text)}.tab[aria-selected=true]{border-bottom-color:var(--c-brand);font-weight:var(--fw-semibold);color:var(--c-brand)}.tab:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--r-sm)}.check{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-md);color:var(--c-text);cursor:pointer}.check input{width:16px;height:16px;margin:0;flex-shrink:0;accent-color:var(--c-brand);cursor:pointer}.check input:focus-visible{outline:none;box-shadow:var(--ring);border-radius:3px}.check input[type=radio]:focus-visible{border-radius:var(--r-full)}.check:has(input:disabled){color:var(--c-text-faint);cursor:not-allowed}.check:has(input:disabled) input{cursor:not-allowed}
