:root{--bg:#f6f5f2;--panel:#ffffff;--ink:#1a1a1a;--muted:#6b6b6b;--faint:#9a9a9a;--line:#e6e4df;--line-strong:#d8d5ce;--accent:#4a3f8c;--growth:#6d5bd0;--growth-bg:#efeafb;--build:#1f8a80;--build-bg:#e3f4f1;--client:#b5761f;--client-bg:#f8efe0;--meeting:#5a5a5a;--meeting-bg:#eeecea;--family:#b0417a;--family-bg:#f8e8f0;--finance:#2f7d4f;--finance-bg:#e6f3ea;--green:#1f8a4c;--green-bg:#e4f4ea;--yellow:#a9791a;--yellow-bg:#faf1db;--red:#b23a3a;--red-bg:#fbe6e6;--radius:10px;--shadow:0 1px 2px rgba(0,0,0,.05),0 1px 8px rgba(0,0,0,.03)}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}.wrap{max-width:1040px;margin:0 auto;padding:20px 16px 80px}.topbar{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:20px;flex-wrap:wrap}.topbar h1{font-size:22px;margin:0;letter-spacing:-.02em}.topbar .sub{color:var(--muted);font-size:13px}.nav{display:flex;gap:2px;margin-bottom:20px;border-bottom:1px solid var(--line);flex-wrap:wrap;overflow-x:auto}.navlink{padding:9px 16px;text-decoration:none;color:var(--muted);font-size:14px;font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;border-radius:6px 6px 0 0}.navlink:hover{color:var(--ink);background:#faf9f7}.navlink.active{color:var(--accent);border-bottom-color:var(--accent)}.topbar-actions{display:flex;align-items:center;gap:8px}.nav-toggle{display:none;width:40px;height:34px;padding:0;font-size:17px;line-height:1;align-items:center;justify-content:center}section.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:18px}section.card>h2{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 14px;font-weight:600}.hint{color:var(--faint);font-size:12px;margin:-8px 0 12px}button{font:inherit;cursor:pointer;border:1px solid var(--line-strong);background:#fff;color:var(--ink);border-radius:8px;padding:6px 10px}button:hover{background:#faf9f7}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{filter:brightness(1.08)}button.ghost{border:none;background:transparent;padding:4px 6px;color:var(--muted)}button.mini{padding:2px 8px;font-size:13px}button:disabled{opacity:.5;cursor:default}input,select,textarea{font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line-strong);border-radius:8px;padding:6px 8px}input:focus,select:focus,textarea:focus{outline:2px solid var(--growth-bg);border-color:var(--growth)}label.fld{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted)}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end}.spacer{flex:1 1}.muted{color:var(--muted)}.faint{color:var(--faint)}.right{text-align:right}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:8px;gap:8px}.day-col{min-width:0}.day-head{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.05em}.day-col.optional .day-head{color:var(--faint)}.day-col.optional{opacity:.82}.block{border:1px solid var(--line);border-left:3px solid var(--meeting);border-radius:8px;padding:6px 8px;margin-bottom:6px;cursor:pointer;background:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background .1s}.block:hover{filter:brightness(.985)}.block .time{font-size:11px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.block .title{font-size:13px;line-height:1.3;margin-top:1px}.block .deliv{font-size:11px;color:var(--faint);margin-top:3px;font-style:italic}.block.growth{border-left-color:var(--growth);background:var(--growth-bg)}.block.build{border-left-color:var(--build);background:var(--build-bg)}.block.client{border-left-color:var(--client);background:var(--client-bg)}.block.meeting{border-left-color:var(--meeting);background:var(--meeting-bg)}.block.family{border-left-color:var(--family);background:var(--family-bg)}.block.finance{border-left-color:var(--finance);background:var(--finance-bg)}.block.done{opacity:.95}.block.done .title:before{content:"✓ ";color:var(--green);font-weight:700}.block.missed .title{text-decoration:line-through;color:var(--muted)}.block.missed{opacity:.6}.block.moved .title:after{content:" ↪";color:var(--muted)}.statusdot{font-size:10px;float:right;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px}.metric{border:1px solid var(--line);border-radius:8px;padding:10px;text-align:center}.metric .label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.metric .val{font-size:26px;font-weight:700;margin:4px 0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.metric .tgt{font-size:11px;color:var(--faint)}.metric.green{background:var(--green-bg);border-color:#cbe6d4}.metric.green .val{color:var(--green)}.metric.yellow{background:var(--yellow-bg);border-color:#ecdcb0}.metric.yellow .val{color:var(--yellow)}.metric.red{background:var(--red-bg);border-color:#edc9c9}.metric.red .val{color:var(--red)}.stepper{display:flex;gap:6px;justify-content:center;margin-top:6px}.stepper button{width:30px;padding:2px 0}.lag-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:10px;gap:10px;margin-top:12px}.lag{border:1px solid var(--line);border-radius:8px;padding:10px}.lag .label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.lag .val{font-size:20px;font-weight:600;margin-top:3px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.trend{font-size:12px;margin-left:6px}.trend.up{color:var(--green)}.trend.down{color:var(--red)}.trend.flat{color:var(--faint)}.streaks{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px;margin-top:14px}.streak{border:1px dashed var(--line-strong);border-radius:8px;padding:8px;text-align:center}.streak .label{font-size:10px;color:var(--muted);text-transform:uppercase}.streak .cur{font-size:22px;font-weight:700}.streak .best{font-size:11px;color:var(--faint)}.streak-hero{margin-top:12px;font-size:13px;color:var(--muted)}.streak-hero b{font-size:20px;color:var(--accent)}.goal-group{margin-bottom:14px}.goal-group h3{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px}.goal{border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:8px}.goal.north{border-color:var(--accent);background:linear-gradient(0deg,#fbfaff,#fff);box-shadow:0 0 0 1px var(--growth-bg)}.goal .g-title{font-weight:600}.goal .g-detail{font-size:13px;color:var(--muted);margin-top:2px}.goal.dropped,.goal.paused{opacity:.55}.bar{height:6px;background:var(--line);border-radius:4px;overflow:hidden;margin-top:8px}.bar>i{display:block;height:100%;background:var(--growth)}.g-prog{font-size:12px;color:var(--muted);margin-top:5px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.instr{display:flex;gap:8px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--line)}.instr:last-child{border-bottom:none}.instr .txt{flex:1 1;font-size:14px}.instr.inactive .txt{color:var(--faint);text-decoration:line-through}.instr .ord{display:flex;flex-direction:column;gap:2px}.instr .ord button{padding:0 6px;line-height:1.3}.tot-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:10px;gap:10px;margin-bottom:12px}.tot{border:1px solid var(--line);border-radius:8px;padding:12px;text-align:center}.tot .label{font-size:11px;color:var(--muted);text-transform:uppercase}.tot .amt{font-size:22px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tot.income .amt{color:var(--green)}.tot.expense .amt{color:var(--red)}.tot.net .amt{color:var(--ink)}table.entries{width:100%;border-collapse:collapse;font-size:13px}table.entries th{text-align:left;font-size:11px;text-transform:uppercase;color:var(--muted)}table.entries td,table.entries th{border-bottom:1px solid var(--line);padding:6px 8px}table.entries td{vertical-align:middle}.badge{font-size:10px;padding:1px 6px;border-radius:10px;text-transform:uppercase;letter-spacing:.03em;border:1px solid var(--line-strong);color:var(--muted)}.badge.stripe{background:#eef;border-color:#cce;color:#3b3ba0}.badge.recurring{background:var(--build-bg);border-color:#b9e0da;color:var(--build)}.badge.manual{background:#f4f3f1}.amt-income{color:var(--green)}.amt-expense{color:var(--red)}.month-nav{display:flex;align-items:center;gap:10px}.month-nav .m{font-weight:600;min-width:92px;text-align:center}.table-scroll{overflow-x:auto}.sub-total{font-size:13px;color:var(--muted)}.sub-total b{color:var(--ink);font-size:16px}tr.cancelled td{opacity:.5}.checkin .k{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.checkin .s{margin-top:4px}.checkin .np{margin-top:6px;font-size:13px}.checkin .np b{color:var(--accent)}.gate{min-height:100vh;display:flex;align-items:center;justify-content:center}.gate .box{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:30px;width:300px;text-align:center}.gate h1{font-size:20px;margin:0 0 4px}.gate p{color:var(--muted);font-size:13px;margin:0 0 18px}.gate input{font-size:26px;letter-spacing:12px;text-align:center;width:100%;padding:10px}.gate button{width:100%;margin-top:12px}.gate .err{color:var(--red);font-size:13px;margin-top:10px;min-height:18px}.toast{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:8px 16px;border-radius:20px;font-size:13px;box-shadow:var(--shadow);z-index:50}.loading{color:var(--muted);padding:40px;text-align:center}@media (max-width:860px){.metric-grid,.streaks{grid-template-columns:repeat(2,1fr)}}@media (max-width:720px){.week-grid{grid-template-columns:1fr}.day-col{border-bottom:1px solid var(--line);padding-bottom:8px}.lag-grid,.tot-grid{grid-template-columns:1fr}.nav-toggle{display:inline-flex}.nav{display:none;flex-direction:column;gap:0;border-bottom:none;overflow:visible;margin-bottom:16px;border:1px solid var(--line);border-radius:10px;overflow:hidden}.nav.open{display:flex}.navlink{padding:13px 14px;border-radius:0;margin-bottom:0;border-bottom:1px solid var(--line)}.navlink:last-child{border-bottom:none}.navlink.active{background:var(--growth-bg);border-bottom-color:var(--line)}}