:root,:root[data-theme=light]{--brand:#0b5fff;--brand-soft:#0b5fff14;--brand-softer:#0b5fff0a;--bg-layout:#f4f6fa;--bg-surface:#fff;--bg-subtle:#f8fafc;--bg-hover:#f2f5fb;--border:#e6e9f0;--border-strong:#d5dae3;--text:#101828;--text-2:#475467;--text-3:#8a94a6;--sider-bg:#0b1736;--shadow-card:0 1px 2px #1018280a, 0 1px 3px #1018280f;--shadow-pop:0 12px 32px -8px #1018282e, 0 4px 8px -4px #10182814;--good:#16a34a;--good-soft:#16a34a1a;--warn:#d97706;--warn-soft:#d977061a;--bad:#dc2626;--bad-soft:#dc262614;--info-soft:#0b5fff1a;--violet:#7c3aed;--violet-soft:#7c3aed1a;--cyan:#0891b2;--cyan-soft:#0891b21a;--kbd-bg:#f2f4f7;--t-blue:#2563eb;--t-indigo:#4f46e5;--t-violet:#7c3aed;--t-fuchsia:#c026d3;--t-pink:#db2777;--t-rose:#e11d48;--t-orange:#ea580c;--t-amber:#d97706;--t-emerald:#059669;--t-teal:#0d9488;--t-cyan:#0891b2;--t-sky:#0284c7;--t-slate:#64748b;--t-blue-lite:#60a5fa;--t-indigo-lite:#818cf8;--t-violet-lite:#a78bfa;--t-fuchsia-lite:#e879f9;--t-pink-lite:#f472b6;--t-rose-lite:#fb7185;--t-orange-lite:#fb923c;--t-amber-lite:#fbbf24;--t-emerald-lite:#34d399;--t-teal-lite:#2dd4bf;--t-cyan-lite:#22d3ee;--t-sky-lite:#38bdf8;--t-slate-lite:#94a3b8}:root[data-theme=dark]{--brand:#4d8dff;--brand-soft:#4d8dff24;--brand-softer:#4d8dff12;--bg-layout:#0c0e13;--bg-surface:#151922;--bg-subtle:#1a1f2a;--bg-hover:#1d2330;--border:#262c38;--border-strong:#333b4a;--text:#ffffffe6;--text-2:#ffffffa6;--text-3:#ffffff73;--sider-bg:#10131a;--shadow-card:0 1px 2px #0006;--shadow-pop:0 16px 40px -8px #0009;--good:#22c55e;--good-soft:#22c55e24;--warn:#f59e0b;--warn-soft:#f59e0b24;--bad:#f87171;--bad-soft:#f8717124;--info-soft:#4d8dff29;--violet:#a78bfa;--violet-soft:#a78bfa29;--cyan:#22d3ee;--cyan-soft:#22d3ee24;--kbd-bg:#232937;--t-blue:#60a5fa;--t-indigo:#818cf8;--t-violet:#a78bfa;--t-fuchsia:#e879f9;--t-pink:#f472b6;--t-rose:#fb7185;--t-orange:#fb923c;--t-amber:#fbbf24;--t-emerald:#34d399;--t-teal:#2dd4bf;--t-cyan:#22d3ee;--t-sky:#38bdf8;--t-slate:#94a3b8}[data-tone=blue]{--tone:var(--t-blue);--tone-lite:var(--t-blue-lite)}[data-tone=indigo]{--tone:var(--t-indigo);--tone-lite:var(--t-indigo-lite)}[data-tone=violet]{--tone:var(--t-violet);--tone-lite:var(--t-violet-lite)}[data-tone=fuchsia]{--tone:var(--t-fuchsia);--tone-lite:var(--t-fuchsia-lite)}[data-tone=pink]{--tone:var(--t-pink);--tone-lite:var(--t-pink-lite)}[data-tone=rose]{--tone:var(--t-rose);--tone-lite:var(--t-rose-lite)}[data-tone=orange]{--tone:var(--t-orange);--tone-lite:var(--t-orange-lite)}[data-tone=amber]{--tone:var(--t-amber);--tone-lite:var(--t-amber-lite)}[data-tone=emerald]{--tone:var(--t-emerald);--tone-lite:var(--t-emerald-lite)}[data-tone=teal]{--tone:var(--t-teal);--tone-lite:var(--t-teal-lite)}[data-tone=cyan]{--tone:var(--t-cyan);--tone-lite:var(--t-cyan-lite)}[data-tone=sky]{--tone:var(--t-sky);--tone-lite:var(--t-sky-lite)}[data-tone=slate]{--tone:var(--t-slate);--tone-lite:var(--t-slate-lite)}[data-tone=brand]{--tone:var(--brand);--tone-lite:#4d8dff}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-layout);font-feature-settings:"cv11", "ss01";text-rendering:optimizelegibility}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:padding-box;border:2px solid #0000;border-radius:8px}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.app-sider{border-inline-end:1px solid #ffffff0a;flex-direction:column;height:100vh;display:flex;top:0;position:sticky!important}.app-sider>.ant-layout-sider-children{flex-direction:column;min-height:0;display:flex}.app-sider-scroll{scrollbar-color:#ffffff26 transparent;flex:1;min-height:0;padding-bottom:16px;overflow:hidden auto}.app-sider-scroll::-webkit-scrollbar-thumb{background:#ffffff26 padding-box padding-box}.app-sider-drawer.ant-drawer-content,.app-sider-drawer .ant-drawer-content,.app-sider-drawer .ant-drawer-body,.app-sider-inner{background:var(--sider-bg);min-height:100%}.app-logo{color:#fff;white-space:nowrap;flex:none;align-items:center;gap:10px;height:56px;padding:0 18px;text-decoration:none;display:flex;overflow:hidden}.app-logo:hover{color:#fff}.ant-layout-sider-collapsed .app-logo{justify-content:center;padding:0}.app-logo img{flex:none;width:30px;height:30px}.app-logo-text{letter-spacing:.2px;font-size:17px;font-weight:700;line-height:1;display:block}.nav-icon>svg{display:block}.app-menu.ant-menu-dark>.ant-menu-item>.anticon[data-tone],.app-menu.ant-menu-dark>.ant-menu-submenu>.ant-menu-submenu-title>.anticon[data-tone]{color:var(--tone-lite)}.app-menu.ant-menu-dark>.ant-menu-item-selected>.anticon[data-tone]{color:#fff}.app-menu.ant-menu-dark .ant-menu-sub .ant-menu-item .anticon{opacity:.8}.app-menu.ant-menu-dark .ant-menu-sub .ant-menu-item-selected .anticon{opacity:1}.sider-search{padding:4px 12px 8px}.sider-search .ant-input-affix-wrapper{color:#ffffffd9;background:#ffffff0f;border-color:#0000}.sider-search .ant-input-affix-wrapper:hover,.sider-search .ant-input-affix-wrapper-focused{background:#ffffff1a;border-color:#ffffff2e}.sider-search input{color:#fff;background:0 0}.sider-search input::placeholder,.sider-search .anticon{color:#ffffff73}.sider-empty{color:#ffffff73;padding:8px 20px;font-size:12px}.app-menu.ant-menu-dark .ant-menu-submenu-title,.app-menu.ant-menu-dark .ant-menu-item{font-size:13.5px}.app-menu.ant-menu-dark .ant-menu-item-selected{font-weight:500;box-shadow:0 2px 8px -2px #0b5fff8c}.app-menu.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title{color:#fff}.app-header{z-index:20;border-bottom:1px solid var(--border);-webkit-backdrop-filter:saturate(180%)blur(8px);backdrop-filter:saturate(180%)blur(8px);align-items:center;gap:12px;display:flex;position:sticky;top:0}.header-actions{flex:none}.header-divider{background:var(--border);vertical-align:middle;width:1px;height:22px;margin:0 6px;display:inline-block}.header-search{border:1px solid var(--border);background:var(--bg-subtle);width:min(420px,40vw);height:34px;color:var(--text-3);font:inherit;cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:0 8px 0 12px;font-size:13.5px;transition:border-color .15s,background .15s,box-shadow .15s;display:flex}.header-search:hover{border-color:var(--border-strong);background:var(--bg-surface)}.header-search:focus-visible{box-shadow:0 0 0 3px var(--brand-soft)}.header-action-active.ant-btn{color:var(--brand);background:var(--brand-soft)}.header-search-text{text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.user-menu-trigger{border-radius:8px;padding:4px 6px;transition:background .15s}.user-menu-trigger:hover{background:var(--bg-hover)}.app-content{width:100%;max-width:1720px;min-height:calc(100vh - 56px);margin:0 auto;padding:20px 24px 32px}@media (width<=767px){.app-content{padding:12px 12px 88px}}.page-enter{animation:.22s ease-out page-enter}@keyframes page-enter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.page-enter{animation:none}}.page-header{margin-bottom:16px}.page-breadcrumb{margin-bottom:4px}.page-breadcrumb a{color:var(--text-3)!important}.page-breadcrumb a:hover{color:var(--brand)!important;background:0 0!important}.page-title.ant-typography{letter-spacing:-.01em;margin:0!important;font-size:22px!important;font-weight:650!important;line-height:1.3!important}.page-subtitle{margin-top:2px;font-size:13.5px;display:block}@media (width<=767px){.page-title.ant-typography{font-size:19px!important}}.content-card,.ant-card.ant-card-bordered.content-card{box-shadow:var(--shadow-card);border:1px solid var(--border)}.ant-card-head-title{font-weight:600}.crud-toolbar{margin-bottom:12px}.crud-table .ant-table-thead>tr>th{text-transform:none;font-size:12.5px;font-weight:600}.crud-table .row-actions{opacity:.75;transition:opacity .15s}.crud-table .ant-table-row:hover .row-actions{opacity:1}.clickable-row{cursor:pointer}.form-extra{background:var(--brand-softer);border:1px dashed var(--brand-soft);border-radius:10px;margin-bottom:16px;padding:10px 12px}.form-extra:empty{display:none}.column-toggle{border-radius:6px;padding:3px 4px}.column-toggle:hover{background:var(--bg-hover)}.empty-state{color:var(--text-2);padding:40px 16px}.empty-state.compact{padding:20px 12px}.empty-state-icon{width:52px;height:52px;color:var(--brand);background:var(--brand-soft);border-radius:14px;place-items:center;margin-bottom:4px;font-size:22px;display:grid}.empty-state.compact .empty-state-icon{border-radius:12px;width:40px;height:40px;font-size:18px}.kbd{min-width:20px;height:20px;color:var(--text-2);background:var(--kbd-bg);border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;justify-content:center;align-items:center;padding:0 5px;font:500 11px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:inline-flex}.kbd-combo{align-items:center;gap:3px;display:inline-flex}.kbd-hint{opacity:.7}.shortcut-group{margin-bottom:18px}.shortcut-group-title{text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:12px;display:block}.shortcut-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:6px 0;font-size:13.5px;display:flex}.cmdk-modal .ant-modal-content{box-shadow:var(--shadow-pop);border:1px solid var(--border)}.cmdk-input{border-bottom:1px solid var(--border);padding:8px 10px}.cmdk-input .ant-input-affix-wrapper{font-size:16px}.cmdk-input-icon{color:var(--text-3);margin-inline-end:4px}.cmdk-list{overscroll-behavior:contain;max-height:min(60vh,460px);padding:6px;overflow-y:auto}.cmdk-section{letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);padding:10px 10px 4px;font-size:11.5px;font-weight:600}.cmdk-item{cursor:pointer;color:var(--text);border-radius:8px;align-items:center;gap:10px;min-height:40px;padding:8px 10px;display:flex}.cmdk-item.active{background:var(--brand-soft)}.cmdk-item-icon{background:var(--bg-subtle);border:1px solid var(--border);width:28px;height:28px;color:var(--text-2);border-radius:7px;flex:none;place-items:center;font-size:15px;display:grid}.cmdk-item.active .cmdk-item-icon{color:var(--brand);border-color:var(--brand-soft);background:var(--bg-surface)}.cmdk-item-icon[data-tone]{color:var(--tone);border-color:color-mix(in srgb, var(--tone) 20%, var(--border));background:color-mix(in srgb, var(--tone) 10%, var(--bg-surface))}.cmdk-item.active .cmdk-item-icon[data-tone]{color:var(--tone);border-color:color-mix(in srgb, var(--tone) 40%, var(--border));background:color-mix(in srgb, var(--tone) 16%, var(--bg-surface))}.cmdk-item-text{flex-direction:column;flex:1;min-width:0;display:flex}.cmdk-item-title{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.cmdk-item-sub{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.cmdk-meta{color:var(--text-3);font-size:12px}.cmdk-enter{color:var(--brand);font-size:12px}.cmdk-remove{color:var(--text-3);opacity:0;border-radius:4px;padding:4px;font-size:11px}.cmdk-item:hover .cmdk-remove,.cmdk-item.active .cmdk-remove{opacity:1}.cmdk-remove:hover{background:var(--bg-hover);color:var(--text)}.cmdk-mark{color:var(--brand);background:0 0;padding:0;font-weight:600}.cmdk-empty{color:var(--text-2);text-align:center;flex-direction:column;align-items:center;gap:6px;padding:32px 16px;display:flex}.cmdk-loading{color:var(--text-3);padding:10px 12px;font-size:12.5px}.cmdk-footer{border-top:1px solid var(--border);background:var(--bg-subtle);color:var(--text-3);align-items:center;gap:16px;padding:8px 14px;font-size:12px;display:flex}.cmdk-footer>span{align-items:center;gap:6px;display:inline-flex}@media (width<=575px){.cmdk-footer{display:none}}.all-features-search{width:min(360px,100%)}.all-features-hint{color:var(--text-3);margin:-4px 0 12px;font-size:12.5px}.feature-section{margin-bottom:24px}.feature-section-title{color:var(--text);align-items:center;gap:8px;margin:0 0 12px;font-size:15px;font-weight:600;display:flex}.feature-section-dot{background:var(--tone);border-radius:50%;width:9px;height:9px}.feature-section-count{background:color-mix(in srgb, var(--tone) 12%, transparent);color:var(--tone);border-radius:10px;padding:0 7px;font-size:11.5px;font-weight:600;line-height:18px}.feature-grid{grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px;display:grid}.feature-tile{border:1px solid color-mix(in srgb, var(--tone) 16%, var(--border));background:color-mix(in srgb, var(--tone) 5%, var(--bg-surface));min-height:124px;color:var(--text);text-align:center;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:18px 12px 14px;transition:transform .15s,box-shadow .15s,border-color .15s,background .15s;display:flex}.feature-tile:hover{color:var(--text);border-color:color-mix(in srgb, var(--tone) 45%, var(--border));background:color-mix(in srgb, var(--tone) 9%, var(--bg-surface));box-shadow:var(--shadow-pop);transform:translateY(-2px)}.feature-tile:focus-visible{outline:2px solid var(--tone);outline-offset:2px}.feature-tile-icon{background:color-mix(in srgb, var(--tone) 14%, var(--bg-surface));width:52px;height:52px;color:var(--tone);border-radius:14px;place-items:center;font-size:22px;transition:transform .15s;display:grid}.feature-tile:hover .feature-tile-icon{transform:scale(1.06)}.feature-tile-label{font-size:13.5px;font-weight:500;line-height:1.35}@media (width<=575px){.feature-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px}.feature-tile{min-height:108px;padding:14px 8px 12px}.feature-tile-icon{width:44px;height:44px;font-size:19px}}@media (prefers-reduced-motion:reduce){.feature-tile,.feature-tile-icon{transition:none}.feature-tile:hover,.feature-tile:hover .feature-tile-icon{transform:none}}.dash-hero{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.dash-hero-title.ant-typography{letter-spacing:-.015em;margin:0!important;font-size:24px!important;font-weight:650!important}.dash-date{color:var(--text-3);text-transform:capitalize;font-size:13px}.quick-actions{flex-wrap:wrap;gap:8px;display:flex}.quick-action{border:1px solid var(--border);background:var(--bg-surface);height:34px;color:var(--text);font:inherit;cursor:pointer;box-shadow:var(--shadow-card);border-radius:8px;align-items:center;gap:8px;padding:0 12px;font-size:13.5px;transition:border-color .15s,transform .15s,color .15s;display:inline-flex}.quick-action .anticon{color:var(--brand)}.quick-action:hover{border-color:var(--brand);color:var(--brand);transform:translateY(-1px)}.kpi-card{border:1px solid var(--border);height:100%;box-shadow:var(--shadow-card);transition:border-color .15s,box-shadow .15s,transform .15s}.kpi-card.clickable{cursor:pointer}.kpi-card.clickable:hover{border-color:var(--border-strong);transform:translateY(-1px)}.kpi-card .ant-card-body{padding:16px 18px}.kpi-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.kpi-label{color:var(--text-2);font-size:13px;font-weight:500}.kpi-icon{border-radius:9px;flex:none;place-items:center;width:34px;height:34px;font-size:16px;display:grid}.kpi-value{letter-spacing:-.02em;color:var(--text);font-variant-numeric:tabular-nums;font-size:26px;font-weight:650;line-height:1.15}.kpi-hint{color:var(--text-3);min-height:18px;margin-top:6px;font-size:12.5px}.kpi-hint.bad{color:var(--bad)}.kpi-hint.good{color:var(--good)}@media (width<=575px){.kpi-value{font-size:21px}.kpi-card .ant-card-body{padding:12px 14px}}.tone-blue{color:var(--brand);background:var(--brand-soft)}.tone-green{color:var(--good);background:var(--good-soft)}.tone-orange{color:var(--warn);background:var(--warn-soft)}.tone-red{color:var(--bad);background:var(--bad-soft)}.tone-violet{color:var(--violet);background:var(--violet-soft)}.tone-cyan{color:var(--cyan);background:var(--cyan-soft)}.dash-card{border:1px solid var(--border);height:100%;box-shadow:var(--shadow-card)}.dash-card .ant-card-head{min-height:50px}.dash-list-item{cursor:pointer;border-radius:8px;align-items:center;gap:10px;margin:0 -8px;padding:9px 8px;display:flex}.dash-list-item:hover{background:var(--bg-hover)}.dash-list-item+.dash-list-item{border-top:1px solid var(--border)}.dash-list-item:hover+.dash-list-item{border-top-color:#0000}.dash-list-main{flex:1;min-width:0}.dash-list-title{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;overflow:hidden}.dash-list-sub{color:var(--text-3);font-size:12px}.dist-bar{background:var(--bg-subtle);border-radius:6px;gap:2px;height:10px;margin:4px 0 14px;display:flex;overflow:hidden}.dist-bar span{min-width:4px;transition:opacity .15s}.dist-bar span:hover{opacity:.8}.dist-row{border-radius:6px;align-items:center;gap:10px;margin:0 -6px;padding:7px 6px;font-size:13.5px;display:flex}.dist-row.clickable{cursor:pointer}.dist-row.clickable:hover{background:var(--bg-hover)}.dist-label{color:var(--text-2);flex:1}.dist-value{font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}.dist-pct{text-align:right;width:40px;color:var(--text-3);font-variant-numeric:tabular-nums;font-size:12px}.dot{border-radius:50%;flex:none;width:8px;height:8px}.briefing-card .ant-card-head{background:linear-gradient(90deg, var(--brand-softer), transparent 70%)}.briefing-body{max-height:340px;position:relative;overflow:hidden}.briefing-body.expanded{max-height:none}.briefing-body:not(.expanded):after{content:"";background:linear-gradient(transparent, var(--bg-surface));pointer-events:none;height:56px;position:absolute;inset:auto 0 0}.briefing-body.short:after{display:none}.report-group-title{letter-spacing:.04em;text-transform:uppercase;color:var(--text-2);align-items:center;gap:8px;margin:24px 0 12px;font-size:13px;font-weight:600;display:flex}.report-group-title:first-of-type{margin-top:4px}.report-card{border:1px solid var(--border);height:100%;box-shadow:var(--shadow-card);cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s}.report-card:hover,.report-card:focus-visible{border-color:var(--brand);box-shadow:var(--shadow-pop);transform:translateY(-2px)}.report-card .ant-card-body{gap:14px;padding:16px;display:flex}.report-card-title{color:var(--text);margin-bottom:4px;font-size:14.5px;font-weight:600}.report-card-desc{color:var(--text-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;display:-webkit-box;overflow:hidden}.report-filters{margin-bottom:16px}.report-filters .ant-card-body{padding:12px 16px}.report-kpi{border:1px solid var(--border);height:100%;box-shadow:var(--shadow-card)}.report-kpi .ant-card-body{padding:14px 16px}.report-kpi-label{color:var(--text-2);font-size:12.5px;font-weight:500}.report-kpi-value{font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--text);margin-top:4px;font-size:22px;font-weight:650}.report-kpi-hint{color:var(--text-3);margin-top:2px;font-size:12px}.report-table .ant-table-cell{font-variant-numeric:tabular-nums}.report-table .ant-table-summary td{font-weight:600;background:var(--bg-subtle)!important}.chart-legend{color:var(--text-2);flex-wrap:wrap;gap:6px 16px;margin-bottom:8px;font-size:12.5px;display:flex}.chart-legend span{align-items:center;gap:6px;display:inline-flex}.chart-legend i{border-radius:3px;width:10px;height:10px;display:inline-block}.print-only{display:none}.import-resource-card{cursor:pointer;border:1px solid var(--border);height:100%;transition:border-color .15s,box-shadow .15s}.import-resource-card:hover{border-color:var(--brand)}.import-resource-card.selected{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.import-resource-card.disabled{cursor:not-allowed;opacity:.55}.row-error>td{background:var(--bad-soft)!important}.mapping-required{color:var(--bad);margin-inline-start:2px}.login-page{background:radial-gradient(circle at 15% 20%,#0b5fff59,#0000 40%),radial-gradient(circle at 85% 80%,#00c2a84d,#0000 40%),#0d1b3e;justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.chat-markdown p{margin:0 0 8px}.chat-markdown p:last-child{margin-bottom:0}.chat-markdown h1,.chat-markdown h2,.chat-markdown h3,.chat-markdown h4{margin:12px 0 6px;font-size:15px;font-weight:650}.chat-markdown h1:first-child,.chat-markdown h2:first-child,.chat-markdown h3:first-child{margin-top:0}.chat-markdown ul,.chat-markdown ol{margin:4px 0 8px;padding-inline-start:20px}.chat-markdown li{margin:2px 0}.chat-markdown table{border-collapse:collapse;margin:8px 0;font-size:13px}.chat-markdown th,.chat-markdown td{border:1px solid #80808059;padding:4px 8px}.chat-markdown pre{background:#8080801f;border-radius:6px;padding:8px;overflow-x:auto}.chat-markdown code{font-size:12.5px}.chat-bubble{word-break:break-word;border-radius:12px;max-width:85%;padding:10px 14px;line-height:1.55}.chat-bubble.user{color:#fff;background:#0b5fff;border-bottom-right-radius:4px;margin-left:auto}.chat-bubble.assistant{background:#8080801a;border-bottom-left-radius:4px}@media print{@page{size:A4 landscape;margin:12mm}html,body{color:#000!important;background:#fff!important}.no-print,.app-sider,.app-header,.ant-float-btn,.ant-float-btn-group,.ant-pagination,.page-breadcrumb,.page-header-extra{display:none!important}.print-only{display:block!important}.ant-layout,.app-content{background:#fff!important;max-width:none!important;min-height:0!important;margin:0!important;padding:0!important}.page-enter{animation:none!important}.ant-card,.content-card,.report-kpi,.dash-card{break-inside:avoid;box-shadow:none!important;border:1px solid #ddd!important}.ant-table{font-size:11px}.ant-table-thead>tr>th{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#f2f2f2!important}.ant-table-sticky-holder{position:static!important}.recharts-wrapper{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.ai-pulse{width:64px;height:64px;color:var(--brand);background:var(--brand-soft);border-radius:18px;place-items:center;font-size:28px;animation:1.4s ease-in-out infinite ai-pulse;display:grid}@keyframes ai-pulse{0%,to{box-shadow:0 0 0 0 var(--brand-soft);transform:scale(1)}50%{transform:scale(1.04);box-shadow:0 0 0 12px #0000}}@media (prefers-reduced-motion:reduce){.ai-pulse{animation:none}}.ant-table-cell .ant-tag{text-overflow:ellipsis;vertical-align:middle;max-width:100%;overflow:hidden}.ant-table-cell .ant-space-item{min-width:0;max-width:100%}.ant-input-textarea-show-count{margin-bottom:22px}.ant-modal-title{padding-inline-end:28px}@media (width<=767px){.ant-drawer .ant-drawer-header{flex-wrap:wrap;row-gap:8px}.ant-drawer .ant-drawer-header-title{flex:auto;min-width:0}.ant-drawer .ant-drawer-extra{max-width:100%;margin-inline-start:auto}.page-header-extra>.ant-space-item{min-width:0;max-width:100%}.ant-segmented{scrollbar-width:none;max-width:100%;overflow-x:auto}}.crud-bulk-bar{background:linear-gradient(var(--brand-soft), var(--brand-soft)), var(--bg-surface);border:1px solid color-mix(in srgb, var(--brand) 30%, transparent);box-shadow:var(--shadow-card);z-index:5;border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:8px;padding:8px 12px;display:flex;position:sticky;top:64px}.crud-bulk-badge{background:var(--brand);color:#fff;border-radius:11px;justify-content:center;align-items:center;min-width:24px;height:22px;padding:0 7px;font-size:12px;font-weight:600;display:inline-flex}:root{--tabbar-h:60px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}a,button,[role=button],.ant-btn,.ant-select-selector,.ant-menu-item,.ant-tabs-tab{touch-action:manipulation}.app-main{min-width:0}@media (width>=768px) and (width<=991px){.app-content{padding:16px 16px 28px}.header-search{width:min(320px,36vw)}}@media (width<=767px){.app-shell.is-mobile .app-header{height:calc(52px + var(--safe-top));padding:var(--safe-top) calc(4px + var(--safe-right)) 0 calc(4px + var(--safe-left));background:color-mix(in srgb, var(--bg-surface) 88%, transparent);gap:2px;line-height:52px}.header-menu-btn.ant-btn{width:40px;height:40px;font-size:18px}.mobile-brand{min-width:0;color:var(--text);letter-spacing:-.01em;flex:1;align-items:center;gap:8px;font-size:16px;font-weight:650;display:flex}.mobile-brand:hover{color:var(--text)}.mobile-brand img{border-radius:7px;flex:none;width:26px;height:26px}.mobile-brand span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-shell.is-mobile .header-actions .ant-btn{width:40px;height:40px}.app-shell.is-mobile .app-content{padding:12px calc(12px + var(--safe-right)) calc(var(--tabbar-h) + var(--safe-bottom) + 24px) calc(12px + var(--safe-left));min-height:calc(100dvh - 52px)}.page-header{margin-bottom:12px}.page-header-main{flex:100%;align-items:flex-start;gap:4px;min-width:0;display:flex}.page-back.ant-btn{flex:none;margin:-2px 0 0 -8px}.page-subtitle{font-size:13px}.page-header-extra{width:100%}input,textarea,select,.ant-input,.ant-input-number-input,.ant-select-selection-search-input,.ant-picker-input>input{font-size:16px!important}.ant-select-single .ant-select-selector,.ant-select-multiple .ant-select-selector{font-size:15px}.ant-drawer-right>.ant-drawer-content-wrapper,.ant-drawer-left>.ant-drawer-content-wrapper{max-width:100vw}.ant-drawer .ant-drawer-header{padding:calc(12px + var(--safe-top)) 16px 12px}.ant-drawer .ant-drawer-body{padding:16px}.ant-drawer .ant-drawer-footer{padding:10px 16px calc(10px + var(--safe-bottom))}.ant-modal{margin-inline:auto;max-width:calc(100vw - 16px)!important}.ant-modal-wrap:not(.ant-modal-centered) .ant-modal{top:calc(12px + var(--safe-top))}.ant-modal .ant-modal-content{padding:16px}.ant-table-wrapper .ant-table-content,.ant-table-wrapper .ant-table-body{-webkit-overflow-scrolling:touch;overflow-x:auto}.ant-table-wrapper .ant-table-pagination.ant-pagination{flex-wrap:wrap;justify-content:center;row-gap:8px}.ant-table-wrapper .ant-pagination-total-text{text-align:center;flex-basis:100%}.content-card>.ant-card-body,.ant-card .ant-card-body{padding:14px}.ant-card .ant-card-head{padding:0 14px}.ant-tabs-nav{margin-bottom:12px!important}.ant-descriptions-bordered .ant-descriptions-item-label,.ant-descriptions-bordered .ant-descriptions-item-content{padding:8px 10px!important}.ant-steps-horizontal:not(.ant-steps-label-vertical){overflow-x:auto}.ant-popover{max-width:calc(100vw - 16px)}.ant-notification{max-width:calc(100vw - 16px);margin-inline-end:8px!important}.app-shell.is-mobile .ant-float-btn,.ant-float-btn.mobile-fab,.ant-float-btn-group{inset-block-end:calc(var(--tabbar-h) + var(--safe-bottom) + 16px)!important;inset-inline-end:calc(16px + var(--safe-right))!important}.ant-float-btn.mobile-fab{width:54px;height:54px;box-shadow:0 8px 24px -6px #0b5fff8c}.ant-float-btn.mobile-fab .ant-float-btn-body{border-radius:50%}.ant-float-btn.mobile-fab .ant-float-btn-icon{width:20px!important;font-size:20px!important}}.mobile-tabbar{z-index:900;height:calc(var(--tabbar-h) + var(--safe-bottom));padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);background:color-mix(in srgb, var(--bg-surface) 92%, transparent);-webkit-backdrop-filter:saturate(180%)blur(14px);border-top:1px solid var(--border);align-items:stretch;display:flex;position:fixed;inset:auto 0 0;box-shadow:0 -4px 20px -12px #1018282e}.tabbar-item{min-width:0;color:var(--text-3);font:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:6px 2px 4px;transition:color .15s;display:flex;position:relative}.tabbar-item:active .tabbar-icon{transform:scale(.9)}.tabbar-icon{border-radius:14px;place-items:center;min-width:48px;height:28px;transition:background .18s,transform .12s;display:grid}.tabbar-icon .ant-badge{color:inherit}.tabbar-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:11px;font-weight:500;line-height:1.1;overflow:hidden}.tabbar-item.active{color:var(--brand)}.tabbar-item.active .tabbar-icon{background:var(--brand-soft)}.tabbar-item.active .tabbar-label{font-weight:650}.tabbar-avatar.ant-avatar{background:var(--text-3);color:#fff;font-size:10.5px;font-weight:600}.tabbar-item.active .tabbar-avatar.ant-avatar{background:var(--brand);box-shadow:0 0 0 2px var(--bg-surface), 0 0 0 3.5px var(--brand)}@media (width>=768px){.mobile-tabbar{display:none}}.mobile-sheet .ant-drawer-content-wrapper{max-height:calc(100dvh - var(--safe-top) - 24px)}.mobile-sheet .ant-drawer-content{border-radius:18px 18px 0 0;overflow:hidden}.mobile-sheet .ant-drawer-body{padding-bottom:calc(12px + var(--safe-bottom))!important}.mobile-sheet .ant-drawer-header{padding-top:14px!important}.sheet-grabber{background:var(--border-strong);border-radius:4px;width:40px;height:4px;margin:8px auto 4px}.sheet-profile{align-items:center;gap:12px;padding:10px 16px 14px;display:flex}.sheet-profile-text{flex-direction:column;flex:1;min-width:0;line-height:1.35;display:flex}.sheet-profile-text strong{color:var(--text);font-size:16px}.sheet-profile-text span{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.sheet-profile-text .sheet-profile-roles{color:var(--text-3);font-size:12px}.sheet-attendance{grid-template-columns:1fr 1fr;gap:10px;padding:0 16px 12px;display:grid}.sheet-group{background:var(--bg-subtle);border:1px solid var(--border);border-radius:14px;margin:0 12px 12px;overflow:hidden}.sheet-item{width:100%;min-height:52px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;padding:8px 14px;font-size:15px;display:flex}.sheet-item+.sheet-item{border-top:1px solid var(--border)}.sheet-item:active{background:var(--bg-hover)}.sheet-item.danger{color:var(--bad)}.sheet-item-icon{background:var(--bg-surface);width:32px;height:32px;color:var(--brand);border:1px solid var(--border);border-radius:9px;flex:none;place-items:center;display:grid}.sheet-item.danger .sheet-item-icon{color:var(--bad);background:var(--bad-soft);border-color:#0000}.sheet-item-text{flex-direction:column;flex:1;min-width:0;display:flex}.sheet-item-text small{color:var(--text-3);font-size:12px}.sheet-item-chevron{color:var(--text-3);flex:none}.m-sheet-footer{grid-template-columns:1fr 2fr;gap:10px;display:grid}.m-filter-list{flex-direction:column;gap:14px;display:flex}.m-filter-item{flex-direction:column;gap:6px;display:flex}.m-filter-item>span{color:var(--text-2);font-size:13px;font-weight:500}.m-toolbar{flex-direction:column;gap:8px;display:flex}.m-toolbar-row{align-items:center;gap:8px;display:flex}.m-toolbar-search{flex:1;min-width:0}.m-toolbar-row .ant-btn{flex:none;width:40px;height:40px}.m-toolbar-row .ant-input-search .ant-input-affix-wrapper,.m-toolbar-row .ant-input-search .ant-input-search-button{height:40px}.m-toolbar-extra{scrollbar-width:none;gap:8px;margin:0 -12px;padding:0 12px 2px;display:flex;overflow-x:auto}.m-toolbar-extra::-webkit-scrollbar{display:none}.m-toolbar-extra>*{flex:none}.m-page-body .crud-toolbar{top:calc(52px + var(--safe-top));z-index:5;background:color-mix(in srgb, var(--bg-layout) 92%, transparent);-webkit-backdrop-filter:blur(10px);margin:-12px -12px 10px;padding:10px 12px;position:sticky}.m-list{flex-direction:column;gap:10px;display:flex}.m-card{background:var(--bg-surface);border:1px solid var(--border);box-shadow:var(--shadow-card);border-radius:14px;padding:12px 14px;transition:transform .12s,background .12s;position:relative}.m-card.clickable{cursor:pointer}.m-card.clickable:active{background:var(--bg-hover);transform:scale(.985)}.m-card-head{align-items:flex-start;gap:8px;display:flex}.m-card-title{min-width:0;color:var(--text);word-break:break-word;flex:1;font-size:15px;font-weight:600;line-height:1.4}.m-card-title a{font-weight:600}.m-card-chevron{color:var(--text-3);margin-top:5px;font-size:12px}.m-card-sub{color:var(--text-2);word-break:break-word;margin-top:2px;font-size:13px}.m-card-sub-label{color:var(--text-3)}.m-card-fields{border-top:1px dashed var(--border);grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;margin:10px 0 0;padding-top:10px;display:grid}.m-field{min-width:0}.m-field dt{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;margin-bottom:2px;font-size:11.5px;line-height:1.3;overflow:hidden}.m-field dd{color:var(--text);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin:0;font-size:13.5px}.m-field dd .ant-tag{text-overflow:ellipsis;vertical-align:middle;max-width:100%;margin-inline-end:4px;overflow:hidden}.m-field dd .ant-space{flex-wrap:wrap;max-width:100%}.m-field dd .ant-space-item{min-width:0;max-width:100%}.m-card-actions{border-top:1px solid var(--border);justify-content:flex-end;margin:10px -6px -4px;padding-top:6px;display:flex}.m-card-actions .row-actions{opacity:1;flex-wrap:wrap;justify-content:flex-end}.m-card-actions .ant-btn{height:34px}.m-empty{background:var(--bg-surface);border:1px solid var(--border);border-radius:14px;padding:12px 0}.m-pagination{flex-direction:column;align-items:center;gap:6px;margin-top:16px;display:flex}.m-total{color:var(--text-3);font-size:12px}.pwa-banner{z-index:950;inset-inline:calc(10px + var(--safe-left)) calc(10px + var(--safe-right));bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 10px);background:var(--bg-surface);border:1px solid var(--border);box-shadow:var(--shadow-pop);border-radius:16px;align-items:center;gap:10px;padding:10px 6px 10px 10px;animation:.28s ease-out pwa-up;display:flex;position:fixed}.pwa-banner-icon{border:1px solid var(--border);border-radius:11px;flex:none;width:42px;height:42px}.pwa-banner-text{flex-direction:column;flex:1;min-width:0;line-height:1.3;display:flex}.pwa-banner-text strong{color:var(--text);font-size:14px}.pwa-banner-text span{color:var(--text-2);font-size:12px}.pwa-banner-close.ant-btn{color:var(--text-3)}.pwa-update{z-index:1001;left:50%;top:calc(64px + var(--safe-top));background:var(--bg-surface);border:1px solid var(--border);max-width:calc(100vw - 24px);box-shadow:var(--shadow-pop);color:var(--text);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:6px 6px 6px 14px;font-size:13.5px;animation:.28s ease-out pwa-down;display:flex;position:fixed;transform:translate(-50%)}.pwa-update>svg{color:var(--brand);flex:none}@keyframes pwa-up{0%{opacity:0;transform:translateY(16px)}}@keyframes pwa-down{0%{opacity:0;transform:translate(-50%,-12px)}}@media (width>=768px){.pwa-banner{width:380px;bottom:24px;left:auto;right:88px}}@media (prefers-reduced-motion:reduce){.pwa-banner,.pwa-update{animation:none}.m-card,.tabbar-icon{transition:none}}.pwa-guide-hero{background:var(--brand-softer);border:1px solid var(--brand-soft);border-radius:12px;align-items:center;gap:12px;margin-bottom:14px;padding:12px;display:flex}.pwa-guide-hero img{border:1px solid var(--border);border-radius:13px;flex:none;width:52px;height:52px}.pwa-guide-hero div{color:var(--text-2);flex-direction:column;gap:2px;font-size:13px;display:flex}.pwa-guide-hero strong{color:var(--text);font-size:15px}.pwa-steps{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.pwa-step{align-items:flex-start;gap:10px;font-size:14px;line-height:1.5;display:flex}.pwa-step-no{background:var(--brand);color:#fff;border-radius:50%;flex:none;place-items:center;width:24px;height:24px;font-size:12.5px;font-weight:600;display:grid}.pwa-inline-icon{vertical-align:-3px;color:var(--brand)}.pwa-guide-note.ant-typography{margin:16px 0 0;font-size:12.5px}@media (display-mode:standalone){.mobile-tabbar,.app-header,.sheet-item,.tabbar-item{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}}@media (width<=575px){.login-page{padding:calc(32px + var(--safe-top)) 14px calc(24px + var(--safe-bottom));align-items:flex-start;min-height:100dvh}.login-page .ant-card .ant-card-body{padding:22px 18px}}@media (width<=767px){.app-shell.is-mobile .app-header{padding-right:calc(10px + var(--safe-right))}.mobile-brand-text{animation:.2s ease-out brand-swap}.ant-form-vertical .ant-form-item{margin-bottom:16px}.ant-form-vertical .ant-form-item-label{padding-bottom:4px}.page-subtitle{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}@keyframes brand-swap{0%{opacity:0;transform:translateY(4px)}}@media (prefers-reduced-motion:reduce){.mobile-brand-text{animation:none}}@media (width<=767px){.app-shell.is-mobile .header-actions .ant-badge .ant-badge-count{transform:translate(25%,-5%)}}
