:root{--bg:#eef1ec;--card:#fff;--ink:#1b2a25;--muted:#6b7c74;--line:#d9e0d9;--soft:#f6f8f5;--danger:#b3261e;--accent:#2e7d6f;--warn-bg:#fbf3e6;--warn-line:#e6d3b0;--warn-ink:#6b5326;--serif:"Instrument Serif", ui-serif, Georgia, serif;--sans:"Inter", ui-sans-serif, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--radius:14px;--gap:12px}*{box-sizing:border-box}html,body{overflow-x:hidden}body{background:var(--bg);color:var(--ink);font-family:var(--sans);letter-spacing:-.006em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-variant-numeric:tabular-nums;margin:0;font-size:16px;line-height:1.5}.page{max-width:640px;margin:0 auto;padding:20px 14px 64px;overflow-x:hidden}h1{font-family:var(--serif);letter-spacing:-.015em;margin:0;font-size:34px;font-weight:400;line-height:1.05}h2{font-family:var(--serif);letter-spacing:-.01em;margin:0 0 4px;font-size:24px;font-weight:400;line-height:1.15}h3{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:20px 0 8px;font-size:10.5px;font-weight:500}.eyebrow{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 2px;font-size:11px}.muted{color:var(--muted);font-size:14px}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:16px;padding:16px}.topbar{align-items:center;gap:8px;margin-bottom:20px;display:flex}.topbar-title{text-align:center;flex:1;min-width:0}.topbar-spacer{flex:0 0 42px;width:42px}.row{align-items:center;gap:8px;display:flex}.row>*{min-width:0}.grid2{gap:var(--gap);grid-template-columns:1fr 1fr;display:grid}.field{margin-bottom:var(--gap);display:block}.field>span{color:var(--muted);margin-bottom:4px;font-size:13px;font-weight:500;display:block}input,select,textarea{width:100%;color:var(--ink);background:var(--soft);border:1px solid var(--line);appearance:none;border-radius:10px;padding:11px 12px;font-family:inherit;font-size:16px}input[type=number],input[inputmode=numeric],input[inputmode=decimal]{font-family:var(--mono)}input:focus,select:focus,textarea:focus{outline:2px solid var(--ink);outline-offset:1px}textarea{resize:vertical;min-height:76px}select{background-image:linear-gradient(#0000,#0000)}button{letter-spacing:-.006em;color:#fff;background:var(--ink);cursor:pointer;border:0;border-radius:10px;min-height:44px;padding:12px 18px;font-family:inherit;font-size:15px;font-weight:500}button:disabled{background:var(--muted);cursor:default}button.secondary{background:var(--soft);color:var(--ink);border:1px solid var(--line)}button.link{color:var(--muted);background:0 0;border:0;min-height:0;padding:4px 0;font-size:13px;text-decoration:underline}button.tiny{min-height:0;padding:6px 10px;font-size:13px}button.wide{width:100%}.chips{margin-bottom:var(--gap);flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--soft);min-height:0;color:var(--ink);border:1px solid var(--line);border-radius:999px;padding:8px 14px;font-size:14px}.chip[data-on=true]{color:#fff}.summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.stat{background:var(--soft);border-radius:10px;min-width:0;padding:10px 12px}.stat b{font-family:var(--mono);overflow-wrap:anywhere;font-size:18px;font-weight:500;line-height:1.2;display:block}.stat span{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:10px}.day{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:10px;display:flex;overflow:hidden}.day .spine{flex:0 0 6px;width:6px}.day .body{flex:1;padding:12px 14px}.day .head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.day .place{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;font-size:11px}.day .when{font-family:var(--mono);color:var(--muted);font-size:12px}.day .headline{font-family:var(--serif);margin:3px 0 0;font-size:21px;line-height:1.2}.day .detail{font-family:var(--mono);color:var(--muted);margin:2px 0 0;font-size:12px}.day .notes{white-space:pre-wrap;margin:6px 0 0;font-size:14px}.day .actions{gap:14px;margin-top:8px;display:flex}.setup-list{margin:0 0 12px;padding:0;list-style:none}.setup-list li{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;padding:8px 0;font-size:15px;display:flex}.setup-list li:last-child{border-bottom:0}.setup-list .grow{flex:1}.setup-list .dot{border-radius:50%;flex:0 0 10px;width:10px;height:10px}.setup-list li[data-archived=true]{opacity:.5}.notice{background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--warn-ink);border-radius:10px;margin-bottom:16px;padding:10px 12px;font-size:13px}.empty{text-align:center;border:1px dashed var(--line);border-radius:var(--radius);background:var(--card);padding:28px 16px}.total{font-family:var(--serif);margin:16px 0 12px;font-size:22px}.total .split{font-family:var(--mono);color:var(--muted);font-size:12px;display:block}.divider{background:var(--line);border:0;height:1px;margin:28px 0 20px}.status{font-family:var(--mono);color:var(--muted);margin:8px 0 0;font-size:12px}.center{text-align:center}.signin{max-width:360px;margin:12vh auto 0;padding:0 16px}@media (width<=460px){.grid2{grid-template-columns:1fr}h1{font-size:30px}.summary{grid-template-columns:repeat(2,minmax(0,1fr))}.cal-head,.cal-grid{gap:3px}.cal-cell{border-radius:6px;font-size:12px}.cal-cell[data-worked=true] .cal-num{padding:1px 4px}.group-name{padding:10px;font-size:16px}.group-sums b{font-size:15px}.chev{padding:0 10px 0 4px}.card{padding:14px}.sheet{padding:20px}.sheet-top{flex-direction:column;gap:12px}.sheet-from{text-align:left}.sheet-table{white-space:nowrap;display:block;overflow-x:auto}}.check{color:var(--muted);align-items:center;gap:8px;margin-top:4px;font-size:14px;display:flex}.check input[type=checkbox]{width:20px;height:20px;min-height:0;accent-color:var(--ink);appearance:checkbox;flex:0 0 20px;padding:0}.check.tight{font-family:var(--mono);letter-spacing:.08em;margin:0;font-size:11px}.breakdown{background:var(--soft);border-radius:10px;margin:16px 0 14px;padding:12px 14px}.breakdown p{color:var(--muted);justify-content:space-between;align-items:baseline;gap:12px;margin:0 0 6px;font-size:14px;display:flex}.breakdown p:last-child{margin-bottom:0}.breakdown b{color:var(--ink);font-weight:500}.breakdown .sum{border-top:1px solid var(--line);font-family:var(--serif);color:var(--ink);margin-top:8px;padding-top:8px;font-size:21px}.breakdown .sum b{font-size:18px}button.icon{color:var(--muted);background:0 0;border:0;border-radius:8px;min-height:0;padding:6px;line-height:0}button.icon:hover{color:var(--ink);background:var(--soft)}.panel{background:var(--soft);border:1px solid var(--line);border-radius:12px;margin:8px 0 4px;padding:14px}.panel .setup-list li{border-bottom-color:#e4e9e3}.panel input,.panel select{background:var(--card)}.pct{font-family:var(--mono);color:var(--muted);align-items:center;gap:3px;font-size:12px;display:inline-flex}.pct input{text-align:right;width:52px;padding:5px 6px;font-size:14px}.breakdown .share{border-top:1px solid var(--line);align-items:center;margin-top:8px;padding-top:8px}.breakdown .share span{align-items:center;gap:6px;display:inline-flex}.breakdown .share input{text-align:right;background:var(--card);width:58px;padding:5px 6px;font-size:14px}.breakdown .share b{font-family:var(--mono);font-size:17px}.day .paid{font-family:var(--mono);color:var(--muted);font-size:12px;font-style:normal;display:block}.group{margin-bottom:12px}button.group-head{text-align:left;background:var(--card);border:1px solid var(--line);width:100%;min-height:0;color:var(--ink);border-radius:12px;align-items:stretch;gap:0;padding:0;display:flex;overflow:hidden}.group-head .spine{flex:0 0 6px;width:6px}.group-name{min-width:0;font-family:var(--serif);flex:1;padding:12px 14px;font-size:21px;font-weight:400;line-height:1.15}.group-name em{font-family:var(--mono);color:var(--muted);letter-spacing:.04em;font-size:11px;font-style:normal;display:block}.group-sums{text-align:right;white-space:nowrap;padding:12px 4px 12px 0}.group-sums b{font-size:16px;font-weight:500;display:block}.group-sums em{color:var(--muted);font-size:11px;font-style:normal;display:block}.chev{color:var(--muted);align-items:center;padding:0 14px 0 8px;font-size:22px;transition:transform .15s;display:flex}.chev[data-open=true]{transform:rotate(90deg)}.group .day{border-color:#e4e9e3;margin:8px 0 0 18px}.group .day .head{gap:8px}.group .day .when.missing{color:var(--danger)}.group .day .paid{font-family:var(--mono);color:var(--muted);font-size:12px;font-style:normal;display:block}.group-actions{gap:14px;padding:6px 0 0 24px;display:flex}.sheet-wrap{max-width:780px;margin:0 auto;padding:16px}.sheet-bar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.sheet{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:36px}.sheet-top{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:flex-start;gap:24px;padding-bottom:16px;display:flex}.sheet-top h1{font-size:30px}.sheet-from{text-align:right;color:var(--muted);font-size:13px;line-height:1.5}.sheet-from strong{color:var(--ink);font-size:14px;display:block}.sheet-meta{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px 20px;margin:18px 0 4px;font-size:14px;display:grid}.sheet-meta.tight{margin-top:0}.sheet-meta span{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:2px;font-size:10px;display:block}.sheet-meta b{font-weight:600}.sheet-meta .cancelled{color:var(--danger)}.sheet-table,.sheet-calc{border-collapse:collapse;width:100%;font-size:14px}.sheet-table th{text-align:left;font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-bottom:6px;font-size:10px;font-weight:500}.sheet-table td,.sheet-calc td{border-top:1px solid var(--line);padding:7px 0}.sheet-table .r,.sheet-calc .r{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}.sheet-table tfoot td{border-top:2px solid var(--ink);padding-top:9px;font-weight:600}.sheet-calc em{color:var(--muted);font-size:13px;font-style:normal}.sheet-calc .sheet-total td{border-top:2px solid var(--ink);font-family:var(--serif);padding-top:11px;font-size:22px}.sheet-foot{border-top:1px solid var(--line);color:var(--muted);margin-top:28px;padding-top:14px;font-size:12px;line-height:1.6}@media print{body{background:#fff}.no-print{display:none!important}.sheet-wrap{max-width:none;padding:0}.sheet{border:0;border-radius:0;padding:0}.sheet-table tr,.sheet-calc tr{page-break-inside:avoid}}.calendar{margin:14px 0 4px}.cal-head,.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;width:100%;display:grid}.cal-head span{text-align:center;font-family:var(--mono);letter-spacing:.1em;color:var(--muted);padding-bottom:4px;font-size:10px}.cal-cell{aspect-ratio:1;background:var(--soft);min-width:0;font-family:var(--mono);color:var(--muted);border-radius:8px;justify-content:center;align-items:center;font-size:13px;display:flex;position:relative;overflow:hidden}.cal-cell.empty{background:0 0}.cal-cell[data-weekend=true]{color:#b3bdb6;background:0 0}.cal-cell[data-worked=true] .cal-num{color:#fff;background:#1b2a2552;border-radius:5px;padding:1px 5px;font-weight:600}.cal-cell[data-today=true]{outline:2px solid var(--ink);outline-offset:-2px}.cal-key{flex-wrap:wrap;gap:4px 14px;margin-top:10px;display:flex}.cal-key span{font-family:var(--mono);color:var(--muted);align-items:center;gap:6px;font-size:11px;display:inline-flex}.cal-key i{border-radius:3px;flex:0 0 10px;width:10px;height:10px}.modal-back{z-index:50;background:#1b2a258c;justify-content:center;align-items:flex-end;padding:16px;display:flex;position:fixed;inset:0}@media (width>=520px){.modal-back{align-items:center}}.modal{background:var(--card);border-radius:var(--radius);width:100%;max-width:420px;padding:20px}.modal h2{margin-bottom:8px}.modal-figures{background:var(--soft);border-radius:10px;margin:14px 0;padding:12px 14px}.modal-figures p{color:var(--muted);justify-content:space-between;gap:12px;margin:0 0 6px;font-size:14px;display:flex}.modal-figures p:last-child{margin-bottom:0}.modal-figures b{color:var(--ink);font-weight:500}.modal-figures .sum{border-top:1px solid var(--line);font-family:var(--serif);color:var(--ink);margin-top:8px;padding-top:8px;font-size:20px}.modal-actions{gap:8px;margin-top:16px;display:flex}.modal-actions button{flex:1}.extra-row{gap:6px}.extra-edit{font-family:var(--mono);color:var(--muted);align-items:center;gap:4px;font-size:12px;display:inline-flex}.extra-edit input{text-align:right;background:var(--card);width:52px;padding:5px 6px;font-size:14px}.extra-sum{text-align:right;min-width:70px;font-size:14px}.setup{max-width:480px;padding-top:8vh}.steps{gap:8px;margin:20px 0 12px;display:flex}.steps span{text-align:center;background:var(--soft);border:1px solid var(--line);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-radius:999px;flex:1;padding:7px 10px;font-size:11px}.steps span[data-on=true]{background:var(--ink);border-color:var(--ink);color:#fff}.setup .setup-list em{font-family:var(--mono);font-size:11px;font-style:normal;display:block}button.burger{flex-direction:column;justify-content:center;align-items:center;gap:4px;width:42px;height:42px;padding:0;display:flex}button.burger span{background:var(--ink);border-radius:2px;width:18px;height:2px;display:block}.drawer-back{z-index:40;background:#1b2a2573;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer{background:var(--bg);width:100%;max-width:420px;height:100%;padding:16px 14px 40px;overflow-y:auto;box-shadow:-8px 0 32px #1b2a251f}.drawer-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.drawer-tabs{gap:8px;display:flex}.drawer-body>.card:first-child{margin-top:0}.danger-card{border-color:#e8c9c6}button.danger{background:var(--danger)}button.danger:disabled{background:#d8bdbb}.reminder .chips{margin-bottom:0}select.mini{width:auto;font-size:12px;font-family:var(--mono);background:var(--card);padding:5px 8px}.primer{background:var(--soft);border-radius:10px;margin-top:10px;padding:12px 14px}.primer p{margin:0}.add-chip{color:var(--muted);border-style:dashed;padding:6px 14px;font-size:18px;line-height:1}.add-chip:hover{color:var(--ink);border-style:solid}.quick-add{align-items:center;gap:6px;width:100%;display:inline-flex}.quick-add input{flex:1;min-width:0;padding:8px 12px;font-size:15px}.hint{color:var(--muted);margin:-4px 0 14px;font-size:12.5px}.saved{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent,#2e7d6f);opacity:0;font-size:10.5px;transition:opacity .2s}.saved[data-on=true]{opacity:1}.practice-card{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:8px;overflow:hidden}.practice-card[data-archived=true]{opacity:.6}button.practice-head{text-align:left;width:100%;min-height:0;color:var(--ink);background:0 0;border:0;align-items:center;gap:10px;padding:12px;font-size:16px;display:flex}.practice-head .grow{flex:1;min-width:0}.practice-head em{font-family:var(--mono);letter-spacing:.04em;color:var(--muted);margin-top:2px;font-size:10.5px;font-style:normal;display:block}.practice-body{border-top:1px solid var(--line);padding:4px 14px 14px}.practice-foot{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}.wide-pct{align-items:center;gap:6px;display:flex}.wide-pct input{text-align:left;width:100%;padding:11px 12px;font-size:16px}.lookup{margin-bottom:10px}.lookup input{text-transform:uppercase}.lookup .status{margin-top:5px}.page-foot{border-top:1px solid var(--line);text-align:center;margin-top:36px;padding-top:16px}.page-foot .status{margin:0 0 2px}.wordmark{letter-spacing:-.02em;font-style:italic}.signin .wordmark,.setup .wordmark{font-size:52px;line-height:1}@media (width<=460px){.signin .wordmark,.setup .wordmark{font-size:42px}}.tagline{text-align:center;font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink);margin:8px 0 28px;font-size:12px;font-weight:600}
