:root{--bg: #0f1115;--card: #181b22;--card2: #21252e;--line: #2b303b;--fg: #e8eaed;--dim: #9aa1ad;--accent: #4a9eff;--ok: #35c46a;--warn: #f0a742;--bad: #ef5f5f;--p: #4a9eff;--f: #f0a742;--c: #35c46a;--p-soft: rgba(74, 158, 255, .16);--f-soft: rgba(240, 167, 66, .16);--c-soft: rgba(53, 196, 106, .16);--accent-soft: rgba(74, 158, 255, .16);--ok-soft: rgba(53, 196, 106, .16);--bad-soft: rgba(239, 95, 95, .16);--track: rgba(255, 255, 255, .07);--track-faint: rgba(255, 255, 255, .045);--r-sm: 8px;--r-md: 10px;--r-lg: 14px;--r-xl: 16px;--r-full: 99px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--fs-display: 34px;--fs-title: 20px;--fs-body: 17px;--fs-sm: 15px;--fs-cap: 13px;--fs-xs: 11px;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:var(--fs-body)}#root{max-width:560px;margin:0 auto;padding:12px 12px calc(78px + env(safe-area-inset-bottom))}h1,h2,h3{margin:0;font-weight:600}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer}input,select,textarea{font:inherit;color:var(--fg);background:var(--card2);border:1px solid var(--line);border-radius:var(--r-md);padding:10px 12px;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px;margin-bottom:var(--sp-3)}.row{display:flex;align-items:center;gap:8px}.between{display:flex;align-items:center;justify-content:space-between;gap:8px}.dim{color:var(--dim);font-size:14px}.btn{background:var(--card2);border:1px solid var(--line);border-radius:var(--r-md);padding:10px 14px;transition:background .12s}.btn:active{background:var(--line)}.btn.primary,.btn.sel{background:var(--accent);border-color:var(--accent);color:#071018;font-weight:600}.btn.ghost{background:transparent}.btn.sm{padding:6px 10px;font-size:14px;border-radius:var(--r-sm)}.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.bar{height:8px;border-radius:var(--r-full);background:var(--card2);overflow:hidden}.bar>i{display:block;height:100%;border-radius:var(--r-full);transition:width .25s}.stat{text-align:center}.stat .v{font-size:19px;font-weight:600;font-variant-numeric:tabular-nums}.stat .l{font-size:11px;color:var(--dim)}.big{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums}.entry{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--line)}.entry:last-child{border-bottom:none}.tag{font-size:11px;padding:2px 7px;border-radius:var(--r-full);background:var(--card2);color:var(--dim);white-space:nowrap}.tag.review{background:#4a2d18;color:var(--warn)}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:flex-end;justify-content:center;z-index:50}.sheet>div{background:var(--card);border:1px solid var(--line);border-radius:var(--r-xl) var(--r-xl) 0 0;width:100%;max-width:560px;max-height:88vh;overflow-y:auto;padding:16px 14px calc(16px + env(safe-area-inset-bottom))}.opt{padding:11px 10px;border-radius:var(--r-md);border-bottom:1px solid var(--line);cursor:pointer}.opt:active{background:var(--card2)}.tabs{display:flex;gap:6px;margin-bottom:12px}.tabs button{flex:1;padding:9px;border-radius:var(--r-md);background:var(--card);border:1px solid var(--line);font-size:14px}.tabs button.sel{background:var(--accent);border-color:var(--accent);color:#071018;font-weight:600}.ring-wrap{position:relative;width:196px;height:196px;margin:2px auto var(--sp-4)}.ring-wrap svg{display:block;width:100%;height:100%}.ring-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;user-select:none;-webkit-user-select:none}.ring-center .v{font-size:var(--fs-display);font-weight:700;line-height:1.05;font-variant-numeric:tabular-nums;direction:ltr}.ring-center .l{font-size:var(--fs-cap);color:var(--dim);margin-top:2px}.ring-center .s{font-size:var(--fs-xs);color:var(--dim);margin-top:5px;font-variant-numeric:tabular-nums;direction:ltr}.ring-arc{transition:stroke-dashoffset .55s cubic-bezier(.22,.61,.36,1),stroke .3s}.ring-key{display:flex;justify-content:center;gap:var(--sp-4);margin:calc(var(--sp-3) * -1) 0 var(--sp-3);font-size:var(--fs-xs);color:var(--dim)}.ring-key span{display:flex;align-items:center;gap:5px}.ring-key i{width:7px;height:7px;border-radius:var(--r-full);flex:none}.navbar{position:fixed;bottom:0;left:0;right:0;z-index:40;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.navbar>div{max-width:560px;margin:0 auto;display:grid}.navbtn{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:54px;padding:8px 4px 7px;font-size:var(--fs-xs);color:var(--dim);transition:color .12s}.navbtn.sel{color:var(--accent);font-weight:600}.fab{position:fixed;z-index:45;bottom:calc(70px + env(safe-area-inset-bottom));inset-inline-end:max(16px,calc(50vw - 264px));width:56px;height:56px;border-radius:var(--r-full);background:var(--accent);color:#071018;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 20px #00000073;transition:transform .12s}.fab:active{transform:scale(.92)}.wstrip{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.wcell{display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--dim)}.wcell .w-icon{color:var(--dim)}.wcell.today .wlabel{color:var(--accent);font-weight:600}.wring{position:relative;width:38px;height:38px}.wring svg{display:block;width:100%;height:100%}.wring span{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:var(--fs-xs);font-variant-numeric:tabular-nums}.wlabel{font-size:var(--fs-xs)}.wdot{width:5px;height:5px;margin:5px 0;border-radius:var(--r-full);background:var(--line)}.chart{position:relative;display:flex;align-items:flex-end;gap:2px;height:96px}.chart-bar{flex:1;min-width:0;border-radius:2px 2px 0 0;background:var(--accent)}.chart-bar.over{background:var(--bad)}.chart-bar.none{background:var(--line)}.chart-goal{position:absolute;left:0;right:0;border-top:1px dashed var(--dim);opacity:.75;pointer-events:none}.chart-goal span{position:absolute;top:-8px;inset-inline-start:0;font-size:var(--fs-xs);color:var(--dim);background:var(--card);padding:0 4px;font-variant-numeric:tabular-nums}.spark{display:block;width:100%;height:96px;overflow:visible}.streak{display:flex;align-items:center;justify-content:center;gap:8px;padding:2px 0 4px}.streak b{font-size:var(--fs-display);font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.empty{text-align:center;padding:18px 12px 6px;color:var(--dim)}.empty svg{margin:0 auto 10px;color:var(--line)}.empty b{display:block;color:var(--fg);font-size:var(--fs-sm);font-weight:600;margin-bottom:4px}.skel{position:relative;overflow:hidden;height:14px;border-radius:var(--r-sm);background:var(--card2)}.skel:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent);animation:shimmer 1.3s linear infinite}@keyframes shimmer{0%{transform:translate(100%)}to{transform:translate(-100%)}}.fchip{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-md);flex:none}.w-icon{display:block;flex:none}.w-icon.flip{transform:scaleX(-1)}.wbtn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:62px;padding:8px 4px;font-size:var(--fs-xs);line-height:1.25;text-align:center;background:var(--card2);border:1px solid var(--line);border-radius:var(--r-md);color:var(--dim);transition:background .12s,color .12s,transform .12s}.wbtn.sel{background:var(--accent-soft);border-color:var(--accent);color:var(--fg)}.wbtn.sel .w-icon{color:var(--accent)}.wbtn:active{transform:scale(.96)}.tag.w{display:inline-flex;align-items:center;gap:4px;padding:2px 7px 2px 5px;color:var(--fg)}@media(prefers-reduced-motion:reduce){.wbtn{transition:none}.wbtn:active{transform:none}.fab{transition:none}.fab:active{transform:none}.skel:after{animation:none}}@media(prefers-reduced-motion:reduce){.ring-arc{transition:none}}
