:root{--page: #faf9f7;--card: #ffffff;--line: #ededed;--rule: #f1f0ee;--track: #efebe8;--field: #f6f5f3;--ink: #32302d;--body: #4c4b49;--strong: #333333;--secondary: #5c5c5c;--muted: #9f9d9b;--placeholder: #acaca9;--purple: #530bd9;--purple-ink: #411a95;--purple-tint: #eee6fb;--purple-tile: #f0e8fd;--eyebrow-purple: #3d1c8d;--link: #543c85;--hours: #bf1a5f;--money: #a591d0;--in: #465d4f;--in-tile: #ebefee;--out: #a7184e;--out-tile: #fbe9ef;--danger: #b3261e;--radius: 12px;--radius-sm: 8px;--side: 208px}*{box-sizing:border-box}html{background:var(--page)}body{margin:0;background:var(--page);color:var(--body);font:13px/1.5 Plus Jakarta Sans,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}body.has-modal{overflow:hidden}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,p,dl,dd,ul{margin:0}button{font:inherit}.muted{color:var(--muted)}.small{font-size:12px}.spacer{flex:1}.icon{flex:none}.shell{display:flex;min-height:100vh}.sidebar{width:var(--side);flex:none;background:var(--card);border-right:1px solid var(--line);padding:22px 12px;position:sticky;top:0;height:100vh}.brand{font-size:17px;font-weight:700;color:var(--ink);padding:0 12px 20px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-sm);color:var(--secondary);font-size:14px;font-weight:500}.nav-item:hover{background:var(--rule);text-decoration:none}.nav-item.on{background:var(--purple-tint);color:var(--purple-ink);font-weight:600}.page{flex:1;min-width:0;padding:34px 32px 64px}.page-narrow{max-width:760px;margin:0 auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.page-head h1{font-size:26px;line-height:1.2;font-weight:700;color:var(--ink);letter-spacing:-.01em}.actions{display:flex;align-items:center;gap:10px}.backlink{display:inline-flex;align-items:center;gap:6px;color:var(--secondary);font-size:13px;margin-bottom:14px}.backlink:hover{color:var(--ink);text-decoration:none}.eyebrow{display:block;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;line-height:1.4}.eyebrow-muted{color:var(--muted)}.eyebrow-purple{color:var(--eyebrow-purple)}.eyebrow-dark{color:var(--ink)}.page-head .eyebrow{margin-bottom:2px}.btn{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 14px;border-radius:var(--radius-sm);border:1px solid transparent;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}.btn:hover{text-decoration:none}.btn-primary{background:var(--purple);color:#fff}.btn-primary:hover{background:#4708bd}.btn-primary:disabled{opacity:.55;cursor:default}.btn-secondary{background:var(--card);color:var(--ink);border-color:#dcdad6}.btn-secondary:hover{background:var(--page)}.btn-ghost{background:transparent;color:var(--purple);padding:0 8px}.btn-ghost:hover{background:var(--purple-tint)}.btn-danger{background:transparent;color:var(--danger);padding:0 8px}.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-sm);border:0;background:transparent;color:var(--secondary);cursor:pointer}.iconbtn:hover{background:var(--rule);color:var(--ink)}.linkbtn{border:0;background:none;color:var(--purple);font-weight:600;cursor:pointer;padding:10px 0 0}.menu-wrap{position:relative}.menu{position:absolute;top:calc(100% + 6px);left:0;z-index:20;min-width:190px;list-style:none;margin:0;padding:6px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px #32302d1f}.menu-right{left:auto;right:0}.menu li{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:6px;color:var(--ink);font-size:13px;cursor:pointer}.menu li:hover{background:var(--rule)}.menu li.danger{color:var(--danger)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px}.card+.card{margin-top:20px}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.card-head h2{font-size:15px;font-weight:600;color:var(--ink)}.card-head p{font-size:12px;color:var(--muted);margin-top:2px}.card-head .eyebrow+p{margin-top:4px}.card-head .eyebrow+h2{margin-top:3px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}.search{display:flex;align-items:center;gap:8px;width:264px;max-width:100%;height:36px;padding:0 12px;border:1px solid #dcdad6;border-radius:var(--radius-sm);background:var(--card);color:var(--muted)}.search input{border:0;outline:0;background:transparent;width:100%;font:inherit;color:var(--ink)}.search input::placeholder{color:var(--placeholder)}.segmented{display:inline-flex;padding:3px;background:var(--rule);border-radius:10px}.segmented button{border:0;background:transparent;height:30px;padding:0 14px;border-radius:8px;color:var(--secondary);font-size:13px;font-weight:500;cursor:pointer}.segmented button.on{background:var(--card);color:var(--ink);font-weight:600;box-shadow:0 1px 2px #0000000f}.table-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--secondary);background:var(--rule);padding:13px 16px}.table td{padding:12px 16px;border-top:1px solid var(--rule);height:61px;vertical-align:middle;color:var(--body)}.table tr:first-child td{border-top:0}.table .num{text-align:right}.row-link{cursor:pointer}.row-link:hover td{background:#fcfbfa}.cell-name{display:flex;align-items:center;gap:12px;color:inherit}.cell-name:hover{text-decoration:none}.cell-name strong{display:block;color:var(--ink);font-weight:600;font-size:13px}.cell-name small{display:block;color:var(--muted);font-size:12px;margin-top:1px}.pill{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border:1px solid #dcdad6;border-radius:999px;font-size:12px;color:var(--secondary);background:var(--card)}.table-foot{padding:12px 16px;border-top:1px solid var(--rule);font-size:12px;color:var(--muted)}.avatar{display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;flex:none}.avatar-sm{width:32px;height:32px;border-radius:8px;font-size:11px}.avatar-md{width:36px;height:36px;border-radius:9px;font-size:12px}.avatar-lg{width:56px;height:56px;border-radius:12px;font-size:18px}.client-head{display:flex;align-items:center;gap:16px;margin-bottom:26px}.client-titles{flex:1;min-width:0}.client-titles h1{font-size:26px;font-weight:700;color:var(--ink);line-height:1.15;letter-spacing:-.01em}.subline{color:var(--secondary);font-size:13px;margin-top:3px}.client-grid{display:grid;grid-template-columns:296px minmax(0,1fr);gap:24px;align-items:start}.side-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.side-head h2{font-size:15px;font-weight:600;color:var(--ink)}.details dt{font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);margin-top:12px}.details dt:first-child{margin-top:0}.details dd{color:var(--body);font-size:13px;margin-top:2px;word-break:break-word}.rule{border:0;border-top:1px solid var(--rule);margin:20px 0}.contact-cards{list-style:none;padding:0;display:grid;gap:10px}.contact-card{display:flex;align-items:center;gap:12px;padding:12px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer}.contact-card:hover{border-color:#dcdad6}.contact-text{flex:1;min-width:0}.contact-text strong{display:block;color:var(--ink);font-size:13px;font-weight:600}.contact-text small{display:block;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip{display:inline-block;margin-top:6px;padding:2px 8px;border-radius:999px;background:var(--purple-tint);color:var(--purple-ink);font-size:10.5px;font-weight:600}.row-chevron{color:var(--muted)}.snapshot{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tile{border:1px solid var(--line);border-radius:10px;padding:14px 16px}.tile-head{display:flex;align-items:center;gap:6px;color:var(--eyebrow-purple);margin-bottom:12px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:10px}.stat small{display:block;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.stat strong{display:block;font-size:16px;font-weight:600;color:var(--strong);margin-top:2px}.bar{height:6px;border-radius:3px;background:var(--track);overflow:hidden}.bar-fill{height:100%;border-radius:3px}.bar-hours .bar-fill{background:var(--hours)}.bar-money .bar-fill{background:var(--money)}.footnote{font-size:11.5px;color:var(--secondary);margin-top:8px}.list-label{display:flex;justify-content:space-between;font-size:13px;font-weight:600;color:var(--ink);margin:4px 0 10px}.list-label .muted{font-weight:400}.ledger,.rows,.notes{list-style:none;padding:0;display:grid;gap:8px}.ledger-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid #e4e4e4;border-radius:10px;cursor:pointer}.ledger-row:hover{background:#fcfbfa}.icon-tile{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;background:var(--purple-tile);color:var(--eyebrow-purple);flex:none}.icon-tile-lg{width:40px;height:40px}.icon-tile-in{background:var(--in-tile);color:var(--in)}.icon-tile-out{background:var(--out-tile);color:var(--out)}.ledger-text{flex:1;min-width:0}.ledger-text strong{display:block;color:var(--ink);font-weight:600;font-size:13px}.ledger-text small{display:block;color:var(--secondary);font-size:12px}.ledger-text small:empty{display:none}.ledger-amount{font-weight:600;font-size:13px}.ledger-amount.in{color:var(--in)}.ledger-amount.out{color:var(--out)}.row-line{display:flex;align-items:center;gap:14px;padding:10px 6px;border-top:1px solid var(--rule);cursor:pointer}.rows .row-line:first-child{border-top:0}.row-line:hover{background:#fcfbfa}.row-date{width:96px;flex:none;color:var(--secondary);font-size:12px}.row-main{flex:1;min-width:0}.row-main strong{display:block;color:var(--ink);font-weight:500;font-size:13px}.row-main small{display:block;color:var(--muted);font-size:12px}.row-amount{font-weight:600;color:var(--strong);font-variant-numeric:tabular-nums}.day-card .day-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.day-head h2{font-size:14px;font-weight:600;color:var(--ink)}.day-total{color:var(--secondary);font-weight:600}.note{display:flex;gap:12px;padding:10px 0}.note-body{flex:1;min-width:0}.note-meta{display:grid;grid-template-columns:1fr auto;align-items:start}.note-meta strong{display:block;color:var(--ink);font-size:13px;font-weight:600;line-height:1.3}.note-meta small{display:block;color:var(--muted);font-size:11px}.note-tools{display:flex;gap:2px;color:#c9c7c3}.note-tools .iconbtn{width:26px;height:26px;color:#c9c7c3}.note-tools .iconbtn:hover{color:var(--ink)}.note-body p{margin-top:6px;color:var(--body);white-space:pre-wrap}.avatar-note{width:28px;height:28px;border-radius:50%;background:var(--rule)!important;color:var(--body);font-size:10px;font-weight:600}.note-editor{margin-bottom:8px}.note-editor textarea{width:100%}.empty{text-align:center;padding:26px 12px 18px;color:var(--muted)}.empty-icon{color:#c9c7c3;margin-bottom:8px}.form-card{margin-bottom:20px}.form-card-head{display:flex;gap:12px;align-items:center;margin-bottom:16px}.form-card-head h2{font-size:15px;font-weight:600;color:var(--ink)}.form-card-head p{font-size:12px;color:var(--muted);margin-top:1px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field-wide{grid-column:1 / -1}.field{display:block;position:relative}.field-label{position:absolute;top:8px;left:14px;font-size:11px;color:var(--secondary);pointer-events:none}.field input,.field select,.field textarea,.note-editor textarea{width:100%;min-height:52px;padding:24px 14px 8px;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--field);color:var(--ink);font:inherit;font-size:15px;outline:0}.note-editor textarea{padding:12px 14px;font-size:14px}.field textarea{resize:vertical}.field input:focus,.field select:focus,.field textarea:focus,.note-editor textarea:focus{border-color:var(--purple);background:var(--card)}.field select{-moz-appearance:none;appearance:none;-webkit-appearance:none}.field input::placeholder{color:transparent}.money-input{display:flex;align-items:center}.money-input .money-sign{position:absolute;left:14px;top:27px;color:var(--secondary);font-size:15px}.money-input input{padding-left:26px}.field-hint{display:block;margin-top:4px;font-size:11.5px;color:var(--muted)}.form-error{color:var(--danger);margin-top:10px}.form-actions{display:flex;align-items:center;gap:8px;margin-top:16px}.banner{background:var(--danger);color:#fff;padding:12px 14px;border-radius:10px;margin:0 0 16px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#32302d47;display:flex;align-items:center;justify-content:center;padding:24px;z-index:50}.modal{width:100%;max-width:560px;background:var(--card);border-radius:14px;padding:20px 22px 22px;box-shadow:0 24px 60px #0000002e}.modal-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.modal-titles{flex:1}.modal-titles h2{font-size:18px;font-weight:700;color:#0b0b0b;line-height:1.2}.modal-body-top{margin-bottom:12px}@media (max-width: 860px){.shell{flex-direction:column}.sidebar{width:auto;height:auto;position:static;display:flex;align-items:center;gap:4px;padding:10px 12px;border-right:0;border-bottom:1px solid var(--line)}.brand{padding:0 8px;margin-right:6px;font-size:15px}.nav-item{padding:8px 12px}.page{padding:18px 16px 48px}.page-head h1,.client-titles h1{font-size:22px}.client-grid{grid-template-columns:1fr;gap:20px}.snapshot,.form-grid{grid-template-columns:1fr}.table th:nth-child(2),.table td:nth-child(2),.table th:nth-child(3),.table td:nth-child(3){display:none}.table th,.table td{padding:10px 12px;white-space:nowrap}.table td:first-child{white-space:normal}.row-date{width:auto;white-space:nowrap}.row-line{gap:10px}.scrim{padding:0;align-items:flex-end}.modal{max-width:none;border-radius:16px 16px 0 0;max-height:92vh;overflow:auto}.client-head{flex-wrap:wrap}.client-head .actions{width:100%}}
