*{box-sizing:border-box;margin:0;padding:0}:root{--bg: #fafafa;--card: #fff;--ink: #18181b;--muted: #71717a;--line: #e4e4e7;--accent: #1f4b99;--done: #c5d0dc;--run-open: #eef2f6;--rest: #f4f4f5;--shadow: 0 1px 2px rgba(24, 24, 27, .04);--radius-card: 6px;--radius-day: 3px}html,body,#root{min-height:100%}body{font-family:Inter,system-ui,sans-serif;font-weight:500;background:var(--bg);color:var(--ink);line-height:1.5;letter-spacing:.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{max-width:1180px;margin:0 auto;padding:36px 24px 96px}.top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:36px}.top-actions{display:flex;flex-shrink:0;gap:8px}.text-btn{appearance:none;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:9999px;padding:8px 14px;min-height:40px;font-weight:600;letter-spacing:.01em}.text-btn:hover:not(:disabled){border-color:#a1a1aa;background:var(--rest)}.text-btn.on{background:var(--accent);border-color:var(--accent);color:#fff}.text-btn:disabled{opacity:.4;cursor:default}.switch-hint{margin:-20px 0 24px;color:var(--muted);font-size:.95rem}.brand{font-size:1.85rem;font-weight:700;letter-spacing:-.02em;line-height:1.1}.section-label{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#3f3f46;margin-bottom:12px}.goals{margin-bottom:40px}.stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:0}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);padding:16px 14px;box-shadow:var(--shadow)}.stat .v{font-weight:600;font-size:1.05rem;letter-spacing:-.015em;line-height:1.25}.stat .when{font-weight:500;font-size:.85rem;color:var(--muted);margin-top:6px;letter-spacing:.01em;font-variant-numeric:tabular-nums}.lede{color:var(--muted);margin-bottom:16px;line-height:1.5}.months{display:flex;flex-direction:column;gap:28px}.month{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);padding:24px 22px 22px;box-shadow:var(--shadow)}.month-title{font-size:1.45rem;font-weight:700;letter-spacing:-.02em;line-height:1.15;margin:0 2px 16px}.month-phase{font-weight:500;color:var(--muted);letter-spacing:0}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr)) 3.6rem;gap:6px}.day-block,.day-row{display:contents}.day-rail{display:none}.day-spacer{min-height:0}.day{appearance:none;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;position:relative;min-height:112px;height:100%;text-align:left;background:var(--run-open);border:1px solid var(--line);border-radius:var(--radius-card);padding:10px;overflow:hidden;cursor:pointer;color:inherit;transition:border-color .12s ease}.day:hover:not(.switch-from):not(.drop-target):not(.dragging){border-color:#d4d4d8}.day:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.day.readonly{cursor:pointer}.day.can-drag{cursor:grab}.day.can-drag:active{cursor:grabbing}.day.dragging{opacity:.45}.day.drop-target{border-color:var(--ink);background:var(--rest)}.day.switch-from{border-color:var(--ink);background:var(--rest);box-shadow:inset 0 0 0 1px var(--ink)}.day.today{box-shadow:inset 0 0 0 1px var(--accent)}.day.race{cursor:pointer;border:2px solid var(--accent)}.day.race:hover:not(.switch-from):not(.drop-target){border-color:var(--accent)}.day.today.race{box-shadow:none}.day-head{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;min-height:22px;flex-shrink:0}.day .num{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);line-height:1.2;padding-top:4px;font-variant-numeric:tabular-nums}.check{appearance:none;position:relative;z-index:2;flex-shrink:0;min-width:32px;height:22px;border:1px solid var(--line);border-radius:9999px;background:#fff;color:#fff;padding:0 8px;font-size:.7rem;font-weight:600;line-height:20px;cursor:pointer}.check:hover{border-color:#a1a1aa}.check:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.done-x{position:absolute;inset:8px;z-index:1;pointer-events:none}.done-x:before,.done-x:after{content:"";position:absolute;left:8%;right:8%;top:50%;height:6px;margin-top:-3px;background:var(--accent);opacity:.88;border-radius:1px}.done-x:before{transform:rotate(32deg)}.done-x:after{transform:rotate(-32deg)}.day .title{font-weight:600;font-size:.9rem;letter-spacing:-.01em;margin-top:8px;line-height:1.2;min-height:2.4em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.day .sum{font-size:.75rem;color:var(--muted);margin-top:6px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-variant-numeric:tabular-nums}.day.rest{background:var(--rest)}.day.lift{background:#fff}.day.done,.day.done.rest,.day.done.lift{background:var(--done)}.day.split{padding:0;min-height:128px;background:#fff;cursor:default}.day.split .half{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;padding:8px 10px;overflow:hidden;cursor:pointer}.day.split .half.can-drag{cursor:grab}.day.split .half.can-drag:active{cursor:grabbing}.day.split .half.switch-from,.day.split .half.drop-target{outline:1px solid var(--ink);outline-offset:-1px}.day.split .half.run{background:var(--run-open)}.day.split .half.lift{background:#fff;border-top:1px solid var(--line)}.day.split .half.done,.day.split .half.done.lift{background:var(--done)}.day.split .title{margin-top:4px;min-height:0}.day.split .half.lift .title{margin-top:0;font-weight:600;font-size:.9rem;letter-spacing:-.01em;line-height:1.2;-webkit-line-clamp:1}.sheet-stack{display:flex;flex-direction:column;gap:0}.sheet-stack>*+*{padding-top:18px;border-top:1px solid var(--line)}.week-mpw{font-size:11px;font-weight:600;letter-spacing:.04em;color:var(--muted);line-height:1.2;padding:10px 0 0 2px;align-self:start;font-variant-numeric:tabular-nums}.sheet-back{position:fixed;inset:0;background:#18181b5c;display:flex;align-items:center;justify-content:center;z-index:10;padding:16px}.sheet{position:relative;width:min(560px,100%);background:var(--card);border-radius:var(--radius-card);padding:24px 52px 24px 24px;max-height:88vh;overflow:auto;box-shadow:0 16px 40px #18181b1f}.sheet-kicker{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}.actual-kicker,.actual-block .sheet-kicker{margin-top:0}.actual-block{padding-top:4px}.actual-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.actual-field{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.actual-field input{appearance:none;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);padding:8px 10px;font-size:1rem;font-weight:600;letter-spacing:0;text-transform:none}.actual-field input:focus{outline:2px solid var(--accent);outline-offset:1px}.actual-readout{font-weight:600}.sheet-close{appearance:none;position:absolute;top:10px;right:10px;width:32px;height:32px;border:0;border-radius:9999px;background:transparent;color:var(--muted);font-size:1.15rem;line-height:32px;padding:0}.sheet-close:hover{background:var(--rest);color:var(--ink)}.sheet h2{font-size:1.35rem;font-weight:700;letter-spacing:-.02em;line-height:1.2}.sheet .meta{color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px}.sheet-row{display:flex;align-items:center;gap:16px}.sheet-main{flex:1;min-width:0}.actions{display:flex;flex-shrink:0}.sheet-done{appearance:none;display:inline-flex;align-items:center;gap:8px;white-space:nowrap;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:9999px;padding:8px 16px 8px 8px;min-height:40px;font-weight:600;letter-spacing:.01em}.sheet-done.is-static{pointer-events:none;background:var(--accent);border-color:var(--accent);color:#fff}.sheet-done.is-static .sheet-done-mark{border-color:#ffffff73;background:#ffffff2e}.sheet-done:hover:not(.is-static){border-color:#a1a1aa;background:var(--rest)}.sheet-done:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sheet-done[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.sheet-done[aria-pressed=true]:hover{background:#173a78;border-color:#173a78}.sheet-done-mark{display:grid;place-items:center;width:22px;height:22px;border-radius:9999px;border:1.5px solid var(--line);background:#fff;color:#fff;font-size:.7rem;font-weight:700;line-height:1}.sheet-done[aria-pressed=true] .sheet-done-mark{border-color:#ffffff73;background:#ffffff2e}@media(max-width:560px){.sheet-row{flex-direction:column;align-items:stretch}.sheet-done{width:100%;justify-content:center}.actual-fields{grid-template-columns:1fr 1fr}}@media(max-width:800px){.app-shell{padding:20px 12px 80px}.brand{font-size:1.45rem}.top{margin-bottom:20px;flex-wrap:wrap;align-items:center}.switch-hint{margin:-8px 0 16px}.goals{margin-bottom:24px}.stats{grid-template-columns:1fr;gap:10px}.months{gap:20px}.month{padding:16px 12px 14px}.month-title{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;font-size:1.15rem;margin-bottom:12px}.month-phase{font-size:.9rem}.cal-grid{display:flex;flex-direction:column;gap:8px}.day-spacer{display:none}.day-block,.day-row{display:flex}.day-block{flex-direction:column;gap:4px}.day-row{flex-direction:row;align-items:flex-start;gap:10px}.day-rail{display:flex;flex-direction:column;align-items:center;width:2.4rem;flex-shrink:0;padding-top:6px}.day-rail-dow{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);line-height:1}.day-rail-num{margin-top:6px;width:1.85rem;height:1.85rem;display:grid;place-items:center;font-size:1.05rem;font-weight:700;letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums}.day-rail.today .day-rail-dow{color:var(--accent)}.day-rail.today .day-rail-num{background:var(--accent);color:#fff;border-radius:9999px}.day,.day.split .half{touch-action:pan-y}.day{flex:1;min-width:0;min-height:52px;height:auto;flex-direction:row;align-items:center;padding:12px 12px 12px 14px;gap:8px}.day.split{flex-direction:column;align-items:stretch;min-height:0;padding:0;overflow:hidden}.day.split .half{flex:none;flex-direction:row;align-items:center;padding:12px 12px 12px 14px;min-height:48px;cursor:pointer}.day-head{min-height:0;order:2;margin-left:auto}.day .num{display:none}.day .title{order:1;flex:1;min-width:0;min-height:0;margin-top:0;font-size:.95rem;-webkit-line-clamp:2}.day.split .title{margin-top:0}.day.split .half.lift .day-head{order:1;flex:1;margin-left:0;width:100%;align-items:center}.day.split .half.lift .title{order:0;flex:1;margin-top:0}.day .sum{display:none}.week-mpw{padding:2px 0 10px;text-align:right;align-self:stretch}.check{min-width:28px;height:28px}.done-x{inset:10px 18px}.done-x:before,.done-x:after{height:4px;margin-top:-2px}.sheet-back{align-items:flex-end;padding:0}.sheet{width:100%;max-height:86vh;border-radius:16px 16px 0 0;padding:20px 20px 28px}}
