:root{--paper:#f3f1ea;--surface:#fdfcf8;--ink:#26221b;--muted:#6d675a;--line:#e4dfd2;--line-strong:#cfc9b6;--accent:#b4531f;--accent-deep:#9c4512;--positive:#2f6b44;--negative:#a63a2e;--rail:#241f17;--rail-line:#3a3327;--rail-text:#cfc7b4;--serif:"Newsreader",serif;--sans:"Public Sans",system-ui,sans-serif;--mono:"Spline Sans Mono",ui-monospace,monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font:15px/1.55 var(--sans);-webkit-font-smoothing:antialiased;margin:0}::selection{background:#b4531f38}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}input,select,textarea,button{font:inherit;color:inherit}input[type=date],input[type=time]{caret-color:var(--accent)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line-strong);border:2px solid var(--paper);border-radius:99px}::-webkit-scrollbar-track{background:0 0}.num,.balance,.credit-text,.debit-text,.net-total b,.balance-value,.report-meta span,.report-meta strong{font-family:var(--mono);font-variant-numeric:tabular-nums}.shell{grid-template-columns:248px 1fr;min-height:100vh;display:grid}.rail{background:var(--rail);color:var(--rail-text);flex-direction:column;min-height:100vh;padding:30px 22px 22px;display:flex}.brand{align-items:center;gap:11px;display:flex}.brand-mark{background:var(--accent);color:#fdfcf8;width:32px;height:32px;font:italic 500 19px/32px var(--serif);text-align:center;border-radius:50%}.brand b{color:#f3f1ea;font:600 21px/1 var(--serif);letter-spacing:-.01em}.rail-note{color:#8f8672;max-width:20ch;margin:10px 0 0;font-size:12px}.rail nav{gap:2px;margin-top:38px;display:grid}.rail a{color:var(--rail-text);border-radius:8px;padding:9px 12px;font-size:14px;font-weight:500;text-decoration:none;transition:background-color .15s ease-out,color .15s ease-out}.rail a:hover{color:#f3f1ea;background:#f3f1ea12}.rail a.current{color:#f0e9dd;background:#b4531f2e}.contract{border:1px solid var(--rail-line);background:#fdfcf808;border-radius:12px;margin:44px 0 auto;padding:16px 16px 14px}.contract h2{font:500 11px var(--sans);text-transform:uppercase;letter-spacing:.08em;color:#8f8672;margin:0}.contract-rule{font:italic 500 19px/1.2 var(--serif);color:#f3f1ea;margin:9px 0 6px}.contract-detail{color:#b3aa95;margin:0;font-size:12px;line-height:1.6}.rail footer{border-top:1px solid var(--rail-line);font:11px var(--mono);color:#8f8672;margin-top:26px;padding-top:16px}.workspace{width:100%;max-width:1280px;margin:auto;padding:48px 5vw 80px}.topline{justify-content:space-between;align-items:flex-end;gap:20px;display:flex}.topline h1{font:600 42px/1.05 var(--serif);letter-spacing:-.02em;margin:0}.identity{align-items:center;gap:12px;display:flex}.identity-badge{background:var(--ink);width:42px;height:42px;color:var(--paper);font:italic 500 15px var(--serif);border-radius:50%;place-items:center;display:grid}.identity-info{text-align:right;gap:1px;display:grid}.identity-info b{font-size:13px;font-weight:600}.identity-info small{font:11px var(--mono);color:var(--muted)}.period-bar{justify-content:space-between;align-items:center;gap:18px;margin:34px 0 14px;display:flex}.period-field{color:var(--muted);gap:5px;font-size:12px;font-weight:600;display:grid}.period-field select{appearance:none;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2326221b' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 14px center;border:1px solid var(--line-strong);font:500 15px var(--serif);cursor:pointer;border-radius:10px;padding:10px 38px 10px 14px;transition:border-color .15s ease-out}.period-field select:hover{border-color:var(--accent)}.period-note{color:var(--muted);font-size:12.5px}.balance-instrument{background:var(--surface);border:1px solid var(--line);border-radius:16px;grid-template-columns:1.8fr 1fr;margin-bottom:30px;display:grid;box-shadow:0 2px 10px #26221b0d,0 14px 34px #26221b0d}.balance-hero,.balance-side{align-content:center;gap:6px;padding:26px 30px;display:grid}.balance-hero{border-right:1px solid var(--line)}.balance-label{letter-spacing:.02em;color:var(--muted);font-size:12px;font-weight:600}.balance-value{font:500 clamp(44px,4.6vw,58px)/1 var(--serif);letter-spacing:-.02em}.balance-side b{font:500 30px/1 var(--serif)}.balance-side.warn b{color:var(--negative)}.balance-side.ok b{color:var(--positive)}.balance-hero.negative .balance-value{color:var(--negative)}.balance-hint{color:var(--muted);font-size:12px}.report{border-top:1px solid var(--line-strong);margin-bottom:34px;padding-top:34px}.report-heading{grid-template-columns:1fr auto;align-items:baseline;gap:4px 24px;display:grid}.report-heading h2{font:600 26px/1.1 var(--serif);letter-spacing:-.015em;margin:0}.report-sub{color:var(--muted);grid-column:1;max-width:52ch;margin:0;font-size:13px}.net-total{text-align:right;grid-row:1/span 2}.net-total span{color:var(--muted);font-size:12px}.net-total b{font:500 34px/1.1 var(--serif);color:var(--positive);display:block}.net-total.negative b{color:var(--negative)}.report-chart{margin-top:28px;position:relative}.report-scale{gap:3px;display:grid}.report-month{grid-template-columns:minmax(220px,1fr) 330px;align-items:center;gap:26px;min-height:44px;display:grid}.report-bars{grid-template-columns:1fr 1fr;align-items:center;display:grid;position:relative}.report-bars:before{content:"";background:var(--line-strong);width:1px;position:absolute;top:2px;bottom:2px;left:50%}.report-bars i{border-radius:3px;height:9px;display:block}.report-bars .credit{background:var(--positive);grid-column:2;justify-self:start;margin-left:8px}.report-bars .debit{background:var(--negative);grid-column:1;justify-self:end;margin-right:8px}.report-meta{font:12.5px var(--mono);grid-template-columns:64px 1fr 1fr 74px;align-items:center;gap:8px;display:grid}.report-meta b{font:italic 500 14px var(--serif)}.credit-text{color:var(--positive)}.debit-text{color:var(--negative)}.report-meta strong{text-align:right;font-weight:500}.content-grid{grid-template-columns:minmax(560px,1.75fr) minmax(320px,.85fr);align-items:start;gap:24px;margin-top:8px;display:grid}.ledger,.editor{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 1px 6px #26221b0a}.section-title{justify-content:space-between;align-items:center;gap:14px;padding:22px 24px 18px;display:flex}.section-title h2{font:600 22px/1.15 var(--serif);letter-spacing:-.01em;margin:0}.ghost-btn{border:1px solid var(--line-strong);font:600 12.5px var(--sans);cursor:pointer;background:0 0;border-radius:9px;padding:8px 14px;transition:border-color .15s ease-out,color .15s ease-out,transform .12s ease-out}.ghost-btn:hover{border-color:var(--accent);color:var(--accent-deep)}.ghost-btn:active{transform:scale(.97)}.table-head,.record{grid-template-columns:96px minmax(170px,1fr) 84px 68px 82px 62px;align-items:center;gap:10px;display:grid}.table-head{color:var(--muted);font:500 11px var(--sans);letter-spacing:.03em;background:#26221b08;padding:9px 24px}.record{text-align:left;border:0;border-top:1px solid var(--line);cursor:pointer;width:100%;color:var(--ink);animation:.3s ease-out both rowIn;animation-delay:calc(var(--stagger) * 26ms);background:0 0;padding:11px 24px;font-size:13px;transition:background-color .15s ease-out}.record:hover{background:#26221b09}.record:active{background:#26221b0f}.date{gap:2px;display:grid}.date b{font-size:13px;font-weight:600}.date small{font:10.5px var(--mono);color:var(--muted)}.punches{flex-wrap:wrap;gap:4px;display:flex}.punches i{font-style:normal;font:11.5px var(--mono);background:#26221b0d;border-radius:5px;padding:2px 6px}.punches em{color:var(--muted);font-size:12px;font-style:normal}.num{color:var(--ink);font-size:12.5px}.balance{font-size:12.5px;font-weight:500}.balance.ok{color:var(--positive)}.balance.pending{color:var(--negative)}.balance.justified,.balance.off{color:var(--muted)}.edit{color:var(--muted);opacity:0;font-size:11.5px;font-weight:600;transition:opacity .15s ease-out,color .15s ease-out}.editor{padding:24px;position:sticky;top:24px}.editor-top{justify-content:space-between;align-items:baseline;display:flex}.editor-top h2{font:600 20px/1.2 var(--serif);margin:0}.close{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:6px;padding:4px 8px;font-size:20px;line-height:1;transition:color .15s ease-out,background-color .15s ease-out}.close:hover{color:var(--ink);background:#26221b0f}.editor-sub{color:var(--muted);margin:7px 0 20px;font-size:12.5px}.editor form{gap:14px;display:grid}.editor label{color:var(--ink);gap:6px;font-size:12px;font-weight:600;display:grid}.editor input,.editor textarea{border:1px solid var(--line-strong);background:var(--paper);font:13.5px var(--mono);border-radius:9px;min-width:0;padding:9px 12px;transition:border-color .15s ease-out,box-shadow .15s ease-out}.editor textarea{font-family:var(--sans);resize:vertical}.editor input:hover,.editor textarea:hover{border-color:#b3ac97}.editor input:focus,.editor textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #b4531f24}.field-hint{color:var(--muted);font-weight:400}.punch-grid{grid-template-columns:1fr 1fr;gap:11px;display:grid}.save{background:var(--ink);color:var(--paper);font:600 14px var(--sans);cursor:pointer;border:0;border-radius:10px;margin-top:4px;padding:13px 16px;transition:transform .15s ease-out,box-shadow .15s ease-out,background-color .15s ease-out;box-shadow:0 1px 3px #26221b33}.save:hover{transform:translateY(-1px);box-shadow:0 4px 12px #26221b38}.save:active{transition-duration:80ms;transform:translateY(0)scale(.97)}.notice{color:var(--accent-deep);background:#b4531f1a;border-radius:9px;margin:4px 0 0;padding:10px 12px;font-size:12.5px}.rule-callout{border-top:1px solid var(--line);margin-top:22px;padding-top:16px}.rule-callout b{letter-spacing:.02em;text-transform:uppercase;color:var(--muted);font-size:11.5px}.rule-callout p{color:var(--muted);margin:7px 0 0;font-size:12.5px;line-height:1.55}.auth{place-items:center;min-height:100vh;padding:36px 18px;display:grid}.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;width:min(480px,100%);padding:34px 32px 26px;box-shadow:0 2px 10px #26221b0d,0 18px 44px #26221b12}.auth-card .brand{margin-bottom:20px}.auth-card h1{font:600 30px/1.1 var(--serif);letter-spacing:-.02em;margin:0 0 6px}.auth-sub{color:var(--muted);margin:0 0 20px;font-size:13.5px}.auth-card form{gap:13px;display:grid}.auth-card label{color:var(--ink);gap:6px;font-size:12px;font-weight:600;display:grid}.auth-card input[type=email],.auth-card input[type=password],.auth-card input[type=text],.auth-card input[type=number],.auth-card input[type=date]{border:1px solid var(--line-strong);background:var(--paper);font:13.5px var(--mono);border-radius:9px;min-width:0;padding:10px 12px;transition:border-color .15s ease-out,box-shadow .15s ease-out}.auth-card input:hover{border-color:#b3ac97}.auth-card input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #b4531f24}.auth-check{align-items:center;gap:9px;padding:4px 2px;font-size:12.5px;display:flex;color:var(--muted)!important;font-weight:500!important}.auth-check input{width:15px;height:15px;accent-color:var(--accent)}.auth-card .save{width:100%;margin-top:4px}.auth-card .save:disabled{opacity:.6;cursor:default;box-shadow:none;transform:none}.auth-switch{text-align:center;color:var(--muted);margin:18px 0 0;font-size:12.5px}.auth-switch a{color:var(--accent-deep);font-weight:600;text-decoration:none}.auth-switch a:hover{text-decoration:underline}.modal-backdrop{z-index:50;background:#26221b61;place-items:center;padding:20px;animation:.2s ease-out both rowIn;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--line);border-radius:16px;width:min(460px,100%);max-height:calc(100vh - 40px);padding:24px;overflow:auto;box-shadow:0 24px 60px #26221b40}.modal form{gap:13px;display:grid}.modal label{color:var(--ink);gap:6px;font-size:12px;font-weight:600;display:grid}.modal input[type=text],.modal input[type=number],.modal input[type=date]{border:1px solid var(--line-strong);background:var(--paper);font:13.5px var(--mono);border-radius:9px;min-width:0;padding:9px 12px;transition:border-color .15s ease-out,box-shadow .15s ease-out}.modal input:hover{border-color:#b3ac97}.modal input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #b4531f24}.modal .notice{margin-top:10px}@media (max-width:1080px){.report-month{grid-template-columns:minmax(180px,1fr) 290px}.report-axis{right:316px}.report-meta{grid-template-columns:56px 1fr 1fr 64px;font-size:12px}.content-grid{grid-template-columns:1fr}.editor{position:static}}@media (max-width:960px){.shell{grid-template-columns:1fr}.rail{flex-flow:wrap;align-items:center;gap:14px;min-height:auto;padding:16px 20px}.rail-note,.contract,.rail footer{display:none}.rail nav{gap:4px;margin:0 0 0 auto;display:flex}.workspace{padding:32px 20px 60px}.topline{flex-direction:column;align-items:flex-start;gap:14px}.balance-instrument{grid-template-columns:1fr}.balance-hero{border-right:0;border-bottom:1px solid var(--line)}.table-head,.record{grid-template-columns:88px minmax(140px,1fr) 72px 66px 78px}.edit{display:none}}@media (max-width:620px){.topline h1{font-size:30px}.period-bar{flex-direction:column;align-items:flex-start;gap:12px}.report-heading{grid-template-columns:1fr}.net-total{text-align:left;grid-row:auto}.report-month{grid-template-columns:1fr;gap:6px;min-height:0;padding:6px 0}.report-axis{display:none}.report-meta{grid-template-columns:1fr auto auto auto;font-size:11px}.table-head,.record{grid-template-columns:76px minmax(110px,1fr) 60px 64px;gap:6px;padding-left:14px;padding-right:14px}.table-head span:nth-child(4),.record>span:nth-child(4){display:none}.punches{max-width:120px}.editor{padding:18px 14px}.punch-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.record{animation:none}*{transition-duration:.01ms!important}}.record:hover .edit,.record:focus-visible .edit{opacity:1;color:var(--accent-deep)}@keyframes rowIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.report-meta strong.negative{color:var(--negative)}.report-axis{pointer-events:none;justify-content:space-between;display:flex;position:absolute;inset:3px 356px 3px 0}.report-axis i{background:var(--line);width:1px}.report-legend{color:var(--muted);align-items:center;gap:22px;margin-top:14px;font-size:12px;display:flex}.report-legend i{border-radius:2px;width:8px;height:8px;margin-right:6px;display:inline-block}.credit-dot{background:var(--positive)}.debit-dot{background:var(--negative)}.report-legend small{font:11px var(--mono);margin-left:auto}
