:root{--bg: #161826;--surface: #232532;--surface-2: #2b2e3d;--text: #e9e9ed;--muted: #9397ab;--dim: #75798c;--line: rgba(233, 233, 237, .12);--accent: #9184d9;--accent-light: #b5abfc;--pending: #3f424d;--green: oklch(.66 .125 152);--yellow: oklch(.74 .125 88);--red: oklch(.62 .145 26);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 14px;--s1: 2.8px;--s2: 5.6px;--s3: 8.4px;--s4: 11.2px;--s5: 16.8px;--s6: 22.4px;--tabbar: #1a1c2b;--hairline: #595d6c;--tint-good: rgba(120, 180, 150, .14);--tint-bad: rgba(199, 80, 60, .16);--ease: cubic-bezier(.32, .72, 0, 1);--fill-ms: .22s;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100dvh}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;text-rendering:optimizeLegibility}button,input,select,textarea{font:inherit;color:inherit}button{background:none;border:0;padding:0;cursor:pointer;text-align:inherit}:focus{outline:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.app{height:100dvh;display:flex;flex-direction:column;overflow:hidden;max-width:480px;margin:0 auto;position:relative}.screen{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-top:calc(env(safe-area-inset-top) + var(--s3));padding-bottom:var(--s6)}.screen--body{padding-left:var(--s5);padding-right:var(--s5)}.screen--pad{padding-left:var(--s6);padding-right:var(--s6)}.title{font-weight:500;font-size:25px;letter-spacing:-.015em;margin:0}.subtitle{font-size:12px;color:var(--muted);margin:var(--s1) 0 0}.label{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.pressable{transition:transform .12s var(--ease),opacity .12s var(--ease),background-color .12s var(--ease),border-color .12s var(--ease)}.pressable:active{transform:scale(.985);opacity:.86}.btn-outline{display:flex;align-items:center;justify-content:center;min-height:44px;padding:var(--s3) var(--s4);border:1px solid var(--accent);border-radius:var(--radius-md);background:transparent;color:var(--accent-light);font-size:14px;font-weight:500}.btn-outline--quiet{border-color:var(--hairline);color:#cfd3e5}.body-header{display:flex;align-items:flex-start;justify-content:space-between;padding:0 var(--s2) var(--s3)}.day-score{display:flex;align-items:baseline;gap:var(--s2);justify-content:flex-end;margin-top:var(--s1)}.day-score__value{font-size:20px;font-weight:600}.dot{border-radius:50%;flex:none;transition:background-color var(--fill-ms) var(--ease)}.dot--day{width:8px;height:8px}.dot--card{width:9px;height:9px}.dot--habit{width:7px;height:7px}.model-panel{position:relative;height:404px;display:flex;align-items:center;justify-content:center;background:radial-gradient(60% 55% at 50% 45%,#1c1f30 0%,var(--bg) 100%);border-radius:var(--radius-lg)}.model-caption{position:absolute;bottom:var(--s3);left:0;right:0;text-align:center;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#595d6c}.body-svg{height:392px;max-width:100%;filter:drop-shadow(0 0 26px rgba(145,132,217,.18));transition:stroke var(--fill-ms) var(--ease)}.body-svg .zone-fill{transition:fill var(--fill-ms) var(--ease)}.body-svg .zone:focus-visible{outline:none}.body-svg .zone:focus-visible .zone-fill{stroke:var(--accent-light);stroke-width:4}.body-svg .zone:active .zone-fill{opacity:.78}.zone-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2);margin-top:var(--s3)}.zone-card{background:var(--surface);border-radius:var(--radius-md);padding:var(--s3) var(--s4);display:flex;align-items:center;gap:var(--s3);min-height:44px;width:100%}.zone-card__body{flex:1;min-width:0}.zone-card__name{display:block;font-size:13px;font-weight:500}.zone-card__meta{display:block;font-size:11px;color:var(--muted)}.sheet-backdrop{position:fixed;inset:0;background:#0a0b128c;border:0;z-index:30;opacity:1;transition:opacity var(--fill-ms) var(--ease);animation:backdrop-in var(--fill-ms) var(--ease)}.sheet-backdrop[data-state=closed]{opacity:0}@keyframes backdrop-in{0%{opacity:0}}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:31;max-width:480px;margin:0 auto;background:var(--surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:0 0 0 1px var(--muted),0 -16px 40px #000000a6;padding:var(--s5) var(--s6) calc(var(--s6) + env(safe-area-inset-bottom));transform:translateY(0);transition:transform var(--fill-ms) var(--ease);touch-action:none;animation:sheet-in var(--fill-ms) var(--ease)}.sheet[data-state=closed]{transform:translateY(100%);animation:none}.sheet[data-dragging=true]{transition:none}@keyframes sheet-in{0%{transform:translateY(100%)}}.sheet__grip{width:38px;height:4px;border-radius:2px;background:var(--hairline);margin:0 auto var(--s5)}.sheet__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:var(--s5);gap:var(--s4)}.sheet__name{font-weight:500;font-size:20px;letter-spacing:-.015em}.sheet__sub{font-size:12px;color:var(--muted)}.sheet__pct{font-size:20px;font-weight:600;transition:color var(--fill-ms) var(--ease)}.sheet__count{font-size:11px;color:var(--dim)}.habit-row{display:flex;align-items:center;gap:var(--s4);padding:var(--s4);border-radius:var(--radius-md);background:var(--surface-2);margin-bottom:var(--s2);width:100%;min-height:44px;transition:transform .12s var(--ease),background-color var(--fill-ms) var(--ease)}.habit-row:active{transform:scale(.985)}.habit-row[data-on=true]{background:var(--tint-good)}.habit-row[data-on=true][data-harmful=true]{background:var(--tint-bad)}.habit-row__toggle{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--dim);display:flex;align-items:center;justify-content:center;flex:none;transition:border-color var(--fill-ms) var(--ease)}.habit-row__mark{width:9px;height:9px;border-radius:50%;opacity:0;transform:scale(.4);transition:opacity .12s var(--ease),transform .12s var(--ease)}.habit-row[data-on=true] .habit-row__mark{opacity:1;transform:scale(1)}.habit-row__body{flex:1;min-width:0}.habit-row__name{display:block;font-size:14px}.habit-row__meta{display:block;font-size:11px;color:var(--muted)}.sheet__done{margin-top:var(--s4);width:100%}.chart{display:flex;align-items:flex-end;gap:var(--s2);height:200px;padding:var(--s5);background:var(--surface);border-radius:var(--radius-md)}.chart__col{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:var(--s2);height:100%}.chart__bar{width:100%;border-radius:3px;transition:background-color var(--fill-ms) var(--ease),height var(--fill-ms) var(--ease)}.chart__label{font-size:9px;color:var(--dim)}.stat-row{display:flex;gap:var(--s2);margin-top:var(--s4)}.stat-card{flex:1;background:var(--surface);border-radius:var(--radius-md);padding:var(--s4)}.stat-card__value{font-size:32px;font-weight:600;line-height:1.1}.history-note{font-size:13px;color:var(--muted);margin-top:var(--s5)}.settings-card{background:var(--surface);border-radius:var(--radius-md);padding:var(--s5);color:var(--accent)}.slider-head{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;color:var(--text);gap:var(--s4)}.slider-head__value{font-weight:600}.slider+.slider-head{margin-top:var(--s2)}input[type=range].slider{-webkit-appearance:none;appearance:none;background:transparent;display:block;width:100%;height:44px;margin:0;cursor:pointer}input[type=range].slider::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:#e9e9ed29}input[type=range].slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;margin-top:-6px;background:currentColor;border:0}input[type=range].slider::-moz-range-track{height:4px;border-radius:2px;background:#e9e9ed29}input[type=range].slider::-moz-range-thumb{width:16px;height:16px;border:0;border-radius:50%;background:currentColor}.section-label{display:block;margin:var(--s6) 0 var(--s3)}.habit-line{display:flex;align-items:center;gap:var(--s3);padding:var(--s1) 0;border-bottom:1px solid var(--line);min-height:54px}.habit-line__body{flex:1;min-width:0}.habit-line__name{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.habit-line__meta{display:block;font-size:11px;color:var(--dim)}.tap44{width:44px;height:44px;display:flex;align-items:center;justify-content:center;flex:none}.stepper{width:26px;height:26px;border-radius:var(--radius-sm);border:1px solid var(--hairline);display:flex;align-items:center;justify-content:center;font-size:14px;color:#cfd3e5;transition:border-color .12s var(--ease)}.tap44:active .stepper{border-color:var(--accent);color:var(--accent-light)}.stepper--ghost{border:0;font-size:13px;color:var(--dim)}.tap44:active .stepper--ghost{color:#d2cefd}.habit-line__weight{font-size:13px;font-weight:600;width:16px;text-align:center;flex:none}.add-row{margin-top:var(--s5);display:flex;gap:var(--s2);align-items:center}.field{flex:1;min-width:0;background:var(--bg);border:1px solid var(--hairline);border-radius:var(--radius-md);color:var(--text);font-size:16px;padding:var(--s3) var(--s4);min-height:44px}.field::placeholder{color:var(--dim)}.select{background:var(--bg);border:1px solid var(--hairline);border-radius:var(--radius-md);color:var(--text);font-size:16px;padding:var(--s3);min-height:44px;flex:none}.add-actions{display:flex;gap:var(--s2);margin-top:var(--s3)}.add-actions .btn-outline{flex:1;font-size:13px}.tabbar{flex:none;height:calc(76px + env(safe-area-inset-bottom));background:var(--tabbar);box-shadow:0 -1px 0 var(--line);display:flex;align-items:center;padding:0 var(--s6) calc(var(--s5) + env(safe-area-inset-bottom));position:relative;z-index:10}.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--s2);color:var(--dim);min-height:44px;justify-content:center;transition:color .12s var(--ease)}.tab[aria-current=page]{color:var(--accent)}.tab__mark{width:12px;height:12px;background:currentColor}.tab__label{font-size:10px;letter-spacing:.08em;text-transform:uppercase;font-weight:500}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
