:root{--bg: #f6f5f1;--surface: #ffffff;--surface-soft: #fbfaf7;--ink: #1a1f2e;--ink-soft: #4a5363;--ink-muted: #8b94a3;--line: #e3e1dc;--line-strong: #c9c5be;--accent: #1e3a5f;--accent-hover: #28486f;--accent-soft: #eaf0f7;--danger: #a4243b;--danger-soft: #faecee;--success: #2d5d3e;--success-soft: #e7f0ea;--warn-bg: #fdf6e3;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 4px 16px rgba(15, 23, 42, .06);--shadow-lg: 0 12px 40px rgba(15, 23, 42, .18);--radius: 6px;--radius-sm: 4px}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-shell{max-width:1180px;margin:0 auto;padding:32px 24px 80px}.app-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:20px;margin-bottom:28px;border-bottom:1px solid var(--line)}.app-header h1{font-size:13px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;margin:0;color:var(--ink-soft)}.app-header .doc-type{font-size:22px;font-weight:500;letter-spacing:-.01em;color:var(--ink)}.header-right{display:flex;align-items:center;gap:14px}.save-status{font-size:11px;color:var(--ink-muted);display:flex;align-items:center;gap:6px;font-feature-settings:"tnum";letter-spacing:.04em}.save-status .dot{width:6px;height:6px;border-radius:50%;background:var(--success)}.save-status.unsaved .dot{background:var(--warn-bg);border:1px solid #c5a25c}.save-status.error .dot{background:var(--danger)}.section{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:20px;overflow:hidden}.section-head{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--line);background:var(--surface-soft)}.section-head h2{font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;margin:0;color:var(--ink-soft)}.section-body{padding:20px}.field-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px 20px}.field-grid.cols-3{grid-template-columns:repeat(3,1fr)}.field{display:flex;flex-direction:column;gap:6px}.field.span-2{grid-column:span 2}.field.span-3{grid-column:span 3}.field-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.field-input,.field-select,.field-textarea{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:9px 11px;width:100%;transition:border-color .12s ease,box-shadow .12s ease}.field-input:focus,.field-select:focus,.field-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field-textarea{resize:vertical;min-height:60px;line-height:1.45}.period-range{display:flex;align-items:center;gap:8px}.period-range input{flex:1}.period-range .dash{color:var(--ink-muted);font-size:12px}.expense-table{width:100%;border-collapse:collapse;font-size:13px}.expense-table th{text-align:left;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);padding:10px 12px;border-bottom:1px solid var(--line);background:var(--surface-soft)}.expense-table td{padding:4px 8px;border-bottom:1px solid var(--line);vertical-align:middle}.expense-table tr:last-child td{border-bottom:none}.expense-table input,.expense-table select{font:inherit;color:var(--ink);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);padding:7px 8px;width:100%;transition:border-color .12s ease,background .12s ease}.expense-table input:hover,.expense-table select:hover{border-color:var(--line);background:var(--surface)}.expense-table input:focus,.expense-table select:focus{outline:none;border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 2px var(--accent-soft)}.expense-table input.amount{text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.col-date{width:130px}.col-cat{width:200px}.col-amount{width:140px}.col-receipt{width:80px}.col-actions{width:36px;text-align:center}.mile-rate-row{display:flex;gap:4px;align-items:center}.mile-rate-row input{padding:5px 6px;font-size:12px}.mile-rate-row .x{color:var(--ink-muted);font-size:11px}.amount-with-fx{display:flex;flex-direction:column;align-items:stretch;gap:1px}.amount-with-fx .fx-line{font-size:10px;color:var(--ink-muted);text-align:right;font-variant-numeric:tabular-nums;padding-right:8px;letter-spacing:.02em}.receipt-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px dashed var(--line-strong);background:var(--surface-soft);color:var(--ink-muted);cursor:pointer;padding:5px 8px;border-radius:var(--radius-sm);font-size:11px;width:100%;display:flex;align-items:center;justify-content:center;gap:4px;transition:all .12s ease}.receipt-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.receipt-btn.has-file{background:var(--success-soft);color:var(--success);border-style:solid;border-color:var(--success)}.receipt-btn svg{width:12px;height:12px}.receipt-thumb{display:inline-block;width:28px;height:28px;border-radius:var(--radius-sm);object-fit:cover;vertical-align:middle;cursor:pointer;border:1px solid var(--line)}.delete-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--ink-muted);cursor:pointer;width:28px;height:28px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;transition:background .12s ease,color .12s ease}.delete-btn:hover{background:var(--danger-soft);color:var(--danger)}.delete-btn svg{width:16px;height:16px}.empty-state{padding:40px 20px;text-align:center;color:var(--ink-muted);font-size:13px}.empty-state strong{display:block;color:var(--ink-soft);font-weight:600;margin-bottom:4px}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;background:var(--accent);color:#fff;font:inherit;font-weight:500;padding:9px 16px;border-radius:var(--radius-sm);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .12s ease,border-color .12s ease}.btn:hover{background:var(--accent-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}.btn-secondary:hover{background:var(--surface-soft);border-color:var(--ink-muted)}.btn-ghost{background:transparent;color:var(--ink-soft);border-color:transparent}.btn-ghost:hover{background:var(--accent-soft);color:var(--accent)}.btn-danger-ghost{background:transparent;color:var(--danger);border-color:transparent}.btn-danger-ghost:hover{background:var(--danger-soft)}.btn svg{width:14px;height:14px}.icon-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink-soft);cursor:pointer;padding:7px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;transition:all .12s ease}.icon-btn:hover{border-color:var(--accent);color:var(--accent)}.icon-btn svg{width:16px;height:16px}.grid-wrap{overflow-x:auto;margin:-20px;padding:20px}.daily-grid{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";min-width:600px}.daily-grid th,.daily-grid td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}.daily-grid th:first-child,.daily-grid td:first-child{text-align:left;font-weight:500;color:var(--ink);position:sticky;left:0;background:var(--surface)}.daily-grid thead th{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);border-bottom:1px solid var(--line-strong)}.daily-grid thead th:first-child{background:var(--surface)}.daily-grid tbody tr:hover td{background:var(--surface-soft)}.daily-grid .col-total{font-weight:600;color:var(--ink);border-left:1px solid var(--line-strong)}.daily-grid .row-total td{border-top:1px solid var(--line-strong);border-bottom:none;font-weight:600;background:var(--surface-soft)!important}.daily-grid td.zero{color:var(--ink-muted)}.date-header{display:flex;flex-direction:column;align-items:flex-end;gap:1px}.date-header .dow{font-size:10px;font-weight:600;letter-spacing:.08em}.date-header .date{font-size:11px;font-weight:400;color:var(--ink-muted);letter-spacing:0;text-transform:none}.summary-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;font-variant-numeric:tabular-nums}.summary-row+.summary-row{border-top:1px solid var(--line)}.summary-row .label{color:var(--ink-soft);font-weight:500}.summary-row .value{font-weight:500;color:var(--ink);min-width:130px;text-align:right}.summary-row.total{font-size:15px;font-weight:600;border-top:2px solid var(--ink)!important;padding-top:14px;margin-top:6px}.summary-row.total .label{color:var(--ink);font-weight:600}.summary-row.total .value{font-weight:700}.summary-input{width:130px;text-align:right;border:1px solid var(--line);border-radius:var(--radius-sm);padding:7px 10px;font:inherit;font-variant-numeric:tabular-nums;background:var(--surface-soft);transition:border-color .12s ease}.summary-input:focus{outline:none;border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 2px var(--accent-soft)}.summary-balance{background:var(--accent-soft);color:var(--accent);padding:4px 10px;border-radius:99px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.summary-balance.owe-company{background:var(--danger-soft);color:var(--danger)}.action-bar{position:sticky;bottom:16px;display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow-md);margin-top:24px;flex-wrap:wrap;z-index:5}.action-bar .left-side{margin-right:auto;display:flex;align-items:center;gap:14px;font-size:13px;color:var(--ink-muted)}.action-bar .left-side strong{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}.banner{padding:10px 16px;background:var(--warn-bg);border-bottom:1px solid var(--line);font-size:12px;color:var(--ink-soft)}.banner.error{background:var(--danger-soft);color:var(--danger)}.banner.info{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;max-width:580px;max-height:85vh;overflow-y:auto}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font-size:16px;font-weight:600;color:var(--ink)}.modal-body{padding:22px}.modal-section{margin-bottom:24px}.modal-section:last-child{margin-bottom:0}.modal-section h3{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-muted);margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--line)}.modal-foot{padding:14px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;background:var(--surface-soft);position:sticky;bottom:0}.kv-row{display:grid;grid-template-columns:1fr 120px 32px;gap:10px;align-items:center;margin-bottom:8px}.kv-row input{padding:7px 10px}.add-row-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px dashed var(--line-strong);background:transparent;color:var(--ink-muted);padding:8px 12px;border-radius:var(--radius-sm);font:inherit;font-size:12px;cursor:pointer;width:100%;margin-top:4px;transition:all .12s ease}.add-row-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172ad9;display:flex;align-items:center;justify-content:center;z-index:200;padding:40px;cursor:zoom-out}.lightbox img{max-width:100%;max-height:100%;box-shadow:var(--shadow-lg)}@media print{body{background:#fff}.app-shell{padding:0;max-width:none}.action-bar,.delete-btn,.btn,.icon-btn,.receipt-btn{display:none!important}.section{box-shadow:none;border-color:#999;page-break-inside:avoid}}
