:root{
  --nav:#07111f;--nav2:#111d2d;--ink:#172033;--muted:#6f7f90;--line:#dce4ec;--bg:#f4f7fa;
  --blue:#2b68a6;--green:#23734b;--yellow:#946814;--red:#a23343;--gold:#c9a64b;--sidebar:265px;
  --shadow:0 18px 50px rgba(13,33,55,.15);--radius:16px;--topbar:74px;
}
*{box-sizing:border-box}html{font-family:Inter,"Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;background:var(--bg);color:var(--ink)}body{margin:0;min-height:100vh;background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}a{color:inherit}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
[hidden]{display:none!important}.is-booting{overflow:hidden}.boot-screen,.login-screen{position:fixed;inset:0;z-index:1000;background:radial-gradient(circle at 20% 10%,#1b2c42 0,#07111f 48%,#03070d 100%);color:#fff;display:grid;place-items:center;padding:24px}.boot-card,.login-card{width:min(480px,100%);background:rgba(255,255,255,.98);color:var(--ink);border-radius:24px;padding:34px;box-shadow:0 30px 90px rgba(0,0,0,.38)}.boot-card{text-align:center}.boot-logo,.login-brand .logo{width:62px;height:62px;border-radius:18px;background:linear-gradient(145deg,#d4b55a,#8b6d22);color:#07111f;display:grid;place-items:center;font-size:2rem;font-weight:1000;margin:0 auto 16px}.boot-card h1{margin:0;font-size:1.45rem}.boot-card p{color:var(--muted);margin:12px 0 18px}.boot-card small{color:var(--muted)}.boot-progress{height:5px;background:#e7edf3;border-radius:999px;overflow:hidden}.boot-progress span{display:block;width:45%;height:100%;background:var(--gold);animation:boot 1.2s ease-in-out infinite alternate}@keyframes boot{from{transform:translateX(-90%)}to{transform:translateX(220%)}}
.login-screen{grid-template-columns:minmax(220px,360px) minmax(360px,520px);gap:8vw}.login-brand{display:flex;flex-direction:column;align-items:flex-start}.login-brand .logo{margin:0 0 18px}.login-brand b{font-size:2rem}.login-brand span{color:#aab7c6;margin-top:6px}.login-card h1{font-size:1.45rem;margin:13px 0 8px}.login-card p{color:var(--muted);line-height:1.65}.release-pill{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;background:#efe6ca;color:#6d561e;font-size:.65rem;font-weight:900;letter-spacing:.04em}.auth-status{border:1px solid var(--line);background:#f7f9fb;border-radius:12px;padding:11px 12px;font-size:.76rem;margin:16px 0}.auth-status.ok{background:#eaf7ef;color:var(--green);border-color:#cae7d6}.auth-status.error{background:#fff0f2;color:var(--red);border-color:#efc5cb}.primary-btn,.secondary-btn{width:100%;border:0;border-radius:12px;padding:12px 14px;font-weight:900;margin-top:10px}.primary-btn{background:var(--nav);color:#fff}.secondary-btn{background:#edf2f7;color:#31475e}.login-field{display:grid;gap:7px;font-size:.74rem;font-weight:800;margin:12px 0}.login-field input,.login-field select{width:100%;border:1px solid var(--line);background:#fff;border-radius:11px;padding:11px 12px;color:var(--ink)}
.staging-boundary{display:grid;gap:5px;margin-top:16px;padding:14px;border:1px solid #d7e2ec;border-radius:14px;background:#f7fafc;color:#30465a;line-height:1.55}.staging-boundary b{font-size:.78rem;color:var(--ink)}.staging-boundary span{font-size:.7rem}.staging-boundary small{font-size:.63rem;color:var(--muted)}
.app{min-height:100vh}.sidebar{position:fixed;left:0;top:0;bottom:0;width:var(--sidebar);z-index:80;background:linear-gradient(180deg,var(--nav),#0d1a2a);color:#fff;display:flex;flex-direction:column;transition:width .2s,transform .2s}.side-brand{height:var(--topbar);display:flex;align-items:center;gap:11px;padding:0 18px;border-bottom:1px solid rgba(255,255,255,.09)}.side-brand>span{width:38px;height:38px;border-radius:11px;background:var(--gold);color:var(--nav);display:grid;place-items:center;font-weight:1000}.side-brand b,.side-brand small{display:block}.side-brand b{font-size:.9rem}.side-brand small{font-size:.61rem;color:#9fb0c3;margin-top:2px}.sidebar nav{padding:10px;overflow:auto;flex:1}.nav-section{padding:12px 10px 6px;color:#8295a9;font-size:.59rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.sidebar nav button{width:100%;display:flex;align-items:center;gap:11px;border:0;background:transparent;color:#b9c6d3;padding:10px 11px;border-radius:10px;text-align:left;font-size:.75rem;font-weight:800;margin:2px 0}.sidebar nav button i{font-style:normal;width:22px;text-align:center;font-size:.9rem}.sidebar nav button:hover,.sidebar nav button.active{background:rgba(255,255,255,.1);color:#fff}.sidebar nav button.active{box-shadow:inset 3px 0 var(--gold)}.side-bottom{padding:13px;border-top:1px solid rgba(255,255,255,.09);display:grid;gap:7px}.side-bottom button{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.05);color:#eaf0f5;border-radius:9px;padding:9px;font-size:.7rem;font-weight:850}.side-bottom .danger-outline{border-color:rgba(239,133,146,.45);color:#ffbac3}.side-bottom small{font-size:.57rem;color:#7f91a4;text-align:center}.main{margin-left:var(--sidebar);min-height:100vh;transition:margin-left .2s}.topbar{height:var(--topbar);position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 22px}.mobile-menu{display:none}.desktop-collapse,.mobile-menu{border:0;background:#edf2f7;border-radius:10px;width:38px;height:38px;color:#304a65;font-weight:1000}.top-title{flex:1}.top-title small{display:block;color:var(--muted);font-size:.62rem}.top-title h1{margin:3px 0 0;font-size:1.2rem}.top-actions{display:flex;align-items:center;gap:10px}.mode-chip{border-radius:999px;padding:7px 10px;background:#e8edf2;color:#485a6c;font-size:.62rem;font-weight:900}.mode-chip.local{background:#fff1cc;color:#715215}.mode-chip.cloud{background:#e5f6ed;color:#236943}.mode-chip.blocked{background:#ffe8eb;color:#923643}.user-chip{border:0;background:#f0f4f8;border-radius:12px;padding:6px 9px;display:flex;align-items:center;gap:8px;text-align:left}.user-chip>span{width:32px;height:32px;border-radius:9px;background:var(--nav);color:#fff;display:grid;place-items:center;font-weight:900}.user-chip b,.user-chip small{display:block}.user-chip b{font-size:.69rem}.user-chip small{font-size:.56rem;color:var(--muted)}.system-banner{margin:12px 22px 0;border:1px solid #efd18f;background:#fff4d7;color:#74531d;border-radius:12px;padding:10px 13px;font-size:.72rem}.system-banner.error{background:#fff0f2;color:var(--red);border-color:#edc5ca}.content{padding:20px 22px 40px;max-width:1800px;margin:auto}.page-enter{animation:enter .18s ease-out}@keyframes enter{from{opacity:.25;transform:translateY(4px)}to{opacity:1;transform:none}}
body.sidebar-collapsed{--sidebar:78px}body.sidebar-collapsed .side-brand div,body.sidebar-collapsed .sidebar nav button span,body.sidebar-collapsed .nav-section,body.sidebar-collapsed .side-bottom small{display:none}body.sidebar-collapsed .side-brand{padding:0 20px}body.sidebar-collapsed .sidebar nav button{justify-content:center;padding:11px}body.sidebar-collapsed .side-bottom button{font-size:0}body.sidebar-collapsed .side-bottom button:before{font-size:.85rem}body.sidebar-collapsed #lockButton:before{content:'🔒'}body.sidebar-collapsed #signOutButton:before{content:'↪'}
.notice,.info-banner,.warning-banner,.danger-banner,.success-banner{border-radius:14px;padding:12px 15px;font-size:.78rem;line-height:1.55;margin-bottom:15px}.notice,.info-banner{border:1px solid #c9dbed;background:#eef6ff;color:#315b84}.warning-banner{border:1px solid #efd18f;background:#fff5dc;color:#75531c}.danger-banner{border:1px solid #edb9c1;background:#fff0f2;color:#932e3e}.success-banner{border:1px solid #bde1cb;background:#eaf8f0;color:#286f49}.banner-title{font-weight:950;display:block;margin-bottom:3px}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.stat-card,.money-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:0 8px 24px rgba(10,31,54,.04)}.stat-card small,.money-card small{display:block;color:var(--muted);font-size:.68rem}.stat-card strong,.money-card strong{display:block;font-size:1.7rem;margin:5px 0 2px}.stat-card span,.money-card span{font-size:.65rem;color:var(--muted)}.stat-card .danger,.money-card.alert strong{color:var(--red)}.stat-card .ok{color:var(--green)}.panel-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:14px;margin-top:14px}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px rgba(10,31,54,.04);overflow:hidden}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:15px 17px;border-bottom:1px solid var(--line)}.panel-head h2{font-size:.92rem;margin:0}.panel-head span{font-size:.65rem;color:var(--muted)}.panel-head button,.toolbar button,.action-button,.compact-button{border:0;background:var(--nav);color:#fff;border-radius:9px;padding:8px 11px;font-size:.68rem;font-weight:900}.action-button.secondary,.compact-button.secondary{background:#edf3f8;color:#2f5f91}.action-button.danger,.compact-button.danger{background:#ffecef;color:#993243}.action-button.warn,.compact-button.warn{background:#fff0cf;color:#76521d}.task-list{padding:4px 16px}.task{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.task:last-child{border-bottom:0}.task-time{width:58px;text-align:center}.task-time b,.task-time small,.task-main b,.task-main span{display:block}.task-time b{font-size:.75rem}.task-time small{color:var(--muted);font-size:.58rem}.task-main b{font-size:.78rem}.task-main span{color:var(--muted);font-size:.65rem;margin-top:3px}.link-btn{border:0;background:#edf4ff;color:#245f9e;border-radius:8px;padding:7px 9px;font-weight:900;font-size:.65rem}.badge{display:inline-flex;align-items:center;white-space:nowrap;padding:5px 8px;border-radius:999px;background:#eef2f6;color:#5e6d7c;font-size:.61rem;font-weight:900}.badge.done{background:#e8f7ef;color:#267048}.badge.active{background:#e9f2ff;color:#2b65a4}.badge.pending{background:#fff3d7;color:#8a5d17}.badge.danger{background:#ffe9ec;color:#a43241}.badge.dark{background:#e9edf2;color:#2e3d4e}.badge.warn{background:#fff0cf;color:#7c571b}.priority{font-size:.58rem;font-weight:900}.priority.URGENT{color:var(--red)}.priority.HIGH{color:#a26d09}
.toolbar{display:flex;align-items:center;gap:9px;margin-bottom:14px;flex-wrap:wrap}.toolbar input,.toolbar select{border:1px solid var(--line);border-radius:10px;background:#fff;padding:10px 11px;min-width:190px;color:var(--ink)}.toolbar .spacer{flex:1}.filter-tabs{display:flex;gap:7px;overflow:auto;padding-bottom:3px}.filter-tabs button{white-space:nowrap;border:1px solid var(--line);background:#fff;color:#4c6074;border-radius:999px;padding:7px 10px;font-size:.65rem;font-weight:900}.filter-tabs button.active{background:var(--nav);color:#fff;border-color:var(--nav)}.table-wrap{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:auto;box-shadow:0 8px 24px rgba(10,31,54,.04);max-width:100%}.data-table{width:100%;border-collapse:separate;border-spacing:0;min-width:860px}.data-table.compact{min-width:700px}.data-table.wide{min-width:1120px}.data-table th,.data-table td{padding:12px 13px;border-bottom:1px solid var(--line);text-align:left;font-size:.72rem;vertical-align:middle;background:#fff}.data-table th{color:#68798b;font-size:.63rem;background:#f8fafc;position:sticky;top:0;z-index:2}.data-table th:first-child,.data-table td:first-child{position:sticky;left:0;z-index:1}.data-table th:first-child{z-index:3}.data-table td:first-child{background:#fff}.data-table tr:last-child td{border-bottom:0}.data-table td b,.data-table td span{display:block}.data-table td span{font-size:.61rem;color:var(--muted);margin-top:3px}.table-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.table-note{font-size:.61rem;color:var(--muted)}
.flow-summary{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin-bottom:14px}.flow-node{position:relative;background:#fff;border:1px solid var(--line);border-radius:13px;padding:11px;text-align:center}.flow-node:not(:last-child):after{content:'→';position:absolute;right:-9px;top:50%;transform:translateY(-50%);z-index:2;color:#8fa0b2;font-weight:900}.flow-node b,.flow-node small{display:block}.flow-node b{font-size:.68rem}.flow-node small{color:var(--muted);font-size:.57rem;margin-top:3px}.kanban-shell{position:relative}.kanban{display:grid;gap:10px;overflow-x:auto;padding:2px 1px 10px;scrollbar-gutter:stable both-edges}.kanban.cols-2{grid-template-columns:repeat(2,minmax(260px,1fr))}.kanban.cols-3{grid-template-columns:repeat(3,minmax(250px,1fr))}.kanban.cols-4{grid-template-columns:repeat(4,minmax(240px,1fr))}.kanban.cols-5{grid-template-columns:repeat(5,minmax(235px,1fr))}.kanban-column{background:#eaf0f5;border:1px solid #d8e1ea;border-radius:15px;min-height:320px;overflow:hidden}.kanban-head{display:flex;justify-content:space-between;align-items:center;padding:12px 13px;background:#f8fafc;border-bottom:1px solid #d8e1ea;position:sticky;top:0}.kanban-head b{font-size:.72rem}.kanban-head span{width:24px;height:24px;border-radius:999px;background:#e2e9f0;display:grid;place-items:center;font-size:.61rem;font-weight:900}.kanban-body{padding:9px;display:grid;gap:8px}.case-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px;box-shadow:0 5px 14px rgba(14,37,61,.055)}.case-card.urgent{border-color:#e8a6af}.case-card h3{font-size:.75rem;margin:7px 0 4px}.case-card p{font-size:.63rem;color:var(--muted);line-height:1.45;margin:0}.case-alert{margin:8px 0 0;border-radius:9px;padding:8px;background:#fff0cf;color:#76521d;font-size:.61rem;font-weight:800}.case-alert.cancelled{background:#ffecef;color:#963341}.case-meta{display:flex;justify-content:space-between;gap:7px;align-items:center;margin-top:9px}.case-meta b{font-size:.66rem}.case-actions{display:flex;gap:6px;margin-top:9px}.case-actions button{flex:1;border:0;border-radius:8px;padding:7px;font-size:.62rem;font-weight:900}.case-actions .view{background:#edf3f8;color:#2f5f91}.case-actions .next{background:var(--nav);color:#fff}
.finance-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.money-card{padding:17px}.money-card strong{font-size:1.45rem}.subnav{display:flex;gap:7px;margin-bottom:13px;overflow:auto}.subnav button{white-space:nowrap;border:1px solid var(--line);background:#fff;color:#4d6073;border-radius:10px;padding:9px 11px;font-size:.66rem;font-weight:900}.subnav button.active{background:var(--nav);color:#fff}.kpi-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.metric{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px}.metric small,.metric strong,.metric span{display:block}.metric small{color:var(--muted);font-size:.61rem}.metric strong{font-size:1.25rem;margin:4px 0}.metric span{font-size:.6rem;color:var(--muted)}.progress{height:8px;background:#e8eef4;border-radius:999px;overflow:hidden;margin-top:9px}.progress span{display:block;height:100%;background:var(--blue);border-radius:999px}.card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.info-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px}.info-card h3{margin:0 0 7px;font-size:.79rem}.info-card p{margin:0;color:var(--muted);font-size:.64rem;line-height:1.5}.info-card .card-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:11px}.info-card .meta-list{display:grid;gap:5px;margin-top:8px}.meta-line{display:flex;justify-content:space-between;gap:10px;font-size:.62rem}.meta-line span:first-child{color:var(--muted)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;background:#8696a7}.status-dot.ok{background:#36a56a}.status-dot.warn{background:#d69b2b}.status-dot.danger{background:#d64d60}.alert-list{display:grid;gap:8px}.alert-item{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:10px;background:#fff}.alert-item i{font-style:normal}.alert-item b,.alert-item span{display:block}.alert-item b{font-size:.72rem}.alert-item span{font-size:.62rem;color:var(--muted);margin-top:2px}
.report-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.report-card{background:#fff;border:1px solid var(--line);border-radius:15px;overflow:hidden}.report-card h3{font-size:.82rem;margin:0;padding:14px 15px;border-bottom:1px solid var(--line)}.report-lines{padding:9px 15px}.report-line{display:flex;justify-content:space-between;gap:20px;padding:7px 0;border-bottom:1px dashed #e5ebf0;font-size:.68rem}.report-line:last-child{border-bottom:0}.report-line.total{font-weight:950;border-top:2px solid var(--line);border-bottom:0;margin-top:4px}.positive{color:var(--green)}.negative{color:var(--red)}
.flow-map{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px;overflow:auto}.map-row{display:flex;align-items:center;gap:8px;min-width:980px;margin:12px 0}.map-box{min-width:125px;padding:12px;border-radius:11px;text-align:center;font-size:.67rem;font-weight:900;border:1px solid var(--line);background:#f8fafc}.map-box.blue{background:#eaf3ff;border-color:#c9def7}.map-box.green{background:#eaf8f0;border-color:#c9e8d5}.map-box.yellow{background:#fff4d8;border-color:#ead6a6}.map-box.pink{background:#ffecef;border-color:#efc1c7}.map-arrow{font-weight:900;color:#8596a8}.module-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.module-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px}.module-card h3{margin:0 0 7px;font-size:.82rem}.module-card p{margin:0;color:var(--muted);font-size:.66rem;line-height:1.55}.module-card .status{display:inline-block;margin-top:10px;border-radius:999px;padding:5px 8px;font-size:.58rem;font-weight:900}.module-card .status.current{background:#e8f7ef;color:#276d48}.module-card .status.excluded{background:#e9edf2;color:#536475}.module-card .status.pending{background:#fff3d7;color:#805818}
.empty-state{padding:42px 20px;text-align:center;color:var(--muted)}.empty-state b{display:block;color:var(--ink);margin-bottom:5px}.empty-state span{font-size:.68rem}.connection-banner{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:300;background:#9e3d49;color:#fff;border-radius:999px;padding:9px 14px;font-size:.7rem;box-shadow:var(--shadow)}.toast{position:fixed;right:18px;bottom:18px;z-index:1200;background:#07111f;color:#fff;border-radius:11px;padding:12px 14px;font-size:.73rem;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);pointer-events:none;transition:.18s;max-width:min(420px,calc(100vw - 36px))}.toast.show{opacity:1;transform:none}.toast.error{background:#9a3342}.toast.ok{background:#1f6e47}
.dialog-card{border:0;width:min(580px,calc(100vw - 28px));max-height:calc(100vh - 32px);overflow:auto;background:#fff;border-radius:20px;padding:24px;box-shadow:0 30px 90px rgba(0,0,0,.28)}.dialog-card.wide{width:min(900px,calc(100vw - 28px))}.form-dialog,.config-dialog{border:0;padding:0;background:transparent;max-width:none;max-height:none}.form-dialog::backdrop,.config-dialog::backdrop{background:rgba(4,12,22,.56);backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:18px}.dialog-head h2{margin:7px 0 0;font-size:1.08rem}.close-dialog{border:0;background:#edf2f7;color:#43586d;width:36px;height:36px;border-radius:10px;font-size:1.3rem;line-height:1}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.dialog-card label{display:grid;gap:6px;font-size:.69rem;font-weight:850;color:#34495e;margin-bottom:11px}.dialog-card input,.dialog-card select,.dialog-card textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px 11px;background:#fff;color:var(--ink)}.dialog-card textarea{resize:vertical}.dialog-card input:focus,.dialog-card select:focus,.dialog-card textarea:focus{outline:3px solid rgba(43,104,166,.13);border-color:#7aa5cf}.field-error{font-size:.61rem;color:var(--red);margin-top:-5px}.dialog-note{font-size:.66rem;line-height:1.5;color:var(--muted);background:#f5f8fa;border-radius:10px;padding:9px 10px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;position:sticky;bottom:-24px;background:#fff;padding:12px 0 0;border-top:1px solid transparent}.dialog-actions button{border:0;border-radius:10px;padding:10px 13px;font-size:.7rem;font-weight:900}.dialog-actions .primary{background:var(--nav);color:#fff}.dialog-actions .secondary{background:#edf2f7;color:#3f556b}.dialog-actions .danger{background:#ffecef;color:#993243}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.detail-item{border:1px solid var(--line);border-radius:11px;padding:10px}.detail-item small,.detail-item b{display:block}.detail-item small{color:var(--muted);font-size:.6rem}.detail-item b{font-size:.73rem;margin-top:3px}.timeline{margin-top:15px;border-left:2px solid #d7e0e9;padding-left:15px}.timeline article{position:relative;padding:0 0 13px}.timeline article:before{content:'';position:absolute;left:-21px;top:3px;width:9px;height:9px;border-radius:50%;background:var(--blue);border:3px solid #fff;box-shadow:0 0 0 1px #cdd9e4}.timeline b,.timeline span{display:block}.timeline b{font-size:.7rem}.timeline span{font-size:.61rem;color:var(--muted);margin-top:2px}.transition-panel{margin-top:16px;padding:13px;border-radius:13px;background:#f4f7fa;border:1px solid var(--line)}.transition-panel h3{margin:0 0 9px;font-size:.78rem}.transition-actions{display:flex;gap:7px;flex-wrap:wrap}.transition-actions button{border:0;border-radius:9px;padding:8px 10px;font-size:.65rem;font-weight:900;background:var(--nav);color:#fff}.transition-actions button.hold{background:#fff0cf;color:#78531c}.transition-actions button.cancel{background:#ffecef;color:#963341}.money-preview{border:1px solid #d7e2ec;background:#f7fafc;border-radius:10px;padding:10px 11px;font-size:.75rem;font-weight:900;margin-top:-5px;margin-bottom:10px}.split-lines{display:grid;gap:8px}.split-line{display:grid;grid-template-columns:1fr 1fr 120px 120px auto;gap:7px;align-items:end}.split-line button{height:38px;border:0;border-radius:9px;background:#ffecef;color:#993243;font-weight:900}
@media(max-width:1300px){.stat-grid{grid-template-columns:repeat(2,1fr)}.flow-summary{grid-template-columns:repeat(3,1fr)}.flow-node:nth-child(3):after,.flow-node:last-child:after{display:none}.module-grid,.card-grid{grid-template-columns:repeat(2,1fr)}.finance-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:1000px){:root{--sidebar:270px}.sidebar{transform:translateX(-105%);width:var(--sidebar)}.sidebar.open{transform:none}.main{margin-left:0}.mobile-menu{display:block}.desktop-collapse{display:none}.side-backdrop{position:fixed;inset:0;background:rgba(4,12,22,.5);z-index:70}.topbar{padding:0 14px}.content{padding:15px}.panel-grid,.report-grid{grid-template-columns:1fr}.form-grid.cols-3{grid-template-columns:repeat(2,1fr)}.system-banner{margin:10px 14px 0}.login-screen{grid-template-columns:1fr}.login-brand{display:none}.top-actions .mode-chip{display:none}}
@media(max-width:700px){.stat-grid,.finance-grid,.kpi-row,.card-grid,.module-grid,.form-grid,.form-grid.cols-3,.detail-grid{grid-template-columns:1fr}.flow-summary{grid-template-columns:repeat(2,1fr)}.flow-node:nth-child(even):after{display:none}.toolbar{align-items:stretch}.toolbar input,.toolbar select,.toolbar button{width:100%;min-width:0}.toolbar .spacer{display:none}.task{grid-template-columns:auto 1fr}.task>:last-child{grid-column:2}.top-title h1{font-size:1rem}.user-chip div{display:none}.kanban.cols-2,.kanban.cols-3,.kanban.cols-4,.kanban.cols-5{grid-template-columns:minmax(280px,1fr)}.split-line{grid-template-columns:1fr 1fr}.split-line button{grid-column:2}.dialog-card{padding:18px}.dialog-actions{bottom:-18px}.flow-summary{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.table-scroll-top{height:14px;overflow-x:auto;overflow-y:hidden;margin:0 4px 5px;border-radius:8px;background:#eef3f7;scrollbar-color:#8ca0b3 #eef3f7;scrollbar-width:thin}.table-scroll-top>div{height:1px}.table-scroll-top[hidden]{display:none}.table-wrap{scrollbar-gutter:stable}.data-table td:last-child,.data-table th:last-child{position:sticky;right:0;z-index:1;box-shadow:-8px 0 12px rgba(26,48,70,.04)}.data-table th:last-child{z-index:3}.data-table td:last-child{background:#fff}
@media(max-width:700px){.table-scroll-top{height:12px;margin-top:-3px}.data-table td:last-child,.data-table th:last-child{position:static;box-shadow:none}}
/* RC3 responsive hardening: desktop collapsed state must not leak into tablet/mobile layout. */
@media(max-width:1000px){
  body.sidebar-collapsed{--sidebar:270px}
  body.sidebar-collapsed .main{margin-left:0}
  body.sidebar-collapsed .side-brand div,
  body.sidebar-collapsed .sidebar nav button span,
  body.sidebar-collapsed .nav-section,
  body.sidebar-collapsed .side-bottom small{display:block}
  body.sidebar-collapsed .side-brand{padding:0 18px}
  body.sidebar-collapsed .sidebar nav button{justify-content:flex-start;padding:10px 11px}
  body.sidebar-collapsed .side-bottom button{font-size:.7rem}
  body.sidebar-collapsed #lockButton:before,
  body.sidebar-collapsed #signOutButton:before{content:none}
}
/* RC3 viewport containment: wide ERP tables scroll inside their own container, never the page. */
html,body,.app,.main{max-width:100%;overflow-x:hidden}
.main,.content,.page-enter{min-width:0}
@media(max-width:1000px){
  .main,body.sidebar-collapsed .main{margin-left:0!important;transition:none}
}

/* V2.5 B1 Development module shell and state foundations. */
.sidebar nav button i{font-size:.62rem;font-weight:950;letter-spacing:.03em}
.dev-boundary{display:flex;align-items:center;gap:10px;border:1px solid #e5c26a;background:#fff7df;color:#6d5019;border-radius:12px;padding:9px 12px;margin-bottom:10px;font-size:.68rem}.dev-boundary b{white-space:nowrap}.dev-boundary span{color:#80662f}
.foundation-tools{margin:0 0 14px;border:1px dashed #b9c8d7;border-radius:12px;background:#f8fafc;padding:8px 11px}.foundation-tools summary{cursor:pointer;font-size:.64rem;font-weight:900;color:#53677b}.foundation-buttons{display:flex;gap:6px;flex-wrap:wrap;padding-top:9px}.foundation-buttons button,.foundation-state button,.inline-actions button{border:0;border-radius:8px;padding:7px 9px;background:#e8eef4;color:#38516a;font-size:.63rem;font-weight:900}.foundation-buttons button.active{background:var(--nav);color:#fff}
.foundation-state{min-height:280px;border:1px dashed #c8d4df;border-radius:16px;background:#fff;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:28px;color:var(--muted)}.foundation-state b{color:var(--ink);font-size:1rem;margin:9px 0}.foundation-state span{max-width:580px;font-size:.72rem;line-height:1.6}.foundation-state.is-error{border-color:#e8aeb6;background:#fff6f7}.foundation-state.is-error b{color:var(--red)}.foundation-state.is-denied{border-color:#d4c28f;background:#fffbef}.foundation-state.is-denied b{color:#77571b}.foundation-state button{margin-top:14px;background:var(--nav);color:#fff}.skeleton-line{width:48%;max-width:440px;height:12px;border-radius:999px;background:linear-gradient(90deg,#e4ebf1,#f5f8fa,#e4ebf1);background-size:220% 100%;animation:skeleton 1.4s linear infinite;margin:5px}.skeleton-line.wide{width:72%}.skeleton-grid{display:grid;grid-template-columns:repeat(3,80px);gap:9px;margin:15px}.skeleton-grid i{height:58px;border-radius:10px;background:#e9eef3}@keyframes skeleton{to{background-position:-220% 0}}
.hero{border-radius:18px;padding:24px;background:linear-gradient(135deg,#0b1d31,#183b5d);color:#fff;margin-bottom:14px}.hero h2{margin:10px 0 5px;font-size:1.35rem}.hero p{margin:0;max-width:850px;color:#c7d6e5;font-size:.75rem;line-height:1.6}
.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.metric-card{display:flex;flex-direction:column;align-items:flex-start;gap:5px;background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px;box-shadow:0 8px 24px rgba(10,31,54,.04)}.metric-card small{color:var(--muted);font-size:.65rem}.metric-card strong{font-size:1.65rem}.metric-card span{font-size:.63rem;color:var(--muted);line-height:1.45;min-height:2.8em}.metric-card .link-btn{margin-top:auto}.boundary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:15px 17px}.boundary-grid p{margin:0;border:1px solid var(--line);border-radius:11px;padding:11px;font-size:.68rem;line-height:1.55;color:#53677b}.boundary-grid b{color:var(--ink)}
.module-subnav{padding-bottom:3px}.split-workspace{display:grid;grid-template-columns:minmax(600px,1.35fr) minmax(320px,.65fr);gap:14px}.split-workspace>.panel:last-child{padding:16px;overflow:auto;max-height:72vh}.detail-stack{display:grid;gap:12px}.detail-stack>.panel-head{padding:0 0 12px}.detail-stack label,.settings-grid label{display:grid;gap:6px;font-size:.68rem;font-weight:900}.detail-stack select,.settings-grid input{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px;background:#fff}.detail-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}.detail-list>div{border:1px solid var(--line);border-radius:10px;padding:9px}.detail-list dt{font-size:.58rem;color:var(--muted)}.detail-list dd{margin:4px 0 0;font-size:.7rem;font-weight:850;line-height:1.4}.inline-actions{display:flex;flex-wrap:wrap;gap:7px}.inline-actions button{background:var(--nav);color:#fff}.detail-stack .timeline{margin:0;padding:11px;border:1px solid var(--line);border-left:3px solid #8aa8c5;border-radius:10px}.detail-stack .timeline>p{margin:8px 0 0;border-top:1px dashed var(--line);padding-top:8px;font-size:.68rem}.detail-stack .timeline>p small{display:block;color:var(--muted);margin-top:3px}
.scope-chips{display:flex;flex-wrap:wrap;gap:7px;padding:15px 17px}.scope-chips span,.mini-chip{display:inline-flex;border-radius:999px;padding:6px 9px;background:#edf3f8;color:#3d5d7b;font-size:.61rem;font-weight:850}.data-table .mini-chip{display:inline-flex;margin:2px}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.settings-grid>.panel{padding:17px}.settings-grid h2{font-size:.88rem;margin:0 0 13px}.settings-grid p{font-size:.7rem;line-height:1.55;color:var(--muted)}.settings-grid .foundation-state{min-height:155px}.settings-grid button{border:0;border-radius:9px;padding:9px 11px;background:var(--nav);color:#fff;font-weight:900;font-size:.68rem}
@media(max-width:1350px){.metric-grid{grid-template-columns:repeat(3,1fr)}.split-workspace{grid-template-columns:1fr}.split-workspace>.panel:last-child{max-height:none}}
@media(max-width:900px){.metric-grid,.boundary-grid,.settings-grid{grid-template-columns:repeat(2,1fr)}.dev-boundary{align-items:flex-start;flex-direction:column}.detail-list{grid-template-columns:1fr}}
@media(max-width:620px){.metric-grid,.boundary-grid,.settings-grid{grid-template-columns:1fr}.foundation-buttons button{flex:1 1 140px}.skeleton-grid{grid-template-columns:repeat(3,55px)}.hero{padding:19px}.top-title small{display:none}}

.canonical-bridge{margin:0 0 22px;padding:22px;border:1px solid #9bb9b3;border-radius:18px;background:linear-gradient(135deg,#f7fffc 0%,#eef8f5 100%);box-shadow:0 12px 30px rgba(5,89,76,.08)}
.canonical-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.canonical-head h2{margin:7px 0 4px;font-size:1.28rem;color:#083f36}.canonical-head p{margin:0;color:#50645f}.canonical-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.canonical-status{display:inline-flex;align-items:center;min-height:34px;padding:6px 12px;border-radius:999px;font-weight:800;border:1px solid #96aaa5;background:#fff;color:#41544f}.canonical-status.ready{border-color:#398b70;background:#e5f7ee;color:#126548}.canonical-status.error{border-color:#c83d51;background:#fff0f2;color:#a51f35}.canonical-status.pending{border-color:#be8b21;background:#fff6df;color:#855b08}
.canonical-boundary{margin-top:16px;padding:11px 14px;border-radius:12px;background:#fff9e9;color:#72500c;border:1px solid #d6ad55;line-height:1.55}.canonical-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:14px}.canonical-metric{min-height:98px;padding:14px;border-radius:13px;background:#fff;border:1px solid #c8dad5;display:flex;flex-direction:column;gap:5px}.canonical-metric small{color:#5b6b68;font-weight:700}.canonical-metric strong{font-size:1.55rem;color:#0b4d42;word-break:break-word}.canonical-metric span{font-size:.82rem;color:#667672;line-height:1.4}
.canonical-loading,.canonical-error{grid-column:1/-1;padding:17px;border-radius:12px;background:#fff;border:1px dashed #9bb9b3;color:#50645f}.canonical-error{display:flex;flex-direction:column;gap:5px;border-color:#d66a78;background:#fff6f7;color:#9b2436}.canonical-updated{display:block;margin-top:10px;color:#6b7a77}
.canonical-command{margin-top:14px;padding:15px;border:1px solid #58a18c;border-radius:14px;background:#e9f8f2;color:#164f40;display:grid;gap:12px}.canonical-command>div:first-child{display:flex;flex-direction:column;gap:4px}.canonical-command span{line-height:1.5}.canonical-command.locked{border-color:#d6ad55;background:#fff9e9;color:#72500c}.canonical-command-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.canonical-command-form{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:10px;width:100%}.canonical-command-form>b{grid-column:1/-1}.canonical-command-form label{display:grid;gap:5px;font-weight:800}.canonical-command-form input,.canonical-command-form select{width:100%;min-height:42px;border:1px solid #9bb9b3;border-radius:9px;background:#fff;padding:8px 10px;color:#18342e}.canonical-command-form .action-button{align-self:end;min-height:42px}
@media(max-width:900px){.canonical-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.canonical-bridge{padding:16px}.canonical-head{flex-direction:column}.canonical-actions{width:100%;justify-content:space-between}.canonical-metrics{grid-template-columns:1fr}.canonical-metric{min-height:auto}}
@media(max-width:620px){.canonical-command-form{grid-template-columns:1fr}.canonical-command-form>b{grid-column:auto}.canonical-command-controls,.canonical-command-controls .action-button{width:100%}.canonical-command-controls .action-button{min-height:48px}}

/* V2.6 meeting requirements: visible SOP, security, and price governance. */
.meeting-sop{margin-bottom:14px}.meeting-sop .panel-head>div{display:grid;gap:6px}.sop-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;list-style:none;counter-reset:sop;margin:0;padding:15px 17px}.sop-steps li{counter-increment:sop;border:1px solid var(--line);border-radius:11px;background:#f8fafc;padding:11px;font-size:.68rem;line-height:1.5}.sop-steps li:before{content:counter(sop);display:grid;place-items:center;width:24px;height:24px;margin-bottom:7px;border-radius:999px;background:var(--nav);color:#fff;font-size:.62rem;font-weight:950}.security-control-grid,.pricing-policy-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:15px 17px}.security-control-grid article,.pricing-policy-grid article{display:grid;gap:5px;border:1px solid var(--line);border-radius:11px;background:#f8fafc;padding:11px}.security-control-grid b,.pricing-policy-grid b{font-size:.74rem}.security-control-grid span,.pricing-policy-grid small{color:var(--muted);font-size:.64rem;line-height:1.5}.panel>.muted{padding:0 17px 15px;color:var(--muted);font-size:.66rem;line-height:1.55}.panel>button{margin:0 17px 17px;border:0;border-radius:9px;padding:9px 11px;background:var(--nav);color:#fff;font-weight:900;font-size:.68rem}
@media(max-width:1100px){.sop-steps,.security-control-grid,.pricing-policy-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.sop-steps,.security-control-grid,.pricing-policy-grid{grid-template-columns:1fr}}
