:root{--bg: #f3f2f7;--surface: #ffffff;--ink: #221e2e;--muted: #756f86;--line: #e6e3ee;--danger: #b4443c;--pro: #8a5a00;--pro-bg: #fbf3df;--r: 20px;--shadow: 0 1px 2px rgba(34, 30, 46, .05), 0 8px 24px rgba(34, 30, 46, .06);--accent: #5b50c7;--tint: #eceafb;--accent-ink: #3f37a0}[data-phase=course]{--accent: #5b50c7;--tint: #eceafb;--accent-ink: #3f37a0}[data-phase=taper]{--accent: #b96a14;--tint: #f9eedd;--accent-ink: #8f4f08}[data-phase=maint]{--accent: #2e7d5b;--tint: #e6f2ec;--accent-ink: #1f5e43}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--ink);font-variant-numeric:tabular-nums}.app{max-width:480px;margin:0 auto;height:100dvh;background:var(--bg);display:flex;flex-direction:column;overflow:hidden;position:relative;transition:background .3s}header{padding:18px 20px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{font-weight:800;font-size:17px;letter-spacing:-.01em}.brand small{display:block;font-weight:500;font-size:10.5px;color:var(--muted);letter-spacing:.02em}.seg{display:flex;background:#e4e2ec;border-radius:12px;padding:3px;gap:2px}.seg button{border:0;background:transparent;font:inherit;font-size:11.5px;font-weight:600;padding:6px 10px;border-radius:9px;color:var(--muted);cursor:pointer;transition:.15s}.seg button.on{background:var(--surface);color:var(--accent-ink);box-shadow:0 1px 3px #221e2e1f}main{flex:1;overflow-y:auto;padding:4px 16px 16px;scrollbar-width:none}main::-webkit-scrollbar{display:none}.card{background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow);padding:18px;margin-bottom:12px}.card.tint{background:var(--tint);box-shadow:none}.eyebrow{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}h2{font-size:15px;font-weight:700;letter-spacing:-.01em}.sub{font-size:12.5px;color:var(--muted);line-height:1.45}.btn{display:block;width:100%;border:0;cursor:pointer;font:inherit;font-weight:700;font-size:15px;padding:14px;border-radius:14px;background:var(--accent);color:#fff;transition:transform .1s,background .2s}.btn:active{transform:scale(.98)}.btn.ghost{background:var(--tint);color:var(--accent-ink)}.btn[disabled]{background:#e4e2ec;color:#9b96aa;cursor:default}.btn:focus-visible,.seg button:focus-visible,.chip:focus-visible,.tabbar button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.chipline{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1.5px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 12px;font:inherit;font-size:12.5px;font-weight:600;color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:.15s}.chip.on{border-color:var(--accent);background:var(--tint);color:var(--accent-ink)}.dots{display:inline-flex;gap:2px}.dots i{width:5px;height:5px;border-radius:50%;background:#d8d5e2}.chip.on .dots i.f{background:var(--accent)}.prochip{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:800;letter-spacing:.06em;color:var(--pro);background:var(--pro-bg);border-radius:6px;padding:3px 6px;vertical-align:middle}.dialwrap{display:flex;flex-direction:column;align-items:center;padding:6px 0 2px}.dialbox{position:relative;width:212px;height:212px}.dial-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.dial-days{font-size:34px;font-weight:800;letter-spacing:-.03em;line-height:1}.dial-days small{font-size:12.5px;font-weight:600;color:var(--muted);display:block;max-width:128px;margin:5px auto 0;letter-spacing:0}.dial-dose{margin-top:7px;font-size:11.5px;font-weight:700;color:var(--accent-ink);background:var(--tint);border-radius:999px;padding:4px 10px}.row{display:flex;gap:12px}.row .card{flex:1;min-width:0;margin-bottom:0}.mb{margin-bottom:12px}.kpi{font-size:24px;font-weight:800;letter-spacing:-.02em}.kpi small{font-size:12px;font-weight:600;color:var(--muted)}.delta{font-size:12px;font-weight:700;color:var(--accent-ink)}.winput{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.winput input{flex:999 1 90px;border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;font:inherit;font-size:14px;background:var(--bg);color:var(--ink);min-width:0}.winput input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:transparent}.winput .btn{width:auto;flex:1 0 auto;padding:10px 14px;font-size:13.5px}.stairs{display:flex;align-items:flex-end;gap:6px;height:96px;margin:14px 2px 32px}.step{flex:1;background:var(--bg);border-radius:10px 10px 4px 4px;position:relative;border:1.5px solid var(--line)}.step b{position:absolute;top:-22px;left:0;right:0;text-align:center;font-size:12px;font-weight:800}.step span{position:absolute;top:100%;margin-top:5px;left:-3px;right:-3px;text-align:center;font-size:9.5px;color:var(--muted);font-weight:600;line-height:1.25}.step.done{background:var(--tint);border-color:var(--tint)}.step.cur{background:var(--accent);border-color:var(--accent)}.step.cur b{color:var(--accent-ink)}.step.next{border-style:dashed;background:transparent}.hist{list-style:none;margin-top:6px}.hist li{display:flex;justify-content:space-between;padding:9px 2px;border-bottom:1px solid var(--line);font-size:13px}.hist li:last-child{border:0}.hist .site{color:var(--muted);font-size:12px}table.rep{width:100%;border-collapse:collapse;margin:10px 0 14px;font-size:13px}table.rep td{padding:8px 2px;border-bottom:1px solid var(--line)}table.rep td:last-child{text-align:right;font-weight:700}table.rep tr:last-child td{border:0}.flag{border-left:3px solid var(--danger);padding-left:12px}.flag ul{margin:8px 0 0 14px;font-size:12.5px;color:var(--muted);line-height:1.6}.slider{width:100%;margin:12px 0 4px;accent-color:var(--accent)}.slbl{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);font-weight:600}.check{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line);cursor:pointer}.check:last-of-type{border:0}.check input{margin-top:2px;accent-color:var(--accent);width:16px;height:16px}.check span{font-size:13.5px;line-height:1.4}.check input:checked+span{color:var(--muted);text-decoration:line-through}.zone{cursor:pointer}.tabbar{display:flex;background:var(--surface);border-top:1px solid var(--line);padding:8px 6px calc(10px + env(safe-area-inset-bottom))}.tabbar button{flex:1;border:0;background:none;font:inherit;font-size:10.5px;font-weight:700;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;padding:4px 0;border-radius:12px}.tabbar button svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tabbar button.on{color:var(--accent-ink)}.toast{position:fixed;left:50%;bottom:86px;transform:translate(-50%) translateY(10px);background:var(--ink);color:#fff;font-size:12.5px;font-weight:600;padding:9px 16px;border-radius:999px;opacity:0;pointer-events:none;transition:.25s;max-width:86%;text-align:center;z-index:10}.toast.show{opacity:1;transform:translate(-50%)}.pulse{animation:pulse 1.8s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
