:root{--bg:#121212;--surface:#1a1f28;--surface-2:#1e2a3a;--primary:#0068ff;--primary-hover:#0057d6;--accent:#00f2ff;--text-primary:#ffffffde;--text-secondary:#fff9;--text-tertiary:#ffffff8c;--border:#ffffff1a;--border-soft:#ffffff0f;--border-strong:#ffffff38;--radius:14px;--screen-px:28px;--green:#22c55e;--amber:#f59e0b;--gray:#6b7280;--red:#ef4444;--orange:#f97316;--header-bg:#121212eb;--thead-bg:var(--surface-2);--row-hover:#ffffff06;--hover-bg:#ffffff0a;--chip-bg:#ffffff0f;--scrollbar-thumb:#ffffff1f;--overlay:#0009;--shadow-modal:0 20px 60px #00000080;--shadow-card:0 20px 60px #0006;--tint-primary:#0068ff24;--tint-primary-soft:#0068ff14;--tint-primary-border:#0068ff38;--tint-green:#22c55e24;--tint-amber:#f59e0b26;--tint-gray:#6b72802e;--tint-red:#ef44441a;--tint-red-border:#ef44444d;--danger-border:#ef444466;--tint-orange:#f9731624;--tint-orange-border:#f973164d;--badge-expired-fg:#9ca3af;--form-error-fg:#fca5a5;--nav-active-fg:#fff;--swatch-blue:#0068ff;--swatch-indigo:#6755f6;--swatch-violet:#bc29e0;--swatch-teal:#088ea0}[data-theme=light]{--bg:#f5f5f7;--surface:#fff;--surface-2:#f8f9fa;--primary:#06c;--primary-hover:#005bb5;--accent:#0056b3;--text-primary:#1d1d1f;--text-secondary:#636366;--text-tertiary:#6e6e73;--border:#00000014;--border-soft:#0000000f;--border-strong:#00000038;--green:#147a3d;--amber:#7a4100;--gray:#636366;--red:#b3261e;--orange:#c2410c;--header-bg:#f5f5f7eb;--thead-bg:#f8f9fa;--row-hover:#00000006;--hover-bg:#0000000a;--chip-bg:#0000000f;--scrollbar-thumb:#0000002e;--overlay:#00000059;--shadow-modal:0 12px 48px #0000001f;--shadow-card:0 8px 24px #00000014;--tint-primary:#0066cc1a;--tint-primary-soft:#0066cc0f;--tint-primary-border:#0066cc38;--tint-green:#147a3d1f;--tint-amber:#7a41001f;--tint-gray:#6363661f;--tint-red:#b3261e1a;--tint-red-border:#b3261e4d;--danger-border:#b3261e66;--tint-orange:#c2410c1a;--tint-orange-border:#c2410c4d;--badge-expired-fg:#636366;--form-error-fg:#b3261e;--nav-active-fg:var(--primary);--swatch-blue:#06c;--swatch-indigo:#4338ca;--swatch-violet:#6f1386;--swatch-teal:#047b8b}:root[data-accent=indigo]{--primary:#6755f6;--primary-hover:#442ef4;--accent:#aca2fa;--tint-primary:#6755f629;--tint-primary-soft:#6755f617;--tint-primary-border:#6755f642}[data-theme=light][data-accent=indigo]{--primary:#4338ca;--primary-hover:#3b31b8;--accent:#362da7;--tint-primary:#4338ca1a;--tint-primary-soft:#4338ca0f;--tint-primary-border:#4338ca38}:root[data-accent=violet]{--primary:#bc29e0;--primary-hover:#a31cc4;--accent:#d270ea;--tint-primary:#bc29e024;--tint-primary-soft:#bc29e014;--tint-primary-border:#bc29e03d}[data-theme=light][data-accent=violet]{--primary:#6f1386;--primary-hover:#5c1070;--accent:#4e0d5e;--tint-primary:#6f13861a;--tint-primary-soft:#6f13860f;--tint-primary-border:#6f138638}:root[data-accent=teal]{--primary:#088ea0;--primary-hover:#066c79;--accent:#0cd3ee;--tint-primary:#088ea029;--tint-primary-soft:#088ea017;--tint-primary-border:#088ea042}[data-theme=light][data-accent=teal]{--primary:#047b8b;--primary-hover:#036572;--accent:#03545e;--tint-primary:#047b8b1a;--tint-primary-soft:#047b8b0f;--tint-primary-border:#047b8b38}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background-color:var(--bg);background-image:radial-gradient(circle at 8% 8%, var(--tint-primary-soft) 0%, transparent 55%), radial-gradient(circle at 92% 95%, var(--tint-primary-soft) 0%, transparent 55%);color:var(--text-primary);background-attachment:fixed;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}.app-shell{min-height:100vh;display:flex}[data-region=sidebar]{background:var(--surface);border-right:1px solid var(--border-soft);flex-direction:column;flex-shrink:0;width:232px;height:100vh;transition:width .2s cubic-bezier(.25,.46,.45,.94);display:flex;position:sticky;top:0;overflow-y:auto}[data-region=sidebar].collapsed{width:68px;overflow-x:hidden}[data-region=sidebar].collapsed .brand{justify-content:center;padding:18px 8px}[data-region=sidebar].collapsed .brand-name{display:none}[data-region=sidebar].collapsed .nav-group-label{text-indent:-999px;border-radius:50%;width:8px;height:8px;margin:14px auto 6px;padding:0;overflow:hidden}[data-region=sidebar].collapsed .nav-item{justify-content:center;padding:9px 0}[data-region=sidebar].collapsed .nav-item .nav-item-label,[data-region=sidebar].collapsed .nav-item .num,[data-region=sidebar].collapsed .nav-item .chat-unread{display:none}.sidebar-collapse-btn{border:1px solid var(--border);background:var(--surface-2);width:26px;height:26px;color:var(--text-tertiary);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;display:flex}.sidebar-collapse-btn:hover{color:var(--text-primary);border-color:var(--border-strong)}[data-region=sidebar].collapsed .sidebar-collapse-btn{margin-left:0}.brand{border-bottom:1px solid var(--border-soft);align-items:center;gap:10px;padding:18px 16px;display:flex}.brand-mark{background:linear-gradient(135deg, var(--primary), var(--accent));color:#fff;border-radius:7px;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;font-weight:700;display:flex}.brand-name{font-size:13.5px;font-weight:600;line-height:1.2}.brand-name span{color:var(--text-tertiary);font-size:11px;font-weight:400;display:block}.nav-group-label{letter-spacing:.02em;color:#fff;background:var(--primary);border-radius:10px;margin:14px 0 6px 8px;padding:3px 10px;font-size:10.5px;font-weight:700;display:block}.nav-list{padding:0 0 0 8px;list-style:none}.nav-item{color:var(--text-secondary);border-radius:6px;align-items:center;gap:10px;margin-bottom:1px;padding:7px 10px;font-size:13px;display:flex}.nav-item:hover{background:var(--hover-bg);color:var(--text-primary)}.nav-item .dot{background:var(--text-tertiary);border-radius:50%;flex-shrink:0;width:6px;height:6px}.nav-item .nav-icon{opacity:.82;flex-shrink:0;transition:opacity .15s}.nav-item:hover .nav-icon,.nav-item.active .nav-icon{opacity:1}.nav-item.active{background:var(--tint-primary);color:var(--nav-active-fg);font-weight:600}.nav-item.active .dot{background:var(--accent)}.nav-item .num{color:var(--text-tertiary);background:var(--chip-bg);border-radius:10px;margin-left:auto;padding:1px 6px;font-size:10.5px}.nav-item.disabled{opacity:.45;cursor:not-allowed}.nav-item-row{align-items:center;gap:2px;margin-bottom:1px;display:flex}.nav-item-row .nav-item{flex:auto;min-width:0;margin-bottom:0}.nav-toggle{width:24px;height:24px;color:var(--text-tertiary);background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.nav-toggle:hover{background:var(--hover-bg);color:var(--text-primary)}.nav-toggle .nav-toggle-icon{transition:transform .15s}.nav-toggle[aria-expanded=true] .nav-toggle-icon{transform:rotate(180deg)}.nav-sublist{margin-bottom:2px;padding:0 8px 2px 20px;list-style:none}.nav-subitem{color:var(--text-secondary);border-radius:6px;align-items:center;gap:8px;margin-bottom:1px;padding:6px 10px;font-size:12.3px;display:flex}.nav-subitem-icon{color:var(--text-tertiary);opacity:.85;flex-shrink:0}.nav-subitem:hover .nav-subitem-icon{color:var(--text-primary);opacity:1}.nav-subitem.active .nav-subitem-icon{color:var(--nav-active-fg);opacity:1}.nav-subitem-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.nav-subitem:hover{background:var(--hover-bg);color:var(--text-primary)}.nav-subitem.active{background:var(--tint-primary);color:var(--nav-active-fg);font-weight:600}.nav-subitem .tol-tag{flex-shrink:0;margin-left:auto}.sidebar-footer{border-top:1px solid var(--border-soft);color:var(--text-tertiary);margin-top:auto;padding:12px 16px;font-size:11.5px}[data-region=main]{flex:1;min-width:0;height:100vh;overflow-y:auto}[data-region=header]{z-index:5;background:var(--header-bg);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items:center;padding:14px 28px;display:flex;position:sticky;top:0}.topbar-left{border-left:3px solid var(--primary);padding-left:14px}.topbar-left h1{font-size:16px;font-weight:600}.topbar-left p{color:var(--text-tertiary);margin-top:2px;font-size:12px}.topbar-right{align-items:center;gap:10px;display:flex}.avatar-btn{cursor:pointer;background:0 0;border:none;padding:0;line-height:0}.screen{padding:24px var(--screen-px,28px) 60px}.toolbar-tabs{padding:0 var(--screen-px,28px)}.toolbar-tabs .btn-sm{padding-left:14px}@media (max-width:860px){[data-region=header]{gap:8px;padding:10px 14px}[data-region=header] .topbar-left h1{text-overflow:ellipsis;white-space:nowrap;max-width:46vw;font-size:14px;overflow:hidden}[data-region=header] .topbar-left p,[data-region=header] .topbar-right .cell-sub{display:none}[data-region=header] .topbar-right{gap:6px}.screen{padding:14px 12px 40px}[data-region=sidebar]{overflow-x:hidden;width:68px!important}[data-region=sidebar] .brand-name,[data-region=sidebar] .nav-item .nav-item-label,[data-region=sidebar] .nav-item .num,[data-region=sidebar] .nav-item .chat-unread,[data-region=sidebar] .sidebar-footer,[data-region=sidebar] .sidebar-collapse-btn,[data-region=sidebar] .nav-toggle,[data-region=sidebar] .nav-sublist{display:none}[data-region=sidebar] .brand{justify-content:center;padding:18px 8px}[data-region=sidebar] .nav-group-label{text-indent:-999px;border-radius:50%;width:8px;height:8px;margin:14px auto 6px;padding:0;overflow:hidden}[data-region=sidebar] .nav-item{justify-content:center;padding:9px 0}}.sx-mobile-nav{z-index:40;background:var(--surface);border-top:1px solid var(--border);height:60px;box-shadow:var(--shadow-modal);justify-content:space-around;align-items:center;padding:0 4px;display:none;position:fixed;bottom:0;left:0;right:0}.sx-mobile-nav-item{cursor:pointer;color:var(--text-tertiary);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:2px;padding:6px 0;font-size:10.5px;text-decoration:none;display:flex}.sx-mobile-nav-item.active{color:var(--primary)}.sx-mobile-nav-qr{background:var(--primary);color:#fff;border:3px solid var(--surface);width:52px;height:52px;box-shadow:var(--shadow-modal);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:-26px;display:flex}.sx-mobile-nav-qr:hover{background:var(--primary-hover)}@media (max-width:860px){html.sx-mobile-nav-on .sx-mobile-nav{display:flex}html.sx-mobile-nav-on [data-region=main]{padding-bottom:60px}html.sx-mobile-nav-on [data-region=sidebar]{display:none}}.modal-overlay.sheet-bottom{align-items:flex-end;padding:0}.sx-menu-sheet{background:var(--surface);width:100%;max-height:82vh;box-shadow:var(--shadow-modal);border-radius:16px 16px 0 0;flex-direction:column;display:flex}.sx-menu-sheet-handle{background:var(--border-strong);border-radius:2px;flex-shrink:0;width:36px;height:4px;margin:10px auto 4px}.sx-menu-sheet-head{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:6px 16px 10px;display:flex}.sx-menu-sheet-head h3{margin:0;font-size:15px}.sx-menu-sheet-body{padding:14px 16px 24px;overflow-y:auto}.sx-menu-group+.sx-menu-group{margin-top:20px}.sx-menu-group-label{letter-spacing:.04em;text-transform:uppercase;color:var(--text-tertiary);margin:0 0 10px;font-size:11px;font-weight:700}.btn{border:1px solid var(--border);background:var(--surface-2);color:var(--text-primary);border-radius:10px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:500;display:inline-flex}.btn:hover{border-color:var(--border-strong)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn-ghost{color:var(--text-secondary);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--hover-bg);color:var(--text-primary)}.btn-danger{border-color:var(--danger-border);color:var(--red);background:0 0}.btn-danger:hover{border-color:var(--red)}.btn-sm{padding:5px 10px;font-size:12px}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.search-box{background:var(--surface-2);border:1px solid var(--border);min-width:240px;color:var(--text-tertiary);border-radius:10px;align-items:center;gap:8px;padding:7px 10px;font-size:13px;display:flex}.search-box input{color:var(--text-primary);background:0 0;border:none;outline:none;width:100%;font-size:13px}select.filter-select{background:var(--surface-2);border:1px solid var(--border);color:var(--text-secondary);border-radius:10px;outline:none;padding:7px 10px;font-size:12.5px}select.filter-select option{background:var(--surface);color:var(--text-primary)}.toolbar .spacer{flex:1}.table-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);overflow:hidden}.table-scroll{max-height:65vh;overflow:auto}table{border-collapse:collapse;width:100%}thead th{text-align:left;letter-spacing:.02em;color:#fff;border-bottom:1px solid var(--border-soft);background:var(--primary);white-space:nowrap;z-index:2;padding:10px 14px;font-size:11px;font-weight:600;position:sticky;top:0}.th-resizable{position:relative}.th-resize-handle{cursor:col-resize;touch-action:none;-webkit-user-select:none;user-select:none;width:6px;position:absolute;top:0;bottom:0;right:0}.th-resize-handle:hover{background:#ffffff59}.th-sort-btn{color:inherit;font:inherit;letter-spacing:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:0;display:inline-flex}.th-sort-icon{opacity:.75;font-size:9px}tbody td{border-bottom:1px solid var(--border-soft);vertical-align:middle;padding:11px 14px;font-size:13px}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--row-hover)}tbody tr.dim{opacity:.55}tbody td input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):not([type=color]),tbody td select,tbody td textarea{background:var(--surface-2);border:1px solid var(--border);color:var(--text-primary);border-radius:8px;outline:none;width:100%;padding:6px 10px;font-size:13px}tbody td select option{background:var(--surface);color:var(--text-primary)}tbody td input:focus,tbody td select:focus,tbody td textarea:focus{border-color:var(--primary)}tbody td input:disabled,tbody td select:disabled{opacity:.6}.cell-main{color:var(--text-primary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:600;display:-webkit-box;overflow:hidden}.cell-sub{color:var(--text-tertiary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:1px;font-size:11.5px;display:-webkit-box;overflow:hidden}.cell-clamp2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.cell-nowrap{white-space:nowrap}.mono{font-variant-numeric:tabular-nums}.num-cell{text-align:right;font-variant-numeric:tabular-nums}.badge{white-space:nowrap;border-radius:20px;align-items:center;gap:5px;padding:3px 9px;font-size:11px;font-weight:600;display:inline-flex}.badge .dot{border-radius:50%;width:6px;height:6px}.badge-active{background:var(--tint-green);color:var(--green)}.badge-active .dot{background:var(--green)}.badge-expired{background:var(--tint-gray);color:var(--badge-expired-fg)}.badge-expired .dot{background:var(--gray)}.badge-pending{background:var(--tint-amber);color:var(--amber)}.badge-pending .dot{background:var(--amber)}.badge-info{background:var(--tint-primary);color:var(--accent)}.badge-info .dot{background:var(--accent)}.badge-danger{background:var(--tint-red);color:var(--red)}.badge-danger .dot{background:var(--red)}.meter{background:var(--tint-gray);border-radius:4px;height:7px;overflow:hidden}.meter-fill{background:var(--primary);border-radius:4px;height:100%}.meter-fill.green{background:var(--green)}.meter-fill.amber{background:var(--amber)}.meter-fill.red{background:var(--red)}.oee-grid{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px;display:grid}.oee-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:16px}.oee-card .oee-label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.03em;margin-bottom:8px;font-size:11px}.oee-card .oee-value{margin-bottom:10px;font-size:26px;font-weight:700}.oee-card.total{background:linear-gradient(135deg, var(--tint-primary), transparent);border-color:var(--primary)}@media (max-width:900px){.oee-grid{grid-template-columns:repeat(2,1fr)}}div.row-actions{justify-content:center;align-items:center;gap:6px;display:flex}td.row-actions{text-align:center;white-space:nowrap}td.row-actions .icon-label-btn{vertical-align:middle;margin:0 3px;display:inline-flex}.icon-btn{width:26px;height:26px;color:var(--text-tertiary);background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;font-size:13px;display:flex}.icon-btn:hover{background:var(--surface-2);color:var(--text-primary);border-color:var(--border)}.icon-btn.danger:hover{color:var(--red);border-color:var(--danger-border)}.col-chooser{display:inline-flex;position:relative}.col-chooser-pop{z-index:40;background:var(--surface);border:1px solid var(--border);border-radius:10px;min-width:220px;max-height:340px;padding:8px;position:absolute;top:calc(100% + 6px);right:0;overflow-y:auto;box-shadow:0 8px 24px #0000002e}.col-chooser-pop .cc-title{text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);padding:4px 6px 8px;font-size:10.5px}.col-chooser-pop .cc-hint{color:var(--text-tertiary);padding:0 6px 6px;font-size:11px}.col-chooser-pop label{cursor:pointer;color:var(--text-secondary);border-radius:6px;align-items:center;gap:8px;padding:5px 6px;font-size:12.5px;display:flex}.col-chooser-pop label:hover{background:var(--surface-2);color:var(--text-primary)}.col-chooser-pop label.cc-row.dragging{opacity:.4}.col-chooser-pop .cc-drag-handle{color:var(--text-tertiary);cursor:grab;flex-shrink:0;display:inline-flex}.col-chooser-pop .cc-foot{border-top:1px solid var(--border-soft);gap:6px;margin-top:6px;padding-top:8px;display:flex}.col-chooser-pop .cc-foot button{flex:1}.table-footer{color:var(--text-tertiary);border-top:1px solid var(--border-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;font-size:12px;display:flex}.pager{gap:4px;display:flex}.pager button{border:1px solid var(--border);background:var(--surface-2);min-width:26px;height:26px;color:var(--text-secondary);border-radius:6px;padding:0 6px;font-size:12px}.pager button.active{background:var(--primary);border-color:var(--primary);color:#fff}.pager button:disabled{opacity:.35;cursor:not-allowed}.tol-tag{background:var(--chip-bg);color:var(--text-secondary);border-radius:5px;padding:2px 7px;font-size:11px}.role-chip{border:1px solid var(--border);background:var(--surface-2);color:var(--text-secondary);border-radius:10px;padding:3px 10px;font-size:11.5px;font-weight:600;text-decoration:line-through}.role-chip.active{background:var(--tint-primary);border-color:var(--tint-primary-border);color:var(--primary);text-decoration:none}.role-chip:disabled{cursor:default;opacity:.7}.callout{background:var(--tint-primary-soft);border:1px solid var(--tint-primary-border);border-radius:var(--radius);color:var(--text-secondary);gap:10px;margin-top:20px;padding:12px 14px;font-size:12.5px;display:flex}.callout b{color:var(--text-primary)}.callout.warn{background:var(--tint-red);border-color:var(--tint-red-border)}.empty-state{text-align:center;color:var(--text-tertiary);padding:40px 14px;font-size:13px}.bao-cao-list{flex-direction:column;display:flex}.bao-cao-row{border-bottom:1px solid var(--border-soft);cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.bao-cao-row:last-child{border-bottom:none}.bao-cao-row:hover{background:var(--surface-2)}.bao-cao-row.active{background:var(--tint-primary-soft)}.bao-cao-row.is-hidden{opacity:.6}.bao-cao-row .bao-cao-row-main{min-width:0}.bao-cao-row .bao-cao-row-main .cell-main{align-items:center;gap:8px;display:flex}.bao-cao-drilldown-head{align-items:center;gap:10px;margin-bottom:14px;display:flex}.bao-cao-drilldown-head h2{color:var(--text-primary);font-size:15px;font-weight:600}.bao-cao-iframe-wrap{border:1px solid var(--border-soft);border-radius:var(--radius);background:var(--surface);margin-bottom:16px;overflow:hidden}.bao-cao-iframe-wrap iframe{border:none;width:100%;min-height:480px;display:block}@media (max-width:720px){.bao-cao-iframe-wrap iframe{min-height:360px}}.bao-cao-error-banner{text-align:center;min-height:480px;color:var(--amber);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:20px;display:flex}@media (max-width:720px){.bao-cao-error-banner{min-height:360px}}.bao-cao-error-banner p{color:var(--text-secondary);max-width:420px;font-size:13px}.hdsd-title{color:var(--text-primary);margin-bottom:10px;font-size:15px;font-weight:600}.hdsd-content,.ProseMirror{color:var(--text-primary);font-size:13.5px;line-height:1.6}.hdsd-content h1,.ProseMirror h1{margin:14px 0 8px;font-size:20px;font-weight:700}.hdsd-content h2,.ProseMirror h2{margin:12px 0 6px;font-size:17px;font-weight:700}.hdsd-content h3,.ProseMirror h3{margin:10px 0 6px;font-size:15px;font-weight:600}.hdsd-content p,.ProseMirror p{text-align:justify;margin:0 0 10px}.hdsd-content ul,.hdsd-content ol,.ProseMirror ul,.ProseMirror ol{margin:0 0 10px;padding-left:22px}.hdsd-content li,.ProseMirror li{text-align:justify;margin-bottom:4px}.hdsd-content img,.ProseMirror img{border-radius:6px;max-width:100%;margin:6px auto;display:block}.hdsd-content a,.ProseMirror a{color:var(--primary)}.hdsd-content table,.ProseMirror table{border-collapse:collapse;table-layout:auto;width:100%;margin:0 0 10px}.hdsd-content td,.hdsd-content th,.ProseMirror td,.ProseMirror th{text-align:left;vertical-align:top;border:none;padding:3px 10px 3px 0}.hdsd-content td:last-child,.hdsd-content th:last-child,.ProseMirror td:last-child,.ProseMirror th:last-child{padding-right:0}.hdsd-content td p,.hdsd-content th p,.ProseMirror td p,.ProseMirror th p{margin:0 0 4px}.ProseMirror td,.ProseMirror th{border:1px dashed var(--border-soft);padding:6px 10px}.print-sheet h1{text-align:center;margin:4px 0 14px;font-size:22px}.ProseMirror:focus{outline:none}.sync-box,.excel-box{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;padding:10px 14px;display:flex}.sync-box .src-label,.sync-meta{color:var(--text-tertiary);font-size:11.5px}.sync-box .src-label code{background:var(--chip-bg);border-radius:4px;padding:1px 5px}.sync-meta{margin-left:auto}.sync-btn{justify-content:center;align-items:center;gap:6px;min-width:176px;display:inline-flex}.sync-btn .ic.spin{animation:.8s linear infinite sync-spin;display:inline-block}@keyframes sync-spin{to{transform:rotate(360deg)}}.sync-result{color:var(--green);align-items:center;gap:5px;font-size:12px;display:inline-flex}.btn-excel-tmpl,.btn-excel-upload{color:var(--text-secondary);cursor:pointer;white-space:nowrap;border:1px solid var(--border);background:0 0;border-radius:6px;align-items:center;gap:6px;padding:6px 14px;font-family:inherit;font-size:12px;font-weight:500;display:inline-flex}.btn-excel-upload{border-style:dashed}.btn-excel-tmpl:hover,.btn-excel-upload:hover{border-color:var(--primary);color:var(--text-primary)}.btn-excel-upload:disabled{cursor:wait;opacity:.7}.excel-result{border-radius:8px;flex-direction:column;gap:3px;max-width:420px;padding:5px 12px;font-size:11.5px;font-weight:500;display:flex}.excel-result.ok{color:var(--green);background:#22c55e1f;border:1px solid #22c55e59}.excel-result.err{background:var(--tint-red);color:var(--red);border:1px solid var(--tint-red-border)}.toast-host{z-index:60;background:var(--surface);border:1px solid var(--border-soft);box-shadow:var(--shadow-card);color:var(--green);border-radius:8px;align-items:center;gap:8px;padding:10px 16px;font-size:13px;font-weight:500;display:flex;position:fixed;bottom:20px;right:20px}.toast-host span{color:var(--text-primary)}.modal-overlay{background:var(--overlay);z-index:50;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:760px;max-width:96vw;max-height:92vh;box-shadow:var(--shadow-modal);flex-direction:column;display:flex}.modal-card.narrow{width:460px}.modal-card.wide{width:min(920px,96vw)}.modal-card.xl{width:min(1320px,96vw)}.qr-scanner-overlay{z-index:60;background:#000000d9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.qr-scanner-card{background:#000;border-radius:12px;width:min(90vw,400px);overflow:hidden}.qr-scanner-head{color:#fff;background:#ffffff1a;justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.qr-scanner-head span{align-items:center;gap:6px;font-size:13px;font-weight:600;display:inline-flex}.qr-scanner-head button{color:#fff;cursor:pointer;background:0 0;border:none;padding:2px;display:flex}.qr-scanner-video-wrap{aspect-ratio:4/3;background:#111;position:relative}.qr-scanner-video-wrap video{object-fit:cover;width:100%;height:100%}.qr-scanner-frame{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.qr-scanner-frame div{aspect-ratio:1;border:2px solid #fffc;border-radius:8px;width:60%;box-shadow:0 0 0 9999px #0006}.qr-scanner-detected{color:#fff;background:#00b4004d;justify-content:center;align-items:center;font-size:42px;display:flex;position:absolute;inset:0}.qr-scanner-fallback{flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:16px;display:flex;position:absolute;inset:0}.qr-scanner-fallback p{color:#f88;text-align:center;margin:0;font-size:12px}.qr-scanner-hint{text-align:center;color:#fff9;padding:10px 14px;font-size:11.5px}.search-box-icon-btn{cursor:pointer;color:var(--text-tertiary);background:0 0;border:none;flex-shrink:0;align-items:center;padding:0;display:flex}.search-box-icon-btn:hover{color:var(--text-primary)}.split-layout{align-items:flex-start;gap:20px;display:flex}.split-layout .split-main{flex:auto;min-width:0}.detail-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);max-width:46vw;box-shadow:var(--shadow-modal);flex-direction:column;flex:0 0 460px;max-height:calc(100vh - 48px);animation:.18s detailPanelIn;display:flex;position:sticky;top:24px;overflow:hidden}.detail-panel .modal-body{flex:auto;overflow-y:auto}@keyframes detailPanelIn{0%{opacity:.4;transform:translate(12px)}to{opacity:1;transform:translate(0)}}@media (max-width:1100px){.split-layout{flex-direction:column}.detail-panel{flex-basis:auto;width:100%;max-width:none;max-height:none;position:static}}.detail-panel-resizer{cursor:col-resize;z-index:5;background:0 0;justify-content:center;align-items:center;width:12px;display:flex;position:absolute;top:0;bottom:0;left:-6px}.detail-panel-resizer:before{content:"";background:var(--border);border-radius:3px;width:3px;height:40px;transition:background .12s}.detail-panel-resizer:hover:before,.detail-panel-resizer.resizing:before{background:var(--primary)}.detail-panel-expand-btn{flex-shrink:0}@media (max-width:1100px){.detail-panel-resizer{display:none}}.detail-panel .modal-head .close-x{width:34px;height:34px;color:var(--primary);background:var(--tint-primary-soft);border:1px solid var(--tint-primary-border);border-radius:50%;justify-content:center;align-items:center;transition:background .15s,border-color .15s,color .15s;display:flex}.detail-panel .modal-head .close-x:hover{background:var(--tint-primary);border-color:var(--tint-primary-border)}.detail-panel.expanded{z-index:60;flex-basis:auto;width:92vw;max-width:1400px;height:88vh;max-height:88vh;left:50%;transform:translate(-50%,-50%);position:fixed!important;top:50%!important}.detail-panel.expanded .detail-panel-resizer{display:none}@media (max-width:1100px){.detail-panel.expanded{width:96vw;height:92vh;max-height:92vh}}.modal-head{border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal-head h3{border-left:3px solid var(--primary);padding-left:10px;font-size:15px;font-weight:600}.modal-head .close-x{color:var(--text-tertiary);background:0 0;border:none;font-size:18px}.modal-head.has-quick-actions{flex-direction:column;align-items:stretch;gap:12px}.modal-head-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.modal-body{padding:24px;overflow-y:auto}.modal-head-left{align-items:center;gap:12px;min-width:0;display:flex}.modal-head-left h3{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.avatar-circle{object-fit:cover;border-radius:50%;flex-shrink:0}.avatar-fallback{background:var(--primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.quick-actions{flex-wrap:wrap;align-items:flex-start;gap:14px 10px;display:flex}.quick-actions.grid-actions{grid-template-columns:repeat(auto-fit,minmax(52px,1fr));justify-items:center;gap:10px 8px;display:grid}.quick-actions.grid-actions .icon-label-btn{width:100%;max-width:66px}.icon-label-btn{cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:5px;width:66px;padding:0;display:flex}.icon-label-btn .icon-label-circle{width:40px;height:40px;color:var(--primary);background:var(--tint-primary-soft);border:1px solid var(--tint-primary-border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,border-color .15s,color .15s;display:flex}.icon-label-btn:hover .icon-label-circle{background:var(--tint-primary);border-color:var(--tint-primary-border)}.icon-label-btn .icon-label-circle svg{display:block}.icon-label-btn .icon-label-text{color:var(--text-secondary);text-align:center;word-break:break-word;max-width:66px;font-size:11px;line-height:1.25}.icon-label-btn:hover .icon-label-text{color:var(--text-primary)}.icon-label-btn:disabled{opacity:.4;cursor:not-allowed}.icon-label-btn:disabled:hover .icon-label-circle{background:var(--tint-primary-soft);border-color:var(--tint-primary-border)}.icon-label-btn:disabled:hover .icon-label-text{color:var(--text-secondary)}.row-actions .icon-label-btn.danger:disabled:hover .icon-label-circle{background:var(--tint-red);border-color:var(--danger-border)}.row-actions .icon-label-btn.danger:disabled:hover .icon-label-text{color:var(--text-secondary)}.row-actions .icon-label-btn,.cccd-mask .icon-label-btn{gap:3px;width:auto}.row-actions .icon-label-btn .icon-label-circle,.cccd-mask .icon-label-btn .icon-label-circle{width:28px;height:28px}.row-actions .icon-label-btn .icon-label-text,.cccd-mask .icon-label-btn .icon-label-text{white-space:nowrap;max-width:none;font-size:10px}.row-actions .icon-label-btn.danger .icon-label-circle{color:var(--red);background:var(--tint-red);border-color:var(--danger-border)}.row-actions .icon-label-btn.danger:hover .icon-label-circle{color:var(--red);border-color:var(--danger-border)}.row-actions .icon-label-btn.danger:hover .icon-label-text{color:var(--red)}.quick-actions .icon-label-btn.danger .icon-label-circle{color:var(--red);background:var(--tint-red);border-color:var(--danger-border)}.quick-actions .icon-label-btn.danger:hover .icon-label-circle{color:var(--red);border-color:var(--danger-border)}.quick-actions .icon-label-btn.danger:hover .icon-label-text{color:var(--red)}.row-actions{gap:4px 12px}.icon-label-btn.compact{gap:3px;width:auto}.icon-label-btn.compact .icon-label-circle{width:28px;height:28px}.icon-label-btn.compact .icon-label-text{white-space:nowrap;max-width:none;font-size:10px}.icon-label-btn.cta{gap:3px;width:auto}.icon-label-btn.cta .icon-label-circle{background:var(--primary);border-color:var(--primary);color:#fff;width:28px;height:28px}.icon-label-btn.cta:hover .icon-label-circle{background:var(--primary-hover);border-color:var(--primary-hover)}.icon-label-btn.cta .icon-label-text{white-space:nowrap;max-width:none;color:var(--text-primary);font-size:10px;font-weight:600}.icon-label-btn.pdf .icon-label-circle{color:var(--red);background:var(--tint-red);border-color:var(--danger-border)}.icon-label-btn.pdf:hover .icon-label-circle{background:var(--tint-red);border-color:var(--red)}.icon-label-btn.pdf:hover .icon-label-text{color:var(--red)}.icon-label-btn.excel .icon-label-circle{color:var(--orange);background:var(--tint-orange);border-color:var(--tint-orange-border)}.icon-label-btn.excel:hover .icon-label-circle{background:var(--tint-orange);border-color:var(--orange)}.icon-label-btn.excel:hover .icon-label-text{color:var(--orange)}.mat-tien-hero{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:48px 16px;display:flex}.mat-tien-scan-btn{cursor:pointer;width:132px;height:132px;color:var(--primary);background:var(--tint-primary-soft);border:1px solid var(--tint-primary-border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,border-color .15s;display:flex}.mat-tien-scan-btn:hover,.mat-tien-scan-btn:active{background:var(--tint-primary);border-color:var(--primary)}.mat-tien-hero-label{color:var(--text-primary);margin-top:18px;font-size:16px;font-weight:600}.mat-tien-hero-hint{color:var(--text-tertiary);max-width:320px;font-size:12.5px}.mat-tien-result{text-align:center;flex-direction:column;align-items:center;gap:14px;max-width:420px;margin:0 auto;padding:32px 16px;display:flex}.mat-tien-result .quick-actions{justify-content:center}.qe-preview{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.qe-preview img{object-fit:cover;border:1px solid var(--border);background:var(--surface-2);border-radius:8px;width:96px;height:96px}.qe-preview .qe-noimg{border:1px dashed var(--border);text-align:center;width:96px;height:96px;color:var(--text-tertiary);border-radius:8px;justify-content:center;align-items:center;padding:4px;font-size:11px;display:flex}.modal-foot{border-top:1px solid var(--border-soft);justify-content:flex-end;align-items:center;gap:12px;padding:18px 24px;display:flex}.modal-foot .spacer{flex:1}.form-section{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius);margin-bottom:20px;padding:20px}.form-section:last-child{margin-bottom:0}.form-section-title{letter-spacing:.06em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:16px;font-size:11px;font-weight:700}.form-section .form-grid:last-child,.form-section .table-card:last-child{margin-bottom:0}.form-group-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-tertiary);border-bottom:1px solid var(--border-soft);margin:26px 0 8px;padding-bottom:6px;font-size:10.5px;font-weight:600}.form-group-label:first-child{margin-top:0}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px;display:grid}@media (max-width:720px){.form-grid{grid-template-columns:1fr}}.field{flex-direction:column;gap:6px;display:flex}.field.wide{grid-column:1/-1}.field label{color:var(--text-secondary);font-size:12px;font-weight:500}.field label .req{color:var(--amber)}.field input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):not([type=color]),.field select,.field textarea{background:var(--surface-2);border:1px solid var(--border);color:var(--text-primary);border-radius:10px;outline:none;width:100%;padding:10px 14px;font-size:14px}.field select option{background:var(--surface);color:var(--text-primary)}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary)}.field input:disabled{opacity:.6}.field textarea{resize:vertical;min-height:64px}.field .hint{color:var(--text-tertiary);font-size:10.5px}.date-input{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;align-items:center;gap:2px;padding:0 6px 0 14px;display:flex;position:relative}.date-input:focus-within{border-color:var(--primary)}.date-input.disabled{opacity:.6}.date-input-text{min-width:0;color:var(--text-primary);font-variant-numeric:tabular-nums;background:0 0;border:none;outline:none;flex:1;padding:10px 0;font-size:14px}.date-input-icon-btn{cursor:pointer;color:var(--text-tertiary);background:0 0;border:none;flex-shrink:0;align-items:center;padding:4px;display:flex}.date-input-icon-btn:hover{color:var(--text-primary)}.date-input-cal{z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:8px;width:232px;padding:8px;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 10px 30px #0000002e}.date-input-cal-head{color:var(--text-primary);justify-content:space-between;align-items:center;margin-bottom:6px;font-size:12.5px;font-weight:600;display:flex}.date-input-cal-head button{cursor:pointer;color:var(--text-tertiary);background:0 0;border:none;padding:3px;display:flex}.date-input-cal-head button:hover{color:var(--text-primary)}.date-input-cal-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.date-input-cal-weekday{color:var(--text-tertiary);text-align:center;padding:3px 0;font-size:10.5px}.date-input-cal-day{color:var(--text-primary);cursor:pointer;text-align:center;font-variant-numeric:tabular-nums;background:0 0;border:none;border-radius:5px;padding:5px 0;font-size:12px}.date-input-cal-day:hover{background:var(--tint-primary-soft)}.date-input-cal-day.active{background:var(--primary);color:#fff;font-weight:600}.field.checkbox{flex-direction:row;align-items:center;gap:8px}.field.checkbox input{width:15px;height:15px;accent-color:var(--primary)}.field.checkbox label{font-size:12.5px}.kh-select{position:relative}.kh-select-input{width:100%}.kh-select-dropdown{z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:8px;max-height:260px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 10px 30px #0000002e}.kh-select-dropdown .empty-state{padding:14px 10px;font-size:12.5px}.nv-multiselect{flex-direction:column;gap:8px;display:flex}.nv-multiselect-search{width:100%;min-width:0}.nv-multiselect-list{border:1px solid var(--border);background:var(--surface-2);border-radius:6px;max-height:220px;overflow-y:auto}.nv-multiselect-list .empty-state,.nv-multiselect-list .form-error{padding:14px 10px}.nv-multiselect-row{color:var(--text-primary);cursor:pointer;border-bottom:1px solid var(--border-soft);align-items:center;gap:8px;padding:7px 10px;font-size:12.5px;display:flex}.nv-multiselect-row:last-child{border-bottom:none}.nv-multiselect-row:hover{background:var(--tint-primary-soft)}.nv-multiselect-row input{width:15px;height:15px;accent-color:var(--primary);flex:none}.nv-multiselect-name{flex-direction:column;gap:1px;display:flex}.nv-multiselect-hint{color:var(--text-tertiary);font-size:10.5px}.nv-single-row{text-align:left;background:0 0;border:none;justify-content:flex-start;width:100%}.nv-single-check{color:var(--primary);flex:none;margin-left:auto}.nv-single-selected{background:var(--tint-primary-soft);border:1px solid var(--tint-primary-border);border-radius:6px;align-items:center;gap:8px;padding:8px 10px;display:flex}.nv-single-selected .nv-multiselect-name{flex:1;min-width:0}.sodo-canvas .react-flow__handle{background:var(--primary);border:2px solid var(--surface);width:10px;height:10px}.sodo-canvas .react-flow__handle:hover{background:var(--primary-hover);width:14px;height:14px}.sodo-canvas .sodo-drag-handle:hover{background:var(--tint-primary-soft);color:var(--primary);border-color:var(--primary)!important}.sodo-canvas .sodo-drag-handle:active{cursor:grabbing}.sodo-node-tooltip{z-index:20;background:var(--primary);color:#fff;text-align:left;pointer-events:none;white-space:normal;border-radius:8px;width:max-content;max-width:280px;padding:8px 10px;font-size:11.5px;line-height:1.4;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 6px 18px #0003}.sodo-minimap{border-radius:8px;box-shadow:0 4px 14px #0000001f;background:var(--surface)!important;border:1px solid var(--border)!important}@media (max-width:860px){.sodo-minimap{display:none!important}}.form-error{background:var(--tint-red);border:1px solid var(--tint-red-border);color:var(--form-error-fg);border-radius:6px;margin-bottom:12px;padding:9px 12px;font-size:12.5px}.theme-toggle{background:var(--surface-2);border:1px solid var(--border);width:30px;height:30px;color:var(--text-secondary);border-radius:6px;justify-content:center;align-items:center;gap:6px;font-size:14px;line-height:1;display:inline-flex}.theme-toggle:hover{border-color:var(--border-strong);color:var(--text-primary)}.theme-toggle.wide{width:auto;padding:0 10px;font-size:12px}.accent-picker{align-items:center;gap:6px;display:inline-flex}.accent-swatch{width:16px;height:16px;box-shadow:0 0 0 1px var(--border);cursor:pointer;border:2px solid #0000;border-radius:50%;flex-shrink:0;padding:0}.accent-swatch:hover{box-shadow:0 0 0 1px var(--border-strong)}.accent-swatch.active{border-color:var(--surface);box-shadow:0 0 0 2px var(--text-primary)}.accent-dropdown{position:relative}.accent-dropdown-btn{border:1px solid var(--border);background:var(--surface-2);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;display:flex;position:relative}.accent-dropdown-btn:hover{background:var(--tint-primary)}.accent-dropdown-panel{background:var(--surface);border:1px solid var(--border);z-index:40;border-radius:10px;min-width:160px;padding:6px;position:absolute;top:38px;right:0;box-shadow:0 10px 30px #0000002e}.accent-dropdown-item{text-align:left;cursor:pointer;width:100%;color:var(--text-primary);background:0 0;border:none;border-radius:8px;align-items:center;gap:9px;padding:8px 10px;font-size:12.5px;display:flex}.accent-dropdown-item:hover{background:var(--surface-2)}.accent-dropdown-item.active{background:var(--tint-primary);font-weight:600}.login-wrap{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--surface);border:1px solid var(--border-soft);width:380px;max-width:100%;box-shadow:var(--shadow-card);border-radius:10px;padding:28px 26px}.login-card .brand{border-bottom:none;padding:0 0 18px}.login-card .login-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.login-card h2{margin-bottom:4px;font-size:17px;font-weight:600}.login-card .sub{color:var(--text-tertiary);margin-bottom:20px;font-size:12.5px}.login-card .field{margin-bottom:14px}.login-card .btn{justify-content:center;width:100%}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:8px}::-webkit-scrollbar-track{background:0 0}.screen-switcher{background:var(--thead-bg);border-bottom:1px solid var(--border-soft);z-index:4;scrollbar-width:none;-ms-overflow-style:none;background-repeat:no-repeat;background-image:linear-gradient(to right, var(--thead-bg) 30%, #fff0), linear-gradient(to left, var(--thead-bg) 30%, #fff0), linear-gradient(to right, #0000002e, #0000), linear-gradient(to left, #0000002e, #0000);background-position:0,100%,0,100%;background-size:36px 100%,36px 100%,12px 100%,12px 100%;background-attachment:local,local,scroll,scroll;flex-wrap:nowrap;gap:4px;padding:10px 28px;display:flex;position:sticky;top:0;overflow-x:auto}.screen-switcher::-webkit-scrollbar{display:none}.screen-switcher a,.screen-switcher button{border:1px solid var(--border);color:var(--text-secondary);white-space:nowrap;background:0 0;border-radius:6px;flex:none;padding:6px 12px;scroll-margin-inline:28px;font-size:12px;font-weight:500}.screen-switcher a.active,.screen-switcher button.active{background:var(--primary);border-color:var(--primary);color:#fff}.screen-switcher .tag{color:var(--text-tertiary);white-space:nowrap;flex:none;align-items:center;margin-left:12px;font-size:11px;display:flex}.info-grid{background:var(--border-soft);border:1px solid var(--border-soft);border-radius:var(--radius);grid-template-columns:repeat(4,1fr);gap:1px;margin-bottom:20px;display:grid;overflow:hidden}@media (max-width:900px){.info-grid{grid-template-columns:repeat(2,1fr)}}.info-cell{background:var(--surface);padding:12px 16px}.info-cell .label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.03em;margin-bottom:5px;font-size:11px}.info-cell .value{font-size:14.5px;font-weight:600}.info-cell .value.sub{color:var(--text-secondary);margin-top:2px;font-size:12px;font-weight:400}.view-grid{background:var(--border-soft);border:1px solid var(--border-soft);border-radius:var(--radius);flex-direction:column;gap:1px;margin-bottom:4px;display:flex;overflow:hidden}.view-row{background:var(--surface);grid-template-columns:180px 1fr;align-items:start;gap:4px 16px;padding:9px 14px;display:grid}@media (max-width:560px){.view-row{grid-template-columns:1fr}}.view-row .vlabel{color:var(--text-secondary);font-size:11.5px;font-weight:500}.view-row .vvalue{color:var(--text-primary);word-break:break-word;font-size:13px}.section-title{justify-content:space-between;align-items:center;margin:22px 0 10px;display:flex}.section-title h3{font-size:14px;font-weight:600}.section-title .hint{color:var(--text-tertiary);font-size:12px}.group-row td{background:var(--tint-primary-soft);text-transform:uppercase;letter-spacing:.03em;color:var(--accent);padding:8px 14px;font-size:12px;font-weight:700}.lo-tag{color:var(--text-tertiary);font-family:monospace;font-size:11px}.summary-bar{background:var(--surface-2);border-top:1px solid var(--border-soft);color:var(--text-secondary);justify-content:space-between;align-items:center;padding:12px 16px;font-size:12.5px;display:flex}.summary-bar b{color:var(--text-primary)}.signature-box{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius);align-items:center;gap:10px;margin-top:10px;padding:12px 14px;display:flex}.signature-box .sig-mark{background:var(--tint-green);width:40px;height:40px;color:var(--green);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;display:flex}.signature-box .sig-mark.pending{background:var(--tint-amber);color:var(--amber)}.signature-box .sig-text b{color:var(--text-primary)}.signature-box .sig-text div{color:var(--text-secondary);font-size:12px}.sig-canvas-wrap{border:1px solid var(--border-soft);border-radius:var(--radius);touch-action:none;background:#fff;overflow:hidden}.sig-canvas-hint{color:var(--text-tertiary);text-align:center;margin-top:8px;font-size:11.5px}.kiemke-field{margin-bottom:14px}.kiemke-field label{color:var(--text-secondary);margin-bottom:6px;font-size:12px;font-weight:600;display:block}.kiemke-field input,.kiemke-field select{background:var(--surface-2);border:1px solid var(--border);width:100%;color:var(--text-primary);border-radius:6px;padding:8px 10px;font-family:inherit;font-size:13px}.kiemke-field input[readonly]{color:var(--text-tertiary)}.kiemke-field textarea{background:var(--surface-2);border:1px solid var(--border);width:100%;min-height:64px;color:var(--text-primary);resize:vertical;border-radius:6px;padding:8px 10px;font-family:inherit;font-size:12.5px}.warn-box{color:var(--amber);background:var(--tint-amber);border:1px solid var(--tint-amber);border-radius:7px;gap:8px;margin-top:16px;padding:10px 12px;font-size:12px;display:flex}.file-drop{border:1.5px dashed var(--border);border-radius:var(--radius);text-align:center;color:var(--text-secondary);background:var(--surface-2);cursor:pointer;padding:18px 16px;font-size:13px;transition:border-color .12s,background .12s}.file-drop:hover,.file-drop.dragover{border-color:var(--primary)}.file-drop.dragover{background:var(--tint-primary-soft);color:var(--text-primary)}.tabs{border-bottom:1px solid var(--border-soft);flex-wrap:wrap;gap:2px;margin-bottom:16px;display:flex}.tab-btn{color:var(--text-tertiary);background:0 0;border:none;border-bottom:2px solid #0000;margin-right:22px;padding:9px 4px;font-size:13px;font-weight:500;position:relative;top:1px}.tab-btn.active{color:var(--text-primary);border-bottom-color:var(--primary)}.tab-pane{display:none}.tab-pane.active{display:block}.breadcrumb{color:var(--text-tertiary);align-items:center;gap:6px;margin-bottom:14px;font-size:12.5px;display:flex}.breadcrumb a{color:var(--text-secondary)}.breadcrumb a:hover{color:var(--accent)}.detail-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:18px;display:flex}.detail-title{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.detail-title h2{font-size:19px;font-weight:700}.detail-title .code{color:var(--text-tertiary);margin-top:3px;font-size:12.5px;font-weight:400}.detail-actions{flex-wrap:wrap;gap:8px;display:flex}.kh-picker{position:relative}.kh-picker input{background:var(--surface-2);border:1px solid var(--border);width:100%;color:var(--text-primary);border-radius:6px;outline:none;padding:8px 10px;font-family:inherit;font-size:13px}.kh-picker input:focus{border-color:var(--accent)}.kh-picker-list{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:8px;max-height:220px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 12px 32px #0006}.kh-picker-item{cursor:pointer;border-bottom:1px solid var(--border-soft);padding:9px 12px}.kh-picker-item:last-child{border-bottom:none}.kh-picker-item:hover{background:var(--surface-2)}.kh-picker-item .kname{font-size:13px;font-weight:600}.kh-picker-item .ksub{color:var(--text-tertiary);font-size:11px}.kh-picked{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;justify-content:space-between;align-items:center;gap:10px;margin-top:8px;padding:9px 12px;display:flex}.kh-picked .kname{font-size:13.5px;font-weight:600}.kh-picked .ksub{color:var(--text-tertiary);font-size:11.5px}.timeline{padding-left:22px;position:relative}.timeline:before{content:"";background:var(--border);width:1px;position:absolute;top:6px;bottom:6px;left:5px}.tl-item{padding-bottom:22px;position:relative}.tl-item:before{content:"";background:var(--surface);border:2px solid var(--gray);border-radius:50%;width:11px;height:11px;position:absolute;top:3px;left:-22px}.tl-item.current:before{border-color:var(--green);background:var(--green)}.tl-item.pending:before{border-color:var(--amber);background:var(--amber)}.tl-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:3px;display:flex}.tl-head .v{font-size:13.5px;font-weight:700}.tl-meta{color:var(--text-tertiary);font-size:12px}.tl-desc{color:var(--text-secondary);max-width:620px;margin-top:4px;font-size:12.5px}.avatar-thumb{background:var(--surface-2);border:1px solid var(--border);color:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:11px;font-weight:700;display:inline-flex;position:relative;overflow:hidden}.avatar-thumb img{object-fit:cover;width:100%;height:100%}.avatar-thumb .eye-btn{color:#fff;opacity:0;cursor:pointer;background:#00000073;border:none;justify-content:center;align-items:center;font-size:12px;transition:all .12s;display:flex;position:absolute;inset:0}.avatar-thumb:hover .eye-btn{opacity:1}.vt-eye-btn{background:var(--tint-green);width:24px;height:24px;color:var(--green);border:1px solid var(--tint-green);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.vt-eye-btn:hover{background:var(--green);color:#fff;border-color:var(--green)}.vt-eye-btn svg{display:block}.status-cell{cursor:default}.status-cell.clickable{cursor:pointer}.color-dot{border:1.5px solid var(--border-strong);vertical-align:middle;border-radius:50%;width:16px;height:16px;display:inline-block}.color-pick-wrap{align-items:center;gap:8px;display:inline-flex;position:relative}.color-pick-wrap input[type=color]{opacity:0;cursor:pointer;border:none;width:16px;height:16px;padding:0;position:absolute;inset:0}.color-pick-wrap.readonly input[type=color]{cursor:default;pointer-events:none}.process-note{color:var(--accent);background:var(--tint-primary-soft);border:1px solid var(--tint-primary-border);border-radius:5px;padding:2px 8px;font-size:12px;display:inline-block}.mini-toolbar{justify-content:flex-end;margin-bottom:8px;display:flex}.diff-row{border-bottom:1px dashed var(--border-soft);grid-template-columns:140px 1fr 1fr;align-items:center;gap:10px;padding:8px 0;font-size:12.5px;display:grid}.diff-row:last-child{border-bottom:none}.diff-label{color:var(--text-tertiary)}.diff-old{color:var(--text-tertiary);text-decoration:line-through}.diff-new{color:var(--green);font-weight:600}.diff-headers{text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);border-bottom:1px solid var(--border-soft);grid-template-columns:140px 1fr 1fr;gap:10px;margin-bottom:4px;padding-bottom:6px;font-size:10.5px;display:grid}.approver-note textarea{background:var(--surface-2);border:1px solid var(--border);width:100%;min-height:64px;color:var(--text-primary);resize:vertical;border-radius:6px;margin-top:8px;padding:8px 10px;font-family:inherit;font-size:12.5px}.field-label{color:var(--text-secondary);margin-top:16px;font-size:12px;font-weight:600;display:block}.lightbox-body{background:var(--bg);justify-content:center;align-items:center;padding:20px;display:flex}.lightbox-placeholder{background:linear-gradient(135deg, var(--primary), var(--accent));color:#fff;text-align:center;border-radius:12px;justify-content:center;align-items:center;width:100%;min-height:220px;max-height:65vh;padding:10px;font-size:15px;font-weight:700;display:flex;overflow:hidden}.lightbox-placeholder img{object-fit:contain;border-radius:6px;width:auto;max-width:100%;height:auto;max-height:65vh}.bando-layout{grid-template-columns:1fr 300px;align-items:start;gap:16px;display:grid}@media (max-width:900px){.bando-layout{grid-template-columns:1fr}}.map-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.map-toolbar .spacer{flex:1}.map-legend{color:var(--text-secondary);align-items:center;gap:14px;font-size:11.5px;display:flex}.map-legend .lg-item{align-items:center;gap:5px;display:flex}.map-legend .lg-dot{border-radius:3px;width:8px;height:8px}.mapcanvas-wrap{aspect-ratio:297/210;border:1px solid var(--border);border-radius:var(--radius);background-color:var(--surface-2);background-image:linear-gradient(#7f7f7f24 1px,#0000 1px),linear-gradient(90deg,#7f7f7f24 1px,#0000 1px);background-size:29.7px 21px;width:100%;min-height:320px;position:relative;overflow:hidden}.mapcanvas-wrap.drawing{box-shadow:0 0 0 2px var(--tint-primary-border) inset}.map-chuyen{cursor:pointer;-webkit-user-select:none;user-select:none;z-index:2;text-align:center;box-sizing:border-box;border:2px solid #ffffffd9;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:1px;padding:2px 4px;transition:box-shadow .15s,transform .15s;display:flex;position:absolute;box-shadow:0 2px 8px #00000059}.mapcanvas-wrap.drawing .map-chuyen{cursor:grab}.mapcanvas-wrap.drawing .map-chuyen:active{cursor:grabbing;z-index:6}.map-chuyen.running{background:linear-gradient(150deg, #34d17a, var(--green))}.map-chuyen.stopped{background:linear-gradient(150deg,#7c8697,#6b7280)}.map-chuyen.highlighted{box-shadow:0 0 0 3px var(--tint-primary-border), 0 2px 10px #0006;z-index:7;transform:translate(-50%,-50%)scale(1.05)}.map-chuyen .chuyen-name{color:#fff;text-shadow:0 1px 2px #00000080;font-size:10.5px;font-weight:700;line-height:1.15}.map-chuyen .chuyen-status{color:#ffffffd9;font-size:9px}.map-chuyen .chuyen-del{background:var(--red);color:#fff;text-align:center;cursor:pointer;border:2px solid var(--bg);border-radius:50%;width:18px;height:18px;font-size:10px;line-height:18px;position:absolute;top:-8px;right:-8px}.map-side-panel{flex-direction:column;gap:14px;display:flex}.map-side-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);overflow:hidden}.map-side-head{border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items:center;padding:11px 14px;font-size:12.5px;font-weight:700;display:flex}.map-side-head .cnt{color:var(--text-tertiary);font-weight:400}.map-side-search{border-bottom:1px solid var(--border-soft);padding:8px 10px}.map-side-search input{background:var(--surface-2);border:1px solid var(--border);width:100%;color:var(--text-primary);border-radius:6px;padding:6px 8px;font-size:12px}.map-side-list{max-height:260px;overflow-y:auto}.map-side-row{border-bottom:1px solid var(--border-soft);cursor:pointer;justify-content:space-between;align-items:center;gap:6px;padding:8px 14px;font-size:12.5px;display:flex}.map-side-row:last-child{border-bottom:none}.map-side-row:hover{background:var(--surface-2)}.map-side-row.active{background:var(--tint-primary-soft)}.map-side-row .sr-name{color:var(--text-primary);font-weight:600}.map-side-row .sr-sub{color:var(--text-tertiary);font-size:11px}.map-popover-backdrop{z-index:100;background:var(--overlay);position:fixed;inset:0}.map-popover{z-index:101;background:var(--surface-2);border:1px solid var(--border);width:480px;max-width:92vw;max-height:86vh;box-shadow:var(--shadow-modal);border-radius:10px;padding:16px;font-size:13.5px;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.map-popover .pop-head{justify-content:space-between;align-items:flex-start;gap:6px;margin-bottom:10px;display:flex}.map-popover .pop-name{margin-bottom:2px;font-size:16px;font-weight:700}.map-popover .pop-status{color:var(--text-tertiary);font-size:12.5px}.map-popover .pop-kehoach-title{border-top:1px solid var(--border-soft);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.03em;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px;margin-top:14px;padding-top:12px;font-size:11.5px;font-weight:700;display:flex}.map-popover .pop-kehoach-title .hint{text-transform:none;letter-spacing:0;font-size:11px;font-weight:400}.map-popover .pop-log-title{border-top:1px solid var(--border-soft);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.03em;align-items:center;gap:6px;margin-top:14px;padding-top:12px;font-size:11.5px;font-weight:700;display:flex}.map-popover .pop-log-list{flex-direction:column;gap:9px;max-height:170px;margin-top:8px;display:flex;overflow-y:auto}.map-popover .pop-log-row{align-items:flex-start;gap:8px;display:flex}.map-popover .pop-log-icon{opacity:.8;flex-shrink:0;font-size:12.5px}.map-popover .pop-log-main{color:var(--text-primary);font-size:13px}.map-popover .pop-log-meta{color:var(--text-tertiary);flex-wrap:wrap;gap:6px;margin-top:3px;font-size:11.5px;display:flex}.map-popover .pop-log-tb{color:var(--amber);margin-top:3px;font-size:11.5px}.map-popover .pop-log-empty{color:var(--text-tertiary);font-size:13px;font-style:italic}.map-popover .pop-kh-deck{flex-direction:column;gap:7px;margin-top:8px;display:flex}.map-popover .pop-kh-card{border:1px solid var(--border-soft);background:var(--surface);cursor:default;border-radius:9px;padding:9px 11px;transition:opacity .15s,border-color .15s}.map-popover .pop-kh-card.dim{opacity:.65}.map-popover .pop-kh-card.active{opacity:1;border-color:var(--tint-primary-border);background:var(--tint-primary-soft);box-shadow:0 0 0 1px var(--tint-primary-border) inset}.map-popover .pop-kh-card.done{opacity:.9}.map-popover .pop-kh-card.collapsed{cursor:pointer;padding:8px 11px}.map-popover .pop-kh-card.collapsed:hover{border-color:var(--border)}.map-popover .pop-kh-collapsed-row{justify-content:space-between;align-items:center;gap:6px;display:flex}.map-popover .pop-kh-collapsed-row .cname{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}.map-popover .pop-kh-collapsed-row .ctime{color:var(--text-tertiary);flex-shrink:0;font-size:10.5px}.map-popover .pop-kh-lenh{font-family:var(--font-mono,monospace);letter-spacing:.02em;justify-content:space-between;align-items:center;gap:6px;margin-bottom:2px;font-size:10.5px;font-weight:700;display:flex}.map-popover .pop-kh-lenh.xuat-ok{color:var(--green)}.map-popover .pop-kh-lenh.xuat-bad{color:var(--red)}.map-popover .pop-kh-chenlen-btn{font-family:var(--font-sans,inherit);letter-spacing:normal;background:var(--tint-primary-soft);color:var(--primary);border:1px solid var(--tint-primary-border);cursor:pointer;border-radius:20px;flex-shrink:0;align-items:center;gap:3px;padding:2px 7px;font-size:10.5px;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.map-popover .pop-kh-chenlen-btn:hover{border-color:var(--primary)}.map-popover .pop-kh-chenlen-btn:disabled{opacity:.45;cursor:not-allowed}.map-popover .pop-kh-chenlen-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.map-popover .pop-kh-top{align-items:baseline;gap:8px;display:flex}.map-popover .pop-kh-sp{min-width:0;color:var(--text-primary);-webkit-line-clamp:2;-webkit-box-orient:vertical;flex:1;font-size:13px;font-weight:700;line-height:1.3;display:-webkit-box;overflow:hidden}.map-popover .pop-kh-sl{color:var(--text-secondary);white-space:nowrap;flex-shrink:0;font-size:11.5px;font-weight:700}.map-popover .pop-kh-meta{align-items:center;gap:6px;margin-top:3px;display:flex}.map-popover .pop-kh-card .badge{flex-shrink:0;padding:1px 7px;font-size:10.5px}.map-popover .pop-kh-sub{min-width:0;color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:11px;overflow:hidden}.map-popover .pop-kh-nvl{cursor:pointer;border-radius:6px;margin-top:6px;padding:4px 8px;font-size:11px}.map-popover .pop-kh-nvl.ok{background:var(--tint-green);color:var(--green)}.map-popover .pop-kh-nvl.warn{background:var(--tint-amber);color:var(--amber)}.map-popover .pop-kh-nvl.bad{background:var(--tint-red);color:var(--red)}.map-popover .pop-kh-btnrow{grid-template-columns:repeat(4,1fr);gap:6px;margin-top:8px;display:grid}.map-popover .pop-kh-ibtn{text-align:center;border:1px solid var(--border);background:var(--surface-2);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;min-height:52px;padding:12px 0;font-size:15px;line-height:1;display:flex}.map-popover .pop-kh-ibtn:disabled{opacity:.35;cursor:not-allowed}.map-popover .pop-kh-ibtn.i-stop{background:var(--tint-gray);color:var(--text-secondary);border-color:var(--border)}.map-popover .pop-kh-ibtn.i-run{background:var(--tint-green);color:var(--green);border-color:#22c55e4d}.map-popover .pop-kh-ibtn.i-end{background:var(--tint-primary);color:var(--primary);border-color:var(--tint-primary-border)}.map-popover .pop-kh-ibtn.i-team{background:var(--tint-orange);color:var(--orange);border-color:var(--tint-orange-border)}.map-popover .pop-kh-ibtn-wide{cursor:pointer;background:var(--tint-red);width:100%;min-height:52px;color:var(--red);border:1px solid var(--tint-red-border);border-radius:8px;justify-content:center;align-items:center;gap:6px;margin-top:6px;padding:12px 0;font-size:14px;font-weight:700;display:flex}.map-popover .pop-kh-ibtn-wide:disabled{opacity:.35;cursor:not-allowed}.map-popover-backdrop .modal-overlay{z-index:150}.kpi-grid{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;display:grid}@media (max-width:900px){.kpi-grid{grid-template-columns:repeat(2,1fr)}}.kpi-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:14px 16px}.kpi-card .kpi-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);align-items:center;gap:6px;margin-bottom:8px;font-size:11px;font-weight:600;display:flex}.kpi-card .kpi-value{font-variant-numeric:tabular-nums;font-size:24px;font-weight:700}.kpi-card .kpi-value.red{color:var(--red)}.kpi-card .kpi-value.amber{color:var(--amber)}.kpi-card .kpi-sub{color:var(--text-tertiary);margin-top:4px;font-size:11.5px}.rl-wrap{grid-template-columns:1fr 1fr;gap:16px;margin-top:18px;display:grid}@media (max-width:900px){.rl-wrap{grid-template-columns:1fr}}.rl-col{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius);max-height:420px;padding:12px;overflow-y:auto}.rl-col .rl-head{color:var(--text-primary);align-items:center;gap:6px;margin-bottom:8px;font-size:12.5px;font-weight:600;display:flex}.rl-col .rl-head .cnt{color:var(--text-tertiary);background:#ffffff14;border-radius:9px;padding:1px 7px;font-size:10.5px}.rl-row{border-bottom:1px solid var(--border-soft);border-radius:6px;flex-direction:column;gap:3px;padding:8px 6px;display:flex}.rl-row:last-child{border-bottom:none}.rl-row.clickable{cursor:pointer}.rl-row.clickable:hover{background:var(--surface)}.rl-row .rl-note{font-size:11px}.rl-row .rl-note.tinh{color:var(--green)}.rl-row .rl-note.chua{color:var(--text-tertiary)}.rl-row .rl-main{color:var(--text-primary);font-size:12.5px}.rl-row .rl-sub{color:var(--text-tertiary);flex-wrap:wrap;gap:10px;font-size:11px;display:flex}.rl-group-body{padding-left:10px}.tt-pick-table{border:1px solid var(--border-soft);border-radius:6px;max-height:260px;overflow-y:auto}.tt-pick-table table{border-collapse:collapse;width:100%}.tt-pick-table th,.tt-pick-table td{border-bottom:1px solid var(--border-soft);text-align:left;padding:7px 10px;font-size:12px}.tt-pick-table th{background:var(--surface-2);color:var(--text-tertiary);font-weight:600;position:sticky;top:0}.tt-summary-grid{grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px;display:grid}@media (max-width:900px){.tt-summary-grid{grid-template-columns:repeat(2,1fr)}}.tt-summary-tile{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:8px;padding:10px 12px}.tt-summary-tile .lbl{color:var(--text-tertiary);font-size:10.5px}.tt-summary-tile .val{margin-top:3px;font-family:monospace;font-size:15px;font-weight:700}@media print{.no-print{display:none!important}.print-sheet{box-shadow:none!important;border:none!important;max-width:none!important;margin:0!important;padding:0!important}[data-region=sidebar],[data-region=header]{display:none!important}}@page{size:A4;margin:1cm 1cm 1cm 1.5cm}.print-sheet{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);max-width:780px;margin:0 auto;padding:32px}.print-sheet h2{text-align:center;margin-bottom:4px}.print-sheet .print-sub{text-align:center;color:var(--text-tertiary);margin-bottom:20px}.print-sheet .print-row{border-bottom:1px dashed var(--border-soft);justify-content:space-between;gap:12px;padding:6px 0;font-size:13px;display:flex}.print-sheet .print-row .k{color:var(--text-tertiary)}.print-sheet .print-row .v{font-weight:600}.print-qr{justify-content:center;margin:20px 0;display:flex}.print-qr img{width:120px;height:120px}.print-sign-grid{text-align:center;grid-template-columns:1fr 1fr;gap:24px;margin-top:40px;font-size:13px;display:grid}.sla-ok{color:var(--green);font-weight:600}.sla-warn{color:var(--amber);font-weight:600}.ma-lenh-da-xuat-kho{color:var(--green)}.sla-late{color:var(--red);font-weight:600}.clickable-row{cursor:pointer}.clickable-row:hover{background:var(--surface-2)}.chat-shell{height:calc(100vh - 65px);min-height:420px;display:flex}.chat-kenh-sidebar{background:var(--surface);border-right:1px solid var(--border-soft);flex-direction:column;flex-shrink:0;width:264px;height:100%;display:flex}.chat-kenh-back-all{color:var(--text-secondary);border-bottom:1px solid var(--border-soft);flex-shrink:0;padding:10px 14px;font-size:12.5px;font-weight:600;text-decoration:none;display:block}.chat-kenh-back-all:hover{color:var(--primary);background:var(--hover-bg)}.chat-kenh-scroll{flex:1;padding:10px 8px 16px;overflow-y:auto}.chat-kenh-group{margin-bottom:4px}.chat-kenh-group-head{letter-spacing:.06em;text-transform:uppercase;color:var(--text-tertiary);align-items:center;gap:6px;padding:9px 8px 5px;font-size:10.5px;font-weight:700;display:flex}.chat-kenh-item{text-align:left;width:100%;color:var(--text-secondary);background:0 0;border:none;border-radius:7px;align-items:center;gap:9px;margin-bottom:1px;padding:7px 9px;font-size:13px;display:flex}.chat-kenh-item .hash{color:var(--text-tertiary);text-align:center;flex-shrink:0;width:14px;font-size:13px}.chat-kenh-item .name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.chat-kenh-item:hover{background:var(--hover-bg);color:var(--text-primary)}.chat-kenh-item.active{background:var(--tint-primary);color:var(--text-primary);font-weight:600}.chat-kenh-item.active .hash{color:var(--accent)}.chat-kenh-add{width:100%;color:var(--text-tertiary);text-align:left;background:0 0;border:none;border-radius:7px;align-items:center;gap:9px;padding:7px 9px;font-size:12.5px;display:flex}.chat-kenh-add:hover{color:var(--text-secondary);background:var(--hover-bg)}.chat-kenh-add .hash{text-align:center;width:14px}.chat-unread{color:#fff;background:var(--primary);border-radius:9px;flex-shrink:0;padding:1px 6px;font-size:10px;font-weight:700}.chat-main-col{flex-direction:column;flex:1;min-width:0;height:100%;display:flex}.chat-header{border-bottom:1px solid var(--border-soft);flex-shrink:0;align-items:center;gap:12px;padding:13px 22px;display:flex}.chat-header .hash-big{color:var(--text-tertiary);font-size:18px}.chat-header h1{font-size:15px;font-weight:700}.chat-header .sub{color:var(--text-tertiary);margin-top:1px;font-size:11.5px}.chat-header .spacer{flex:1}.chat-thread-banner{background:var(--tint-primary-soft);border-bottom:1px solid var(--tint-primary-border);color:var(--text-secondary);flex-shrink:0;align-items:center;gap:8px;padding:8px 22px;font-size:12px;display:flex}.chat-thread-banner b{color:var(--text-primary)}.chat-thread-banner a{color:var(--accent);margin-left:auto}.chat-feed{flex-direction:column;flex:1;gap:2px;padding:18px 22px 8px;display:flex;overflow-y:auto}.chat-day-sep{color:var(--text-tertiary);align-items:center;gap:10px;margin:14px 0 10px;font-size:11px;display:flex}.chat-day-sep:before,.chat-day-sep:after{content:"";background:var(--border-soft);flex:1;height:1px}.chat-msg{border-radius:8px;gap:11px;padding:5px 8px;display:flex;position:relative}.chat-msg:hover{background:var(--hover-bg)}.chat-msg:hover .chat-msg-reply-btn{display:inline-flex}.chat-msg .chat-avatar{color:#fff;background:var(--primary);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;margin-top:2px;font-size:12px;font-weight:700;display:flex;overflow:hidden}.chat-msg .chat-avatar img{object-fit:cover;width:100%;height:100%}.chat-msg .chat-body{flex:1;min-width:0}.chat-msg .chat-row1{align-items:baseline;gap:8px;display:flex}.chat-msg .chat-sender{font-size:13px;font-weight:700}.chat-msg .chat-time{color:var(--text-tertiary);font-size:10.5px}.chat-msg .chat-text{color:var(--text-secondary);white-space:pre-wrap;word-break:break-word;margin-top:2px;font-size:13.5px;line-height:1.55}.chat-mention-tag{color:var(--accent);background:var(--tint-primary-soft);border-radius:5px;padding:0 4px;font-weight:600}.chat-msg-reply-btn{background:var(--surface);border:1px solid var(--border);color:var(--text-tertiary);border-radius:6px;padding:3px 8px;font-size:11px;display:none;position:absolute;top:4px;right:8px}.chat-msg-reply-btn:hover{color:var(--text-primary);border-color:var(--border-strong)}.chat-reply-quote{background:var(--surface-2);border-left:2px solid var(--primary);color:var(--text-tertiary);cursor:pointer;border-radius:4px;align-items:center;gap:6px;max-width:380px;margin-top:5px;padding:5px 9px;font-size:11.5px;display:flex}.chat-reply-quote b{color:var(--text-secondary)}.chat-attach-chip{background:var(--surface-2);border:1px solid var(--border);cursor:pointer;border-radius:8px;align-items:center;gap:7px;max-width:340px;margin-top:7px;padding:7px 11px;font-size:12px;display:inline-flex}.chat-attach-chip:hover{border-color:var(--primary);background:var(--tint-primary-soft)}.chat-attach-chip .meta .t1{color:var(--text-primary);font-size:12px;font-weight:700}.chat-attach-chip .meta .t2{color:var(--text-tertiary);font-size:10.5px}.chat-media-img{border-radius:8px;max-width:320px;max-height:260px;margin-top:7px;display:block}.chat-media-file{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;margin-top:7px;padding:8px 12px;font-size:12.5px;display:inline-flex}.chat-media-audio{max-width:320px;margin-top:7px}.chat-task-card{border:1px solid var(--tint-amber);background:#f59e0b0f;border-radius:9px;max-width:420px;margin-top:8px;padding:10px 13px}.chat-task-card .head{color:var(--amber);text-transform:uppercase;letter-spacing:.03em;align-items:center;gap:7px;font-size:11.5px;font-weight:700;display:flex}.chat-task-card .who-when{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;margin-top:7px;display:flex}.chat-task-card .han{color:var(--text-tertiary);margin-top:7px;font-size:11px}.chat-task-card .han.warn{color:var(--red)}.chat-sla-pill{white-space:nowrap;border-radius:20px;align-items:center;gap:5px;padding:2.5px 9px;font-size:10.5px;font-weight:700;display:inline-flex}.chat-sla-pill.dang-lam{background:var(--tint-primary);color:var(--primary)}.chat-sla-pill.qua-han{background:var(--tint-red);color:var(--red)}.chat-sla-pill.hoan-thanh{background:var(--tint-green);color:var(--green)}.chat-sla-pill .dot{background:currentColor;border-radius:50%;width:5px;height:5px}.chat-sys-msg{background:var(--hover-bg);border:1px dashed var(--border);color:var(--text-tertiary);border-radius:8px;align-items:center;gap:10px;margin:4px 8px;padding:8px 12px;font-size:12px;display:flex}.chat-composer-wrap{flex-shrink:0;padding:12px 22px 16px;position:relative}.chat-composer{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:8px;padding:10px 12px 10px 14px;display:flex}.chat-composer:focus-within{border-color:var(--primary)}.chat-composer textarea{resize:none;width:100%;color:var(--text-primary);background:0 0;border:none;outline:none;min-height:22px;max-height:100px;font-family:inherit;font-size:13.5px;line-height:1.5}.chat-attach-preview{background:var(--tint-primary-soft);border:1px solid var(--tint-primary-border);color:var(--text-secondary);border-radius:8px;align-items:center;gap:8px;padding:6px 9px;font-size:12px;display:flex}.chat-attach-preview .x{color:var(--text-tertiary);background:0 0;border:none;margin-left:auto}.chat-composer-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chat-composer-toolbar .spacer{flex:1}.chat-icon-btn{width:30px;height:30px;color:var(--text-tertiary);background:0 0;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;font-size:14px;display:flex}.chat-icon-btn:hover{background:var(--surface);color:var(--text-primary);border-color:var(--border)}.chat-icon-btn:disabled{opacity:.4}.chat-toggle-task{color:var(--text-tertiary);border:1px solid var(--border);background:0 0;border-radius:20px;align-items:center;gap:6px;padding:5px 10px;font-size:11.5px;display:inline-flex}.chat-toggle-task:hover{color:var(--text-secondary);border-color:var(--border-strong)}.chat-toggle-task.on{color:var(--amber);background:#f59e0b14;border-color:#f59e0b66}.chat-send-btn{background:var(--primary);color:#fff;border:none;border-radius:9px;justify-content:center;align-items:center;width:32px;height:32px;font-size:14px;display:flex}.chat-send-btn:hover{background:var(--primary-hover)}.chat-send-btn:disabled{opacity:.5}.chat-task-fields{border-top:1px solid var(--border-soft);flex-wrap:wrap;align-items:center;gap:10px;padding-top:8px;display:flex}.chat-task-fields label{color:var(--text-tertiary);align-items:center;gap:6px;font-size:11px;display:flex}.chat-task-fields select,.chat-task-fields input{background:var(--surface);border:1px solid var(--border);color:var(--text-primary);border-radius:6px;outline:none;padding:5px 9px;font-family:inherit;font-size:12px}.chat-mention-pop{z-index:10;background:var(--surface);border:1px solid var(--border);width:240px;max-height:260px;box-shadow:var(--shadow-modal);border-radius:10px;margin-bottom:8px;position:absolute;bottom:100%;left:22px;overflow-y:auto}.chat-mention-pop .hd{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em;padding:8px 12px 4px;font-size:10.5px}.chat-mention-opt{text-align:left;width:100%;color:var(--text-primary);background:0 0;border:none;align-items:center;gap:9px;padding:7px 12px;font-size:12.5px;display:flex}.chat-mention-opt:hover{background:var(--tint-primary)}.chat-mention-opt .role{color:var(--text-tertiary);margin-left:auto;font-size:10px}.chat-task-panel{background:var(--surface);border-left:1px solid var(--border-soft);flex-direction:column;flex-shrink:0;width:300px;height:100%;display:flex}.chat-task-panel-head{border-bottom:1px solid var(--border-soft);padding:15px 16px 12px}.chat-task-panel-head h2{font-size:13px;font-weight:700}.chat-task-panel-head .sub{color:var(--text-tertiary);margin-top:2px;font-size:11px}.chat-tp-tabs{gap:4px;padding:10px 12px 0;display:flex}.chat-tp-tab{color:var(--text-tertiary);background:0 0;border:1px solid #0000;border-radius:20px;padding:5px 10px;font-size:11px}.chat-tp-tab.active{background:var(--tint-primary);color:var(--text-primary)}.chat-tp-list{flex-direction:column;flex:1;gap:8px;padding:10px 12px 16px;display:flex;overflow-y:auto}.chat-tp-card{background:var(--surface-2);border:1px solid var(--border-soft);cursor:pointer;border-radius:9px;padding:10px 12px}.chat-tp-card.done{opacity:.6}.chat-tp-card .txt{color:var(--text-primary);font-size:12px;line-height:1.45}.chat-tp-card .meta-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;margin-top:8px;display:flex}.chat-tp-card .chan{color:var(--text-tertiary);font-size:10px}.chat-tp-card .han{align-items:center;gap:5px;margin-top:6px;font-size:10.5px;display:flex}.chat-tp-card .han.warn{color:var(--red)}.chat-tp-card .han.ok{color:var(--text-tertiary)}.chat-tp-card .chk{margin-top:8px}@media (max-width:1180px){.chat-task-panel{display:none}}@media (max-width:860px){.chat-kenh-sidebar{display:none}}.cccd-mask{align-items:center;gap:6px;display:inline-flex}.cccd-mask .icon-btn{color:var(--amber)}.cccd-mask .icon-btn:hover{color:var(--amber);border-color:var(--tint-amber);background:var(--tint-amber)}.cccd-mask .icon-label-btn .icon-label-circle{color:var(--amber);background:var(--tint-amber);border-color:var(--tint-amber)}.cccd-mask .icon-label-btn:hover .icon-label-circle{color:var(--amber);border-color:var(--tint-amber);background:var(--tint-amber)}.cccd-mask .icon-label-btn:hover .icon-label-text{color:var(--amber)}.cccd-reveal{letter-spacing:.04em;font-variant-numeric:tabular-nums;color:var(--text-primary);margin:6px 0 2px;font-size:22px;font-weight:700}.header-bell{position:relative}.header-bell-btn{border:1px solid var(--border);background:var(--surface-2);cursor:pointer;width:30px;height:30px;color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;font-size:15px;display:flex;position:relative}.header-bell-btn:hover{background:var(--tint-primary)}.header-bell-badge{position:absolute;top:-3px;right:-3px}.header-bell-dropdown{background:var(--surface);border:1px solid var(--border);z-index:40;border-radius:10px;width:340px;max-height:420px;padding:6px;position:absolute;top:38px;right:0;overflow-y:auto;box-shadow:0 10px 30px #0000002e}.header-bell-head{color:var(--text-secondary);padding:8px 10px 6px;font-size:12px;font-weight:700}.header-bell-item{text-align:left;cursor:pointer;width:100%;color:var(--text-primary);background:0 0;border:none;border-radius:8px;padding:9px 10px;font-size:12px;display:block}.header-bell-item:hover{background:var(--surface-2)}.header-bell-item.unread{background:var(--tint-primary)}.header-bell-item .t1{font-weight:600}.header-bell-item .t2{color:var(--text-tertiary);margin-top:2px;font-size:11px}.header-bell-foot{text-align:center;color:var(--primary);cursor:pointer;padding:8px;font-size:11.5px}.header-bell-empty{text-align:center;color:var(--text-tertiary);padding:24px 10px;font-size:12px}.canhan-wrap{flex-wrap:wrap;align-items:flex-start;gap:20px;display:flex}.canhan-card{background:var(--surface);border:1px solid var(--border-soft);text-align:center;border-radius:12px;flex-shrink:0;width:260px;padding:22px 18px}.canhan-avatar-wrap{width:72px;margin:0 auto 12px;position:relative}.canhan-avatar{background:var(--tint-primary);width:72px;height:72px;color:var(--primary);border-radius:50%;justify-content:center;align-items:center;font-size:24px;font-weight:700;display:flex;overflow:hidden}.canhan-avatar img{object-fit:cover;width:100%;height:100%}.canhan-avatar-edit{background:var(--primary);border:2px solid var(--surface);color:#fff;cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;display:flex;position:absolute;bottom:-2px;right:-2px}.canhan-avatar-edit:hover{background:var(--primary-hover)}.canhan-avatar-edit input[type=file]{display:none}.canhan-name{font-size:15.5px;font-weight:700}.canhan-role{color:var(--text-tertiary);margin-top:3px;font-size:11.5px}.canhan-status{color:var(--green);align-items:center;gap:5px;margin-top:10px;font-size:11px;font-weight:600;display:inline-flex}.canhan-status .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.canhan-actions{justify-content:center;gap:8px;margin-top:14px;display:flex}.canhan-kv{text-align:left;border-top:1px solid var(--border-soft);margin-top:16px;padding-top:12px}.canhan-kv .row{justify-content:space-between;gap:8px;padding:4px 0;font-size:12px;display:flex}.canhan-kv .lbl{color:var(--text-tertiary)}.canhan-kv .val{color:var(--text-primary);text-align:right;font-weight:500}.canhan-main{flex-direction:column;flex:1;gap:22px;min-width:280px;display:flex}.canhan-payroll-row{background:var(--surface);border:1px solid var(--border-soft);cursor:pointer;border-radius:9px;justify-content:space-between;align-items:center;margin-bottom:8px;padding:12px 14px;display:flex}.canhan-payroll-row:hover{border-color:var(--border-strong)}.canhan-payroll-row .ky{font-size:13px;font-weight:600}.canhan-payroll-row .sub{color:var(--text-tertiary);margin-top:2px;font-size:11px}.canhan-payroll-row .amt{color:var(--primary);font-size:13.5px;font-weight:700}.formula-group{margin-bottom:26px}.formula-group-title{color:var(--text-primary);margin-bottom:10px;font-size:13px;font-weight:700}.formula-group-title .count{color:var(--text-tertiary);font-weight:500}.formula-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:10px;margin-bottom:14px;padding:16px 18px}.formula-card-warning{color:var(--amber);background:var(--tint-amber);border:1px solid var(--tint-amber-border,var(--border));border-radius:8px;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;font-size:12px;font-weight:600;display:flex}.formula-card-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;display:flex}.formula-card-name{font-family:var(--font-mono,monospace);color:var(--text-primary);font-size:14px;font-weight:700}.formula-card-loc{font-family:var(--font-mono,monospace);color:var(--text-tertiary);font-size:11px}.formula-card-desc{color:var(--text-secondary);margin-top:6px;font-size:12.5px}.formula-card-why{color:var(--text-tertiary);margin-top:4px;font-size:12px}.formula-card-why b{color:var(--text-secondary)}.formula-code-wrap{margin-top:12px;position:relative}.formula-code-wrap.collapsed{max-height:320px;overflow:hidden}.formula-code-wrap.collapsed:after{content:"";background:linear-gradient(to bottom, transparent, var(--surface));pointer-events:none;height:60px;position:absolute;bottom:0;left:0;right:0}.formula-code-block{border:1px solid var(--border-soft);border-radius:8px;font-size:12px;overflow:auto}.formula-code-block pre{margin:0;padding:12px 14px}.formula-code-actions{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.formula-code-block .shiki,.formula-code-block .shiki span{color:var(--shiki-dark)}.formula-code-block pre.shiki{background-color:var(--shiki-dark-bg)!important}[data-theme=light] .formula-code-block .shiki,[data-theme=light] .formula-code-block .shiki span{color:var(--shiki-light)}[data-theme=light] .formula-code-block pre.shiki{background-color:var(--shiki-light-bg)!important}
