:root{--navy: #1b2a4a;--navy-soft: #2c3f68;--bg: #f4f1ea;--card: #fffdf8;--sand: #ede7da;--line: #d9d2c0;--text: #1d2433;--muted: #6b6f7b;--danger: #b3261e;--danger-bg: #fbe9e7;--ok: #1f7a4d;--ok-bg: #e4f3ea;--warn: #8a5a00;--warn-bg: #fdf1d6;--radius: 8px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1{font-size:1.5rem;margin:0 0 .25rem}h2{font-size:1.15rem;margin:0 0 .75rem}h3{font-size:1rem;margin:1.25rem 0 .5rem}a{color:var(--navy)}.muted{color:var(--muted)}.right{text-align:right}.nowrap{white-space:nowrap}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.row.spread{justify-content:space-between}.stack>*+*{margin-top:.75rem}.grow{flex:1}.topbar{background:var(--navy);color:#fff;padding:.6rem 1rem;display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.topbar .brand{font-weight:700;letter-spacing:.2px;color:#fff;text-decoration:none}.topbar .spacer{flex:1}.topbar a,.topbar button.link{color:#dfe6f5;background:none;border:0;cursor:pointer;font:inherit;text-decoration:none;padding:0}.topbar a:hover,.topbar button.link:hover{color:#fff;text-decoration:underline}.install-tip{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;background:var(--sand);border-bottom:1px solid var(--line);padding:.5rem 1rem;font-size:.9rem}.install-tip button.link{background:none;border:0;padding:0;color:var(--muted);cursor:pointer;text-decoration:underline;font:inherit;margin-left:auto}.page{max-width:1100px;margin:0 auto;padding:1.25rem 1rem 3rem}.footer{text-align:center;color:var(--muted);font-size:.8rem;padding:1rem}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1rem}.card+.card{margin-top:1rem}.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}table{width:100%;border-collapse:collapse;background:var(--card)}th,td{padding:.45rem .6rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--sand)}tr.clickable{cursor:pointer}tr.clickable:hover td{background:#f7f2e6}tr.total td{font-weight:700;border-top:2px solid var(--navy);background:var(--sand)}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}.table-wrap table{border:0}.table-wrap tr:last-child td{border-bottom:0}.page:has(.wide-page){max-width:none}.scroll-box{overflow:auto;height:calc(100vh - 11rem);min-height:18rem;min-width:0}.scroll-box.fit{height:auto;min-height:0;max-height:calc(100vh - 16rem)}.scroll-box thead{position:sticky;top:0;z-index:2}.scroll-box table{width:100%}.scroll-box table{font-size:.9rem}.scroll-box th,.scroll-box td{padding:.35rem .4rem}.scroll-box th{font-size:.72rem;letter-spacing:.02em}.scroll-box th.col-status{min-width:9rem}.scroll-box th.col-relation{min-width:13rem}.scroll-box tr.filters input,.scroll-box tr.filters select{min-width:0}.scroll-box th.grow,.scroll-box td.grow{width:100%}.scroll-box td.ellipsis{width:100%;max-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tabs{display:flex;gap:.25rem;border-bottom:2px solid var(--line);margin:1rem 0;flex-wrap:wrap}.tabs a{padding:.5rem .9rem;text-decoration:none;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-2px;font-weight:600}.tabs a:hover{color:var(--navy)}.tabs a.active{color:var(--navy);border-bottom-color:var(--navy)}label{display:block;font-size:.85rem;font-weight:600;margin-bottom:.2rem}input,select,textarea{font:inherit;padding:.4rem .55rem;border:1px solid #bdb59f;border-radius:6px;background:#fff;color:var(--text);max-width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--navy-soft);outline-offset:0}input[type=checkbox]{width:auto}textarea{width:100%;min-height:4rem}.field{min-width:0}.field input,.field select{width:100%}.form-grid{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.hint{font-size:.8rem;color:var(--muted);margin-top:.15rem}button,.button{font:inherit;font-weight:600;padding:.45rem .9rem;border-radius:6px;cursor:pointer;border:1px solid var(--navy);background:var(--navy);color:#fff;text-decoration:none;display:inline-block}button:hover:not(:disabled),.button:hover{background:var(--navy-soft)}button:disabled{opacity:.45;cursor:not-allowed}button.secondary,.button.secondary{background:transparent;color:var(--navy)}button.secondary:hover:not(:disabled){background:var(--sand)}button.danger{background:var(--danger);border-color:var(--danger)}button.small{padding:.2rem .55rem;font-size:.85rem}.notice{padding:.6rem .8rem;border-radius:6px;margin:.75rem 0;white-space:pre-line}.notice.error{background:var(--danger-bg);color:var(--danger);border:1px solid #f0b8b2}.notice.ok{background:var(--ok-bg);color:var(--ok);border:1px solid #b6dcc4}.notice.info{background:var(--sand);color:var(--text);border:1px solid var(--line)}.badge{display:inline-block;font-size:.72rem;font-weight:700;padding:.1rem .5rem;border-radius:999px;background:var(--sand);color:var(--navy)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.off{background:#e6e6e6;color:#555}.company .two-col>.card{margin-top:0}.company h3{margin:0 0 .6rem;font-size:1rem}.company details.more{margin-top:.5rem;font-size:.85rem;color:var(--muted)}.company details.more summary{cursor:pointer}.save-bar{display:flex;justify-content:flex-end;align-items:center;gap:.75rem;position:sticky;bottom:0;background:var(--bg);padding:.75rem 0;border-top:1px solid var(--line)}.amount-link{background:none;border:0;padding:0;font:inherit;color:var(--navy);cursor:pointer;text-decoration:underline dotted}.amount-link:hover{text-decoration:underline}@media print{.amount-link{text-decoration:none;color:inherit}}.sort{background:none;border:0;padding:0;font:inherit;font-weight:700;color:inherit;cursor:pointer;text-align:inherit}.sort:hover{text-decoration:underline}tr.filters th{background:var(--sand);padding:.3rem .4rem;font-weight:400}tr.filters input,tr.filters select{width:100%;min-width:6rem;font-size:.85rem;padding:.25rem .35rem}.group-head td{background:var(--sand);font-weight:700}.subtotal td{font-weight:600;border-top:1px solid var(--line)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#141c308c;display:flex;align-items:flex-start;justify-content:center;padding:3vh .75rem;overflow-y:auto;z-index:50}.modal{background:var(--card);border-radius:10px;width:100%;max-width:860px;padding:1.1rem 1.25rem 1.25rem;box-shadow:0 12px 40px #0000004d}.modal.narrow{max-width:480px}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem}.modal-head h2{margin:0}.close{background:none;border:0;color:var(--muted);font-size:1.5rem;line-height:1;padding:0 .25rem}.close:hover:not(:disabled){background:none;color:var(--text)}.lines td{padding:.25rem}.lines input,.lines select{width:100%}.lines .amount{text-align:right;min-width:7rem}.totals{display:flex;gap:1.5rem;justify-content:flex-end;flex-wrap:wrap;padding:.6rem .25rem;font-variant-numeric:tabular-nums}.totals .bad{color:var(--danger);font-weight:700}.totals .good{color:var(--ok);font-weight:700}.login{max-width:380px;margin:8vh auto}.login h1{text-align:center}.two-col{display:grid;gap:1.25rem;grid-template-columns:1fr 1fr}@media (max-width: 760px){.two-col{grid-template-columns:1fr}}.app-layout{display:flex;min-height:100vh;align-items:flex-start}.app-main{flex:1;min-width:0}.sidebar{width:230px;flex-shrink:0;background:var(--navy);color:#fff;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow:hidden}.side-head{padding:1.2rem 1.2rem 1rem;border-bottom:1px solid rgba(255,255,255,.15);flex-shrink:0}.side-brand{display:block;color:#fff;text-decoration:none;font-weight:700;font-size:1.1rem;line-height:1.2}.side-brand small{display:block;font-weight:400;font-size:.75rem;color:#ffffffa6;margin-top:2px}.side-logo{display:block;background:#fff;border-radius:6px;padding:6px 8px}.side-logo img{display:block;max-width:100%;max-height:64px;margin:0 auto}.side-toggle{display:none}.side-nav{flex:1;overflow-y:auto;padding:.5rem 0}.side-nav a{display:block;padding:.6rem 1.2rem;color:#ffffffbf;text-decoration:none;font-size:.93rem;border-left:3px solid transparent}.side-nav a:hover{color:#fff;background:#ffffff0f}.side-nav a.active{color:#fff;background:#ffffff1f;border-left-color:#c9a24a;font-weight:600}.side-group-head{display:flex;justify-content:space-between;align-items:center;width:100%;background:none;border:0;border-left:3px solid transparent;padding:.6rem 1.2rem;font:inherit;font-size:.93rem;color:#ffffffbf;cursor:pointer;text-align:left}.side-group-head:hover{color:#fff;background:#ffffff0f}.side-group-head.has-active{color:#fff}.side-nav a.sub{padding-left:2.2rem;font-size:.88rem}.side-section{margin:.9rem 1.2rem .3rem;padding-top:.8rem;border-top:1px solid rgba(255,255,255,.15);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:#ffffff8c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-foot{padding:.9rem 1.2rem 1rem;border-top:1px solid rgba(255,255,255,.15);flex-shrink:0;font-size:.85rem}.side-user{color:#ffffffbf;margin-bottom:.4rem}.side-foot button.link{background:none;border:0;padding:0;color:#dfe6f5;cursor:pointer;font:inherit}.side-foot button.link:hover{color:#fff;text-decoration:underline}.side-version{margin-top:.8rem;font-size:.7rem;color:#fff6}@media (max-width: 800px){.app-layout{display:block}.sidebar{width:100%;height:auto;position:static;overflow:visible}.side-head{display:flex;justify-content:space-between;align-items:center;padding:.7rem 1rem;border-bottom:0}.side-toggle{display:inline-block;background:#ffffff1f;color:#fff;border:0;border-radius:6px;padding:.4rem .9rem;font:inherit;cursor:pointer}.side-nav,.side-foot{display:none}.sidebar.open .side-nav{display:block;border-top:1px solid rgba(255,255,255,.15);max-height:70vh}.sidebar.open .side-foot{display:block}}.print-only{display:none}@page{margin:0}@media print{.topbar,.tabs,.no-print,.footer,.sidebar{display:none!important}.print-only{display:block!important}.app-layout{display:block}body{background:#fff;padding:14mm 16mm}.page{max-width:none;padding:0}.scroll-box,.scroll-box.fit{height:auto;max-height:none!important;overflow:visible}.page-break{break-before:page;page-break-before:always;margin-top:0!important;padding-top:6em}}.install-help{max-width:420px;margin:1.25rem auto 0;padding:.9rem 1.1rem;font-size:1.05rem;line-height:1.45;background:var(--sand);border:2px solid var(--navy);border-radius:var(--radius)}.install-help summary{cursor:pointer;font-weight:700;font-size:1.15rem;color:var(--navy)}.install-help strong{display:block;margin-top:.6rem;font-size:1.05rem}.install-help ol{margin:.5rem 0 .8rem 1.3rem;padding:0}.install-help li{margin-bottom:.4rem}.install-icon{vertical-align:middle;border:1px solid var(--line);border-radius:4px;padding:3px;background:#fff;width:28px;height:28px}
