/* Finance & Administration Design System — shared shell and components. */
:root {
  color-scheme: light;
  font-family: Inter,"Microsoft YaHei","Segoe UI",Arial,sans-serif;
  --ds-black:#111214;--ds-black-soft:#292621;--ds-gold:#b58b4b;--ds-gold-dark:#8f6a35;
  --ds-bg:#e7dcc9;--ds-paper:#f0e4d0;--ds-paper-light:#f7eedf;--ds-paper-soft:#eadcc3;
  --ds-line:#c8b596;--ds-line-strong:#ad9673;--ds-text:#241d15;--ds-muted:#746650;
  --ds-danger:#a83b36;--ds-success:#49643d;--ds-sidebar:242px;--ds-topbar:72px;
  --ds-control:38px;--ds-control-sm:36px;--ds-radius:6px;--ds-card-radius:10px;
  --ds-shadow:0 10px 28px rgba(61,44,24,.08);--ds-shadow-raised:0 16px 42px rgba(47,34,18,.16);
  --primary:var(--ds-black);--primary-dark:var(--ds-black-soft);--bg:var(--ds-bg);
  --card-bg:var(--ds-paper-light);--text:var(--ds-text);--text-primary:var(--ds-text);
  --text-secondary:var(--ds-muted);--muted:var(--ds-muted);--border:var(--ds-line);
  --border-strong:var(--ds-line-strong);--line:var(--ds-line);--paper:var(--ds-paper-light);
  --danger:var(--ds-danger);--gold:var(--ds-gold);--shadow:var(--ds-shadow);
}
*,*::before,*::after{box-sizing:border-box}
html{min-height:100%;background:var(--ds-bg)!important}
body{min-height:100vh;margin:0;color:var(--ds-text)!important;font-family:Inter,"Microsoft YaHei","Segoe UI",Arial,sans-serif}
button,input,select,textarea{font:inherit}a{color:inherit}

/* Application shell */
.app-shell{display:block!important;min-height:100vh}.app-content{min-width:0;margin-left:var(--ds-sidebar)}
.app-sidebar{position:fixed!important;inset:0 auto 0 0!important;width:var(--ds-sidebar)!important;height:100vh!important;padding:24px 16px!important;overflow-y:auto;z-index:60!important;color:#fff!important;background:linear-gradient(180deg,#111214,#1b1916)!important;border-right:1px solid rgba(181,139,75,.28)!important;box-shadow:8px 0 30px rgba(26,20,13,.06)}
.app-topbar{position:fixed!important;inset:0 0 auto var(--ds-sidebar)!important;width:auto!important;height:var(--ds-topbar)!important;min-height:var(--ds-topbar)!important;padding:0 28px!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:15px!important;z-index:50!important;color:var(--ds-text)!important;background:rgba(247,238,223,.96)!important;border-bottom:1px solid var(--ds-line)!important;box-shadow:0 3px 18px rgba(61,44,24,.06)!important;backdrop-filter:blur(10px)}
.app-topbar>.header-inner{width:100%!important;max-width:none!important;margin:0!important;display:flex!important;align-items:center!important;justify-content:space-between!important}
.app-main{width:min(100%,1550px);margin:0 auto;padding:102px 30px 64px!important}.app-main--standalone{width:auto;max-width:none;margin-left:var(--ds-sidebar)!important}
.app-topbar--full{inset:0 0 auto 0!important}.app-main--full{margin-left:0!important;padding-top:102px!important}
.app-brand,.system-brand,.workspace-logo,.logo{display:flex;align-items:center;gap:11px}.app-brand{padding:0 8px 26px}
.app-brand-mark,.brand-mark,.logo-mark{width:40px!important;height:40px!important;flex:0 0 40px;display:grid!important;place-items:center!important;border-radius:8px!important;background:#24221f!important;border:1px solid rgba(200,164,95,.34)!important;color:#fff!important;font-weight:800;box-shadow:inset 0 0 0 1px rgba(255,255,255,.03)}
.app-brand strong,.app-brand-title{display:block;color:#fff;font-size:16px;font-weight:760}.app-brand small,.app-brand-sub,.brand-sub,.logo small{display:block;margin-top:3px;color:#a69a87!important;font-size:11px}
.app-nav-title,.nav-title,.nav-label,.workspace-nav-title{padding:0 12px 10px!important;color:#a69a87!important;font-size:10px!important;letter-spacing:.12em!important}.app-nav{display:block;min-width:0}
.app-nav a,.app-sidebar>a,.workspace-nav a,.nav-item{display:flex!important;align-items:center!important;gap:10px!important;min-height:46px!important;margin:4px 0!important;padding:0 12px!important;border-radius:7px!important;color:#cfc8bc!important;font-size:13px!important;text-decoration:none!important;white-space:nowrap;transition:.18s}
.app-nav a:hover,.app-nav a.active,.app-sidebar>a:hover,.app-sidebar>a.active,.workspace-nav a:hover,.workspace-nav a.active,.nav-item:hover,.nav-item.active{color:#fff!important;background:rgba(181,139,75,.20)!important}
.nav-index{width:24px!important;height:24px!important;flex:0 0 24px;display:grid!important;place-items:center!important;border-radius:5px!important;background:#24221f!important;border:1px solid rgba(200,164,95,.34)!important;color:#fff!important;font-size:10px!important}.nav-status{margin-left:auto;background:rgba(181,139,75,.18)!important;color:#dbc49e!important}.nav-admin-label{margin-top:24px;padding-top:18px!important;border-top:1px solid rgba(181,139,75,.18)}
.app-topbar-title{min-width:0;font-size:18px;font-weight:760;line-height:1.25}.app-topbar-subtitle{margin-top:3px;color:var(--ds-muted);font-size:11px;font-weight:400}

/* Session and page hierarchy */
.session-actions{display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:12px!important;margin-left:auto;white-space:nowrap}
.session-user{margin:0!important;color:var(--ds-muted)!important;font-size:12px!important;font-weight:400!important;line-height:1.4!important;letter-spacing:0!important;white-space:nowrap}
.portal-link,.top-return,.return-link{box-sizing:border-box!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;width:auto!important;min-width:128px!important;height:var(--ds-control-sm)!important;min-height:var(--ds-control-sm)!important;margin:0!important;padding:0 14px!important;border:1px solid #aa987a!important;border-radius:var(--ds-radius)!important;background:var(--ds-paper-light)!important;color:var(--ds-text)!important;font-size:12px!important;font-weight:650!important;line-height:1!important;text-decoration:none!important;white-space:nowrap;box-shadow:none!important;transition:.18s!important}
.portal-link:hover,.top-return:hover,.return-link:hover{background:#e7d7bc!important;border-color:var(--ds-gold-dark)!important;color:var(--ds-text)!important}
.page-head,.head,.welcome{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px}.page-head h1,.head h1,.welcome h1{margin:0 0 5px;color:var(--ds-text);font-size:26px;line-height:1.3}.page-head p,.head p,.welcome p{margin:0;color:var(--ds-muted)!important;font-size:12px;line-height:1.65}

/* Surfaces */
.card,.panel,.module,.todo,.summary-item,.breakdown-card,.empty,.archive,.account-row,.archive-row,.history-row,.withdraw-dialog,.surface{background:rgba(247,238,223,.96)!important;border-color:var(--ds-line)!important;border-radius:var(--ds-card-radius)!important;box-shadow:var(--ds-shadow)}
.card,.panel{border-style:solid;border-width:1px}.card-title,.hint,.muted,.label,.top-meta,.date,.module p,.todo-label,.panel-head span,.step p,.user,.user-sub,.backup-list,.page-size,.page-size-control,.result-count,.filter-hint{color:var(--ds-muted)!important}
.section-head,.card-head,.panel-head,.pool-head{display:flex;align-items:center;justify-content:space-between;gap:15px}.card-head h2,.panel-head h2,.section-head h2{color:var(--ds-text)}

/* Buttons */
.btn,.primary,.secondary,.danger,.logout-btn,button:where(:not(.filter-button):not(.config-tab):not(.result-tab):not(.close)){min-height:var(--ds-control-sm);padding:0 13px;border:1px solid #aa987a!important;border-radius:var(--ds-radius)!important;background:var(--ds-paper-light)!important;color:var(--ds-text)!important;font-weight:650;line-height:1;cursor:pointer;transition:.18s}
.btn:hover,.secondary:hover,.logout-btn:hover,button:where(:not(.filter-button):not(.config-tab):not(.result-tab):not(.close)):hover{background:#e7d7bc!important;border-color:var(--ds-gold-dark)!important}
.btn-primary,.btn.primary,.primary,.btn-success,.pager button.current,.table-pager .page-number.current{color:#fff!important;background:var(--ds-black)!important;border-color:var(--ds-gold-dark)!important}
.btn-primary:hover,.btn.primary:hover,.primary:hover,.btn-success:hover{color:#fff!important;background:var(--ds-black-soft)!important;border-color:var(--ds-gold)!important;box-shadow:0 6px 16px rgba(30,25,19,.18)!important}
/* Semantic variants stay authoritative over legacy generic button selectors. */
body button.primary,body .btn.primary,body button.btn-primary,body .btn-primary,body button.btn-success,body .btn-success,body .pager button.current,body .table-pager .page-number.current,body .direction button.active,body .segmented-control button.active{color:#fff!important;background:var(--ds-black)!important;border-color:var(--ds-black)!important;box-shadow:none!important}
body button.primary:hover,body .btn.primary:hover,body button.btn-primary:hover,body .btn-primary:hover,body button.btn-success:hover,body .btn-success:hover,body .direction button.active:hover,body .segmented-control button.active:hover{color:#fff!important;background:var(--ds-black-soft)!important;border-color:var(--ds-black-soft)!important}
.btn-danger,.btn.danger,.danger{background:var(--ds-danger)!important;border-color:var(--ds-danger)!important;color:#fff!important}.btn:disabled,button:disabled{opacity:.52;cursor:not-allowed;box-shadow:none!important}
.direction,.segmented-control{display:inline-flex;gap:8px;margin-bottom:20px}.direction button,.segmented-control button{height:var(--ds-control);min-height:var(--ds-control);padding:0 22px}.direction button.active,.segmented-control button.active{color:#fff!important;background:var(--ds-black)!important;border-color:var(--ds-gold-dark)!important}

/* Forms */
.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label,.form-grid label{color:var(--ds-muted)!important;font-size:11px!important;line-height:1.45}
input:not([type=checkbox]):not([type=radio]),textarea,select,.search,.config-textarea,.config-input,.detail-search,.filter-box,.page-size select,.page-size-control select{width:100%;min-height:var(--ds-control);padding:0 10px;color:var(--ds-text)!important;background:rgba(240,228,208,.94)!important;border:1px solid var(--ds-line)!important;border-radius:var(--ds-radius)!important}
textarea{min-height:76px;padding-top:9px;padding-bottom:9px;resize:vertical}input::placeholder,textarea::placeholder{color:#8b7d68;opacity:.85}
input:not([type=checkbox]):not([type=radio]):focus,textarea:focus,select:focus,.search:focus,.config-textarea:focus,.config-input:focus,.detail-search:focus{outline:0!important;border-color:var(--ds-gold-dark)!important;box-shadow:0 0 0 3px rgba(143,106,53,.14)!important}input[type=checkbox],input[type=radio]{width:24px;height:24px;min-width:24px;min-height:24px;accent-color:var(--ds-black)!important}.form-foot,.dialog-actions,.dialog-foot{display:flex;justify-content:flex-end;align-items:center;gap:8px}

/* Tables */
.table-wrap{overflow:auto;border:1px solid var(--ds-line)!important;border-radius:8px!important;background:var(--ds-paper-light)!important;scrollbar-color:#a99575 #eadcc3}table{width:100%;border-collapse:collapse;color:var(--ds-text);table-layout:fixed!important}table col{width:auto!important}table th,table td{min-width:0!important;max-width:none!important;white-space:normal!important;overflow-wrap:anywhere;word-break:break-word}table .num{white-space:nowrap!important}thead,th{background:#e4d5bb!important;color:#594a37!important}th,td{border-color:#d8c8ad!important;vertical-align:middle}tbody tr:nth-child(even) td{background:rgba(234,220,195,.34)}tbody tr:hover td{background:#ead9bd!important}.num{text-align:right!important;font-variant-numeric:tabular-nums}.table-pager{background:#eadcc3!important}.row-actions,.account-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.row-actions button,.account-actions button{min-height:32px;padding:0 10px;font-size:12px;white-space:nowrap}

/* Dialogs, tags and states */
.modal,dialog::backdrop{background:rgba(20,17,13,.56)!important}.dialog,dialog{color:var(--ds-text);background:var(--ds-paper-light)!important;border:1px solid var(--ds-gold)!important;border-radius:var(--ds-card-radius)!important;box-shadow:var(--ds-shadow-raised)!important}.dialog-head,.dialog-foot{border-color:var(--ds-line)!important}.detail-item{background:var(--ds-paper)!important;border:1px solid var(--ds-line);border-radius:var(--ds-radius)!important}
.tag{display:inline-flex;align-items:center;min-height:20px;padding:3px 7px!important;border-radius:999px!important;background:#dfcfb2!important;color:#674c28!important;font-size:10px!important;line-height:1.2}.tag.off,.tag-excluded,.tag-general{background:#dfd7ca!important;color:#716759!important}.tag.published,.status-bar.success,.tag-policy{background:#dce7d5!important;color:#49643d!important}.tag.locked{background:#e8d5ad!important;color:#73561e!important}.tag.review{background:#d9dfeb!important;color:#40556f!important}.status-bar.error,.tag-nonpolicy{background:#f0d8d2!important;color:#8b3932!important}
.empty{min-height:96px;padding:34px!important;display:grid;place-items:center;color:var(--ds-muted)!important;text-align:center}.toast{border-radius:8px!important;box-shadow:var(--ds-shadow-raised)!important}.toast.error{background:var(--ds-danger)!important;color:#fff!important}

/* Existing business-component bridges */
.upload-zone{background:rgba(240,228,208,.66)!important;border-color:var(--ds-line-strong)!important}.upload-zone:hover,.upload-zone.dragover{background:#ead9bd!important;border-color:var(--ds-gold-dark)!important;box-shadow:inset 0 0 0 1px var(--ds-gold-dark)!important}.upload-zone .icon,.upload-zone .format-badge{background:#e3d1b3!important;border-color:#c7b18c!important;color:#654b28!important}.breakdown-card,.breakdown-card.green,.breakdown-card.orange,.breakdown-card.gray{border-left-color:var(--ds-gold)!important}.step-num,.module-icon,.violet,.blue,.orange,.green{background:#e5d3b5!important;color:#76572c!important}.step:not(:last-child)::after{background:#c9b797!important}.module-foot,.todo-link,.status{color:var(--ds-gold-dark)!important}.module.open:hover{border-color:var(--ds-gold)!important;box-shadow:0 12px 30px rgba(61,44,24,.13)!important}.corner{background:rgba(181,139,75,.10)!important}.metric{background:rgba(247,238,223,.94)!important;border-radius:var(--ds-card-radius)!important}.metrics{background:var(--ds-line)!important}.archive-head,.cats,.details{border-color:#d5c4a7!important}.filter-button.active{background:#dfcba8!important;color:#654b28!important}.result-tab.active,.config-tab.active{color:var(--ds-black)!important;border-bottom-color:var(--ds-gold-dark)!important}.config-tab{color:var(--ds-muted)!important}.formula-panel,.history-metric{background:#eadcc3!important}.formula-panel{border-left-color:var(--ds-gold-dark)!important}#warningCard{background:#f2e5ca!important;border-color:#caae7c!important}.uploading-overlay{background:rgba(231,220,201,.92)!important}.withdraw-impact{background:#f3ded7!important}.stage .mark{background:#ead6cc!important;color:var(--ds-danger)!important}

.todo-link{display:inline-flex;align-items:center;min-height:32px}

/* Universal keyboard focus */
.skip-link{position:fixed;left:12px;top:8px;z-index:1000;padding:10px 14px;border-radius:6px;background:var(--ds-black);color:#fff!important;text-decoration:none;transform:translateY(-160%);transition:transform .12s}
.skip-link:focus{transform:translateY(0)}
.close{min-width:36px;min-height:36px}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--ds-black)!important;outline-offset:2px!important;box-shadow:0 0 0 4px rgba(181,139,75,.32)!important}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
@media(forced-colors:active){:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid Highlight!important;box-shadow:none!important}.btn,button,input,select,textarea{border:1px solid CanvasText!important}}

@media(max-width:900px){
  :root{--ds-topbar:64px}body{background-attachment:scroll!important}
  .app-sidebar{inset:var(--ds-topbar) 0 auto 0!important;width:100%!important;height:62px!important;padding:8px 12px!important;overflow:hidden!important;border-right:0!important;border-bottom:1px solid rgba(181,139,75,.28)!important}
  .app-brand,.app-sidebar .system-brand,.app-sidebar .workspace-logo,.app-sidebar .logo,.app-nav-title,.app-sidebar .nav-title,.app-sidebar .nav-label{display:none!important}
  .app-sidebar{max-width:100vw!important;overflow-x:hidden!important}.app-nav{display:flex!important;width:100%!important;max-width:100%!important;min-width:0!important;align-items:center;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;contain:inline-size}.app-nav::-webkit-scrollbar{display:none}.app-nav a,.app-sidebar>a,.workspace-nav a,.nav-item{flex:0 0 auto!important;min-height:46px!important;margin:0 3px!important}
  .app-topbar{inset:0 0 auto 0!important;height:var(--ds-topbar)!important;min-height:var(--ds-topbar)!important;padding:0 16px!important;backdrop-filter:none}.app-content{margin-left:0!important}.app-main,.app-main--standalone{width:100%!important;max-width:none!important;margin-left:0!important;padding:146px 14px 54px!important}.app-topbar-title{font-size:15px}.app-topbar-subtitle{display:none}.session-actions{gap:8px!important}.session-user{max-width:105px;overflow:hidden;text-overflow:ellipsis}.page-head,.head,.welcome,.section-head,.card-head,.pool-head{align-items:flex-start}
}
@media(max-width:620px){
  .app-main,.app-main--standalone{padding-left:12px!important;padding-right:12px!important}.app-topbar{padding:0 12px!important}.app-topbar-title{max-width:140px;font-size:14px}.session-user{display:none!important}.portal-link,.top-return,.return-link{min-width:124px!important;padding:0 10px!important}.card,.panel{padding:16px!important}.page-head,.head,.welcome{flex-direction:column;gap:10px}.section-head,.card-head,.pool-head{flex-direction:column}.row-actions,.account-actions{justify-content:flex-start}
}
@media(max-width:400px){
  .app-topbar-title{max-width:112px}.portal-link,.top-return,.return-link{min-width:104px;padding:0 8px!important;font-size:11px!important}
  .app-main,.app-main--standalone{padding-left:8px!important;padding-right:8px!important}.card,.panel{padding:13px!important}
  .dialog,dialog{max-width:calc(100vw - 16px)!important;padding:14px!important}.dialog-actions,.dialog-foot,.form-foot{flex-wrap:wrap}
  .history-filters{grid-template-columns:1fr!important}.history-field{min-width:0!important}.config-tabs,.result-tabs{max-width:100%!important}.todo-link{display:inline-flex;align-items:center;min-height:32px}
}
/* Stage C: accessible column resizing and long-text editing. */
table th{position:relative}
table th:has(.column-size-handle){padding-right:30px!important}
body button.column-size-handle{position:absolute;right:2px;bottom:2px;width:24px;min-width:24px;height:24px;min-height:24px;padding:0;line-height:22px;cursor:nwse-resize;touch-action:none;font-size:16px;z-index:1}
.table-size-tools{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:8px;font-size:11px;color:var(--ds-muted);white-space:normal;max-width:100%;position:sticky;left:0}
.table-size-tools button{font-size:11px;flex-shrink:0}
.table-wrap{max-width:100%;min-width:0}
table td{overflow-wrap:anywhere}
table td textarea{display:block;width:100%;min-width:0;min-height:58px;padding:8px!important;white-space:pre-wrap;overflow-wrap:anywhere;resize:none;line-height:1.5!important}
table[data-manual-columns=true] td textarea{min-height:38px}
dialog{max-height:94dvh;overflow:auto}
dialog .dialog-head,dialog .dialog-foot{position:sticky;background:var(--ds-paper-light);z-index:3;flex-wrap:wrap;gap:10px}
dialog .dialog-head{top:0}dialog .dialog-foot{bottom:0}
.invoice-layout>*{min-width:0}
@media(min-width:901px){.invoice-layout{grid-template-columns:minmax(220px,.65fr) minmax(0,1.6fr)!important}}
@media(max-width:900px){.invoice-layout{grid-template-columns:minmax(0,1fr)!important}}
.operation-feedback{position:fixed;right:16px;bottom:16px;z-index:1000;max-width:min(520px,calc(100vw - 32px));padding:12px 16px;background:var(--ds-paper-light);border:1px solid var(--ds-gold);box-shadow:var(--ds-shadow);border-radius:8px;display:flex;align-items:center;gap:12px;font-size:13px;white-space:normal}
.operation-feedback[hidden]{display:none}.operation-feedback.failed{border-color:var(--ds-danger)}
#finance-import-report{padding:24px!important;width:min(620px,94vw);overflow-wrap:anywhere}
#finance-import-report p{white-space:pre-wrap;line-height:1.7}
