:root{--bg: #161826;--page: #0e0f18;--card: #1b1d2b;--control: #232532;--nested: #202230;--hairline: #292b31;--border: #3f424d;--text: #e9e9ed;--text-2: #9397ab;--text-3: #75798c;--faint: #595d6c;--accent: #9184d9;--accent-bright: #b5abfc;--accent-text: #d2cefd;--accent-text-2: #e7e5fe;--accent-tint: #2b2741;--accent-tint-border: #5d5294;--sev-1: #423a6a;--sev-2: #5d5294;--sev-3: #796cbf;--sev-4: #b5abfc;--text-soft: #b2b6ca;--control-off: #1b1d2b;--sans: -apple-system, "SF Pro Text", "SF Pro Display", system-ui, sans-serif;--mono: ui-monospace, Menlo, monospace;color-scheme:dark}:root[data-theme=light]{--bg: #f3f5fe;--page: #e4e7f5;--card: #ffffff;--control: #e9ecfa;--nested: #eef0fb;--hairline: #e4e7f5;--border: #cfd3e5;--text: #161826;--text-2: #5b5f73;--text-3: #75798c;--faint: #9397ab;--accent: #5d5294;--accent-bright: #423a6a;--accent-text: #423a6a;--accent-text-2: #2f2952;--accent-tint: #e7e5fe;--accent-tint-border: #9184d9;--sev-1: #a8a1d2;--sev-2: #7f74b8;--sev-3: #5c5783;--sev-4: #423a6a;--text-soft: #3f4356;--control-off: #f3f5fe;color-scheme:light}@media (prefers-color-scheme: light){:root[data-theme=system]{--bg: #f3f5fe;--page: #e4e7f5;--card: #ffffff;--control: #e9ecfa;--nested: #eef0fb;--hairline: #e4e7f5;--border: #cfd3e5;--text: #161826;--text-2: #5b5f73;--text-3: #75798c;--faint: #9397ab;--accent: #5d5294;--accent-bright: #423a6a;--accent-text: #423a6a;--accent-text-2: #2f2952;--accent-tint: #e7e5fe;--accent-tint-border: #9184d9;--sev-1: #a8a1d2;--sev-2: #7f74b8;--sev-3: #5c5783;--sev-4: #423a6a;--text-soft: #3f4356;--control-off: #f3f5fe;color-scheme:light}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--page);overflow-x:hidden}body{font-family:var(--sans);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,input{font-family:inherit}a{color:var(--accent-bright)}a:hover{color:var(--accent-text)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:var(--accent-tint)}.app{min-height:100vh;display:flex;justify-content:center;background:var(--page)}.col{width:100%;max-width:430px;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);overflow-x:hidden;padding-bottom:env(safe-area-inset-bottom)}.pad{padding-left:16px;padding-right:16px}.title{font:700 26px/30px var(--sans);letter-spacing:-.4px;margin:0}.sheet-title{font:700 22px/26px var(--sans);letter-spacing:-.3px;margin:0}.card-title{font:600 17px/22px var(--sans)}.body{font:400 16px/19px var(--sans)}.body-17{font:400 17px/1 var(--sans)}.body-2{font:400 15px/21px var(--sans);color:var(--text-2)}.small{font:400 14px/20px var(--sans);color:var(--text-2)}.cap{font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}.cap-faint{color:var(--faint)}.mono{font:500 13px/1 var(--mono)}.card{background:var(--card);border-radius:16px;box-shadow:0 0 0 1px var(--hairline)}.group{border-radius:16px;overflow:hidden;background:var(--card);box-shadow:0 0 0 1px var(--hairline);display:flex;flex-direction:column}.icon-btn{width:44px;height:44px;flex:none;border:0;border-radius:12px;background:var(--control);color:var(--text-2);cursor:pointer;display:grid;place-items:center;font-size:20px}.icon-btn:hover{color:var(--text)}.icon-btn:disabled{background:var(--control-off);color:var(--border);pointer-events:none}.tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tile{display:flex;align-items:center;gap:10px;min-height:58px;padding:0 14px;background:var(--control);border:0;border-radius:16px;color:var(--text);text-align:left;cursor:pointer}.tile-wide{grid-column:1 / -1}.tile:hover{background:var(--hairline)}.tile:active{transform:scale(.97)}.tile svg{color:var(--accent-bright);flex:none}.tile-label{display:block;font:600 16px/19px var(--sans)}.tile-sub{display:block;font:500 11px/14px var(--mono);color:var(--text-3)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chips-tight{display:flex;flex-wrap:wrap;gap:5px}.chip{min-height:44px;padding:0 14px;border-radius:99px;border:1px solid var(--hairline);background:transparent;color:var(--text-soft);font:500 15px/1 var(--sans);cursor:pointer}.chip:hover{border-color:var(--faint)}.chip.on{border-color:var(--accent);background:var(--accent-tint);color:var(--accent-text-2);font-weight:600}.chip.add{border-style:dashed;border-color:var(--border);color:var(--text-2)}.chip .dose{margin-left:6px;font:500 11px/1 var(--mono);color:var(--text-3)}.pill{min-height:44px;padding:0 15px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:99px;background:var(--card);box-shadow:0 0 0 1px var(--hairline);color:var(--text);font:600 15px/1 var(--sans);cursor:pointer}.pill:hover{background:var(--control)}.btn-primary{width:100%;min-height:50px;border-radius:99px;background:transparent;border:1px solid var(--accent);color:var(--accent-text);font:600 17px/1 var(--sans);cursor:pointer}.btn-primary:hover{background:var(--accent-tint)}.btn-primary:disabled{opacity:.45;cursor:default}.btn-primary:disabled:hover{background:transparent}.btn-ghost{width:100%;min-height:48px;border-radius:99px;background:transparent;border:1px solid var(--border);color:var(--text-2);font:500 16px/1 var(--sans);cursor:pointer}.btn-ghost:hover{border-color:var(--text-3);color:var(--text)}.btn-ghost:disabled{opacity:.45;cursor:default}.btn-ghost:disabled:hover{border-color:var(--border);color:var(--text-2)}.input{width:100%;min-height:44px;padding:0 14px;border:0;border-radius:14px;background:var(--control);box-shadow:0 0 0 1px var(--hairline);color:var(--text);font:400 17px/1 var(--sans)}.input-pill{border-radius:99px;font-size:16px}.input-mono{font:500 15px/1 var(--mono)}.row-link{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 14px;background:transparent;border:0;border-bottom:1px solid var(--control);color:var(--text);cursor:pointer;text-align:left}.row-link:last-child{border-bottom:0}.row-link:hover{background:var(--control)}.row-link .grow{flex:1}.row-link .chev{color:var(--faint)}.row-link.danger{color:var(--accent-bright)}.switch{position:relative;width:46px;height:28px;flex:none;border-radius:99px;background:var(--border)}.switch.on{background:#5d5294}.seg{display:flex;gap:4px;padding:3px;border-radius:99px;background:var(--control);box-shadow:0 0 0 1px var(--hairline)}.seg button{flex:1;min-height:44px;display:grid;place-items:center;border:0;border-radius:99px;background:transparent;color:var(--text-2);font:500 14px/1 var(--sans);cursor:pointer}.seg button:hover{color:var(--text)}.seg button:active{transform:scale(.97)}.seg button[aria-pressed=true]{background:var(--border);color:var(--text);font-weight:600}.switch i{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:99px;background:var(--text-2);transition:left .14s ease,background .14s ease}.switch.on i{left:21px;background:var(--text)}.rail{position:relative;height:44px}.rail-track{position:absolute;left:0;right:0;top:19px;height:6px;border-radius:3px;background:linear-gradient(90deg,var(--sev-1),var(--sev-2),var(--sev-3),var(--sev-4))}.rail-knob{position:absolute;top:9px;width:26px;height:26px;margin-left:-13px;border-radius:99px;background:var(--text);box-shadow:0 2px 8px #0009;pointer-events:none}.rail-hits{position:absolute;top:0;right:0;bottom:0;left:0;display:flex}.rail-hits button{flex:1;min-height:44px;background:transparent;border:0;cursor:pointer}.rail-legend{display:flex;justify-content:space-between;margin-top:2px;font:500 11px/1 var(--mono);color:var(--text-3)}.strip{position:relative;height:62px}.strip-base{position:absolute;left:0;right:0;bottom:16px;height:1px;background:linear-gradient(90deg,transparent,var(--border) 12%,var(--border) 88%,transparent)}.strip-base.empty{background:repeating-linear-gradient(90deg,var(--hairline) 0 1px,transparent 1px 6px)}.strip-hour{position:absolute;top:4px;bottom:16px;width:1px;background:var(--hairline)}.strip-hour-label{position:absolute;bottom:2px;font:500 9px/1 var(--mono);color:var(--faint)}.strip-tick{position:absolute;bottom:16px;width:3px;border-radius:2px}.strip-count{position:absolute;transform:translate(-40%);padding:1px 5px;border-radius:99px;background:var(--hairline);font:600 9px/1.5 var(--mono);color:var(--text-soft)}.log{display:flex;flex-direction:column;gap:1px;border-radius:14px;overflow:hidden}.log-row{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 12px;background:var(--card)}.log-row .open{flex:1;min-width:0;display:flex;align-items:center;gap:10px;min-height:44px;background:transparent;border:0;color:var(--text);text-align:left;cursor:pointer}.log-row .time{font:500 13px/1 var(--mono);color:var(--text-2);width:38px;flex:none}.log-row svg{color:var(--text-soft);flex:none}.log-row .desc{font:400 16px/19px var(--sans);text-wrap:pretty}.log-row .sev{display:block;margin-top:2px;font:500 10px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase}.log-row .bar{width:3px;height:22px;border-radius:2px;flex:none}.log-row .del{width:44px;height:44px;flex:none;border:0;background:transparent;color:var(--faint);border-radius:11px;cursor:pointer;font-size:17px}.log-row .del:hover{background:var(--control);color:var(--accent-bright)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0e0f189e;animation:fade .18s ease;z-index:20}.sheet-wrap{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:flex-end;pointer-events:none;z-index:21}.sheet{pointer-events:auto;width:100%;max-width:430px;max-height:92vh;overflow-y:auto;background:var(--card);border-radius:20px 20px 0 0;box-shadow:0 -1px 0 var(--border),0 -20px 50px #0009;padding:8px 16px calc(30px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px;animation:sheetUp .22s cubic-bezier(.2,.8,.2,1)}.grab{width:36px;height:4px;border-radius:2px;background:var(--border);align-self:center;margin:4px 0 2px;flex:none}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}.block{border-radius:16px;padding:12px;background:transparent;box-shadow:0 0 0 1px var(--hairline)}.block.filled{background:var(--nested);box-shadow:0 0 0 1px #423a6a}.block-head{display:flex;align-items:center;gap:8px}.block-head .bar{width:3px;height:18px;border-radius:2px}.block-head .name{flex:1;font:600 17px/21px var(--sans)}.block-head .val{font:500 12px/1 var(--mono);color:var(--accent-bright)}.bristol{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.bristol button{min-height:44px;border-radius:12px;border:1px solid var(--hairline);background:transparent;color:var(--text-3);font:500 15px/1 var(--mono);cursor:pointer}.bristol button:hover{border-color:var(--faint);color:var(--text-soft)}.bristol button.on{border-color:var(--accent);background:var(--accent-tint);color:var(--accent-text);font-weight:600}.bars{display:flex;flex-direction:column;gap:6px}.bars .row{display:flex;align-items:center;gap:8px}.bars .label{width:66px;font:500 11px/1 var(--mono);color:var(--text-2)}.bars .track{flex:1;height:8px;border-radius:4px;background:var(--control);overflow:hidden}.bars .fill{display:block;height:100%}.bars .count{width:36px;text-align:right;font:500 11px/1 var(--mono);color:var(--text-3)}.dots{display:flex;gap:2px}.dots i{width:6px;height:6px;border-radius:99px;background:var(--border)}.dots i.on{background:var(--accent-bright)}.test{margin-top:12px;padding:11px 12px;border-radius:14px;background:var(--control);box-shadow:0 0 0 1px var(--border)}.test.strong{background:var(--accent-tint);box-shadow:0 0 0 1px #5d5294}.test .label{margin-bottom:4px}.test.strong .label{color:var(--accent-bright)}.test .text{font:500 15px/20px var(--sans);color:var(--text)}.test.strong .text{color:var(--accent-text-2)}.banner{padding:13px 14px;border-radius:16px;background:var(--accent-tint);box-shadow:0 0 0 1px #5d5294;display:flex;gap:10px;align-items:flex-start}.banner svg{color:var(--accent-bright);flex:none;margin-top:1px}.banner .head{font:600 15px/20px var(--sans);color:var(--accent-text-2)}.banner .sub{margin-top:3px;font:400 14px/19px var(--sans);color:var(--accent-bright)}.pulse{width:8px;height:8px;border-radius:99px;background:var(--accent-bright);animation:pulse .7s ease-in-out infinite alternate}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:40;padding:11px 16px;border-radius:99px;background:var(--accent-tint);box-shadow:0 0 0 1px #5d5294,0 8px 24px #00000080;font:500 14px/1 var(--sans);color:var(--accent-text-2);animation:fade .18s ease}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pulse{0%{opacity:.35}to{opacity:1}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
