:root{--ink: #111111;--signal: #48c99f;--coach: #fff9a9;--grey: #cacacb;--missed: #da379d;--alert: #d30005;--alert-soft: #ff8b8b;--canvas: #ffffff;--soft: #f5f5f5;--future: #f0f0f0;--charcoal: #39393b;--mute: #707072;--stone: #9e9ea0;--hairline: #cacacb;--hairline-soft: #e5e5e5;--display: "Bebas Neue", Impact, sans-serif;--body: Inter, system-ui, -apple-system, sans-serif;--safe-top: max(47px, env(safe-area-inset-top, 0px));--safe-bottom: env(safe-area-inset-bottom, 0px)}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{background:var(--canvas);color:var(--ink);font:400 16px/1.5 var(--body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;font-family:var(--body)}input,textarea{font-family:var(--body);color:var(--ink)}#root{min-height:100dvh}.screen{height:100dvh;max-width:430px;margin:0 auto;background:var(--canvas);display:flex;flex-direction:column;overflow:hidden;position:relative}.scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.pad-x{padding-left:20px;padding-right:20px}.d-46{font-family:var(--display);font-size:46px;line-height:.82;letter-spacing:.01em}.d-52{font-family:var(--display);font-size:52px;line-height:.88;letter-spacing:.01em}.d-56{font-family:var(--display);font-size:56px;line-height:.88;letter-spacing:.01em}.d-60{font-family:var(--display);font-size:60px;line-height:.86;letter-spacing:.01em}.d-64{font-family:var(--display);font-size:64px;line-height:.86;letter-spacing:.01em}.d-66{font-family:var(--display);font-size:66px;line-height:.84;letter-spacing:.01em}.d-40{font-family:var(--display);font-size:40px;line-height:.85;letter-spacing:.01em}.d-34{font-family:var(--display);font-size:34px;line-height:.9}.d-30{font-family:var(--display);font-size:30px;line-height:1}.d-26{font-family:var(--display);font-size:26px;line-height:1}.eyebrow{font:500 11px/1 var(--body);letter-spacing:.1em;color:var(--mute);text-transform:uppercase}.meta{font:500 12px/1 var(--body);letter-spacing:.08em;color:var(--mute);text-transform:uppercase}.body{font:400 16px/1.5 var(--body)}.body-sm{font:400 15px/1.5 var(--body)}.note{font:400 13px/1.45 var(--body);color:var(--mute)}.pretty{text-wrap:pretty}.btn-primary{width:100%;height:56px;border-radius:30px;background:var(--ink);color:var(--canvas);font-family:var(--display);font-size:24px;letter-spacing:.04em;display:flex;align-items:center;justify-content:center;transition:transform .12s ease,opacity .12s ease}.btn-primary:active{transform:scale(.98);opacity:.85}.btn-primary:disabled,.btn-primary.is-disabled{background:var(--grey)}.btn-signal{background:var(--signal);color:var(--ink)}.btn-danger-solid{background:var(--alert)}.btn-secondary{width:100%;height:50px;border-radius:30px;border:1px solid var(--hairline);background:var(--canvas);color:var(--ink);font:500 15px/1 var(--body);display:flex;align-items:center;justify-content:center}.btn-secondary:active{opacity:.6}.pill{flex:none;height:40px;padding:0 18px;border-radius:30px;border:1px solid var(--hairline);background:var(--canvas);color:var(--ink);font:500 14px/1 var(--body);display:inline-flex;align-items:center;justify-content:center}.pill:active{opacity:.7}.pill-ink{background:var(--ink);color:var(--canvas);border-color:var(--ink)}.pill-sm{height:36px;padding:0 16px;font:500 12px/1 var(--body);letter-spacing:.06em}.pill-white{background:var(--canvas);color:var(--ink);border:0;height:36px;padding:0 18px;font:500 13px/1 var(--body)}.link{border:0;background:transparent;color:var(--mute);font:400 15px/1.3 var(--body);text-decoration:underline}.link:active{opacity:.6}.back-link{font:500 14px/1 var(--body);color:var(--ink);padding:6px 0;display:flex;align-items:center;gap:8px}.back-link:active{opacity:.5}.x-btn{font:400 26px/1 var(--body);color:var(--ink);padding:4px 2px}.x-btn:active{opacity:.5}.step-btn{flex:none;width:44px;height:44px;border-radius:30px;border:1px solid var(--hairline);background:var(--canvas);font:400 22px/1 var(--body);color:var(--ink);display:flex;align-items:center;justify-content:center}.step-btn:active{background:var(--soft)}.step-btn-lg{width:52px;height:52px;font-size:24px}.chip{height:44px;padding:0 18px;border-radius:30px;border:1px solid var(--hairline);background:var(--canvas);color:var(--ink);font:500 15px/1 var(--body);display:inline-flex;align-items:center;transition:transform .12s ease}.chip:active{transform:scale(.97)}.chip.on{background:var(--ink);color:var(--canvas);border-color:var(--ink)}.chip-sm{height:40px;padding:0 16px;font:500 14px/1 var(--body)}.field-display{width:100%;border:0;border-bottom:2px solid var(--ink);padding:8px 0 12px;background:transparent;outline:none;font-family:var(--display);font-size:34px;line-height:1;letter-spacing:.01em;color:var(--ink)}.field-display.has-error{border-bottom-color:var(--alert)}.field-display::placeholder{color:var(--grey)}.textarea{width:100%;border:1px solid var(--hairline);padding:14px;font:400 16px/1.5 var(--body);color:var(--ink);resize:none;outline:none;background:var(--canvas)}.textarea-sm{padding:12px;font:400 15px/1.45 var(--body)}.textarea:focus,.field-display:focus{border-color:var(--ink)}.textarea::placeholder{color:var(--stone)}.error-text{font:400 13px/1.4 var(--body);color:var(--alert)}.card{border:1px solid var(--hairline-soft);background:var(--canvas);padding:18px 18px 20px;width:100%;text-align:left;display:flex;flex-direction:column;gap:14px}.card:active{background:var(--soft)}.quote-block{border-left:3px solid var(--ink);padding:2px 0 2px 16px}.soft-block{background:var(--soft);padding:20px}.record-block{background:var(--soft);padding:14px;font:400 15px/1.45 var(--body);color:var(--charcoal)}.hint-block{background:var(--soft);border-left:3px solid var(--ink);padding:12px 14px;font:400 14px/1.45 var(--body);color:var(--charcoal)}.hint-block.muted{border-left-color:var(--hairline)}.footer-bar{flex:none;padding:12px 20px max(30px,calc(var(--safe-bottom) + 12px));border-top:1px solid var(--hairline-soft);background:var(--canvas);display:flex;flex-direction:column;gap:10px}.footer-bar.no-rule{border-top:0}.coach-card{background:var(--coach);border:1px solid var(--coach);padding:20px}.coach-card.degraded{background:var(--soft);border-color:var(--hairline-soft)}.coach-label{font:500 11px/1 var(--body);letter-spacing:.1em;color:#6b5d00}.coach-card.degraded .coach-label{color:var(--mute)}.coach-line{font:400 19px/1.4 var(--body);color:var(--ink);padding:12px 0 0;text-wrap:pretty}.strip{display:flex;gap:2px;align-items:flex-end;height:12px}.strip span{flex:1;height:8px;background:var(--future)}.strip span.done{background:var(--signal)}.strip span.missed{background:var(--missed)}.strip span.today{background:var(--ink);height:12px}.day-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.day-cell{aspect-ratio:1;padding:0;font-family:var(--display);font-size:20px;line-height:1;display:flex;align-items:center;justify-content:center;background:var(--future);color:var(--grey);border:1px solid var(--future);transition:transform .12s ease}.day-cell:active{transform:scale(.94)}.day-cell.done{background:var(--signal);color:var(--ink);border-color:var(--signal)}.day-cell.missed{background:var(--missed);color:var(--canvas);border-color:var(--missed)}.day-cell.today{background:var(--ink);color:var(--canvas);border-color:var(--ink)}.legend{display:flex;flex-wrap:wrap;gap:14px}.legend>span{display:flex;align-items:center;gap:7px;font:400 13px/1 var(--body);color:var(--charcoal)}.legend i{width:14px;height:14px;display:block}.banner-signal{flex:none;background:var(--signal);color:var(--ink);padding:18px 20px;margin-bottom:2px;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;width:100%}.banner-signal:active{opacity:.85}.banner-ink{flex:none;background:var(--ink);color:var(--canvas);padding:16px 20px;display:flex;align-items:center;justify-content:space-between;gap:14px}.sheet-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#11111159;z-index:20}.sheet{position:absolute;left:0;right:0;bottom:0;z-index:21;background:var(--canvas);border-top:3px solid var(--ink);padding:22px 20px max(34px,calc(var(--safe-bottom) + 16px));display:flex;flex-direction:column;gap:16px;max-height:82%;overflow-y:auto;animation:sheet-up .22s cubic-bezier(.2,.8,.2,1)}@keyframes sheet-up{0%{transform:translateY(12%);opacity:0}to{transform:none;opacity:1}}.set-row{border-top:1px solid var(--hairline-soft);padding:18px 0;display:flex;align-items:center;gap:14px}.set-row .set-main{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.set-label{font:500 12px/1 var(--body);letter-spacing:.08em;color:var(--mute)}.set-value{font:500 17px/1.3 var(--body);color:var(--ink)}.set-desc{font:400 13px/1.4 var(--body);color:var(--mute);text-wrap:pretty}.set-value.bad,.set-desc.bad{color:var(--alert)}.debug-panel{margin-top:12px;background:var(--ink);color:var(--canvas);padding:20px;display:flex;flex-direction:column;gap:18px}.debug-panel .step-btn{width:48px;height:48px;border-color:#fff6;background:transparent;color:var(--canvas)}.debug-panel .step-btn:active{background:#ffffff1f}.checkin-row{border:1px solid var(--hairline-soft);background:var(--canvas)}.checkin-row.open{border-color:var(--ink)}.checkin-row.just{border-color:var(--signal);background:var(--signal)}.checkin-tap{width:100%;padding:16px 16px 14px;display:flex;align-items:center;gap:14px;text-align:left;background:transparent}.checkin-tap:active{opacity:.85}.done-btn{flex:none;height:56px;min-width:118px;border-radius:30px;background:var(--signal);color:var(--ink);font-family:var(--display);font-size:26px;letter-spacing:.05em;display:flex;align-items:center;justify-content:center}.check-badge{flex:none;width:44px;height:44px;border-radius:30px;background:var(--ink);color:var(--canvas);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:600}.note-line{width:100%;border-top:1px solid var(--hairline-soft);background:transparent;padding:12px 16px;text-align:left;font:400 14px/1.4 var(--body);color:var(--mute)}.note-line:active{opacity:.6}.tag{font:500 11px/1 var(--body);letter-spacing:.06em;padding:5px 9px;border:1px solid currentColor}.when-chip{display:inline-block;background:var(--soft);color:var(--charcoal);font:500 12px/1 var(--body);letter-spacing:.06em;padding:8px 12px}.bulk-btn{width:100%;border:1px dashed var(--hairline);background:var(--canvas);padding:14px;font:400 14px/1.4 var(--body);color:var(--charcoal);text-align:left}.bulk-btn:active{background:var(--soft)}
