:root,[data-theme=light]{--text:#3a3540;--text-h:#08060d;--text-muted:#6b6375;--bg:#fafafa;--bg-elevated:#fff;--bg-header:#fff;--bg-subtle:#f2f0f5;--border:#e2e0e6;--accent:#7c3aed;--accent-dark:#6025c9;--danger:#b3261e;--danger-bg:#fdecea;--row-finalized-bg:#f7f7f7;--row-finalized-text:#8a8a8a;--sans:system-ui, "Segoe UI", Roboto, sans-serif}[data-theme=dark]{--text:#d6d3da;--text-h:#f7f6f9;--text-muted:#a19cae;--bg:#16151a;--bg-elevated:#1f1e25;--bg-header:#1c1b21;--bg-subtle:#26242c;--border:#34323b;--accent:#9d6bff;--accent-dark:#b088ff;--danger:#ff8a80;--danger-bg:#3a201f;--row-finalized-bg:#201f25;--row-finalized-text:#6f6b78}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{font:15px/145% var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;transition:background-color .15s,color .15s}h1{color:var(--text-h);margin:0;font-size:26px}.btn{font:inherit;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);cursor:pointer;border-radius:6px;padding:8px 16px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-dark)}.btn-google{width:100%}.btn-link{color:var(--accent);background:0 0;border:none;padding:0;text-decoration:underline}.btn-small{padding:4px 10px;font-size:13px}.btn-danger{color:var(--danger);border-color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger-bg)}.new-item-form{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:16px;display:flex}.new-item-form input[type=text]{font:inherit;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);border-radius:6px;min-width:220px;padding:6px 8px}.checkbox-label{color:var(--text-muted);white-space:nowrap;align-items:center;gap:6px;font-size:13px;display:flex}.row-actions{white-space:nowrap;gap:6px;display:flex}.unit-suffix{color:var(--text-muted);margin-left:-10px;font-size:13px}.new-item-form select{font:inherit;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);border-radius:6px;padding:6px 8px}.new-item-form input[type=number]{font:inherit;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);border-radius:6px;width:100px;padding:6px 8px}.app-shell{flex-direction:column;min-height:100svh;display:flex}.app-header{background:var(--bg-header);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:24px;padding:12px 24px;display:flex}.app-brand{color:var(--text-h);white-space:nowrap;font-size:17px;font-weight:700}.app-header-right{align-items:center;gap:12px;display:flex}.lang-select,.ledger-toolbar select,.ledger-toolbar input{font:inherit;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);border-radius:6px;padding:6px 8px}.theme-toggle{border:1px solid var(--border);background:var(--bg-elevated);cursor:pointer;border-radius:6px;padding:4px 10px;font-size:15px;line-height:1}.app-user{color:var(--text-muted);white-space:nowrap;font-size:14px}.app-body{flex:1;min-height:0;display:flex}.app-sidebar{background:var(--bg-header);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:20px;width:220px;padding:20px 12px;display:flex}.nav-group{flex-direction:column;gap:2px;display:flex}.nav-group-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding:0 10px 6px;font-size:11px;font-weight:700}.sidebar-link{color:var(--text);border-radius:6px;padding:8px 10px;font-size:14px;text-decoration:none}.sidebar-link:hover{background:var(--bg-subtle)}.sidebar-link.active{background:var(--accent);color:#fff}.sidebar-link.disabled{color:var(--text-muted);cursor:not-allowed;opacity:.6}.app-content{flex:1;min-width:0;overflow:auto}.hint-banner{background:var(--bg-subtle);color:var(--text-muted);border-radius:6px;margin-bottom:16px;padding:10px 14px;font-size:13px}.login-page{justify-content:center;align-items:center;min-height:100svh;display:flex}.login-card{border:1px solid var(--border);background:var(--bg-elevated);text-align:center;border-radius:12px;flex-direction:column;gap:12px;width:320px;padding:32px;display:flex}.login-subtitle{color:var(--text-muted);margin-bottom:12px}.page{max-width:1400px;margin:0 auto;padding:24px}.page-header{justify-content:space-between;align-items:flex-end;margin-bottom:20px;display:flex}.page-subtitle{color:var(--text-muted);margin:4px 0 0}.ledger-toolbar{align-items:flex-end;gap:20px;margin-bottom:16px;display:flex}.ledger-toolbar label{color:var(--text-muted);flex-direction:column;gap:4px;font-size:13px;display:flex}.page-error{background:var(--danger-bg);color:var(--danger);border-radius:6px;margin-bottom:16px;padding:10px 14px}.page-notice{background:var(--bg-elevated);color:var(--text);border:1px solid var(--border);border-left:3px solid var(--accent,var(--border));border-radius:6px;margin-bottom:16px;padding:10px 14px}.data-table{border-collapse:collapse;width:100%;font-size:13px}.data-table th,.data-table td{border:1px solid var(--border);text-align:left;padding:6px 8px}.data-table th{background:var(--bg-subtle);color:var(--text-h);font-weight:600}.data-table td.num{text-align:right;font-variant-numeric:tabular-nums}.data-table input:not([type=checkbox]){width:90px;font:inherit;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);border-radius:4px;padding:4px 6px}.data-table input[type=text]{width:140px}.data-table input[type=checkbox]{width:auto}.row-finalized{background:var(--row-finalized-bg);color:var(--row-finalized-text)}.badge{background:var(--bg-subtle);color:var(--accent);border-radius:999px;padding:2px 8px;font-size:12px;display:inline-block}.ledger-total{text-align:right;margin-top:16px;font-weight:600}.page-loading{text-align:center;color:var(--text-muted);padding:40px}.modal-overlay{z-index:100;background:#00000073;justify-content:center;align-items:flex-start;padding:40px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;flex-direction:column;width:100%;max-width:520px;display:flex;box-shadow:0 12px 32px #0003}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-header h2{color:var(--text-h);margin:0;font-size:18px}.modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px;font-size:20px;line-height:1}.modal-body{flex-direction:column;gap:14px;padding:20px;display:flex}.modal-field{flex-direction:column;gap:4px;display:flex}.modal-field label{color:var(--text-muted);font-size:13px}.modal-field input[type=text],.modal-field input[type=number]{font:inherit;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);border-radius:6px;padding:7px 9px}.modal-checkboxes{flex-wrap:wrap;gap:14px;display:flex}.modal-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:16px 20px;display:flex}.modal-error{background:var(--danger-bg);color:var(--danger);border-radius:6px;padding:8px 12px;font-size:13px}.price-history{border-top:1px solid var(--border);flex-direction:column;gap:10px;padding-top:14px;display:flex}.price-history h3{color:var(--text-h);margin:0;font-size:14px}.price-history-list{flex-direction:column;gap:4px;font-size:13px;display:flex}.price-history-row{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:4px 0;display:flex}.price-history-row:last-child{border-bottom:none}.price-history-row .price-amount{min-width:70px;font-weight:600}.price-history-row .price-range{color:var(--text-muted);flex:1}.price-history-add{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.price-history-add .modal-field{gap:4px}.data-table select{font:inherit;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);border-radius:4px;min-width:160px;max-width:100%;padding:4px 6px}.table-footer{background:var(--bg);border-top:1px solid var(--border);justify-content:flex-end;align-items:center;gap:12px;margin-top:12px;padding:12px 0;display:flex;position:sticky;bottom:0}.table-footer .footer-note{color:var(--text-muted,inherit);margin-right:auto;font-size:13px}
