:root{--paper:#f6f1e4;--paper-2:#fbf8f1;--panel:#fff;--rule:#b0483f;--rule-soft:#e0c4c0;--ink:#2a241c;--ink-soft:#6b6154;--ink-faint:#9a9184;--brass:#a9812f;--brass-dark:#8a6a22;--debit:#b0483f;--credit:#3d6b4c;--line:#2a241c1f;--shadow:0 10px 30px #2a241c1a;--radius:10px}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}a{color:inherit;text-decoration:none}h1,h2,h3{margin:0;font-family:Zilla Slab,Georgia,serif}.shell{grid-template-columns:248px 1fr;min-height:100vh;display:grid}.sidebar{color:#e9e2d4;background:#2a241c;flex-direction:column;height:100vh;display:flex;position:sticky;top:0}.brand{border-bottom:1px solid #ffffff1a;padding:20px 18px 16px}.brand h1{letter-spacing:.3px;color:#fff;font-size:21px;font-weight:700}.brand h1 span{color:var(--rule)}.brand .sub{color:#9c9382;letter-spacing:.02em;margin-top:3px;font-size:11.5px}.nav{flex:1;padding:12px 10px;overflow-y:auto}.nav-label{text-transform:uppercase;letter-spacing:.09em;color:#8a8271;padding:14px 8px 6px;font-size:10.5px;font-weight:600}.nav a{color:#cfc7b7;border-radius:7px;align-items:center;gap:9px;margin-bottom:1px;padding:8px 10px;font-size:13.5px;font-weight:500;transition:background .12s,color .12s;display:flex}.nav a:hover{color:#fff;background:#ffffff0f}.nav a.active{background:var(--rule);color:#fff}.nav a svg{opacity:.85;flex:none;width:16px;height:16px}.nav a .count{color:#8a8271;margin-left:auto;font-family:IBM Plex Mono,monospace;font-size:11px}.nav a.active .count{color:#ffffffbf}.sidebar-foot{border-top:1px solid #ffffff1a;padding:12px 14px;font-size:12px}.who{align-items:center;gap:9px;display:flex}.avatar{background:var(--brass);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:30px;height:30px;font-size:12.5px;font-weight:600;display:flex}.who-name{color:#fff;font-weight:600;line-height:1.3}.who-role{color:#8a8271;text-transform:uppercase;letter-spacing:.05em;font-size:11px}.signout{text-align:left;color:#8a8271;cursor:pointer;width:100%;font:inherit;background:0 0;border:none;margin-top:10px;padding:4px 0;font-size:12px}.signout:hover{color:var(--rule-soft)}.main{max-width:1280px;padding:26px 30px 60px}.page-head{border-bottom:2px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px;margin-bottom:20px;padding-bottom:13px;display:flex}.page-head h2{font-size:25px;font-weight:700}.page-head .sub{color:var(--ink-soft);margin-top:4px;font-size:13px}.page-actions{flex-wrap:wrap;gap:8px;display:flex}.btn{font:inherit;cursor:pointer;border:none;border-radius:7px;align-items:center;gap:6px;padding:9px 14px;font-size:13px;font-weight:600;transition:transform .1s,background .12s,box-shadow .12s,border-color .12s;display:inline-flex}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brass);color:#fff;box-shadow:0 2px 6px #a9812f4d}.btn-primary:hover:not(:disabled){background:var(--brass-dark)}.btn-ghost{color:var(--ink-soft);border:1px solid var(--line);background:0 0}.btn-ghost:hover:not(:disabled){color:var(--rule);border-color:var(--rule)}.btn-danger{color:var(--debit);background:0 0;border:1px solid #b0483f66}.btn-danger:hover:not(:disabled){background:#b0483f12}.btn svg{width:15px;height:15px}label.field{margin-bottom:14px;display:block}label.field .lbl{color:var(--ink-soft);letter-spacing:.01em;margin-bottom:5px;font-size:12px;font-weight:600;display:block}input[type=text],input[type=email],input[type=password],input[type=date],input[type=number],select,textarea{width:100%;font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:7px;outline:none;padding:9px 11px;font-size:13.5px;transition:border-color .12s,box-shadow .12s}input:focus,select:focus,textarea:focus{border-color:var(--brass);box-shadow:0 0 0 3px #a9812f24}.hint{color:var(--ink-faint);margin-top:5px;font-size:11.5px;line-height:1.5}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.grid{gap:14px;display:grid}.grid-4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.grid-2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.stat .k{text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);font-size:11px;font-weight:600}.stat .v{margin-top:6px;font-family:IBM Plex Mono,monospace;font-size:24px;font-weight:600}.stat .m{color:var(--ink-soft);margin-top:3px;font-size:11.5px}.empty{text-align:center;color:var(--ink-soft);padding:46px 18px;font-family:Zilla Slab,Georgia,serif;font-size:15px}.empty p{margin:0 0 14px}.banner{border-radius:8px;align-items:flex-start;gap:9px;margin-bottom:16px;padding:11px 14px;font-size:13px;line-height:1.5;display:flex}.banner-warn{color:#7a5a12;background:#fdf3e3;border:1px solid #e8c98a}.banner-error{border:1px solid var(--rule-soft);color:#8e3730;background:#fbedec}.banner-ok{color:#2f5940;background:#eef5f0;border:1px solid #bdd8c6}.pill{text-transform:uppercase;letter-spacing:.06em;border-radius:20px;align-items:center;gap:5px;padding:3px 8px;font-size:10.5px;font-weight:600;display:inline-flex}.pill-admin{color:var(--brass-dark);background:#f4e7ca}.pill-editor{color:var(--credit);background:#e3ede6}.pill-member{color:var(--ink-soft);background:#edeae3}.pill-void{color:var(--debit);background:#f6e4e2}.chip{white-space:nowrap;border-radius:20px;align-items:center;padding:4px 10px;font-size:11.5px;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.chip-ghost{color:var(--ink-soft);background:#edeae3}a.chip{transition:opacity .12s}a.chip:hover{filter:brightness(.95);opacity:1!important}.login-hero{justify-content:center;align-items:center;width:132px;height:132px;margin:0 auto 14px;display:flex;position:relative}.logo-glow{opacity:0;filter:blur(2px);z-index:0;background:radial-gradient(circle,#a9812f59 0%,#a9812f00 70%);border-radius:50%;animation:1.4s cubic-bezier(.16,1,.3,1) .15s forwards logo-glow-in;position:absolute;inset:-22%;transform:scale(.7)}.login-logo{z-index:1;opacity:0;will-change:transform,opacity;border-radius:50%;justify-content:center;align-items:center;width:132px;height:132px;animation:1.15s cubic-bezier(.16,1,.3,1) 50ms forwards logo-reveal;display:flex;position:relative;overflow:hidden;transform:scale(.72)rotate(-14deg)}.login-logo img{object-fit:contain;filter:drop-shadow(0 6px 16px #5a321e2e);width:132px;height:132px;display:block}.logo-shine{pointer-events:none;border-radius:50%;position:absolute;inset:0;overflow:hidden}.logo-shine:after{content:"";background:linear-gradient(75deg,#fff0 0%,#ffffffbf 50%,#fff0 100%);width:40%;height:220%;animation:1.3s cubic-bezier(.22,1,.36,1) .95s forwards logo-sweep;position:absolute;top:-60%;left:-60%;transform:translate(-120%)}.login-title{animation:.6s .7s both rise-in}.login-sub{animation:.6s .95s both rise-in}@keyframes logo-reveal{to{opacity:1;transform:scale(1)rotate(0)}}@keyframes logo-glow-in{to{opacity:1;transform:scale(1)}}@keyframes logo-sweep{to{transform:translate(450%)}}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.login-logo,.logo-glow{opacity:1;animation:none;transform:none}.logo-shine:after{animation:none}.login-title,.login-sub{animation:.4s both rise-in}}tr.dragging td{opacity:.45;background:#fbf3e4}[draggable=true]:active{cursor:grabbing}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);overflow-x:auto}table{border-collapse:collapse;width:100%}thead th{color:#fff;background:var(--rule);text-align:left;white-space:nowrap;letter-spacing:.02em;padding:10px;font-family:Zilla Slab,Georgia,serif;font-size:12.5px;font-weight:600}tbody td{border-bottom:1px solid var(--line);vertical-align:middle;padding:9px 10px}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:#fdfaf3}td.num,th.num{text-align:right;font-family:IBM Plex Mono,monospace}td.mid,th.mid{text-align:center}tfoot td{border-top:2px solid var(--rule);background:#fbf3e4;padding:11px 10px;font-family:IBM Plex Mono,monospace;font-weight:600}tfoot td.lbl{text-align:right;font-family:Zilla Slab,Georgia,serif}.drcr-dr{color:var(--debit);font-weight:600}.drcr-cr{color:var(--credit);font-weight:600}tr.voided td{color:var(--ink-faint)}tr.voided td .desc{text-decoration:line-through}.login-wrap{background:radial-gradient(900px 500px at 50% -10%,#fffdf7 0%,var(--paper) 60%);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--paper-2);width:100%;max-width:390px;box-shadow:var(--shadow);border:1px solid #a9812f40;border-radius:12px;padding:32px 28px}.login-card h1{text-align:center;font-size:27px;font-weight:700}.login-card h1 span{color:var(--rule)}.login-card .tag{text-align:center;color:var(--ink-soft);margin:6px 0 24px;font-size:12.5px}.or{color:var(--ink-faint);align-items:center;gap:10px;margin:18px 0;font-size:11.5px;display:flex}.or:before,.or:after{content:"";background:var(--line);flex:1;height:1px}.modal-back{z-index:50;background:#14100a8c;justify-content:center;align-items:center;padding:22px;display:flex;position:fixed;inset:0}.modal{background:var(--paper-2);box-shadow:var(--shadow);border-radius:12px;width:100%;max-width:460px;max-height:88vh;padding:22px;overflow-y:auto}.modal h3{margin-bottom:5px;font-size:19px}.modal .modal-sub{color:var(--ink-soft);margin-bottom:18px;font-size:12.5px;line-height:1.5}.modal-actions{justify-content:flex-end;gap:9px;margin-top:20px;display:flex}.topbar,.scrim,.drawer-close{display:none}.entry-grid{grid-template-columns:150px 1fr auto 130px 130px auto;align-items:end;gap:10px;display:grid}@media (max-width:860px){.shell{grid-template-rows:auto 1fr;grid-template-columns:1fr;align-content:start}.main{min-width:0}.main>*{max-width:100%}.topbar{z-index:40;padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top));background:var(--ink);color:#fff;align-items:center;gap:12px;display:flex;position:sticky;top:0;box-shadow:0 1px #ffffff14}.topbar-title{font-family:Zilla Slab,Georgia,serif;font-size:18px;font-weight:700}.topbar-who{background:var(--brass);border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;margin-left:auto;font-size:12.5px;font-weight:600;display:flex}.hamburger{color:#fff;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:40px;height:40px;margin:-6px 0 -6px -8px;padding:0;display:flex}.hamburger svg{width:22px;height:22px}.sidebar{z-index:60;width:min(82vw,300px);height:100%;padding-top:env(safe-area-inset-top);transition:transform .2s;position:fixed;inset:0 auto 0 0;overflow-y:auto;transform:translate(-100%)}.sidebar.open{transform:translate(0);box-shadow:0 0 40px #00000073}.scrim{z-index:50;background:#14100a8c;display:block;position:fixed;inset:0}.drawer-close{color:#cfc7b7;cursor:pointer;background:#ffffff14;border:none;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;display:flex;position:absolute;top:10px;right:10px}.drawer-close svg{width:18px;height:18px}.nav{padding:12px 10px;display:block}.nav-label{display:block}.nav a{padding:11px 12px}.nav a.nav-child,.nav span.nav-child{border-left:1px solid #ffffff21;margin-left:18px;padding-left:12px}.main{padding:16px 14px calc(40px + env(safe-area-inset-bottom))}.page-head{align-items:flex-start}.page-head h2{font-size:21px}.page-actions{width:100%}.page-actions .btn,.page-actions a.btn{flex:auto;justify-content:center}.grid-4{grid-template-columns:repeat(2,1fr);gap:10px}.card{padding:14px}.stat .v{font-size:20px}input[type=text],input[type=email],input[type=password],input[type=date],input[type=number],select,textarea{padding:11px 12px;font-size:16px}.entry-grid{grid-template-columns:1fr 1fr}.entry-grid>label:nth-child(2),.entry-grid>div:nth-child(3){grid-column:1/-1}.entry-submit{grid-column:1/-1;justify-content:center;padding:13px}.modal{border-radius:14px;max-height:92vh;padding:18px}.modal-actions{flex-direction:column-reverse}.modal-actions .btn{justify-content:center;width:100%;padding:13px}.table-wrap{background:0 0;border:none;overflow:visible}.cards-sm table,.cards-sm thead,.cards-sm tbody,.cards-sm tfoot,.cards-sm tr,.cards-sm td,.cards-sm th{display:block}.cards-sm thead{display:none}.cards-sm tbody tr{background:var(--panel);border:1px solid var(--line);border-radius:10px;margin-bottom:10px;padding:12px 14px;position:relative}.cards-sm tbody tr:hover td{background:0 0}.cards-sm tbody td{text-align:right;border:none;justify-content:space-between;align-items:baseline;gap:10px;padding:3px 0;display:flex}.cards-sm tbody td:before{content:attr(data-label);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);text-align:left;flex:none;font-size:11px;font-weight:600}.cards-sm tbody td:empty{display:none}.cards-sm td.col-desc-cell{text-align:left;margin-bottom:6px;padding-right:44px;font-size:15px;font-weight:600;display:block}.cards-sm td.col-desc-cell:before{display:none}.cards-sm td.col-seq{padding:0;font-size:12px;display:block;position:absolute;top:12px;right:14px}.cards-sm td.col-seq:before{content:"#";margin-right:1px;display:inline}.cards-sm td[data-label=Date]{padding-right:42px}.cards-sm td.col-balance{border-top:1px solid var(--line);margin-top:6px;padding-top:8px;font-size:15px}.cards-sm td.col-actions{flex-wrap:wrap;justify-content:flex-start;gap:6px;padding-top:10px}.cards-sm td.col-actions:before{display:none}.cards-sm td.col-actions .btn{flex:auto;justify-content:center;padding:9px 10px}.cards-sm tfoot{margin-top:4px}.cards-sm tfoot tr{border:1px solid var(--rule-soft);background:#fbf3e4;border-radius:10px;padding:12px 14px}.cards-sm tfoot td{text-align:right;border:none;justify-content:space-between;padding:3px 0;display:flex}.cards-sm tfoot td:before{content:attr(data-label);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);font-size:11px;font-weight:600}.cards-sm tfoot td.lbl{display:none}.table-scroll{-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);max-width:100%;overflow-x:auto}.activity li{flex-wrap:wrap;gap:2px 10px!important}.activity li code{flex:100%;min-width:0!important}.activity li .who{flex:auto;font-size:12px}.activity li .when{flex:none}}.lightbox{z-index:80;background:#14100ad1;justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}.lightbox.open{display:flex}.lightbox img{cursor:default;border-radius:8px;max-width:100%;max-height:88vh;box-shadow:0 20px 50px #00000080}.lightbox-close{color:#fff;cursor:pointer;background:#ffffff26;border:1px solid #fff6;border-radius:50%;width:40px;height:40px;font-size:20px;line-height:1;position:absolute;top:18px;right:18px}.lightbox-close:hover{background:#ffffff47}@media print{@page{size:A4 landscape;margin:10mm}.sidebar,.page-actions,.banner,.hint,form.card,.modal-back,.lightbox{display:none!important}.shell{display:block}.main{max-width:100%;padding:0}body{background:#fff}.page-head{border-bottom-color:#000}thead th{-webkit-print-color-adjust:exact;print-color-adjust:exact;color:#000!important;background:#eee!important}thead{display:table-header-group}tr{page-break-inside:avoid}.table-wrap{border-color:#999;overflow:visible}tfoot td{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#f3f3f3!important}.card{box-shadow:none;border-color:#ccc}td:last-child button{display:none!important}}.nav-group{position:relative}.nav-group>a{padding-right:34px}.nav-toggle{color:#8a8271;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;padding:0;display:flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.nav-toggle:hover{color:#fff;background:#ffffff14}.nav-toggle svg{width:14px;height:14px;transition:transform .15s}.nav-group>a.active+.nav-toggle{color:#fffc}.nav a.nav-child,.nav span.nav-child{border-left:1px solid #ffffff21;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:22px;padding-left:12px;font-size:13px}.nav a.nav-child.active{border-left-color:var(--rule)}.bulk-bar{border:1px solid var(--rule-soft);background:#fbf3e4;border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;padding:9px 14px;font-size:13.5px;font-weight:600;display:flex}.col-check{text-align:center}.cards-sm td.col-check:before{display:none}@media (max-width:860px){.bulk-bar{z-index:20;position:sticky;top:56px}.cards-sm td.col-check{padding:0;display:block;position:absolute;top:12px;left:12px}.cards-sm tbody tr{padding-left:40px}}.brand{text-align:center}.brand-name{color:#fff;letter-spacing:.2px;font-family:Zilla Slab,Georgia,serif;font-size:16px;font-weight:700;line-height:1.25}.editable-cell{cursor:text;border-bottom:1px dashed #0000;border-radius:3px;min-width:20px;display:inline-block}.editable-cell:hover{border-bottom-color:var(--brass);background:#fff9ec}tbody tr.paid td{background:#eaf4ec}tbody tr.paid:nth-child(2n) td{background:#e4f1e7}tbody tr.paid:hover td{background:#dbeddf}.cards-sm tbody tr.paid{background:#eaf4ec;border-color:#bdd8c6}
