/* Recanvas material semantics adapted to this Flask workspace. Shared tokens, no React dependency. */
:root{--text:#24272b;--muted:#626972;--line:rgba(65,73,83,.17);--soft-line:rgba(65,73,83,.10);--accent:#292d32;--accent-soft:rgba(72,80,90,.065);--solid:#f5f6f7;--surface:rgba(255,255,255,.58);--control:rgba(255,255,255,.67);--hover:rgba(88,103,119,.07);--income:#24684f;--expense:#9b6430;--regular:rgba(255,255,255,.56);--clear:rgba(255,255,255,.34);--readable:rgba(250,251,252,.92);--shadow:0 3px 12px rgba(26,37,49,.045);--background:linear-gradient(118deg,#e8edef,#f2f3f4 50%,#e5ebe7)}
html[data-theme=dark]{--text:#edf0f2;--muted:#aeb5bd;--line:rgba(210,219,229,.17);--soft-line:rgba(210,219,229,.10);--accent:#e7ebef;--accent-soft:rgba(219,228,236,.075);--solid:#1c1f23;--surface:rgba(45,50,56,.61);--control:rgba(59,65,72,.68);--hover:rgba(210,219,229,.07);--income:#8fc9ad;--expense:#deb78b;--regular:rgba(45,50,56,.59);--clear:rgba(45,50,56,.38);--readable:rgba(39,44,50,.94);--shadow:0 3px 14px rgba(0,0,0,.09);--background:linear-gradient(118deg,#1c2328,#25282c 50%,#202a26)}
body{font-family:"Segoe UI","Microsoft YaHei UI","Microsoft YaHei",sans-serif;font-size:14px}html{scrollbar-gutter:stable}button{transition:background 180ms,transform 210ms}button:active:not(:disabled){transform:scale(.975);transition-duration:75ms}button,a,input,select,textarea{touch-action:manipulation}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--income);outline-offset:3px}button{white-space:nowrap}h1,h2,h3,p{margin-top:0}.eyebrow{display:none}
.sidebar,.topbar{background:transparent;backdrop-filter:none;isolation:isolate}.topbar{position:relative}.sidebar::before,.topbar::before,.work-panel::before,dialog::before{content:"";position:absolute;inset:0;border-radius:inherit;background:var(--clear);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:-1;pointer-events:none}
.sidebar{width:226px;inset:12px auto 12px 12px;padding:23px 13px 10px;overflow-y:auto}.brand{padding:0 10px 18px;gap:11px;font-size:19px}.brand small{letter-spacing:1px;font-size:11px}.brand-mark{width:36px;height:36px;border-radius:12px}.workspace-label{padding:8px 12px 10px}.nav-item{min-height:40px;gap:11px;margin-bottom:3px;font-size:13px}.nav-group-label{display:block;font-size:11px;color:var(--muted);margin:17px 12px 8px}.sidebar-note{padding-top:26px}.sidebar-note p{display:none}.sidebar-bottom{padding-bottom:0}.main-shell{margin-left:252px;width:calc(100% - 252px)}main{max-width:1660px;padding:32px 30px 18px 10px}.topbar{border-color:var(--line)}.page-heading{margin-bottom:25px}.page-heading h1{font-size:29px;font-weight:600;letter-spacing:-.5px}.page-heading p{font-size:13px;margin-top:6px}.heading-actions{flex-wrap:wrap;justify-content:flex-end}.primary,.secondary{font-size:13px;min-height:39px;border-radius:11px}.icon-button svg,.close-button svg{width:19px;height:19px;stroke:currentColor;stroke-width:1.6;fill:none;stroke-linecap:round;stroke-linejoin:round}.icon-button,.close-button{display:inline-grid;place-items:center;flex-shrink:0}.close-button{background:transparent;border:0}
.workspace-scope{display:flex;align-items:flex-end;gap:14px;margin-bottom:23px;flex-wrap:wrap}.workspace-scope label{font-size:12px;color:var(--muted);font-weight:400;min-width:145px;max-width:300px}.workspace-scope label+label{margin-top:0;flex:1}.workspace-scope input,.workspace-scope select{min-height:39px;margin-top:5px;font-size:13px}.workspace-scope #workspace-asof{margin-left:auto;align-self:center;font-size:11px}.workspace-scope .icon-button{min-height:39px;width:39px;border:1px solid var(--line);border-radius:11px;background:var(--clear)}
.work-panel{position:relative;isolation:isolate;border:1px solid var(--line);border-radius:19px;padding:23px;background:transparent;box-shadow:var(--shadow);min-width:0}.work-panel::before{background:var(--regular)}.work-panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:22px}.work-panel-heading h2,.work-panel>h2{font-size:15px;font-weight:600;margin:0}.work-panel-heading .text-button{font-size:12px}.work-badge{display:inline-flex;padding:3px 8px;border-radius:7px;font-size:11px;background:var(--accent-soft);color:var(--muted);white-space:nowrap;align-items:center;line-height:1.7}.work-badge.warning{color:var(--expense);background:color-mix(in srgb,var(--expense) 10%,transparent)}
.dashboard-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(270px,.85fr);gap:20px}.dashboard-layout>.work-panel:nth-child(3){grid-column:1}.collection-focus{display:flex;flex-direction:column;min-height:252px}.collection-amount{font-size:clamp(34px,3.6vw,58px);font-weight:550;letter-spacing:-1.8px;line-height:1.3;margin:10px 0 26px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.collection-bottom{display:flex;align-items:flex-end;justify-content:space-between;gap:15px;margin-top:auto;padding-top:16px;border-top:1px solid var(--soft-line)}.collection-bottom strong{font-size:12px;color:var(--muted);font-weight:400}.collection-bottom small{font-size:16px;font-weight:600;color:var(--expense)}.cash-summary>h2{margin-bottom:24px}.cash-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:27px 20px}.work-metric{display:flex;flex-direction:column;gap:6px;min-width:0}.work-metric>span{font-size:12px}.work-metric>strong{font-size:clamp(19px,1.75vw,29px);font-weight:550;letter-spacing:-.5px;line-height:1.4;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.work-metric small{font-size:11px}.work-metric.income>strong{color:var(--income)}.task-row{display:flex;width:100%;align-items:center;text-align:left;background:none;border-bottom:1px solid var(--soft-line);padding:16px 0;font-size:13px;gap:14px;white-space:normal}.task-row:first-child{padding-top:0}.task-row strong{margin-left:auto;font-size:19px;font-weight:500}.task-row>span:last-child{font-size:21px}.task-list>.secondary{width:100%;margin-top:24px;background:var(--control)}
.cell-stack{min-width:0;overflow-wrap:anywhere}.cell-stack strong{display:block;font-size:12px;font-weight:500}.cell-stack small{display:block;margin-top:5px;font-size:11px}.work-table-wrap{overflow-x:auto;max-width:100%}.work-table{width:100%;border-collapse:collapse;display:table}.work-table thead{display:table-header-group}.work-table tbody{display:table-row-group}.work-table tr{display:table-row}.work-table td,.work-table th{display:table-cell;font-size:12px;vertical-align:middle;padding:15px 12px}.work-table th{background:transparent;font-size:11px;padding-top:11px;color:var(--muted);border-top:0;white-space:nowrap}.work-table td{font-variant-numeric:tabular-nums}.work-table td:first-child{min-width:145px}.work-table th:first-child,.work-table td:first-child{padding-left:0}.work-table th:last-child,.work-table td:last-child{padding-right:0}.work-table tbody tr:last-child td{border-bottom:0}.work-table .secondary{font-size:12px;min-height:31px;padding:4px 10px}.work-table tbody tr:hover{background:var(--hover)}.work-table td .work-badge{font-size:10px}
.cockpit-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(240px,1fr);gap:20px}.forecast-headline{grid-column:1/-1;display:flex;gap:60px;padding:2px 0 9px;flex-wrap:wrap}.forecast-headline .work-metric>strong{font-size:32px}.forecast-headline .work-metric:last-child>strong{color:var(--income)}.full-width{grid-column:1/-1}.forecast-legend{display:flex;justify-content:flex-start;gap:15px;flex-wrap:wrap;margin:4px 0 22px;color:var(--muted);font-size:11px}.forecast-legend>span{display:flex;gap:6px;align-items:center}.forecast-legend i{width:10px;height:10px;border-radius:2px;display:inline-block}.actual-in{background:var(--income)}.actual-out{background:var(--muted)}.forecast-in{background:repeating-linear-gradient(135deg,transparent 0 3px,color-mix(in srgb,var(--income) 55%,transparent) 3px 5px);border:1px solid var(--income)}.forecast-out{background:repeating-linear-gradient(135deg,transparent 0 3px,color-mix(in srgb,var(--expense) 55%,transparent) 3px 5px);border:1px solid var(--expense)}.forecast-plot{height:230px;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:18px;border-bottom:1px solid var(--line);background:repeating-linear-gradient(to top,transparent 0,transparent calc(25% - 1px),var(--soft-line) calc(25% - 1px),var(--soft-line) 25%);margin-bottom:30px}.forecast-month{position:relative;min-width:0}.forecast-month>span{position:absolute;top:100%;left:0;right:0;text-align:center;margin-top:10px;font-size:11px;color:var(--muted)}.forecast-month.current>span{color:var(--text);font-weight:600}.forecast-pair{display:flex;align-items:flex-end;gap:5px;height:100%;justify-content:center}.forecast-bar{display:flex;flex-direction:column;width:19px;max-width:calc(50% - 4px);min-height:1px;position:relative;border-radius:4px 4px 0 0;overflow:hidden}.forecast-bar>div{min-height:0}.forecast-bar:focus-visible{outline:2px solid var(--text);outline-offset:3px}.aging-list{display:grid;gap:26px;padding-top:3px}.aging-row>div:first-child{display:flex;justify-content:space-between;gap:10px;font-size:12px;margin-bottom:8px}.aging-row strong{font-weight:500;font-variant-numeric:tabular-nums}.aging-track{height:5px;background:var(--accent-soft);border-radius:3px;overflow:hidden}.aging-track>div{height:100%;background:var(--expense);border-radius:3px}.aging-row:first-child .aging-track>div{background:var(--income)}.forecast-notes{font-size:12px;color:var(--muted);padding:17px 0 0;margin-top:8px}.forecast-notes summary{cursor:pointer;width:max-content;max-width:100%}.forecast-notes p{line-height:1.85;margin:14px 0 0;max-width:85ch}.policy-link{display:block;margin-top:10px;text-decoration:underline;text-underline-offset:3px}
.work-list-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.work-list-tools input{width:290px;max-width:100%;margin:0;font-size:13px}.work-list-tools select{width:185px;max-width:100%;margin:0;font-size:13px}.list-count{margin-left:auto;font-size:12px}.work-list-tools+div>.work-table-wrap{position:relative;isolation:isolate;border:1px solid var(--line);padding:12px 22px;border-radius:17px;background:var(--regular)}.work-empty{border:1px dashed var(--line);border-radius:17px;padding:48px 20px;text-align:center;min-width:0}.work-empty svg{width:27px;height:27px;stroke:var(--muted);stroke-width:1.3;fill:none;margin-bottom:12px}.work-empty h3{font-size:16px;font-weight:500}.work-empty p{margin:9px 0 20px;font-size:12px}.work-empty .secondary{font-size:12px}.work-panel>.work-empty{border:0;padding:35px 5px}.document-actions{display:flex;gap:10px;align-items:center}.document-actions a{white-space:nowrap}
dialog{background:transparent;backdrop-filter:none;box-shadow:0 12px 50px #0002;isolation:isolate}dialog::before{background:var(--readable)}dialog::backdrop{background:rgba(23,31,40,.16);backdrop-filter:none}.dialog-header{gap:15px}.dialog-header h2{font-size:20px;line-height:1.5;overflow-wrap:anywhere}.dialog-body{scrollbar-gutter:stable}.detail-dialog{width:790px}.detail-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:2px 0 23px;padding-bottom:23px;border-bottom:1px solid var(--line)}.detail-stats .work-metric>strong{font-size:24px}.detail-pair{display:grid;grid-template-columns:105px minmax(0,1fr);gap:16px;padding:9px 0;font-size:13px;overflow-wrap:anywhere}.detail-pair>span:last-child{white-space:pre-wrap}.detail-actions{display:flex;gap:9px;flex-wrap:wrap;margin:22px 0}.detail-section-title{font-size:14px;margin:30px 0 13px;font-weight:600}.detail-history{margin-top:23px;font-size:12px;color:var(--muted)}.detail-history summary{cursor:pointer}.work-form-grid{margin:0;gap:20px}.work-form-grid small,.payroll-layout label small{display:block;font-size:11px;line-height:1.7;margin-top:7px;font-weight:400}.work-form-grid label{font-size:12px}#work-dialog .dialog-footer{flex-wrap:wrap;position:relative}#work-error:empty{display:none}#work-error:not(:empty){width:100%;flex-basis:100%;margin:0 0 8px;font-size:12px}.work-form-grid .checkbox-label{display:flex;margin:0;flex-wrap:wrap;white-space:normal;line-height:1.8}.work-form-grid .checkbox-label input{width:17px;height:17px;min-height:17px;flex-shrink:0}.menu-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.menu-grid button{background:var(--control);border:1px solid var(--line);padding:12px 5px;border-radius:11px;font-size:13px}
.payroll-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(250px,1fr);gap:20px}.payroll-layout .form-grid{margin:0 0 24px}.payroll-layout label{font-size:12px}.payroll-layout .checkbox-label{white-space:normal;line-height:1.8;margin:0;flex-wrap:wrap}.payroll-result{align-self:start;position:sticky;top:24px}.payroll-result .work-metric{margin:25px 0}.payroll-result .work-metric>strong{font-size:31px}.payroll-result>p{margin-top:20px;font-size:13px}.payroll-result>.primary{width:100%;margin-top:23px}#control-tooltip{position:fixed;z-index:9999;pointer-events:none;max-width:min(340px,calc(100vw - 16px));padding:9px 13px;border-radius:12px;background:var(--readable);border:1px solid var(--line);color:var(--text);font-size:12px;box-shadow:var(--shadow);line-height:1.6}
@supports not (backdrop-filter:blur(6px)){.work-panel::before,.sidebar::before,.topbar::before,dialog::before{background:var(--solid)}}
@media(prefers-reduced-transparency:reduce){.work-panel::before,.sidebar::before,.topbar::before,dialog::before{background:var(--solid);backdrop-filter:none}}
@media(forced-colors:active){.work-panel,.work-badge,.forecast-bar{border:1px solid CanvasText}.work-panel::before,.sidebar::before,.topbar::before,dialog::before{background:Canvas;backdrop-filter:none}.actual-in,.actual-out{background:CanvasText}}
@media(min-width:768px) and (max-width:1199px){.sidebar{width:199px;padding-inline:10px}.main-shell{margin-left:224px;width:calc(100% - 224px)}main{padding-right:20px}.dashboard-layout,.cockpit-layout{grid-template-columns:minmax(0,1fr)}.dashboard-layout>.work-panel:nth-child(3){grid-column:auto}.cash-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.cash-metrics .work-metric>strong{font-size:21px}.collection-focus{min-height:220px}.collection-amount{font-size:48px}.aging-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.payroll-layout{grid-template-columns:minmax(0,1fr)}.payroll-result{position:static}.heading-actions{flex-direction:row}.work-metric>strong{font-size:25px}}
@media(max-width:767px){.sidebar{display:none}.main-shell{margin:0;width:100%}main{padding:26px 15px 96px}.topbar{margin:10px 12px 0;padding:9px 13px}.page-heading h1{font-size:25px}.page-heading p{font-size:12px;max-width:250px;line-height:1.7}.page-heading{align-items:flex-start;flex-wrap:wrap;margin-bottom:22px;gap:16px}.heading-actions{flex-direction:row;justify-content:flex-start;align-items:center}.heading-actions .primary,.heading-actions .secondary{min-height:37px;font-size:12px;padding:7px 13px}.workspace-scope{gap:10px;margin-bottom:19px;align-items:flex-end}.workspace-scope label{min-width:0;max-width:none;flex:1}.workspace-scope label input,.workspace-scope label select{font-size:14px}.workspace-scope #workspace-asof{flex-basis:100%;font-size:10px;margin-top:0;margin-left:0}.dashboard-layout,.cockpit-layout,.payroll-layout{grid-template-columns:minmax(0,1fr);gap:15px}.work-panel{padding:20px;border-radius:17px}.work-panel-heading{gap:9px;margin-bottom:19px}.work-panel-heading h2{font-size:14px}.collection-focus{min-height:223px}.collection-amount{font-size:42px;margin:7px 0 22px;letter-spacing:-1.4px}.cash-metrics{gap:25px 19px}.work-metric>strong{font-size:24px}.cash-metrics .work-metric>strong{font-size:23px}.work-metric small{font-size:10px}.collection-bottom small{font-size:16px}.dashboard-layout>.work-panel:nth-child(3){grid-column:auto}.forecast-headline{gap:26px;display:grid;grid-template-columns:1fr;padding:0 4px 5px}.forecast-headline .work-metric>strong{font-size:31px}.forecast-plot{height:200px;gap:12px}.forecast-bar{width:17px}.forecast-legend{gap:10px;font-size:10px}.aging-list{gap:23px}.work-list-tools{gap:10px}.work-list-tools input{width:100%;flex-basis:100%;font-size:16px}.work-list-tools select{flex:1;max-width:calc(100% - 60px);font-size:14px}.work-list-tools .list-count{font-size:11px}.work-list-tools+div>.work-table-wrap{padding:0 16px}.work-table{display:block}.work-table thead{display:none}.work-table tbody{display:block}.work-table tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 14px;padding:19px 0;border-bottom:1px solid var(--line)}.work-table tbody tr:last-child{border-bottom:0}.work-table td{display:block;min-width:0;padding:0!important;font-size:12px;border:0;overflow-wrap:anywhere;white-space:normal}.work-table td:first-child{grid-column:1/-1;min-width:0}.work-table td::before{content:attr(data-label);display:block;color:var(--muted);font-size:10px;margin-bottom:5px}.work-table td:first-child::before{display:none}.work-table td:first-child .cell-stack strong{font-size:14px}.work-table td:last-child{align-self:end}.work-table td .secondary{min-height:34px;font-size:12px}.work-table .cell-stack small{font-size:11px}.work-panel .work-table td:first-child{min-width:0}.document-actions{flex-wrap:wrap}.detail-stats{gap:13px}.detail-stats .work-metric>strong{font-size:20px}.detail-stats .work-metric>span{font-size:11px}.detail-pair{grid-template-columns:83px minmax(0,1fr);gap:12px;font-size:12px}.detail-actions .primary,.detail-actions .secondary{font-size:12px}.detail-dialog .dialog-body{max-height:calc(100dvh - 130px)}dialog{max-height:calc(100dvh - 22px)}.dialog-body{max-height:calc(100dvh - 192px)}.dialog-header h2{font-size:19px}.payroll-result{position:static}.payroll-layout .form-grid,.work-form-grid{gap:19px 12px}.payroll-layout input,.payroll-layout select,#work-fields input,#work-fields select{font-size:16px}.payroll-layout label{font-size:11px}.mobile-nav{background:var(--readable);backdrop-filter:blur(6px)}.mobile-nav button{font-size:19px}.mobile-nav svg{width:20px;height:20px}.mobile-nav button span{font-size:10px}.mobile-nav button.active{background:var(--accent-soft)}.work-empty{padding:36px 18px}.work-empty p{line-height:1.8}.forecast-notes p{font-size:12px}.list-count{white-space:nowrap}}
@media(max-width:370px){.collection-amount{font-size:37px}.cash-metrics .work-metric>strong{font-size:21px}.work-panel{padding:17px}.detail-stats{grid-template-columns:1fr}.detail-stats .work-metric{flex-direction:row;justify-content:space-between}.work-form-grid,.payroll-layout .form-grid{grid-template-columns:1fr}}
.preview-banner{position:fixed;bottom:9px;right:24px;font-size:10px;color:var(--muted);z-index:31;pointer-events:none;background:var(--readable);padding:3px 9px;border:1px solid var(--line);border-radius:7px}
@media(max-width:767px){.preview-banner{position:fixed;inset:0 0 auto;width:100%;text-align:center;border:0;border-radius:0;padding:4px;font-size:10px}.app-shell:has(.preview-banner) .topbar{margin-top:32px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}button:active:not(:disabled){transform:none}}
