:root{--bg:#f5f3ee;--surface:#fff;--surface-soft:#fbfaf7;--ink:#182848;--muted:#697178;--line:#ded8c9;--line-strong:#cfc3ae;--gold:#b09058;--blue:#244778;--red:#d9372f;--green:#2f7756;--yellow:#b78a28;--shadow:0 14px 36px #1828481a;--radius:8px}*{box-sizing:border-box}body *{min-width:0}html,body,#root{min-height:100%}html{min-width:320px;overflow-x:hidden}body{background:var(--bg);color:var(--ink);margin:0;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans CJK SC,sans-serif;font-size:15px;line-height:1.45;overflow-x:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.7}.app-shell{width:100%;min-height:100vh;display:flex;overflow-x:hidden}.sidebar{display:none}.main{width:100%;min-width:0;max-width:100vw;padding-bottom:92px;overflow-x:hidden}.topbar{z-index:20;min-height:72px;padding:max(10px, env(safe-area-inset-top)) 14px 10px;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffffff2;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;gap:9px;display:grid;position:sticky;top:0}.mobile-brand{grid-area:1/1/auto/2;align-items:center;gap:8px;display:flex}.mobile-brand strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.mobile-logo{object-fit:contain;object-position:left center;width:98px;height:25px;display:block}.brand-logo{object-fit:contain;width:158px;height:auto;display:block}.search-box{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);grid-area:2/1/auto/-1;align-items:center;gap:8px;min-height:42px;padding:0 12px;display:flex}.search-box input{width:100%;color:var(--ink);background:0 0;border:0;outline:0}.top-actions{grid-area:1/2/auto/3;align-items:center;gap:8px;display:flex}.role-switch{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);white-space:nowrap;align-items:center;gap:8px;min-height:38px;padding:0 10px;font-weight:800;display:none}.role-switch span{color:var(--muted);font-size:13px}.role-switch select{color:var(--ink);background:0 0;border:0;outline:0;font-weight:800}.production-user-badge{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);grid-template-columns:minmax(0,1fr);gap:1px;max-width:176px;min-height:38px;padding:5px 10px;display:grid}.production-user-badge strong,.production-user-badge span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.production-user-badge strong{font-size:13px}.production-user-badge span{color:var(--muted);font-size:12px;font-weight:750}.nav-icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:18px;height:18px}.bottom-nav{z-index:30;padding:8px 10px max(8px, env(safe-area-inset-bottom));border:1px solid var(--line);background:#fffffff5;border-radius:14px 14px 0 0;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -10px 28px #1828481f}.nav-button{border-radius:var(--radius);color:#5e6b61;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:7px;min-height:44px;font-weight:850;display:flex}.bottom-nav .nav-button{flex-direction:column;gap:3px;font-size:12px}.nav-button.is-active{border-color:var(--line);color:var(--ink);background:#f2eadc}.view-root{width:100%;max-width:1160px;margin:0 auto;padding:18px 14px 28px}.page-head{align-items:start;gap:12px;margin-bottom:16px;display:grid}.dashboard-title-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.page-title h1,.page-head h1{letter-spacing:0;margin:0;font-size:28px;line-height:1.16}.page-date,.page-copy,.page-title p,.page-head p{color:var(--muted);margin:6px 0 0}.actions-row,.page-head-actions,.case-editor-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.primary-button,.ghost-button,.logout-button{border-radius:var(--radius);white-space:nowrap;justify-content:center;align-items:center;gap:7px;min-height:40px;padding:0 14px;font-weight:850;display:inline-flex}.primary-button{border:1px solid var(--ink);background:var(--ink);color:#fff}.ghost-button,.logout-button{border:1px solid var(--line);background:var(--surface);color:var(--ink)}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.stat-card,.panel,.case-card,.customer-row,.payment-row,.log-row,.expense-record-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:0 8px 22px #1828480f}.stat-card{gap:2px;min-height:102px;padding:16px;display:grid}.stat-card span,.money-card span{color:var(--muted);font-weight:750}.stat-card strong{font-size:30px;line-height:1.05}.stat-card p,.money-card p{color:var(--muted);margin:0}.stat-card.done strong{color:var(--green)}.stat-card.warn strong{color:var(--yellow)}.stat-card.blue strong{color:var(--blue)}.panel{margin-bottom:14px;padding:16px}.loading-panel{text-align:center;align-content:center;gap:6px;min-height:180px;display:grid}.loading-panel h2{margin:0}.loading-panel p{color:var(--muted);margin:0}.panel-title{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.panel-title h2{margin:0;font-size:19px;line-height:1.2}.panel-title span{color:var(--muted);font-weight:750}.dashboard-grid,.two-column-grid{gap:12px;display:grid}.money-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.money-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);padding:14px}.money-card strong{overflow-wrap:anywhere;margin:6px 0 2px;font-size:24px;line-height:1.08;display:block}.money-card small{color:var(--muted);overflow-wrap:anywhere;font-weight:750;line-height:1.35;display:block}.money-card-blue{border-color:#2a60aa3d}.money-card-blue strong{color:var(--blue)}.money-card-green{border-color:#2b84673d}.money-card-green strong{color:var(--green)}.money-card-yellow{border-color:#b87d1c47}.money-card-yellow strong{color:var(--yellow)}.money-card-red{border-color:#b8494947}.money-card-red strong{color:var(--red)}.dashboard-finance-entry{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding-top:12px;display:flex}.dashboard-finance-entry div{gap:3px;display:grid}.dashboard-finance-entry span{color:var(--muted)}.todo-panel{grid-column:1/-1}.todo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.todo-card{text-align:left;min-height:92px;color:inherit;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);gap:4px;padding:14px;display:grid}.todo-card span{color:var(--muted);font-weight:850}.todo-card strong{font-size:28px;line-height:1}.todo-card small{color:var(--muted);font-weight:750}.todo-card-blue strong{color:var(--blue)}.todo-card-yellow strong{color:var(--yellow)}.todo-card-red strong{color:var(--red)}.todo-card[aria-disabled=true]{opacity:.65;cursor:not-allowed}.todo-case-page-panel{margin-bottom:14px}.todo-case-list{gap:10px;display:grid}.todo-case-card{width:100%;color:inherit;text-align:left;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);justify-content:space-between;align-items:flex-start;gap:12px;padding:12px;display:flex}.todo-case-card:hover,.todo-file-card:hover{background:#f3f7ff;border-color:#c9d8f6}.todo-case-card>div:first-child{gap:3px;display:grid}.todo-case-card strong{font-size:16px}.todo-case-card span{color:var(--muted);overflow-wrap:anywhere}.todo-case-meta{text-align:right;justify-items:end;gap:6px;display:grid}.todo-case-meta b{color:var(--ink);font-size:17px}.todo-case-amount{flex-wrap:wrap;justify-content:flex-end;align-items:baseline;gap:6px;display:flex}.todo-case-amount span{font-weight:850}.todo-case-tags{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.todo-case-detail-panel,.todo-case-files-panel{gap:12px;display:grid}.todo-case-detail-grid,.todo-file-meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;display:grid}.todo-case-detail-grid dt,.todo-file-meta dt{color:var(--muted);font-weight:850}.todo-case-detail-grid dd,.todo-file-meta dd{overflow-wrap:anywhere;margin:3px 0 0}.todo-case-file-layout{gap:12px;display:grid}.todo-case-file-list{gap:8px;display:grid}.todo-file-card{width:100%;color:inherit;text-align:left;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);justify-content:space-between;align-items:center;gap:10px;padding:12px;display:flex}.todo-file-card.is-active{background:#eef4ff;border-color:#b9cdf0}.todo-file-card div{gap:3px;display:grid}.todo-file-card span,.todo-file-card small{color:var(--muted);font-weight:800}.todo-file-card small{color:var(--blue);flex:none}.todo-file-preview{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);gap:12px;padding:12px;display:grid}.todo-file-preview-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.todo-file-preview-head div{gap:3px;display:grid}.todo-file-preview-head span{color:var(--muted);font-weight:800}.todo-file-preview-head .ghost-button{min-height:34px;text-decoration:none}.todo-file-image{object-fit:contain;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);width:100%;max-height:360px}.todo-file-unavailable{border:1px dashed var(--line-strong);border-radius:var(--radius);color:var(--muted);background:var(--surface);margin:0;padding:12px;font-weight:800}.customer-list,.case-list,.record-list,.log-list{gap:10px;display:grid}.customer-row,.payment-row,.log-row{width:100%;color:inherit;text-align:left;justify-content:space-between;align-items:center;gap:12px;padding:16px;display:flex}.customer-row span,.payment-row span,.log-row span,.payment-row small{color:var(--muted);overflow-wrap:anywhere;display:block}.customer-row-meta{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.recent-customer-row{flex-direction:column;align-items:flex-start}.recent-customer-head{justify-content:space-between;align-items:center;gap:12px;width:100%;display:flex}.recent-customer-identity{flex-wrap:wrap;align-items:baseline;gap:8px;min-width:0;display:flex}.recent-customer-head strong{font-size:18px}.recent-customer-identity span{color:var(--muted);font-weight:750;display:inline}.recent-customer-count{min-height:26px;color:var(--blue);background:#eef4ff;border:1px solid #c9d8f6;border-radius:8px;flex:none;justify-content:center;align-items:center;padding:4px 9px;font-size:13px;font-weight:950;line-height:1;display:inline-flex}.recent-customer-summary{gap:8px;width:100%;display:grid}.recent-customer-statuses{flex-wrap:wrap;gap:6px;display:flex}.record-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.expense-record-card{overflow:hidden}.expense-record-card summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;list-style:none;display:flex}.expense-record-card summary::-webkit-details-marker{display:none}.expense-record-summary-main{gap:3px;min-width:0;display:grid}.expense-record-summary-main strong{overflow-wrap:anywhere;font-size:17px}.expense-record-summary-main span,.expense-record-summary-meta span,.expense-record-detail-grid dt{color:var(--muted);font-weight:800}.expense-record-summary-meta{text-align:right;justify-items:end;gap:4px;min-width:136px;display:grid}.expense-record-summary-meta b{color:var(--ink);font-size:17px;line-height:1.15}.expense-record-summary-meta:after{content:"展开";border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);min-height:30px;color:var(--ink);justify-content:center;align-items:center;padding:0 10px;font-weight:900;display:inline-flex}.expense-record-card[open] summary{border-bottom:1px solid var(--line)}.expense-record-card[open] .expense-record-summary-meta:after{content:"收起";color:var(--blue);background:#eef4ff;border-color:#c9d8f6}.expense-record-detail{background:var(--surface-soft);gap:12px;padding:14px 16px 16px;display:grid}.expense-record-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;display:grid}.expense-record-detail-grid div{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);gap:3px;padding:10px;display:grid}.expense-record-detail-grid dt{font-size:13px}.expense-record-detail-grid dd{color:var(--ink);overflow-wrap:anywhere;margin:0;font-weight:850}.expense-record-actions{justify-content:flex-start}.tag{white-space:nowrap;border-radius:8px;align-items:center;gap:5px;min-height:28px;padding:0 10px;font-size:13px;font-weight:850;display:inline-flex}.tag-gray{color:#3e4a42;background:#edf0ed}.tag-blue{color:#1f4a80;background:#e9f1ff}.tag-green{color:#276849;background:#e7f4ee}.tag-yellow{color:#865e0e;background:#fff3d8}.tag-red{color:#b62924;background:#fde7e5}.filter-row{color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;font-weight:800;display:flex}.filter-row label{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);align-items:center;gap:8px;padding:8px 10px;display:flex}.filter-row select,.form-grid select,.form-grid input,.form-grid textarea,.compact-form input,.compact-form select,.compact-form textarea{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);width:100%;min-height:42px;color:var(--ink);outline:0;padding:0 12px}.form-grid textarea,.compact-form textarea{resize:vertical;min-height:86px;padding-top:10px}.case-archive-groups{gap:14px;display:grid}.case-archive-group{border:1px solid var(--line);border-radius:var(--radius);background:#ffffffa6}.case-archive-group>summary{cursor:pointer;justify-content:space-between;align-items:center;padding:14px 16px;font-weight:900;display:flex}.case-archive-group>summary span{color:var(--muted)}.case-archive-group .case-list{padding:0 14px 14px}.case-card{overflow:hidden}.case-editor-summary,.customer-case-summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:14px;display:flex}.case-card-main{gap:3px;display:grid}.case-card-main strong{font-size:17px}.case-card-main p{color:var(--muted);overflow-wrap:anywhere;margin:0}.case-card-tags{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.case-edit-form{gap:14px;display:grid}.case-editor-body{border-top:1px solid var(--line);padding:0 14px 14px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.form-grid label,.compact-form label{color:var(--ink);gap:6px;font-weight:800;display:grid}.wide-field,.full-field{grid-column:1/-1}.upload-field input{padding-top:9px}.form-note{color:var(--muted);font-weight:800}.case-details{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0 0;display:grid}.case-details dt{color:var(--muted);font-weight:800}.case-details dd{overflow-wrap:anywhere;margin:3px 0 0}.file-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);padding:12px}.file-panel-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.inline-upload{align-items:center;gap:8px;display:flex;position:relative}.inline-upload input[type=file]{opacity:0;cursor:pointer;position:absolute;inset:0}.inline-upload span{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);align-items:center;gap:6px;min-height:36px;padding:0 10px;font-weight:850;display:inline-flex}.inline-upload select{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-height:36px;color:var(--ink);padding:0 8px}.file-list,.file-strip{flex-wrap:wrap;gap:8px;display:flex}.file-link{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);max-width:100%;min-height:34px;color:var(--ink);align-items:center;gap:6px;padding:0 10px;font-weight:800;text-decoration:none;display:inline-flex}.file-link small{color:var(--muted);font-weight:700}.file-link-muted{color:var(--muted)}.empty-state{border:1px dashed var(--line);border-radius:var(--radius);width:100%;color:var(--muted);text-align:center;background:#ffffff80;padding:18px}.money-client-grid{gap:12px;display:grid}.money-client-card{width:100%;color:inherit;text-align:left;justify-content:space-between;align-items:center;gap:12px;display:flex}.money-client-card strong{font-size:18px;display:block}.money-client-card span{color:var(--muted)}.money-client-card-simple{justify-content:flex-start}.money-client-card-simple>div:first-child{flex-wrap:nowrap;align-items:center;gap:8px;width:100%;display:flex;overflow:hidden}.money-client-card-simple strong{flex:none}.money-client-card-simple span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.money-client-numbers{text-align:right}.money-client-numbers b{font-size:22px;display:block}.money-list-title{margin:6px 0 10px}.money-action-panel{border-color:#c9d8f6}.compact-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.compact-form button,.expense-form button{justify-self:start}.form-actions{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:8px;display:flex}.amount-currency-row{grid-template-columns:minmax(86px,112px) minmax(0,1fr);gap:8px;display:grid}.allocation-picker{border:1px solid var(--line);border-radius:var(--radius);grid-column:1/-1;gap:8px;margin:0;padding:12px;display:grid}.allocation-picker legend{color:var(--ink);font-weight:900}.allocation-picker p{color:var(--muted);margin:0}.allocation-row{grid-template-columns:minmax(0,1fr) minmax(120px,180px);align-items:center;gap:8px;display:grid}.allocation-row span{gap:2px;font-weight:850;display:grid}.allocation-row small,.simple-table small{color:var(--muted);font-weight:700;display:block}.simple-table{gap:6px;display:grid;overflow-x:auto}.table-head,.table-row{border-radius:var(--radius);align-items:center;gap:10px;min-width:800px;padding:10px 12px;display:grid}.finance-table .table-head,.finance-table .table-row{grid-template-columns:2fr .8fr repeat(8,minmax(88px,1fr))}.simple-table:not(.finance-table) .table-head,.simple-table:not(.finance-table) .table-row{grid-template-columns:repeat(4,minmax(100px,1fr))}.cost-table .table-head,.cost-table .table-row{grid-template-columns:2fr repeat(4,minmax(100px,1fr))}.lawyer-table .table-head,.lawyer-table .table-row{grid-template-columns:1.4fr .7fr repeat(3,minmax(100px,1fr))}.table-head{color:var(--muted);background:#f0ece3;font-weight:900}.table-row{border:1px solid var(--line);background:var(--surface-soft)}.table-row span{overflow-wrap:anywhere}.finance-report-panel{gap:14px;display:grid}.finance-primary-grid,.finance-next-grid,.finance-ledger-grid,.finance-analysis-grid,.finance-customer-list,.finance-type-list,.finance-cashflow-list{gap:10px;display:grid}.finance-primary-grid,.finance-next-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-metric-card,.finance-signal,.finance-ledger-card,.finance-cashflow-row,.finance-customer-card,.finance-type-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft)}.finance-metric-card{align-content:start;gap:7px;min-height:126px;padding:14px;display:grid}.finance-metric-card span,.finance-signal span,.finance-small-metric span,.finance-ledger-row span{color:var(--muted);font-weight:850}.finance-metric-card strong{overflow-wrap:anywhere;font-size:clamp(22px,5.6vw,31px);line-height:1.05}.finance-metric-card p,.finance-ledger-card p{color:var(--muted);margin:0;font-weight:750}.finance-signal{gap:5px;padding:12px;display:grid}.finance-signal strong{font-size:22px;line-height:1.05}.finance-signal small{color:var(--muted);overflow-wrap:anywhere;font-weight:750}.finance-ledger-card{gap:12px;padding:14px;display:grid}.finance-ledger-card h3{margin:0;font-size:17px}.finance-ledger-list{gap:7px;display:grid}.finance-ledger-row{border-top:1px solid var(--line);grid-template-columns:minmax(86px,.9fr) minmax(0,1fr);align-items:baseline;gap:6px 10px;padding-top:7px;display:grid}.finance-ledger-row strong{text-align:right;overflow-wrap:anywhere;justify-self:end}.finance-ledger-row small{color:var(--muted);grid-column:1/-1;font-weight:750}.finance-cashflow-row{gap:12px;padding:14px;display:grid}.finance-cashflow-head,.finance-customer-head,.finance-type-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.finance-cashflow-head strong,.finance-customer-head strong,.finance-type-head strong{font-size:17px}.finance-cashflow-head span,.finance-customer-head span,.finance-type-head span{color:var(--muted);font-weight:800}.finance-cashflow-bars{gap:8px;display:grid}.finance-mini-bar{grid-template-columns:58px minmax(0,1fr) minmax(86px,auto);align-items:center;gap:8px;display:grid}.finance-mini-bar span{color:var(--muted);font-weight:850}.finance-mini-bar div{background:#ece7db;border-radius:99px;height:9px;overflow:hidden}.finance-mini-bar i{border-radius:inherit;height:100%;display:block}.finance-mini-bar strong{white-space:nowrap;justify-self:end;font-size:13px}.finance-cashflow-meta{color:var(--muted);flex-wrap:wrap;gap:8px;font-weight:800;display:flex}.finance-customer-card,.finance-type-card{gap:12px;padding:14px;display:grid}.finance-customer-head>div{gap:3px;display:grid}.finance-customer-metrics,.finance-type-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.finance-small-metric{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);gap:3px;min-height:58px;padding:9px;display:grid}.finance-small-metric strong{overflow-wrap:anywhere}.finance-tone-blue,.finance-tone-green,.finance-tone-yellow,.finance-tone-red{border-color:var(--line)}.finance-tone-blue strong,.finance-text-blue{color:var(--blue)}.finance-tone-green strong,.finance-text-green{color:var(--green)}.finance-tone-yellow strong,.finance-text-yellow{color:var(--yellow)}.finance-tone-red strong,.finance-text-red{color:var(--red)}.finance-tone-blue{background:#f3f7ff}.finance-tone-green{background:#f3faf6}.finance-tone-yellow{background:#fff8e9}.finance-tone-red{background:#fff4f2}.finance-bg-blue{background:var(--blue)}.finance-bg-green{background:var(--green)}.finance-bg-yellow{background:var(--yellow)}.finance-bg-red{background:var(--red)}.collapsible-panel{padding:0;overflow:hidden}.collapsible-summary{cursor:pointer;justify-content:space-between;align-items:center;gap:14px;padding:16px;list-style:none;display:flex}.collapsible-summary::-webkit-details-marker{display:none}.collapsible-summary div{gap:4px;min-width:0;display:grid}.collapsible-summary h2{margin:0;font-size:19px;line-height:1.2}.collapsible-summary span{color:var(--muted);overflow-wrap:anywhere;font-weight:750}.collapsible-summary b{color:var(--muted);flex:none;align-items:center;gap:8px;font-size:14px;display:inline-flex}.collapsible-summary b:after{content:"展开";border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);min-width:42px;min-height:30px;color:var(--ink);justify-content:center;align-items:center;padding:0 10px;font-weight:900;display:inline-flex}.collapsible-panel[open] .collapsible-summary{border-bottom:1px solid var(--line)}.collapsible-panel[open] .collapsible-summary b:after{content:"收起";color:var(--blue);background:#eef4ff;border-color:#c9d8f6}.finance-case-panel-embedded{padding:14px 16px 16px}.lawyer-accordion-list{gap:10px;display:grid}.lawyer-accordion-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);overflow:hidden}.lawyer-accordion-card summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:14px;list-style:none;display:flex}.lawyer-accordion-card summary::-webkit-details-marker{display:none}.lawyer-accordion-card summary div{gap:3px;display:grid}.lawyer-accordion-card summary strong{font-size:17px}.lawyer-accordion-card summary span{color:var(--muted);font-weight:800}.lawyer-accordion-card summary b{color:var(--ink);flex:none;align-items:center;gap:8px;font-size:15px;display:inline-flex}.lawyer-accordion-card summary b:after{content:"展开";border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-height:30px;color:var(--ink);justify-content:center;align-items:center;padding:0 10px;font-weight:900;display:inline-flex}.lawyer-accordion-card[open] summary{border-bottom:1px solid var(--line)}.lawyer-accordion-card[open] summary b:after{content:"收起";color:var(--blue);background:#eef4ff;border-color:#c9d8f6}.lawyer-case-list{gap:10px;padding:12px;display:grid}.lawyer-case-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);gap:10px;padding:12px;display:grid}.lawyer-case-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.lawyer-case-head>div:first-child{gap:3px;display:grid}.lawyer-case-head strong{font-size:16px}.lawyer-case-head span,.lawyer-empty-note{color:var(--muted)}.lawyer-case-tags{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.lawyer-fee-summary{border-radius:var(--radius);background:#f0ece3;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.lawyer-fee-summary span{color:var(--muted);font-weight:850}.lawyer-fee-summary strong{color:var(--blue);font-size:18px}.lawyer-fee-list{gap:8px;display:grid}.lawyer-fee-row{border-top:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:10px;padding:10px 0 0;display:flex}.lawyer-fee-row>div{gap:3px;display:grid}.lawyer-fee-row>div:last-child{text-align:right;justify-items:end}.lawyer-fee-row span{color:var(--muted);font-weight:750}.lawyer-fee-row b{color:var(--ink)}.lawyer-empty-note{border:1px dashed var(--line);border-radius:var(--radius);background:#ffffff8c;margin:0;padding:10px 12px;font-weight:750}.case-cost-accordion-list{gap:10px;display:grid}.case-cost-accordion-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);overflow:hidden}.case-cost-accordion-card summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:14px;list-style:none;display:flex}.case-cost-accordion-card summary::-webkit-details-marker{display:none}.case-cost-summary-main{gap:3px;display:grid}.case-cost-summary-main strong{font-size:17px}.case-cost-summary-main span,.case-cost-summary-numbers span,.case-cost-detail-card span,.case-cost-detail-card small,.case-cost-empty-note{color:var(--muted);font-weight:750}.case-cost-summary-numbers{text-align:right;justify-items:end;gap:4px;display:grid}.case-cost-summary-numbers b{color:var(--ink);align-items:center;gap:8px;font-size:15px;display:inline-flex}.case-cost-summary-numbers b:after{content:"展开";border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-height:30px;color:var(--ink);justify-content:center;align-items:center;padding:0 10px;font-weight:900;display:inline-flex}.case-cost-accordion-card[open] summary{border-bottom:1px solid var(--line)}.case-cost-accordion-card[open] .case-cost-summary-numbers b:after{content:"收起";color:var(--blue);background:#eef4ff;border-color:#c9d8f6}.case-cost-detail-list{gap:10px;padding:12px;display:grid}.case-cost-status-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.case-cost-status-strip span{border-radius:var(--radius);color:var(--muted);background:#f0ece3;padding:9px 10px;font-weight:850}.case-cost-detail-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);justify-content:space-between;align-items:flex-start;gap:12px;padding:12px;display:flex}.case-cost-detail-card>div:first-child{gap:3px;display:grid}.case-cost-detail-money{text-align:right;justify-items:end;gap:6px;display:grid}.case-cost-detail-money b{color:var(--ink);font-size:17px}.case-cost-empty-note{border:1px dashed var(--line);border-radius:var(--radius);background:#ffffff8c;margin:0;padding:10px 12px}.bar-list{gap:10px;display:grid}.bar-row{grid-template-columns:72px minmax(0,1fr) 92px;align-items:center;gap:10px;display:grid}.bar-row small{color:var(--muted);grid-column:2/-1}.bar-track{background:#ece7df;border-radius:999px;height:10px;overflow:hidden}.bar-track i{border-radius:inherit;height:100%;display:block}.bar-track .positive{background:var(--green)}.bar-track .negative{background:var(--red)}.toast{z-index:50;width:min(360px,100vw - 32px);color:var(--ink);border-radius:var(--radius);background:#fffdf8f5;border:1px solid #1c385f2e;gap:4px;padding:13px 14px;display:grid;position:fixed;bottom:24px;right:24px;box-shadow:0 18px 48px #1828482e}.toast strong{font-size:15px;line-height:1.25}.toast span{color:var(--muted);font-weight:750;line-height:1.35}.locked-panel{text-align:center;align-content:center;place-items:center;min-height:260px;display:grid}.locked-panel .nav-icon{width:44px;height:44px;color:var(--gold)}.locked-panel h2{margin:8px 0 0}.locked-panel p{max-width:520px;color:var(--muted);margin:0}@media (width>=760px){.role-switch{display:inline-flex}.stats-grid,.money-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.summary-five{grid-template-columns:repeat(5,minmax(0,1fr))}.finance-top{grid-template-columns:repeat(auto-fit,minmax(158px,1fr))}.finance-primary-grid,.finance-next-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.finance-ledger-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.finance-analysis-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.finance-customer-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.finance-type-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.todo-case-file-layout{grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr);align-items:start}.todo-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.dashboard-grid{grid-template-columns:minmax(0,1.5fr) minmax(280px,.8fr)}.dashboard-grid-single{grid-template-columns:1fr}.two-column-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=960px){.bottom-nav{display:none}.sidebar{color:#fff;background:#172948;flex-direction:column;flex:0 0 252px;width:252px;height:100vh;padding:26px 18px;display:flex;position:sticky;top:0}.brand{border-radius:var(--radius);color:var(--ink);background:#f8f7f4;gap:10px;padding:18px;display:grid}.brand div{gap:3px;display:grid}.brand span{color:#5e6570;font-weight:750}.nav-list{gap:8px;margin-top:24px;display:grid}.sidebar .nav-button{color:#d8dfec;justify-content:flex-start;min-height:44px;padding:0 12px}.sidebar .nav-button.is-active{color:#fff;background:#ffffff1f;border-color:#ffffff24}.sidebar-user{border-radius:var(--radius);background:#ffffff17;align-items:center;gap:10px;margin-top:auto;padding:10px;display:flex}.avatar{background:#ffffff2e;border-radius:50%;place-items:center;width:38px;height:38px;font-weight:900;display:grid}.sidebar-user-meta{gap:2px;display:grid}.sidebar-user-meta strong{text-overflow:ellipsis;white-space:nowrap;max-width:150px;overflow:hidden}.sidebar-user-meta span{color:#cbd5e6;font-size:13px}.main{padding-bottom:0}.topbar{grid-template-columns:minmax(360px,620px) minmax(0,1fr) auto;min-height:72px;padding:14px 32px}.mobile-brand{display:none}.search-box{grid-area:1/1}.top-actions{grid-column:3}.view-root{padding:28px 32px 48px}.page-head{grid-template-columns:minmax(0,1fr) auto;align-items:center}.page-head .page-title{grid-column:1}.page-head-actions{justify-content:flex-end}}@media (width<=640px){body{font-size:14px}.topbar{grid-template-columns:minmax(0,1fr) auto}.logout-button{min-height:34px;padding:0 10px;font-size:12px}.page-title h1,.page-head h1{font-size:30px}.dashboard-title-row,.dashboard-finance-entry,.customer-row,.payment-row,.money-client-card,.case-editor-summary,.customer-case-summary,.file-panel-head,.expense-record-card summary{flex-direction:column;align-items:flex-start}.customer-row-meta,.case-card-tags,.todo-case-tags{justify-content:flex-start}.todo-case-card{flex-direction:column}.todo-case-meta{text-align:left;justify-items:start}.todo-case-amount{justify-content:flex-start}.form-grid,.compact-form,.case-details,.todo-case-detail-grid,.todo-file-meta{grid-template-columns:1fr}.todo-file-preview-head{flex-direction:column;align-items:stretch}.money-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.money-card strong{font-size:20px}.expense-record-summary-meta{text-align:left;justify-items:start;min-width:0}.expense-record-detail-grid{grid-template-columns:1fr}.collapsible-summary{align-items:flex-start;padding:14px}.collapsible-summary h2{font-size:20px}.collapsible-summary b{flex-direction:column;align-items:flex-end;gap:6px}.finance-case-panel-embedded{padding:12px}.lawyer-accordion-card summary{align-items:flex-start}.lawyer-accordion-card summary b{flex-direction:column;align-items:flex-end;gap:6px}.lawyer-case-head,.lawyer-fee-row{flex-direction:column}.lawyer-case-tags{justify-content:flex-start}.lawyer-fee-row>div:last-child{text-align:left;justify-items:start}.case-cost-accordion-card summary,.case-cost-detail-card{flex-direction:column;align-items:flex-start}.case-cost-summary-numbers{text-align:left;justify-items:start}.case-cost-summary-numbers b{flex-direction:row}.case-cost-status-strip{grid-template-columns:1fr}.case-cost-detail-money{text-align:left;justify-items:start}.allocation-row{grid-template-columns:1fr}.bar-row{grid-template-columns:62px minmax(0,1fr)}.bar-row strong{grid-column:2}.bar-row small{grid-column:1/-1}.table-head,.table-row{min-width:800px}.simple-table.finance-table,.simple-table.cost-table{overflow-x:visible}.simple-table.finance-table .table-head,.simple-table.cost-table .table-head{display:none}.simple-table.finance-table .table-row,.simple-table.cost-table .table-row{grid-template-columns:1fr;gap:8px;min-width:0;padding:14px}.simple-table.finance-table .table-row>span,.simple-table.finance-table .table-row>strong,.simple-table.cost-table .table-row>span,.simple-table.cost-table .table-row>strong{width:100%;color:var(--ink);text-align:right;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.simple-table.finance-table .table-row>span:before,.simple-table.finance-table .table-row>strong:before,.simple-table.cost-table .table-row>span:before,.simple-table.cost-table .table-row>strong:before{content:attr(data-label);color:var(--muted);text-align:left;flex:0 0 96px;font-weight:900}.simple-table.finance-table .table-row>span:first-child,.simple-table.cost-table .table-row>span:first-child{text-align:left;border-bottom:1px solid var(--line);justify-content:stretch;padding-bottom:4px;display:grid}.simple-table.finance-table .table-row>span:first-child:before,.simple-table.cost-table .table-row>span:first-child:before{content:"";display:none}.toast{right:12px;bottom:calc(76px + env(safe-area-inset-bottom));width:auto;left:12px}.inline-upload{flex-wrap:wrap;width:100%}.inline-upload select,.inline-upload span{justify-content:center;width:100%}}
