:root{--ink: #2b2925;--muted: #6e6a62;--paper: #faf9f5;--side: #f2f0e9;--panel: #ffffff;--line: #e4e0d6;--hover: #e9e6dd;--brand: #a8492a;--brand-ink: #ffffff;--accent: #d97757;--focus: #fbefe8;--ok: #17733f;--error: #b42318;--radius: 12px;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--paper)}h1{font:500 1.5rem/1.25 var(--serif);margin:0 0 1rem;color:var(--ink);letter-spacing:-.01em}h2{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:1.25rem 0 .4rem}a{color:var(--brand)}.muted{color:var(--muted);font-weight:400}.error{color:var(--error)}.ok{color:var(--ok)}.loss{color:var(--error)}.app{display:grid;grid-template-columns:264px 1fr;min-height:100vh;transition:grid-template-columns .18s ease}.app.collapsed,.app.narrow{grid-template-columns:0 1fr}.sidebar{position:sticky;top:0;height:100vh;overflow:hidden;display:flex;flex-direction:column;gap:.5rem;background:var(--side);border-right:1px solid var(--line);padding:.75rem .6rem;width:264px;transition:transform .18s ease,opacity .18s ease}.app.collapsed .sidebar{transform:translate(-100%);opacity:0;pointer-events:none}.app.narrow .sidebar{position:fixed;left:0;z-index:30;box-shadow:0 10px 40px #0000002e}.scrim{position:fixed;inset:0;background:#1e1c1840;z-index:20}.side-top{display:flex;align-items:center;justify-content:space-between;padding:.15rem .25rem .35rem}.wordmark{display:flex;align-items:center;gap:.55rem;text-decoration:none;color:var(--ink);font:600 1.02rem var(--serif)}.mark{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--brand);color:#fff;font:600 .95rem var(--serif)}.icon{display:inline-flex;flex:none}.icon-btn,.float-toggle{display:grid;place-items:center;width:34px;height:34px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer}.icon-btn:hover{background:var(--hover);color:var(--ink)}.float-toggle{position:fixed;top:12px;left:12px;z-index:25;background:var(--panel);border:1px solid var(--line);box-shadow:0 2px 10px #00000014}.float-toggle:hover{color:var(--ink);background:var(--side)}.new-btn{display:flex;align-items:center;gap:.6rem;padding:.5rem .7rem;border-radius:10px;text-decoration:none;color:var(--ink);font-weight:600;background:var(--panel);border:1px solid var(--line)}.new-btn .icon{color:#fff;background:var(--brand);border-radius:50%;padding:2px}.new-btn:hover{border-color:var(--accent)}.side-nav{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:1px;margin:0 -.2rem;padding:0 .2rem}.side-head{display:flex;align-items:center;justify-content:space-between;width:100%;margin:.7rem 0 .15rem;padding:.2rem .6rem;border:none;border-radius:6px;background:none;cursor:pointer;font-size:.72rem;font-weight:600;color:var(--muted);letter-spacing:.02em;text-align:left}.side-head:hover{background:var(--hover);color:var(--ink)}.side-head .icon{transition:transform .15s ease}.side-head .icon.turned{transform:rotate(-90deg)}.side-nav a{display:flex;align-items:center;gap:.6rem;padding:.38rem .6rem;border-radius:8px;text-decoration:none;color:var(--ink);font-size:.88rem;white-space:nowrap}.side-nav a .icon{color:var(--muted)}.side-nav a:hover{background:var(--hover)}.side-nav a.active{background:var(--hover);font-weight:600}.side-nav a.active .icon{color:var(--brand)}.side-nav .label{flex:1;overflow:hidden;text-overflow:ellipsis}kbd{font:.68rem var(--mono);color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:0 .3rem;background:var(--paper)}.side-bottom{display:flex;flex-direction:column;gap:.35rem;border-top:1px solid var(--line);padding-top:.5rem}.company-card,.profile-btn{display:flex;align-items:center;gap:.6rem;width:100%;padding:.45rem .55rem;border-radius:10px;text-decoration:none;color:var(--ink);border:none;background:transparent;text-align:left;cursor:pointer}.company-card:hover,.profile-btn:hover{background:var(--hover)}.company-card .icon,.profile-btn>.icon{color:var(--muted)}.company-card .label,.who{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.2}.company-card b,.who b{font-size:.85rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.company-card small,.who small{color:var(--muted);font-size:.74rem}.avatar{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:50%;background:#3d3a35;color:#fff;font-size:.75rem;font-weight:600;letter-spacing:.02em}.avatar.lg{width:38px;height:38px;font-size:.9rem}.profile{position:relative}.menu{position:absolute;bottom:calc(100% + 6px);left:0;right:0;z-index:40;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px #00000024;padding:.35rem}.menu-head{display:flex;gap:.6rem;align-items:center;padding:.5rem .5rem .6rem;border-bottom:1px solid var(--line);margin-bottom:.3rem}.menu-head div{display:flex;flex-direction:column;min-width:0}.menu-head small{color:var(--muted);font-size:.75rem;overflow:hidden;text-overflow:ellipsis}.menu a,.menu button{display:flex;align-items:center;gap:.6rem;width:100%;padding:.45rem .55rem;border-radius:8px;border:none;background:none;color:var(--ink);text-decoration:none;font-size:.88rem;cursor:pointer;text-align:left}.menu a:hover,.menu button:hover{background:var(--side)}.menu kbd{margin-left:auto}.menu .icon{color:var(--muted)}main{grid-column:2;min-width:0;padding:1.5rem 1.75rem 3rem;overflow-x:auto}.app.collapsed main,.app.narrow main{padding-top:3.75rem}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem 1.5rem;max-width:1100px;margin:0 auto;box-shadow:0 1px 2px #00000008}.panel.narrow{max-width:520px;margin-top:3rem}app-login,app-companies,app-change-password{display:grid;place-items:center;min-height:100vh;padding:1rem}app-login .panel.narrow,app-companies .panel.narrow,app-change-password .panel.narrow{margin:0;width:100%}.new-company{margin-top:.75rem}label{display:flex;flex-direction:column;gap:.2rem;font-size:.8rem;color:var(--muted);margin-bottom:.6rem}input,select,textarea,button{font:inherit}input,select,textarea{padding:.4rem .6rem;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:#fff}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;background:#fff}button{padding:.42rem .95rem;border:1px solid var(--line);background:#fff;border-radius:8px;cursor:pointer;color:var(--ink)}button:hover:not(:disabled){background:var(--side)}button.primary{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}button.primary:hover:not(:disabled){background:#8f3d22}button:disabled{opacity:.5;cursor:not-allowed}button.link{background:none;border:none;padding:0;color:var(--brand);text-decoration:underline}button.link.danger{color:var(--error)}form.inline{display:flex;flex-wrap:wrap;gap:.5rem;align-items:flex-end;margin-bottom:.75rem}form.inline label{margin:0}.search{width:100%;margin:.5rem 0}.amount{text-align:right;font-family:var(--mono);width:9rem}.short{width:6rem}.grid4{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem}.buttons{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.75rem}.status-row{min-height:1.5rem;display:flex;gap:1rem}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:.75rem;text-transform:uppercase;color:var(--muted);border-bottom:2px solid var(--line);padding:.35rem .5rem}td{padding:.3rem .5rem;border-bottom:1px solid #eef0f2;vertical-align:top}tfoot th,tfoot td{border-top:2px solid var(--ink);border-bottom:none;color:var(--ink)}.num{text-align:right;font-family:var(--mono);white-space:nowrap}tr.clickable{cursor:pointer}tr.clickable:hover,tr.detail{background:var(--focus)}table.inner td{border:none;padding:.1rem .5rem}tr.group td{font-weight:600}tr.ledger td:first-child{padding-left:1.5rem;color:var(--muted)}.statement{margin-bottom:.5rem}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.subtotal{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:.3rem}.result{font-size:1.05rem;font-weight:700;color:var(--ok);text-align:right}.result.loss{color:var(--error)}.badge{font-size:.75rem;padding:.05rem .4rem;border-radius:8px;background:#e8edf5}.badge[data-status=draft]{background:#fff1c2}.badge[data-status=cancelled]{background:#fde2e1}.list{list-style:none;padding:0}.list li{display:flex;justify-content:space-between;padding:.4rem 0;border-bottom:1px solid #eef0f2}.gateway{max-width:420px}.gateway ul{list-style:none;padding:0;margin:0}.gateway li{padding:.35rem .75rem;cursor:pointer}.gateway li{border-radius:8px}.gateway li.active{background:var(--focus);color:var(--brand)}.hot{font-weight:700;color:var(--brand)}.voucher{border-top:4px solid var(--brand)}.voucher[data-type=contra]{border-top-color:#2563eb}.voucher[data-type=payment]{border-top-color:#b45309}.voucher[data-type=receipt]{border-top-color:#15803d}.voucher[data-type=journal]{border-top-color:#6b21a8}.voucher[data-type=sales]{border-top-color:#0369a1}.voucher[data-type=purchase]{border-top-color:#be123c}.voucher-head{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem}.tabs{display:flex;gap:.25rem;flex-wrap:wrap}.tabs a{font-size:.8rem;padding:.2rem .55rem;border:1px solid var(--line);border-radius:6px;text-decoration:none}.tabs a.active{background:var(--brand);color:var(--brand-ink)}table.entry select{width:100%}th.side{width:5rem}@media(max-width:720px){.two-col{grid-template-columns:1fr}.panel{padding:.75rem}}.small{font-size:.75rem}.badge[data-status=valid]{background:#dff3e6}.badge[data-status=error]{background:#fde2e1}.badge[data-status=duplicate]{background:#fff1c2}.badge[data-status=imported]{background:#e8edf5}.batch-head{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin:.5rem 0}.counts{display:flex;gap:.4rem;flex-wrap:wrap}.map-row{display:flex;gap:.5rem;align-items:center;margin-bottom:.4rem}.map-row span{min-width:14rem;font-weight:600}.attachments{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:.5rem 0}.chip{display:inline-flex;gap:.35rem;align-items:center;border:1px solid var(--line);border-radius:12px;padding:.1rem .6rem}.file-btn{flex-direction:row;display:inline-flex;margin:0;cursor:pointer;color:var(--brand);text-decoration:underline;font-size:.85rem}@media print{.sidebar,.float-toggle,.scrim,form.inline,.buttons,button{display:none!important}.app{display:block}body,main,.panel{background:#fff;border:none;padding:0}}.mono{font-family:var(--mono);font-size:.8rem;white-space:nowrap}.inline-check{flex-direction:row;align-items:center;gap:.35rem;margin:0}table.matrix th,table.matrix td{text-align:center}table.matrix td:first-child,table.matrix th:first-child{text-align:left;text-transform:capitalize}td button.link+button.link{margin-left:.75rem}.bulk{margin:.25rem 0 1rem;border:1px dashed var(--line);border-radius:10px;padding:.5rem .75rem}.bulk summary{cursor:pointer;color:var(--brand);font-weight:600}.inline-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:.5rem 0}.badge[data-status=active]{background:#dff3e4}.badge[data-status=completed]{background:#e3ecfb}.badge[data-status=closed]{background:#e9ecef;color:var(--muted)}nav.tabs[role=tablist]{border-bottom:2px solid var(--line);margin:.5rem 0 1rem}.tabs button{border:none;border-bottom:3px solid transparent;border-radius:0;background:none;padding:.4rem .9rem}.tabs button.active{border-bottom-color:var(--brand);color:var(--brand);font-weight:600}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;margin:.75rem 0 1rem}.kpis div{border:1px solid var(--line);border-radius:10px;padding:.6rem .75rem;display:flex;flex-direction:column;gap:.15rem}.kpis span{font-size:.75rem;text-transform:uppercase;color:var(--muted)}.kpis b{font-family:var(--mono);font-size:1.05rem}.kpis small{color:var(--muted)}.scroll-x{overflow-x:auto}select.compact{padding:.1rem .3rem;font-size:.85rem}.actions-cell{white-space:nowrap;display:flex;gap:.75rem}.badge[data-kind=client]{background:#e3ecfb}.badge[data-kind=subcontract]{background:#f6e7dc}.badge[data-status=posted]{background:#dff3e4}.badge[data-status=draft],.badge[data-status=cancelled]{text-transform:capitalize}.crumb{margin:0 0 .25rem;font-size:.8rem;color:var(--muted)}.crumb a{color:var(--muted)}.card-form{border:1px solid var(--line);border-radius:10px;padding:.9rem 1rem;margin:.25rem 0 1rem;background:var(--paper)}fieldset.plain{border:none;padding:0;margin:0;min-width:0}input.qty{width:7rem}input.note{width:12rem;margin-left:.5rem;padding:.15rem .4rem}table.abstract input.amount{width:8rem}.narrow-field{max-width:22rem}.nowrap{white-space:nowrap}a.button{display:inline-block;padding:.42rem .95rem;border:1px solid var(--line);background:#fff;border-radius:8px;color:var(--ink);text-decoration:none}a.button:hover{background:var(--side)}a.button.primary{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}a.button.primary:hover{background:#8f3d22}button.danger{color:var(--error)}.buttons.start{justify-content:flex-start;flex-wrap:wrap;margin:0 0 .75rem}.badge[data-kind=receipt]{background:#dff3e4}.badge[data-kind=issue]{background:#f6e7dc}.badge[data-kind=transfer]{background:#e3ecfb}.badge[data-kind=return]{background:#fff1c2}.badge[data-kind=adjustment]{background:#ece4f6}tr.warn td{background:#fff7e0}.tabs{display:flex;gap:.25rem;flex-wrap:wrap;margin:.25rem 0 .75rem}.tabs button.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}table.lines input,table.lines select{width:100%}table.meta-table{width:auto;margin-bottom:1rem}table.meta-table th{text-align:left;font-weight:500;color:var(--muted);padding-right:1.5rem}tr.total td{border-top:1px solid var(--line)}tr.group td{font-weight:600;background:var(--side);padding-top:.45rem}.doc-btn{display:inline-flex;align-items:center;gap:.4rem;margin:.5rem 0;border-radius:999px}.doc-btn .count,.clip-btn span{font-size:.72rem;font-weight:600;background:#e3ecfb;color:#1f3a68;border-radius:999px;padding:0 .4rem}.docs-panel{border:1px solid var(--line);border-radius:10px;padding:.75rem;margin:.5rem 0;background:var(--paper)}.docs-head{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}.docs-head .file-btn{margin-left:auto}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;padding:1.25rem;border:2px dashed var(--line);border-radius:10px;background:#fff;cursor:pointer;text-align:center}.dropzone.small{padding:.8rem}.dropzone:hover,.dropzone.over{border-color:var(--brand);background:var(--side)}.doc-list{list-style:none;margin:.5rem 0 0;padding:0}.doc-list li{display:flex;align-items:center;gap:.6rem;padding:.4rem 0;border-top:1px solid var(--line)}.doc-list li:first-child{border-top:none}.doc-open{padding:0;border:none;background:none}.doc-meta{display:flex;flex-direction:column;min-width:0;flex:1}.doc-name{text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.doc-thumb{width:36px;height:36px;object-fit:cover;border-radius:4px;border:1px solid var(--line);display:block}.doc-tile{width:36px;height:36px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:700;color:#fff;background:#8199af}.doc-tile[data-kind=pdf]{background:#8c181a}.doc-tile[data-kind=image]{background:#2f9e7d}.doc-tile[data-kind=sheet]{background:#1d6f42}.gst-toggle{flex-direction:row;display:inline-flex;align-items:center;gap:.25rem;margin:0;font-size:.8rem;white-space:nowrap}.clip-btn{display:inline-flex;align-items:center;gap:.15rem;padding:.05rem .35rem;border-radius:999px;color:var(--muted);vertical-align:middle}.clip-btn:hover{color:var(--brand)}.modal-scrim{position:fixed;inset:0;background:#14141459;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:#fff;border-radius:12px;padding:1rem;width:min(560px,92vw);max-height:85vh;overflow:auto;box-shadow:0 12px 40px #0000002e}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}.profile-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,1fr);gap:1.5rem;align-items:start}@media(max-width:1100px){.profile-grid{grid-template-columns:1fr}}.profile-form h2{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:1.1rem 0 .4rem}.grid1{display:grid;gap:.5rem;flex:1}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem}.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem}input.upper{text-transform:uppercase}.brand-row{display:flex;gap:1.25rem;align-items:flex-start;flex-wrap:wrap;margin-bottom:.5rem}.image-slot,.colour-slot{display:flex;flex-direction:column;gap:.35rem}.colour-slot{flex:1;min-width:220px}.label{font-size:.8rem;color:var(--muted)}.image-box{width:180px;height:72px;border:1px solid var(--line);border-radius:10px;display:flex;align-items:center;justify-content:center;background:#fff;overflow:hidden}.image-box.sign{height:60px}.image-box.empty{border-style:dashed;color:var(--muted);font-size:.8rem}.image-box img{max-width:100%;max-height:100%;object-fit:contain}.image-actions{display:flex;gap:.75rem;align-items:center}.swatches{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.swatch{width:26px;height:26px;border-radius:50%;padding:0;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);transition:transform .12s ease}.swatch:hover{transform:scale(1.12)}.swatch.on{box-shadow:0 0 0 2px var(--ink)}.swatches input[type=color]{width:34px;height:28px;padding:0;border:1px solid var(--line);border-radius:6px;background:none}.lh-preview{position:sticky;top:1rem;display:flex;flex-direction:column;gap:.35rem}.paper{--brand: #1f3a68;--tint: #e9edf3;background:#fff;border:1px solid var(--line);border-radius:6px;box-shadow:0 10px 30px #00000014;padding:18px 18px 10px;font-size:10px;color:#1b2430;aspect-ratio:1/1.2;display:flex;flex-direction:column;font-family:DejaVu Sans,system-ui,sans-serif}.paper .lh{display:flex;align-items:center;gap:10px}.paper .lh-logo{max-height:40px;max-width:100px;object-fit:contain}.paper .lh-co{flex:1;min-width:0}.paper .lh-name{font-size:13px;font-weight:700;color:var(--brand)}.paper .lh-line{font-size:8.5px;color:#444;margin-top:1px}.paper .lh-doc{text-align:right;display:flex;flex-direction:column;font-size:11px}.paper .lh-doc span{font-size:8px;color:#555}.paper .lh-rule{height:3px;background:var(--brand);margin:6px 0 10px;border-radius:2px;transition:background .2s ease}.paper table{font-size:8.5px}.paper th{background:var(--tint);border-bottom:1.5px solid var(--brand);font-size:7.5px;padding:3px 4px}.paper td{padding:3px 4px}.paper .sign-box{margin-top:auto;margin-left:auto;text-align:center;font-size:8.5px;display:flex;flex-direction:column;align-items:center;gap:2px}.paper .sign-box img{max-height:34px;max-width:110px;object-fit:contain}.paper .sign-space{height:28px}.paper .sign-box small{color:#555}.paper-foot{display:flex;justify-content:space-between;gap:8px;border-top:1px solid #eee;margin-top:10px;padding-top:4px;font-size:7px;color:#777}.ok{color:#1f7a45}app-reminder-bell{position:fixed;top:14px;right:18px;z-index:40}.bell-wrap{position:relative}.bell{position:relative;width:40px;height:40px;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center;background:#fff;box-shadow:0 2px 10px #00000014}.bell.ring app-icon{animation:bell-ring 2.4s ease-in-out 1s 2;transform-origin:50% 10%}@keyframes bell-ring{0%,50%,to{transform:rotate(0)}10%,30%{transform:rotate(14deg)}20%,40%{transform:rotate(-14deg)}}.bell-count{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:#2f6fb5;color:#fff;font-size:.68rem;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid #fff}.bell-count.hot{background:var(--error)}.bell-pop{position:absolute;right:0;top:48px;width:min(420px,92vw);max-height:70vh;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 16px 40px #00000029;padding:.75rem;animation:pop-in .14s ease-out}@keyframes pop-in{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:none}}.bell-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.4rem}.reminders{list-style:none;margin:0;padding:0}.reminders li{display:grid;grid-template-columns:10px 1fr auto auto;gap:.6rem;align-items:center;padding:.55rem .25rem;border-top:1px solid var(--line)}.reminders li:first-child{border-top:none}.reminders li.empty{display:block;color:var(--muted)}.reminders li.snoozed{opacity:.55}.reminders .dot{width:10px;height:10px;border-radius:50%;background:#9fb4cf}.reminders li[data-severity=overdue] .dot{background:var(--error);box-shadow:0 0 0 4px #b428281f}.reminders li[data-severity=due] .dot{background:#e09a2b}.reminders .what{display:flex;flex-direction:column;color:inherit;text-decoration:none;min-width:0}.reminders .what small,.reminders .when small{color:var(--muted);font-size:.75rem}.reminders .when{display:flex;flex-direction:column;text-align:right;white-space:nowrap}.reminders li[data-severity=overdue] .when b{color:var(--error)}.reminders.compact li{grid-template-columns:10px 1fr auto}.reminders.compact li>button{display:none}.kpis .kpi-overdue b{color:var(--error)}.kpis .kpi-due b{color:#b9771a}h2.rem-group{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;margin:1.2rem 0 .3rem;color:var(--muted)}h2.rem-group[data-severity=overdue]{color:var(--error)}.state-pill{display:inline-block;font-size:.72rem;padding:.05rem .45rem;border-radius:8px;background:#dff3e4;color:#1f6b3a}.state-pill[data-state=due_soon]{background:#fff1c2;color:#8a5a00}.state-pill[data-state=expired]{background:#fde2e1;color:#a12a24}.state-pill[data-state=renewed],.state-pill[data-state=closed]{background:#e9ecef;color:var(--muted)}.asset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.9rem;margin-top:.75rem}.asset-card{border:1px solid var(--line);border-radius:14px;padding:.85rem 1rem;background:#fff;transition:transform .15s ease,box-shadow .15s ease}.asset-card:hover{transform:translateY(-2px);box-shadow:0 10px 24px #00000012}.asset-card header{display:flex;justify-content:space-between;align-items:center}.asset-card h3{margin:.35rem 0 .1rem;font-size:1rem}.asset-card p{margin:.1rem 0}.asset-kind{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.asset-dues{list-style:none;padding:0;margin:.6rem 0;font-size:.82rem}.asset-dues li{display:flex;justify-content:space-between;padding:.15rem 0}.asset-dues li[data-state=expired] b{color:var(--error)}.asset-dues li[data-state=due_soon] b{color:#b9771a}.meter{width:90px;height:6px;border-radius:3px;background:#ece7df;overflow:hidden;display:inline-block;vertical-align:middle;margin-right:.35rem}.meter span{display:block;height:100%;background:var(--brand);border-radius:3px;transition:width .4s ease}@media(max-width:900px){app-reminder-bell{top:10px;right:10px}}.dash{--brand-c: var(--brand);display:flex;flex-direction:column;gap:1.1rem;padding-right:2.5rem}.dash>*{animation:rise .45s cubic-bezier(.2,.7,.2,1) both}.dash>*:nth-child(2){animation-delay:.06s}.dash>*:nth-child(3){animation-delay:.12s}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.dash-hero{position:relative;overflow:hidden;display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap;padding:1.4rem 1.5rem;border-radius:18px;color:#fff;background:radial-gradient(120% 140% at 0% 0%,color-mix(in srgb,var(--brand-c) 92%,#fff) 0%,var(--brand-c) 45%,color-mix(in srgb,var(--brand-c) 70%,#000) 100%);box-shadow:0 18px 40px color-mix(in srgb,var(--brand-c) 28%,transparent)}.dash-hero:after{content:"";position:absolute;right:-60px;top:-80px;width:260px;height:260px;border-radius:50%;background:#ffffff14}.hero-id{display:flex;gap:1rem;align-items:center;z-index:1;min-width:0}.hero-logo{width:auto;max-width:170px}.hero-logo,.hero-mark{min-width:64px;height:64px;border-radius:16px;background:#fff;object-fit:contain;padding:6px;flex-shrink:0;box-shadow:0 6px 16px #00000026}.hero-mark{width:64px;display:flex;align-items:center;justify-content:center;font:700 1.5rem Georgia,serif;color:var(--brand-c)}.dash-hero h1{margin:0;color:#fff;font-size:1.5rem}.dash-hero p{margin:.15rem 0 0;opacity:.88;font-size:.85rem}.hero-meta{display:flex;gap:.9rem;flex-wrap:wrap}.hero-meta a{color:#fff}.hero-controls{display:flex;gap:.6rem;align-items:flex-end;flex-wrap:wrap;z-index:1}.hero-controls label{color:#ffffffd9;font-size:.75rem}.hero-controls input{background:#fffffff2;border:none}.seg{display:inline-flex;background:#ffffff2e;border-radius:10px;padding:3px}.seg button{border:none;background:none;color:#fff;padding:.35rem .85rem;border-radius:8px}.seg button.on{background:#fff;color:var(--brand-c);font-weight:600}.month-nav{display:flex;align-items:center;gap:.25rem}.month-nav .icon-btn{color:#fff;font-size:1.2rem;background:#ffffff26;border:none;width:32px;height:34px;border-radius:8px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.9rem}.tile{position:relative;display:flex;flex-direction:column;gap:.25rem;padding:1rem 1.1rem;border-radius:16px;background:#fff;border:1px solid var(--line);color:inherit;text-decoration:none;overflow:hidden;transition:transform .18s ease,box-shadow .18s ease}.tile:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--accent, var(--brand-c))}.tile:hover{transform:translateY(-3px);box-shadow:0 14px 30px #00000014}.tile b{font:600 1.6rem var(--mono);letter-spacing:-.02em}.tile small{color:var(--muted);font-size:.78rem}.tile em{color:var(--error);font-style:normal}.t-label{display:flex;align-items:center;gap:.35rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.t-cash{--accent: #2f6fb5}.t-in{--accent: #2f9e7d}.t-out{--accent: #e07b39}.t-pl{--accent: var(--brand-c)}.dash-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem}@media(max-width:1200px){.dash-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.dash-grid{grid-template-columns:1fr}.dash{padding-right:0}}.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.6rem;min-width:0;transition:box-shadow .18s ease}.card:hover{box-shadow:0 10px 26px #0000000f}.card.span-2{grid-column:span 2}@media(max-width:760px){.card.span-2{grid-column:auto}}.card header{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.card h2{margin:0;font-size:.95rem}.card header b{font-family:var(--mono)}.card .more{margin-top:auto;font-size:.8rem}.pill{font-size:.75rem;padding:.15rem .55rem;border-radius:999px;background:#e8f1ec;color:#1f6b3a;white-space:nowrap}.pill.up{background:#fdeee4;color:#a1501f}.pill.hot{background:#fde2e1;color:#a12a24}.bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.bars li{animation:rise .4s ease both}.bar-head{display:flex;justify-content:space-between;font-size:.85rem;margin-bottom:.2rem}.bar-head b{font-family:var(--mono);font-weight:500}.bar-track{position:relative;height:10px;border-radius:6px;background:#f1ece5;overflow:visible}.bar-fill{position:absolute;inset:0 auto 0 0;border-radius:6px;background:linear-gradient(90deg,color-mix(in srgb,var(--brand-c) 70%,#fff),var(--brand-c));animation:grow .8s cubic-bezier(.2,.7,.2,1) both;transform-origin:left}@keyframes grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.bar-prev{position:absolute;top:-3px;width:2px;height:16px;background:#555;opacity:.45;border-radius:1px}.donut{display:flex;align-items:center;gap:1rem}.donut svg{width:130px;height:130px;flex-shrink:0}.donut-track{fill:none;stroke:#f1ece5;stroke-width:14}.donut-arc{fill:none;stroke-width:14;transition:stroke-dasharray .6s ease;animation:spin-in .9s ease both}@keyframes spin-in{0%{opacity:0}to{opacity:1}}.donut-total{text-anchor:middle;font:600 13px var(--mono);fill:var(--ink)}.donut-sub{text-anchor:middle;font-size:8px;fill:var(--muted)}.legend{list-style:none;padding:0;margin:0;font-size:.78rem;flex:1;min-width:0}.legend li{display:grid;grid-template-columns:10px 1fr auto;gap:.4rem;align-items:center;padding:.12rem 0}.legend i{width:10px;height:10px;border-radius:3px}.legend b{font-family:var(--mono);font-weight:500}.party-list,.acct-list,.due-list{list-style:none;padding:0;margin:0;font-size:.85rem}.party-list li,.acct-list li,.due-list li{display:flex;justify-content:space-between;gap:.6rem;align-items:center;padding:.38rem 0;border-top:1px solid var(--line)}.party-list li span,.acct-list li span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.party-list small{color:var(--muted);font-size:.72rem}.party-list>li>b,.acct-list>li>b,.due-list>li>b{font-family:var(--mono);font-weight:500;white-space:nowrap}.due-list a b{font-weight:600}.acct-list small{display:block;color:var(--muted);font-size:.72rem}.due-list a{display:flex;flex-direction:column;color:inherit;text-decoration:none;min-width:0;flex:1}.due-list li>span:first-child{text-align:left;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.due-list a small,.due-list span small{color:var(--muted);font-size:.72rem;display:block}.due-list li>span{text-align:right;white-space:nowrap;font-size:.8rem}.due-list li[data-severity=overdue]>span{color:var(--error);font-weight:600}.due-list li[data-severity=due]>span{color:#b9771a;font-weight:600}.due-list.compact li{font-size:.8rem}.trend{width:100%;height:190px;display:block}.trend-grid{stroke:#f0ebe4;stroke-width:1}.trend-a{fill:none;stroke:var(--brand-c);stroke-width:2.5;stroke-dasharray:1400;stroke-dashoffset:1400;animation:draw 1.2s ease forwards}.trend-b{fill:none;stroke:#8a8f98;stroke-width:2;stroke-dasharray:5 4}.trend-dot-a{fill:#fff;stroke:var(--brand-c);stroke-width:2}@keyframes draw{to{stroke-dashoffset:0}}.trend-axis{display:flex;justify-content:space-between;font-size:.7rem;color:var(--muted);padding:0 2px}.legend-inline{font-size:.75rem;color:var(--muted);display:flex;align-items:center;gap:.35rem}.legend-inline i{display:inline-block;width:14px;height:3px;border-radius:2px}.li-a{background:var(--brand-c)}.li-b{background:#8a8f98;margin-left:.5rem}.outlook{display:flex;flex-direction:column;gap:.3rem;font-size:.88rem}.outlook div{display:flex;justify-content:space-between}.outlook b{font-family:var(--mono);font-weight:500}.outlook .sum{border-top:1px solid var(--line);padding-top:.3rem;font-weight:600}.attention .att{display:flex;gap:.75rem;align-items:center;padding:.55rem .7rem;border-radius:12px;background:var(--side);color:inherit;text-decoration:none;transition:transform .15s ease}.attention a.att:hover{transform:translate(3px)}.attention .att b{font:600 1.3rem var(--mono);min-width:2.2rem;color:var(--brand-c)}.attention .att span{font-size:.85rem}.dash-skeleton{display:flex;flex-direction:column;gap:1rem}.sk-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.9rem}.sk{border-radius:16px;background:linear-gradient(90deg,#f1ece5,#f8f5f0,#f1ece5);background-size:200% 100%;animation:shimmer 1.2s linear infinite}.sk.hero{height:130px}.sk.tile{height:96px}.sk.card{height:220px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.dash *,.dash{animation:none!important;transition:none!important}.trend-a{stroke-dashoffset:0}}@media(max-width:760px){.hero-id{flex-direction:column;align-items:flex-start}.dash-hero{padding:1.1rem}.dash-hero h1{font-size:1.2rem}.tile b{font-size:1.35rem}.donut{flex-direction:column;align-items:stretch}.donut svg{margin:0 auto}}label.button{display:inline-flex;flex-direction:row;align-items:center;margin:0;gap:.35rem;padding:.42rem .95rem;border:1px solid var(--line);background:#fff;border-radius:8px;cursor:pointer}label.button.primary{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}.notice{background:#eef7f0;border:1px solid #cfe8d6;color:var(--ok);padding:.5rem .75rem;border-radius:8px}td.center,.center{text-align:center}.vault{position:relative;min-height:70vh}.vault-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin-bottom:.75rem}.vault-head h1{margin:0}.vault-tools{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.vault-tools button{display:inline-flex;align-items:center;gap:.35rem}.vault-search{display:flex;align-items:center;gap:.35rem;border:1px solid var(--line);border-radius:999px;padding:0 .75rem;background:#fff;color:var(--muted)}.vault-search input{border:none;outline:none;padding:.42rem 0;width:13rem;background:transparent}.seg.light{background:var(--side)}.seg.light button{color:var(--ink)}.seg.light button.on{background:#fff;color:var(--brand);box-shadow:0 1px 3px #00000014}.crumbs{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;font-size:.92rem;margin:0 0 .75rem;color:var(--muted)}.crumbs a{color:var(--ink);text-decoration:none}.crumbs a:hover{color:var(--brand);text-decoration:underline}.lock-pill{background:#fff1c2;color:#7a5b00;border-radius:999px;padding:.05rem .55rem;font-size:.78rem}.upload-tray{border:1px solid var(--line);border-radius:10px;padding:.5rem .75rem;margin-bottom:.75rem;background:var(--paper);display:grid;gap:.3rem}.up-row{display:grid;grid-template-columns:minmax(0,1fr) 8rem minmax(9rem,16rem);gap:.75rem;align-items:center;font-size:.86rem}.up-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.up-bar{height:6px;background:var(--line);border-radius:3px;overflow:hidden}.up-bar span{display:block;height:100%;background:var(--brand);transition:width .2s}.up-row[data-state=done] .up-bar span{background:var(--ok)}.up-row[data-state=failed] .up-bar span{background:var(--error);width:100%!important}.up-row[data-state=failed] .up-msg{color:var(--error)}.up-msg{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vault-body{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem;align-items:start}.vault-body.has-preview{grid-template-columns:minmax(0,1fr) minmax(300px,380px)}.vault-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem}.vault-items .item{position:relative;display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.9rem .6rem .7rem;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;text-align:center;transition:transform .12s,box-shadow .12s,border-color .12s;min-width:0}.vault-items .item:hover{transform:translateY(-2px);box-shadow:0 6px 18px #00000012;border-color:#d6d0c2}.vault-items .item.on{border-color:var(--brand);box-shadow:0 0 0 2px var(--focus)}.vault-items .item:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.item .ic{width:64px;height:64px;display:flex;align-items:center;justify-content:center;font-size:2.6rem;position:relative}.item .ic img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}.item .ic .lock{position:absolute;right:0;bottom:2px;font-size:1rem;font-style:normal}.item .nm{font-size:.88rem;font-weight:500;overflow-wrap:anywhere;line-height:1.25;max-width:100%}.item .nm small{display:block;color:var(--muted);font-weight:400;font-size:.75rem;margin-top:.15rem}.item .meta{font-size:.75rem;color:var(--muted)}.item .meta:empty{display:none}.vchip{font-style:normal;font-size:.7rem;background:var(--side);border-radius:6px;padding:0 .3rem;margin-left:.3rem;color:var(--muted)}.more-btn{position:absolute;top:.3rem;right:.3rem;border:none;background:none;font-size:1.1rem;padding:.1rem .4rem;border-radius:6px;color:var(--muted)}.more-btn:hover{background:var(--hover)}.item-menu{position:absolute;top:2rem;right:.3rem;z-index:20;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #0000001f;display:grid;min-width:10rem;padding:.25rem;text-align:left}.item-menu button{border:none;background:none;text-align:left;padding:.4rem .6rem;border-radius:6px}.item-menu button:hover{background:var(--side)}.badge-file{display:inline-flex;align-items:center;justify-content:center;width:48px;height:58px;border-radius:6px 14px 6px 6px;font-size:.78rem;font-weight:700;letter-spacing:.03em;color:#fff;background:#8a8478}.badge-file.sm{width:26px;height:30px;font-size:.55rem;border-radius:3px 7px 3px 3px;vertical-align:middle;margin-right:.3rem}.badge-file.xl{width:72px;height:88px;font-size:1rem}.badge-file[data-kind=pdf]{background:#c8402f}.badge-file[data-kind=doc]{background:#2f62b5}.badge-file[data-kind=sheet]{background:#1f7a45}.badge-file[data-kind=slide]{background:#d0702a}.badge-file[data-kind=image]{background:#7a4fb0}.badge-file[data-kind=cad]{background:#0f7c8c}.badge-file[data-kind=zip]{background:#6b5a3a}.badge-file[data-kind=media]{background:#b0337a}.vault-items.list{display:block;border:1px solid var(--line);border-radius:12px;overflow:visible;background:#fff}.vault-items.list .row.head,.vault-items.list .item{display:grid;grid-template-columns:40px minmax(0,1fr) 7.5rem 5.5rem 2rem;align-items:center;gap:.75rem;text-align:left;padding:.45rem .75rem;border:none;border-bottom:1px solid var(--line);border-radius:0;flex-direction:row}.vault-items.list .row.head{grid-template-columns:minmax(0,1fr) 7.5rem 5.5rem 2rem;padding-left:calc(1.5rem + 40px);font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.vault-items.list .item:hover{transform:none;box-shadow:none;background:var(--paper)}.vault-items.list .item .ic{width:32px;height:32px;font-size:1.5rem}.vault-items.list .item .ic img{width:32px;height:32px}.vault-items.list .badge-file{width:26px;height:30px;font-size:.55rem;border-radius:3px 7px 3px 3px}.vault-items.list .item .meta:empty{display:block}.vault-items.list .more-btn{position:static}.vault-items.list .item-menu{top:2.3rem;right:.75rem}.empty-state{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:3rem 1rem;color:var(--ink);border:2px dashed var(--line);border-radius:14px;text-align:center}.empty-ic{font-size:2.6rem}.preview{border:1px solid var(--line);border-radius:14px;background:#fff;padding:.85rem;position:sticky;top:1rem;display:grid;gap:.7rem;animation:slide-in .18s ease-out;max-height:calc(100vh - 2rem);overflow:auto}.preview header{display:flex;justify-content:space-between;gap:.5rem;align-items:flex-start}.preview header b{overflow-wrap:anywhere}.preview h3{margin:.25rem 0 0;font-size:.95rem}.pv-frame{background:var(--paper);border:1px solid var(--line);border-radius:10px;min-height:220px;display:flex;align-items:center;justify-content:center;overflow:hidden}.pv-frame iframe{width:100%;height:360px;border:none;background:#fff}.pv-frame img{max-width:100%;max-height:360px;object-fit:contain}.pv-none{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.5rem;text-align:center}.pv-meta{display:grid;grid-template-columns:auto 1fr;gap:.2rem .75rem;margin:0;font-size:.85rem}.pv-meta dt{color:var(--muted)}.pv-meta dd{margin:0;overflow-wrap:anywhere}.pv-actions{display:flex;flex-wrap:wrap;gap:.4rem}.share-box{display:grid;grid-template-columns:1fr auto;gap:.4rem}.share-box small{grid-column:1/-1}.share-box input{font-family:var(--mono);font-size:.75rem}.versions{list-style:none;margin:0;padding:0;display:grid;gap:.25rem;font-size:.85rem}.versions li{display:grid;grid-template-columns:2rem 1fr auto;gap:.5rem;align-items:center;padding:.3rem 0;border-bottom:1px dashed var(--line)}.versions li span{color:var(--muted);font-size:.8rem}.role-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:.35rem;margin:.5rem 0;padding:.5rem;background:var(--paper);border-radius:8px}.vault.dragging{outline:2px dashed var(--brand);outline-offset:-6px}.drop-veil{position:absolute;inset:0;background:#faf9f5e0;display:flex;align-items:center;justify-content:center;border-radius:var(--radius);z-index:30;font-size:1.1rem;pointer-events:none}.drop-veil div{background:#fff;border:2px dashed var(--brand);padding:1.25rem 2rem;border-radius:14px}.bin-name{display:inline-flex;align-items:center;gap:.3rem}@keyframes slide-in{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:none}}@media(max-width:900px){.vault-body.has-preview{grid-template-columns:minmax(0,1fr)}.preview{position:static;max-height:none}.vault-search{flex:1 1 100%}.vault-search input{width:100%}.vault-items{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.vault-items.list .row.head{display:none}.vault-items.list .item{grid-template-columns:32px minmax(0,1fr) 4.5rem 2rem}.vault-items.list .item .meta:nth-of-type(3){display:none}.up-row{grid-template-columns:minmax(0,1fr) 5rem}.up-msg{grid-column:1/-1}}
