:root{--paper: #EDEAE1;--ink: #1C2A3A;--ink-2: #16222f;--brass: #9B7B34;--brass-ink: #1C2A3A;--cream: #F8F6F1;--panel: #F8F6F1;--panel-2: #FBFAF6;--border: #ddd6c6;--line: #e2dccd;--hair: #efe9db;--ink-soft: #5a6472;--muted: #8a8576;--label: #a8a08c;--ok: #3f7d5a;--warn: #9B7B34;--danger: #9E3B30;--on-ink: #F8F6F1;--on-ink-dim: #8ba0b0;--radius: 6px}*{box-sizing:border-box}body{margin:0;font-family:Hanken Grotesk,ui-sans-serif,system-ui,sans-serif;font-variant-numeric:tabular-nums;color:var(--ink);background:var(--paper)}a{text-decoration:none;color:inherit}::selection{background:var(--brass);color:var(--cream)}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:var(--paper)}::-webkit-scrollbar-thumb{background:#cfc8ba}@keyframes lgfade{0%{opacity:0}to{opacity:1}}@keyframes lgpop{0%{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:none}}@keyframes lgpulse{0%,to{opacity:1}50%{opacity:.3}}@media (prefers-reduced-motion: reduce){*{animation:none!important}}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.topbar{display:flex;align-items:center;gap:14px;padding:12px 20px;background:var(--ink);flex-shrink:0;z-index:20}.topbar .org{display:flex;align-items:center;gap:11px;width:212px;flex-shrink:0}.topbar .logo{width:32px;height:32px;border-radius:4px;background:var(--brass);display:grid;place-items:center;font-weight:600;color:var(--ink);font-size:18px;font-style:italic}.topbar .org .name{font-weight:600;font-size:15px;color:var(--cream);line-height:1.1}.topbar .org .loc{font-size:10px;color:var(--on-ink-dim)}.topbar .search{flex:1;display:flex;align-items:center;gap:11px;background:var(--ink-2);border:1px solid #2c3d4d;border-radius:5px;padding:0 14px;max-width:560px}.topbar .search input{flex:1;background:transparent;border:none;outline:none;color:var(--cream);font-size:14px;font-family:inherit;padding:11px 0}.topbar .pill{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--on-ink-dim);border:1px solid #2c3d4d;border-radius:5px;padding:8px 11px;cursor:pointer}.topbar .pill:hover{background:var(--ink-2)}.topbar .avatar{width:34px;height:34px;border-radius:5px;background:#28384a;display:grid;place-items:center;font-size:12px;color:#cdd8e2;cursor:pointer}.offline-banner{display:flex;align-items:center;gap:12px;background:var(--brass);color:var(--ink);padding:9px 22px;font-size:13px;font-weight:600;flex-shrink:0;animation:lgfade .3s}.offline-banner .dot{width:8px;height:8px;border-radius:50%;background:var(--ink);animation:lgpulse 1.4s infinite}.shell-body{display:flex;flex:1;min-height:0}.sidebar{width:212px;flex-shrink:0;background:var(--panel-2);border-right:1px solid var(--border);padding:16px 12px;overflow-y:auto;display:flex;flex-direction:column}.sidebar .group-title{font-size:10px;color:var(--label);letter-spacing:.12em;margin:4px 10px 8px}.sidebar .group{margin-bottom:18px}.sidebar a,.sidebar .nav{position:relative;display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:5px;font-size:13.5px;margin-bottom:1px;cursor:pointer;color:var(--ink-soft)}.sidebar a:hover,.sidebar .nav:hover{background:var(--paper);color:var(--ink)}.sidebar a.active{background:var(--paper);color:var(--ink);font-weight:600}.sidebar a.active:before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:2.5px;border-radius:2px;background:var(--brass)}.sidebar a .icon,.sidebar .nav .icon{font-size:13px;width:16px;text-align:center;opacity:.85}.sidebar .badge-count{margin-left:auto;font-size:10px;border-radius:10px;padding:1px 7px}.sidebar .spacer{flex:1}.sidebar .who{font-size:11px;color:var(--muted);padding:6px 10px}.sidebar .logout{background:#fff;border:1px solid var(--border);color:var(--ink-soft);padding:8px 10px;border-radius:5px;cursor:pointer;font-family:inherit;font-size:12px}.main{flex:1;overflow-y:auto;min-width:0}.page{padding:24px 28px 60px;max-width:1180px;animation:lgfade .25s}.h1{font-size:30px;font-weight:600;margin:0;letter-spacing:-.01em}.sub{font-size:12px;color:var(--muted);margin:4px 0 0}.page-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:20px;gap:16px}.section-label{font-size:10px;color:var(--label);letter-spacing:.12em;text-transform:uppercase}.btn{border:none;border-radius:5px;padding:11px 16px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap;background:var(--brass);color:var(--ink)}.btn.gold{background:var(--brass);color:var(--ink)}.btn.gold:hover{background:#8a6c2c}.btn.solid{background:var(--ink);color:var(--cream)}.btn.solid:hover{background:#13202d}.btn.ghost{background:#fff;border:1px solid var(--border);color:var(--ink);font-weight:600}.btn.ghost:hover{background:var(--paper)}.btn.sm{padding:7px 11px;font-size:12px}.btn:disabled{opacity:.55;cursor:default}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:17px 18px}.card .label{font-style:italic;font-size:13px;color:var(--muted)}.card .value{font-size:27px;font-weight:600;margin-top:5px;line-height:1}.card .foot{font-size:11px;color:var(--muted);margin-top:9px}.card.ink{background:var(--ink);color:var(--cream);border-color:var(--ink)}.card.ink .label,.card.ink .foot{color:var(--on-ink-dim)}.card.clickable{cursor:pointer}.card.clickable:hover{background:var(--panel-2)}.value.warn{color:var(--warn)}.value.danger{color:var(--danger)}.foot.warn{color:var(--warn)}.foot.danger{color:var(--danger)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-top:18px}.panel-head{display:flex;justify-content:space-between;align-items:baseline;padding:16px 18px 12px}.panel-head h2{font-size:19px;font-weight:600;margin:0}.ltable{border-top:2px solid var(--ink)}.ltable .lhead,.ltable .lrow{display:grid;gap:14px;align-items:center}.ltable .lhead{padding:10px 4px;font-size:10px;color:var(--label);letter-spacing:.08em;border-bottom:1px solid #cdc5b3;text-transform:uppercase}.ltable .lrow{padding:13px 4px;border-bottom:1px solid var(--line)}.lgrow{cursor:pointer}.lgrow:hover{background:var(--panel-2)}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;color:var(--label);font-weight:600;font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:10px 18px;background:var(--panel-2);border-bottom:1px solid #cdc5b3}td{padding:13px 18px;border-top:1px solid var(--line)}tr.click{cursor:pointer}tr.click:hover td{background:var(--panel-2)}.avatar-sq{width:34px;height:34px;border-radius:4px;background:var(--paper);border:1px solid #e2dcce;display:grid;place-items:center;font-size:11px;color:var(--ink-soft);flex-shrink:0}.right{text-align:right}.muted{color:var(--muted)}.dot{width:6px;height:6px;border-radius:50%;display:inline-block}.status{display:flex;align-items:center;gap:7px;font-size:13px}.s-active{color:var(--ok)}.s-active .dot{background:var(--ok)}.s-expiring{color:var(--warn)}.s-expiring .dot{background:var(--warn)}.s-expired{color:var(--danger)}.s-expired .dot{background:var(--danger)}.s-frozen{color:var(--ink-soft)}.s-frozen .dot{background:var(--ink-soft)}.s-lead{color:var(--brass)}.s-lead .dot{background:var(--brass)}.chips{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}.chip{font-size:11.5px;background:#fff;border:1px solid var(--border);border-radius:4px;padding:7px 13px;cursor:pointer}.chip.active{background:var(--ink);color:var(--cream);border-color:var(--ink)}.badge{font-size:12px;padding:3px 9px;border-radius:999px;font-weight:600}.badge.active,.badge.paid{background:#e7efe7;color:var(--ok)}.badge.lead{background:#fbf7ee;color:var(--brass)}.badge.expiring,.badge.issued,.badge.frozen{background:#fbf3e3;color:var(--warn)}.badge.expired,.badge.cancelled{background:#f6e3df;color:var(--danger)}.badge.anonymised{background:var(--line);color:var(--muted)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label,.field .lbl{font-size:10px;color:var(--label);letter-spacing:.1em;text-transform:uppercase}input,select,textarea{padding:11px 13px;border:1px solid var(--border);border-radius:5px;font-size:14px;font-family:inherit;background:#fff;color:var(--ink);width:100%}input::placeholder{color:#b3ab97}.row{display:flex;gap:14px}.row>*{flex:1}.login-wrap{display:grid;place-items:center;min-height:100vh;background:var(--ink)}.login-card{background:var(--cream);padding:34px;border-radius:10px;width:370px;border:1px solid var(--border)}.login-card .brand{font-weight:700;font-size:20px;margin-bottom:4px;display:flex;align-items:center;gap:10px}.login-card .logo{width:30px;height:30px;border-radius:5px;background:var(--brass);display:grid;place-items:center;font-weight:700;font-style:italic;color:var(--ink)}.error{color:var(--danger);font-size:13px;margin-top:8px}.hint{color:var(--muted);font-size:12px;margin-top:14px;line-height:1.5}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c2a3a80;display:grid;place-items:center;z-index:50;animation:lgfade .2s}.modal{background:var(--cream);border-radius:10px;padding:24px;width:440px;max-width:calc(100vw - 28px);max-height:calc(100vh - 48px);overflow-y:auto;border:1px solid var(--border);animation:lgpop .25s}.modal h3{margin:0 0 16px;font-size:19px;font-weight:600}.modal .actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}.invoice-doc{background:#fff;padding:32px 34px;border:1px solid var(--border);border-radius:var(--radius);max-width:720px}.invoice-doc .tot{width:280px;margin-left:auto}.invoice-doc .tot>div{display:flex;justify-content:space-between;padding:6px 0;font-size:13px;color:var(--ink-soft)}.invoice-doc .tot .grand{border-top:none;font-weight:600;font-size:16px;color:var(--ink);padding-top:13px}.invoice-doc .tot .grand span:last-child{font-size:19px;border-bottom:4px double var(--ink);padding-bottom:3px}.bottombar,.drawer-backdrop{display:none}@keyframes drawerUp{0%{transform:translateY(100%)}to{transform:none}}.split-2col{display:grid;grid-template-columns:1fr 300px;gap:20px;align-items:start}.mlist{display:flex;flex-direction:column;gap:9px}.mcard{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:13px;cursor:pointer}.mcard:active{background:var(--panel-2)}.mcard .av{width:38px;height:38px;border-radius:8px;background:#fff;border:1px solid #e2dcce;display:grid;place-items:center;font-size:11px;color:var(--ink-soft);font-weight:600;flex-shrink:0}.mcard .mid{flex:1;min-width:0}.mcard .mtitle{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mcard .msub{font-size:11px;color:var(--muted);margin-top:1px}.mcard .mright{text-align:right;flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:5px}.show-sm{display:none}@media print{.topbar,.sidebar,.bottombar,.offline-banner,.btn,.no-print{display:none!important}.main{overflow:visible}.page{padding:0}}@media (max-width: 1024px){.split-2col{grid-template-columns:1fr 260px}}@media (max-width: 760px){.sidebar{display:none}.main{padding-bottom:74px}.topbar{gap:10px;padding:10px 14px}.topbar .org{width:auto;min-width:0}.topbar .org .name{max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .org .loc,.topbar .pill{display:none}.topbar .search{max-width:none}.page{padding:16px 16px 32px;max-width:none}.h1{font-size:23px}.page-head{flex-direction:column;align-items:stretch;gap:12px}.page-head .actions,.page-head>div:last-child:not(:only-child){display:flex;flex-wrap:wrap;gap:8px}.btn{padding:10px 14px}.cards{grid-template-columns:repeat(2,1fr);gap:10px}.card{padding:14px}.card .value{font-size:22px}.split-2col,.detail-grid,.form-2col,.stack-sm{grid-template-columns:1fr!important}.ltable{overflow-x:auto;-webkit-overflow-scrolling:touch}.ltable .lhead,.ltable .lrow{min-width:560px}.panel{overflow-x:auto}.panel table{min-width:520px}.invoice-doc{padding:20px 18px}.bottombar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:#fff;border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom));justify-content:space-around}.bottombar a,.bottombar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border:none;font:inherit;color:var(--muted);font-size:10px;padding:6px 2px;cursor:pointer;text-align:center}.bottombar a.active{color:var(--ink);font-weight:600}.bottombar .bicon{font-size:19px;line-height:1}.bottombar .bplus{width:38px;height:38px;border-radius:50%;background:var(--brass);color:var(--ink);display:grid;place-items:center;font-size:22px;margin-top:-14px;box-shadow:0 6px 16px -6px #1c2a3a80}.drawer-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#1c2a3a73;z-index:60;animation:lgfade .15s}.drawer{position:fixed;left:0;right:0;bottom:0;z-index:61;background:var(--cream);border-radius:16px 16px 0 0;padding:8px 14px calc(20px + env(safe-area-inset-bottom));max-height:82vh;overflow:auto;animation:drawerUp .2s}.drawer .grip{width:40px;height:4px;border-radius:2px;background:#cfc8ba;margin:8px auto 12px}.drawer .group-title{font-size:10px;color:var(--label);letter-spacing:.12em;margin:14px 6px 6px}.drawer a{display:flex;align-items:center;gap:12px;padding:12px 8px;border-radius:8px;font-size:15px;color:var(--ink)}.drawer a.active{background:var(--paper);font-weight:600}.drawer a .icon{width:20px;text-align:center;opacity:.8}.hide-sm{display:none!important}.show-sm{display:block!important}.modal-backdrop{display:flex;align-items:flex-end;justify-content:center}.modal{width:100%;max-width:620px;max-height:88vh;border-radius:18px 18px 0 0;position:relative;padding-top:28px;animation:drawerUp .22s}.modal:before{content:"";position:absolute;top:9px;left:50%;transform:translate(-50%);width:40px;height:4px;border-radius:2px;background:#cfc8ba}.modal .actions{position:sticky;bottom:0;background:var(--cream);padding-top:10px}.qa-sheet button{width:100%;text-align:left;display:flex;align-items:center;gap:12px;padding:15px 14px;font-size:15px;border:1px solid var(--border);background:#fff;border-radius:11px;margin-bottom:9px;cursor:pointer;font-family:inherit;color:var(--ink)}.qa-sheet button .qicon{font-size:18px;width:24px;text-align:center}}@media (max-width: 420px){.cards{grid-template-columns:1fr}}
