:root{--bg:#f4f6f8;--surface:#ffffff;--surface-soft:#f8fafc;--border:#dfe5ec;--text:#17212b;--muted:#687789;--primary:#2563eb;--primary-strong:#1d4ed8;--green:#07815f;--amber:#a05d00;--violet:#6d4cc2;--shadow:0 18px 50px rgba(28,39,52,0.12)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Arial,PingFang SC,Microsoft YaHei,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.login-page{min-height:100vh;display:grid;place-items:center;padding:32px;background:linear-gradient(rgba(23,33,43,.72),rgba(23,33,43,.72)),url(https://images.unsplash.com/photo-1497366754035-f200968a6e72?auto=format&fit=crop&w=1800&q=80);background-size:cover;background-position:50%}.login-panel{width:min(1040px,100%);display:grid;grid-template-columns:1.1fr 420px;gap:24px;align-items:stretch}.session-loading{min-width:280px;padding:22px 26px;border-radius:8px;background:rgba(255,255,255,.96);color:var(--text);box-shadow:var(--shadow);text-align:center;font-weight:700}.login-copy{color:#fff;padding:56px 36px;display:flex;flex-direction:column;justify-content:flex-end}.login-copy h1{margin:10px 0 12px;font-size:46px;line-height:1.12;letter-spacing:0}.login-copy p{max-width:620px;margin:0;color:rgba(255,255,255,.84);line-height:1.8}.brand-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:8px;background:var(--primary);color:#fff;font-weight:800}.brand-mark.large{width:58px;height:58px;font-size:24px;background:#fff;color:var(--primary)}.login-card{background:rgba(255,255,255,.96);border:1px solid rgba(255,255,255,.45);box-shadow:var(--shadow);border-radius:8px;padding:28px;display:grid;gap:18px}.login-title{display:flex;gap:12px;align-items:center}.brand strong,.login-title strong{display:block}.brand span,.login-title span{color:var(--muted);font-size:13px}label{display:grid;gap:8px;color:#334155;font-size:14px}.field-hint{color:var(--muted);font-size:12px;line-height:1.5}input,select,textarea{min-height:42px;border:1px solid var(--border);border-radius:6px;padding:0 12px;color:var(--text);background:#fff;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.12)}textarea{min-height:128px;padding:10px 12px;line-height:1.6;resize:vertical}.panel-header button,.primary-button,.secondary-button{min-height:40px;border:0;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 14px}.primary-button{background:var(--primary);color:#fff;font-weight:700}.primary-button:hover{background:var(--primary-strong)}.panel-header button,.secondary-button{background:#eef4ff;color:var(--primary-strong);border:1px solid #d7e5ff}.danger-button{min-height:40px;border:0;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 14px;background:#b42318;color:#fff;font-weight:700}.danger-button:hover{background:#912018}button:disabled{cursor:not-allowed;opacity:.55}.login-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.link-button{min-height:28px;border:0;background:transparent;color:var(--primary-strong);font-weight:700;padding:0;text-align:left;justify-self:start}.app-shell{min-height:100vh;display:grid;grid-template-columns:248px minmax(0,1fr)}.app-shell>*{min-width:0}.sidebar{background:#111827;color:#e5e7eb;padding:20px 14px;display:flex;flex-direction:column;gap:20px}.brand{display:flex;align-items:center;gap:12px;padding:6px 8px 14px;border-bottom:1px solid rgba(255,255,255,.1)}.brand span{color:#9ca3af}.menu{display:grid;gap:18px;overflow:auto}.menu-group{display:grid;gap:4px}.menu-group-label{padding:0 10px 5px;color:#718096;font-size:11px;font-weight:700;letter-spacing:.08em}.menu-item{width:100%;border:0;border-radius:8px;background:transparent;color:#cbd5e1;min-height:40px;padding:0 10px;display:flex;align-items:center;gap:10px;text-align:left}.menu-item.active,.menu-item:hover{background:rgba(96,165,250,.17);color:#fff}.main{min-width:0;padding:24px}.topbar{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:22px}.topbar h1{margin:4px 0 0;font-size:28px;letter-spacing:0}.eyebrow{margin:0;color:var(--muted);font-size:13px}.data-status{display:inline-flex;align-items:center;min-height:26px;margin-top:8px;padding:0 9px;border:1px solid #cfe0ff;border-radius:999px;background:#eef4ff;color:var(--primary-strong);font-size:13px}.topbar-actions{display:flex;align-items:center;gap:10px}.topbar-control{position:relative}.search{width:280px;height:42px;display:flex;align-items:center;gap:8px;padding:0 12px;background:#fff;border:1px solid var(--border);border-radius:8px}.search input{border:0;box-shadow:none;min-height:unset;padding:0;width:100%}.icon-button,.user-pill button{width:42px;height:42px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);display:grid;place-items:center}.notification-button{position:relative}.notification-button>span{position:absolute;top:-5px;right:-5px;min-width:20px;height:20px;display:grid;place-items:center;padding:0 5px;border:2px solid var(--bg);border-radius:999px;background:#b42318;color:#fff;font-size:11px;font-weight:800}.quick-popover{position:absolute;top:calc(100% + 8px);right:0;z-index:20;width:320px;max-height:360px;overflow:auto;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--surface);box-shadow:var(--shadow)}.quick-popover button{width:100%;min-height:48px;border:0;border-radius:6px;background:transparent;color:var(--text);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px;text-align:left}.quick-popover button:hover{background:var(--surface-soft)}.quick-popover button span,.quick-popover button strong{overflow:hidden;text-overflow:ellipsis}.search-results button{display:grid;justify-content:stretch;gap:4px}.quick-popover p,.search-results button span{margin:0;color:var(--muted);font-size:13px}.reminder-popover{width:260px}.reminder-popover>strong{display:block;padding:8px 10px 6px}.reminder-popover b{min-width:30px;height:28px;display:grid;place-items:center;border-radius:6px;background:#eef4ff;color:var(--primary-strong)}.user-pill{height:42px;display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:8px;padding-left:12px}.password-input-row{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:8px}.password-input-row button{min-height:42px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);display:grid;place-items:center}.password-reset-actions{margin:12px 0;display:flex;align-items:center;justify-content:space-between;gap:12px}.password-reset-actions span,.temporary-password-notice em{color:var(--muted);font-size:13px;font-style:normal}.temporary-password-notice{margin-bottom:12px;display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:10px;padding:12px;border:1px solid #b8dfca;border-radius:8px;background:#eefaf3}.temporary-password-notice strong{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:16px}.show-password-toggle{display:flex;align-items:center;gap:8px}.show-password-toggle input{min-height:auto;width:auto}.form-success{margin:0;color:#067647}.content-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,.6fr);gap:20px}.metric-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.dashboard-metric-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.metric-card,.module-hero,.panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 28px rgba(25,35,48,.06)}.metric-card{min-height:122px;padding:18px;display:grid;gap:8px}.future-item span,.metric-card span,.todo-item span{color:var(--muted);font-size:13px}.metric-card strong{font-size:26px}.metric-card em{font-style:normal;font-weight:700}.metric-card.green em{color:var(--green)}.metric-card.blue em{color:var(--primary)}.metric-card.amber em{color:var(--amber)}.metric-card.violet em{color:var(--violet)}.panel{padding:18px;min-width:0}.wide{grid-column:1/-1}.panel-header{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px}.module-hero h2,.panel-header h3{margin:0;letter-spacing:0}.panel-meta{color:var(--muted);font-size:13px;text-align:right}.table-wrap{max-height:min(58vh,560px);overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;border:1px solid var(--border);border-radius:8px}.salary-sheet-table{min-width:2850px}.salary-sheet-table th{text-align:center}.salary-sheet-table thead tr:nth-child(2) th{top:44px}table{width:100%;border-collapse:collapse;min-width:720px;background:#fff}td,th{padding:13px 14px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}th{position:sticky;top:0;z-index:2;background:var(--surface-soft);color:#475569;font-size:13px;box-shadow:0 1px 0 var(--border)}td{color:#263443}.list-locator{display:grid;grid-template-columns:auto minmax(180px,1fr) minmax(210px,1fr) auto;gap:10px;align-items:center;margin-bottom:10px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft)}.list-locator>svg{color:var(--muted)}.list-locator input,.list-locator select{min-height:38px}.list-locator>span{color:var(--muted);font-size:12px;white-space:nowrap}tr.located-row td{background:#fff4cc;transition:background .18s ease}.attachment-list{min-width:150px;display:grid;gap:4px;white-space:normal}.attachment-list a{color:var(--primary-strong);font-size:13px;font-weight:700;line-height:1.45;text-decoration:none;word-break:break-all}.attachment-list a:hover{text-decoration:underline}.status{display:inline-flex;align-items:center;min-height:26px;padding:0 9px;border-radius:999px;background:#eef4ff;color:var(--primary-strong);font-size:13px}.future-list,.todo-list{display:grid;gap:10px}.future-item,.todo-item{min-height:62px;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px;background:var(--surface-soft);border:1px solid var(--border);border-radius:8px}.future-item div:first-child,.todo-item div{display:grid;gap:5px}.future-item em,.todo-item em{font-style:normal;font-weight:700;color:var(--primary-strong);white-space:nowrap}.future-item{display:grid;grid-template-columns:minmax(0,1fr) 44px auto}.probability{min-height:28px;display:grid;place-items:center;border-radius:6px;font-weight:700;font-size:13px}.probability.高{color:#047857;background:#dff8eb}.probability.中{color:#92400e;background:#fff1d6}.probability.低{color:#9f1239;background:#ffe4e6}.chart-row{height:260px;display:grid;grid-template-columns:repeat(12,1fr);gap:10px;align-items:end;padding:16px 6px 0}.chart-legend{display:flex;justify-content:flex-end;gap:16px;color:var(--muted);font-size:13px}.chart-legend span{display:inline-flex;align-items:center;gap:6px}.chart-legend i{width:10px;height:10px;border-radius:3px;background:var(--primary)}.chart-legend i.profit{background:var(--green)}.bar-wrap{height:100%;display:grid;grid-template-rows:1fr auto;gap:8px;align-items:end;text-align:center;color:var(--muted);font-size:12px}.bar-pair{height:100%;display:flex;align-items:flex-end;justify-content:center;gap:3px}.bar{width:min(18px,45%);min-height:0;border-radius:6px 6px 0 0;background:var(--primary)}.bar.profit{background:var(--green)}.bar.profit.negative{background:#b42318}.empty-state{min-height:84px;display:grid;place-items:center;padding:18px;border:1px dashed var(--border);border-radius:8px;background:var(--surface-soft);color:var(--muted);text-align:center}.chart-empty{min-height:220px;margin-top:10px}.module-hero{grid-column:1/-1;padding:22px;display:flex;justify-content:space-between;align-items:center;gap:18px}.module-hero p{color:var(--muted);line-height:1.7;margin:8px 0 0}.action-row,.filter-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.filter-row{margin-bottom:14px}.file-control{min-height:42px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);padding:0 12px;display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;cursor:pointer}.file-control input{display:none}.filter-row input,.filter-row select{min-width:180px}.data-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:14px;margin-bottom:18px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft)}.data-form.compact{grid-template-columns:repeat(3,minmax(0,1fr))}.data-form.one-column{grid-template-columns:1fr}.settings-form label:nth-of-type(n+7){grid-column:span 2}.data-form .primary-button{align-self:end;min-height:42px}.project-description-field{grid-column:span 2}.project-description-field textarea{min-height:96px}.project-detail-layout{grid-column:1/-1;display:grid;grid-template-columns:1fr;gap:18px;min-width:0}.project-detail-heading{display:flex;align-items:flex-start;gap:18px}.project-detail-heading .secondary-button{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto}.project-detail-heading h2{margin:4px 0 6px;font-size:26px;letter-spacing:0}.project-detail-heading p:last-child{margin:0;color:var(--muted)}.project-detail-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.project-detail-metrics .metric-card{min-height:104px}.project-introduction textarea{width:100%}.project-description-actions{display:flex;justify-content:flex-end;margin-top:12px}.project-description-copy{margin:0;color:#334155;line-height:1.8;white-space:pre-wrap}.project-chart-grid{display:grid;grid-template-columns:minmax(260px,.72fr) minmax(520px,1.28fr);gap:24px;align-items:stretch}.receipt-chart{min-height:290px;display:grid;place-items:center;align-content:center;gap:18px}.donut-chart{width:210px;height:210px;border-radius:50%;display:grid;place-items:center}.donut-center{width:142px;height:142px;border-radius:50%;background:#fff;display:grid;place-content:center;text-align:center;gap:5px}.donut-center strong{font-size:28px}.donut-center span,.project-bar-column>span{color:var(--muted);font-size:12px}.receipt-legend{display:grid;gap:8px;font-size:13px}.receipt-legend span{display:flex;align-items:center;gap:8px}.receipt-legend i{width:10px;height:10px;border-radius:2px}.receipt-legend i.received{background:var(--green)}.receipt-legend i.outstanding{background:#d9e0e8}.project-bar-chart{height:290px;min-width:0;display:grid;grid-template-columns:repeat(5,minmax(88px,1fr));gap:12px;align-items:end;overflow-x:auto;padding-top:12px}.project-bar-column{height:100%;min-width:88px;display:grid;grid-template-rows:38px minmax(150px,1fr) 32px;gap:7px;align-items:end;text-align:center}.project-bar-column>strong{align-self:center;font-size:12px;white-space:nowrap}.project-bar-track{width:46px;height:100%;justify-self:center;display:flex;align-items:flex-end;background:#f1f4f7;border-radius:6px 6px 0 0;overflow:hidden}.project-bar{width:100%;min-height:0;background:#64748b}.project-bar.invoice{background:#6d4cc2}.project-bar.income{background:var(--green)}.project-bar.cost{background:#d97706}.project-bar.profit{background:var(--primary)}.project-bar.loss{background:#b42318}.section-gap{margin-top:20px}.approved-cost-composition{display:grid;gap:14px}.approved-cost-composition .panel-header{margin-bottom:0}.cost-composition-toolbar{display:flex;align-items:end;justify-content:space-between;gap:16px;padding:14px;border:1px solid #dbe7f6;border-radius:8px;background:#f5f9ff}.cost-composition-toolbar p{max-width:620px;margin:0;color:#526477;line-height:1.65}.cost-composition-toolbar label{width:min(230px,100%);flex:0 0 auto}.cost-composition-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(176px,1fr));gap:10px}.cost-composition-card{min-height:108px;display:grid;align-content:space-between;gap:9px;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft)}.cost-composition-card em,.cost-composition-card span{color:var(--muted);font-size:13px;font-style:normal}.cost-composition-card strong{color:var(--primary-strong);font-size:20px}.approved-cost-table{max-height:min(48vh,460px)}.split-forms{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.report-tabs{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}.report-tabs button{min-height:38px;border:1px solid var(--border);border-radius:6px;background:#fff;color:#475569;padding:0 14px}.report-tabs button.active,.report-tabs button:hover{background:#eef4ff;border-color:#cfe0ff;color:var(--primary-strong)}.approval-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}.salary-year-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.approval-summary div{min-height:82px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);padding:14px;display:grid;gap:6px}.approval-summary span{color:var(--muted);font-size:13px}.approval-summary strong{font-size:24px}.table-actions{display:inline-flex;gap:8px}.project-status-select{min-width:112px;min-height:32px;padding:0 30px 0 9px}.table-date-input{min-width:148px;min-height:34px;padding:0 8px}.receivable-timeline{display:grid;gap:10px;max-height:min(52vh,520px);overflow:auto;overscroll-behavior:contain;padding-right:2px}.recent-receivable-table{max-height:none}.recent-receivable-table table{min-width:0;table-layout:fixed}.recent-receivable-table td,.recent-receivable-table th{white-space:normal;vertical-align:middle}.recent-receivable-table td:nth-child(2),.recent-receivable-table th:nth-child(2){width:132px;text-align:right}.recent-receivable-arrival,.recent-receivable-name{min-width:0;display:grid;gap:4px}.recent-receivable-name em,.recent-receivable-name strong{overflow-wrap:anywhere}.recent-receivable-arrival em,.recent-receivable-name em{color:var(--muted);font-size:13px;font-style:normal}.recent-receivable-arrival{justify-items:end;white-space:nowrap}.recent-receivable-arrival em{color:var(--primary-strong);font-weight:700}.timeline-item{width:100%;min-height:70px;display:grid;grid-template-columns:92px 18px minmax(0,1fr) auto;align-items:center;gap:12px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);color:var(--text);padding:12px;text-align:left}.timeline-item:hover{border-color:#cfe0ff;background:#f5f8ff}.timeline-date{color:var(--muted);font-size:13px;white-space:nowrap}.timeline-dot{width:12px;height:12px;border-radius:999px;background:var(--primary);box-shadow:0 0 0 5px #e6efff}.timeline-item.overdue .timeline-dot{background:#b42318;box-shadow:0 0 0 5px #ffe3df}.timeline-item.done .timeline-dot{background:var(--green);box-shadow:0 0 0 5px #dff8eb}.timeline-main,.timeline-money{display:grid;gap:5px}.timeline-main{min-width:0}.timeline-main em,.timeline-main strong,.weekly-digest-item em,.weekly-digest-item strong{overflow:hidden;text-overflow:ellipsis}.timeline-main em,.timeline-money em{color:var(--muted);font-size:13px;font-style:normal}.timeline-money{text-align:right;white-space:nowrap}.weekly-digest{display:grid;gap:10px}.weekly-digest-item{min-height:78px;display:grid;gap:5px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);color:var(--text);padding:12px;text-align:left}.weekly-digest-item:hover{border-color:#cfe0ff;background:#f5f8ff}.weekly-digest-item em,.weekly-digest-item span{color:var(--muted);font-size:13px;font-style:normal}.weekly-form{display:grid;gap:16px}.weekly-team-overview{display:grid;gap:14px}.weekly-team-overview .panel-header{margin-bottom:0}.weekly-overview-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.weekly-overview-stats div{min-height:82px;display:grid;align-content:center;gap:6px;padding:13px 14px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft)}.weekly-missing-note,.weekly-overview-stats span{color:var(--muted);font-size:13px}.weekly-overview-stats strong{font-size:22px}.weekly-missing-note{margin:0;padding:10px 12px;border-radius:7px;background:#fff8e7;color:#8a5700;line-height:1.6}.weekly-missing-note.is-complete{background:#ecfdf3;color:#067647}.weekly-period{display:grid;grid-template-columns:minmax(180px,.8fr) repeat(2,minmax(180px,1fr));gap:12px;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft)}.weekly-period>div{display:grid;align-content:center;gap:6px}.weekly-period span,.weekly-summary-card span,.weekly-summary-head span{color:var(--muted);font-size:13px}.weekly-days{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.weekly-days textarea{min-height:104px}.weekly-next-plan textarea{min-height:116px}.weekly-summary-list{display:grid;gap:14px}.weekly-archive-controls{display:flex;align-items:end;justify-content:space-between;gap:14px;margin-bottom:14px;padding:12px 14px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft)}.weekly-archive-controls label{width:min(280px,100%)}.weekly-archive-controls span{color:var(--muted);font-size:13px}.weekly-summary-card{display:grid;gap:14px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);padding:14px}.weekly-summary-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.weekly-summary-head>div{display:grid;gap:5px}.weekly-summary-head em{color:var(--muted);font-size:13px;font-style:normal;white-space:nowrap}.weekly-summary-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px}.weekly-summary-days{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));gap:8px;overflow-x:auto}.weekly-summary-days div,.weekly-summary-next{min-width:0;border:1px solid var(--border);border-radius:8px;background:#fff;padding:10px}.weekly-summary-days p,.weekly-summary-next p{margin:6px 0 0;color:#334155;line-height:1.6;white-space:pre-wrap}.monthly-report-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.monthly-report-card{min-width:0;display:grid;gap:14px;padding:16px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft)}.monthly-report-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--border)}.monthly-report-head>div{display:grid;gap:4px}.monthly-report-head span,.monthly-report-section>span{color:var(--muted);font-size:13px}.monthly-report-head strong{font-size:17px}.monthly-report-head em{color:var(--muted);font-size:12px;font-style:normal;white-space:nowrap}.monthly-report-section{min-width:0}.monthly-report-section ul{margin:8px 0 0;padding-left:20px;color:#334155;line-height:1.75}.monthly-report-section li+li{margin-top:4px}.monthly-report-section p{margin:8px 0 0;color:var(--muted);line-height:1.7}.table-actions button{min-height:30px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--primary-strong);padding:0 10px;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.table-actions button:hover{background:#eef4ff;border-color:#cfe0ff}.delete-record-button,.table-actions .delete-record-button{color:#b42318;border-color:#f0c7c2}.delete-record-button:hover,.table-actions .delete-record-button:hover{background:#fff1ef;border-color:#e7a39b}.modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:rgba(15,23,42,.56)}.modal-panel{width:min(520px,100%);max-height:calc(100vh - 40px);overflow:auto;display:grid;gap:18px;padding:22px;border:1px solid var(--border);border-radius:8px;background:var(--surface);box-shadow:var(--shadow)}.modal-panel h3{margin:0 0 8px;font-size:20px;letter-spacing:0}.modal-panel p{margin:0;color:var(--muted);line-height:1.7}.modal-panel textarea{min-height:100px}.cost-correction-dialog{width:min(760px,100%)}.cost-correction-dialog .data-form{margin:0}.correction-wide-field{grid-column:span 3}.form-status{margin:-6px 0 0!important;color:#b42318!important;font-size:13px}.modal-actions{display:flex;justify-content:flex-end;gap:10px}.permission-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px}.user-list{display:grid;gap:8px;align-content:start}.user-row{min-height:58px;border:1px solid var(--border);border-radius:8px;background:#fff;display:grid;gap:4px;padding:10px 12px;text-align:left}.user-row.selected{border-color:var(--primary);background:#eef4ff}.user-row em{color:var(--muted);font-size:13px;font-style:normal}.user-create-controls{display:grid;gap:8px;margin-top:4px}.user-create-controls label{display:grid;gap:6px;color:var(--muted);font-size:13px}.permission-account-actions{min-height:42px;margin:12px 0;display:flex;align-items:center;justify-content:flex-end}.permission-account-actions span{color:var(--muted);font-size:13px}.permission-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.check-card{min-height:46px;border:1px solid var(--border);border-radius:8px;padding:10px;display:flex;align-items:center;gap:8px;background:var(--surface-soft)}.check-card input{min-height:auto}.backup-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.backup-card{min-height:150px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);padding:16px;display:grid;gap:12px;align-content:start}.backup-card p{margin:0;color:var(--muted);line-height:1.7}.deployment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.deployment-card{min-height:112px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);padding:14px;display:grid;gap:10px;align-content:start}.deployment-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.deployment-title strong{line-height:1.35}.deployment-card p{margin:0;color:var(--muted);line-height:1.65}.deployment-badge{flex:0 0 auto;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800;background:#eef4ff;color:var(--primary-strong)}.deployment-badge.ready{background:#e7f8f1;color:var(--green)}.deployment-badge.attention{background:#fff4df;color:var(--amber)}.deployment-badge.local,.deployment-badge.pending{background:#eef1f5;color:var(--muted)}.form-error{margin:-4px 0 0;color:#b91c1c;font-size:13px;font-weight:700}@media (max-width:1120px){.app-shell{grid-template-columns:86px minmax(0,1fr)}.brand div:not(.brand-mark),.menu-group-label,.menu-item span{display:none}.menu-item{justify-content:center}.dashboard-metric-grid,.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content-grid,.project-chart-grid{grid-template-columns:1fr}}@media (max-width:760px){.login-page{padding:16px}.login-panel{grid-template-columns:1fr}.login-copy{padding:24px 4px}.login-copy h1{font-size:34px}.app-shell{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:5;display:block;padding:10px;width:100vw;max-width:100vw;overflow:hidden}.brand{margin-bottom:8px}.brand div:not(.brand-mark),.menu-item span{display:block}.menu{display:flex;gap:8px;width:100%;overflow-x:auto}.menu-group{display:contents}.menu-group-label{display:none}.menu-item{flex:0 0 auto;width:auto;justify-content:flex-start}.main{padding:16px;width:100%;max-width:100vw;overflow:hidden}.topbar{align-items:flex-start;flex-direction:column}.search,.topbar-actions{width:100%}.topbar-control:first-child{flex:1 1}.quick-popover{left:0;right:auto;max-width:calc(100vw - 32px)}.reminder-popover{left:auto;right:0}.approval-summary,.backup-grid,.dashboard-metric-grid,.data-form,.data-form.compact,.deployment-grid,.metric-grid,.permission-grid,.permission-layout,.split-forms,.weekly-days,.weekly-period{grid-template-columns:1fr}.salary-year-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.monthly-report-grid{grid-template-columns:1fr}.cost-composition-toolbar,.monthly-report-head,.weekly-archive-controls{align-items:flex-start;flex-direction:column}.weekly-overview-stats{grid-template-columns:1fr}.project-description-field{grid-column:span 1}.list-locator{grid-template-columns:auto 1fr}.list-locator select,.list-locator>span{grid-column:1/-1}.module-hero,.project-detail-heading{flex-direction:column}.module-hero{align-items:flex-start}.timeline-item{grid-template-columns:1fr}.timeline-money{text-align:left}.content-grid,.module-hero,.panel,.topbar{min-width:0;max-width:100%}}