:root{--ground: #f7f4ef;--surface: #ffffff;--ink: #1b1a17;--muted: #7c766c;--hairline: #ece6dd;--green: #0f9d6c;--green-d: #0b7a53;--green-wash: #e3f5ec;--amber: #f5a623;--amber-wash: #fdefd6;--teal: #0e8b7a;--teal-wash: #d9f0ec;--danger: #c4483b;--danger-wash: #fbe6e3;--radius: 22px;--radius-sm: 14px;--shadow: 0 1px 2px rgba(60, 50, 30, .04), 0 8px 24px rgba(60, 50, 30, .06);--tabbar-h: 76px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--ground);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.5}h1,h2,h3,h4{margin:0;font-family:Sora,Plus Jakarta Sans,sans-serif;letter-spacing:-.02em}.mono{font-family:Sora,ui-monospace,monospace;font-variant-numeric:tabular-nums}label{display:block;font-size:.8rem;font-weight:600;color:var(--muted);margin:12px 0 5px}input,button,select{font-family:inherit;font-size:1rem}input,select{width:100%;padding:13px 14px;border:1.5px solid var(--hairline);border-radius:var(--radius-sm);background:#fff;color:var(--ink);outline:none;transition:border-color .15s,box-shadow .15s}input:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 4px #0f9d6c1f}.hint{font-size:.78rem;color:var(--muted);margin:6px 0 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 20px;border:none;border-radius:var(--radius-sm);cursor:pointer;font-weight:700;font-family:Sora,sans-serif;letter-spacing:-.01em;transition:transform .08s,filter .15s,background .15s;width:100%;min-height:50px}.btn:active{transform:translateY(1px)}.btn.small{width:auto;padding:9px 15px;min-height:40px;font-size:.9rem}.btn.primary{background:var(--green);color:#fff}.btn.primary:hover{filter:brightness(1.04)}.btn.primary:disabled{opacity:.55;cursor:default}.btn.ghost{background:#fff;color:var(--green-d);border:1.5px solid var(--hairline)}.btn.ghost:hover{background:var(--green-wash);border-color:var(--green-wash)}.btn.danger{background:#fff;color:var(--danger);border:1.5px solid var(--danger-wash)}.btn.danger:hover{background:var(--danger-wash)}.icon-btn{background:none;border:none;color:var(--muted);cursor:pointer;padding:6px;display:inline-flex}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card-title{font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.msg{font-size:.88rem;padding:11px 13px;border-radius:var(--radius-sm);margin-top:12px}.msg.ok{background:var(--green-wash);color:var(--green-d)}.msg.err{background:var(--danger-wash);color:var(--danger)}.muted{color:var(--muted)}.auth-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:22px}.auth-card{width:100%;max-width:380px}.brand{text-align:center;margin-bottom:20px}.brand-dot{display:inline-flex;width:56px;height:56px;align-items:center;justify-content:center;background:var(--green-wash);color:var(--green-d);border-radius:18px;margin-bottom:10px}.brand h1{font-size:1.9rem;color:var(--green-d);font-weight:800}.brand-sub{color:var(--muted);font-size:.86rem;margin:4px 0 0}.code-input{letter-spacing:10px;text-align:center;font-size:1.5rem;font-weight:700;font-family:Sora}.auth-card .btn{margin-top:14px}.app{min-height:100dvh;padding-bottom:calc(var(--tabbar-h) + 12px)}.container{max-width:460px;margin:0 auto;padding:16px 16px 24px}.home-head{display:flex;align-items:flex-start;justify-content:space-between;padding:6px 2px 14px}.greet{font-size:.9rem;color:var(--muted);font-weight:500}.greet-name{font-family:Sora;font-size:1.55rem;font-weight:800;letter-spacing:-.03em;margin-top:1px}.date-pill{display:inline-flex;align-items:center;gap:5px;margin-top:8px;background:#fff;border:1px solid var(--hairline);color:var(--muted);font-size:.78rem;font-weight:600;padding:5px 11px;border-radius:999px}.avatar-wrap{position:relative}.avatar{width:48px;height:48px;border-radius:50%;background:var(--green-wash);color:var(--green-d);display:flex;align-items:center;justify-content:center;font-family:Sora;font-weight:800;font-size:1.1rem}.streak-badge{position:absolute;bottom:-4px;right:-6px;display:inline-flex;align-items:center;gap:2px;background:var(--green);color:#fff;font-size:.72rem;font-weight:800;font-family:Sora;padding:2px 7px 2px 5px;border-radius:999px;border:2px solid var(--ground)}.adherence{display:flex;align-items:center;gap:18px}.rings{position:relative;flex-shrink:0}.rings-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.rings-center .big{font-family:Sora;font-weight:800;font-size:1.7rem;line-height:1;letter-spacing:-.03em}.rings-center .sub{font-size:.62rem;font-weight:700;letter-spacing:.08em;color:var(--muted);margin-top:3px}.legend{display:flex;flex-direction:column;gap:12px;flex:1}.legend-row{display:flex;align-items:center;gap:10px}.legend-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0}.legend-label{font-size:.68rem;font-weight:700;letter-spacing:.06em;color:var(--muted);text-transform:uppercase;flex:1}.legend-val{font-family:Sora;font-weight:700;font-size:.95rem}.week-cap{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:.82rem;font-weight:600;margin:4px 0 16px}.week-cap .flame{color:var(--green)}.bars{display:flex;align-items:flex-end;justify-content:space-between;height:108px;gap:6px}.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:6px}.bar-val{font-family:Sora;font-size:.68rem;font-weight:700;color:var(--green-d)}.bar{width:100%;max-width:26px;border-radius:8px 8px 4px 4px;background:var(--teal-wash);min-height:5px;transition:height .4s}.bar.today{background:var(--green)}.bar.empty{background:var(--hairline)}.bar-day{font-size:.68rem;font-weight:700;color:var(--muted)}.bar-col.is-today .bar-day{color:var(--green-d)}.section-head{display:flex;align-items:center;justify-content:space-between;margin:22px 2px 12px}.section-head h2{font-size:1.15rem;font-weight:800}.section-head .link{color:var(--green-d);font-weight:700;font-size:.88rem;background:none;border:none;cursor:pointer}.dose-row{display:flex;align-items:center;gap:13px;padding:13px 14px;background:#fff;border-radius:var(--radius-sm);box-shadow:var(--shadow);margin-bottom:10px}.dose-row.done{opacity:.62}.dose-tile{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.dose-tile.pagi{background:var(--green-wash);color:var(--green-d)}.dose-tile.siang{background:var(--amber-wash);color:#b9791a}.dose-tile.malam{background:var(--teal-wash);color:var(--teal)}.dose-info{flex:1;min-width:0}.dose-name{font-family:Sora;font-weight:700;font-size:.98rem}.dose-name s{color:var(--muted)}.dose-sub{font-size:.8rem;color:var(--muted);margin-top:1px}.dose-time{font-family:Sora;font-weight:700}.dose-check{width:34px;height:34px;border-radius:50%;border:2px solid var(--hairline);background:#fff;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:transparent;transition:.15s}.dose-check.on{background:var(--green);border-color:var(--green);color:#fff}.page-head{display:flex;align-items:center;justify-content:space-between;margin:6px 2px 14px}.page-head h2{font-size:1.35rem;font-weight:800}.med-card{padding:16px 18px;margin-bottom:12px}.med-card.off{opacity:.55}.med-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.med-head h3{font-size:1.05rem;font-weight:700;font-family:Sora}.med-meta{color:var(--muted);font-size:.85rem;margin:2px 0 0}.sched-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.pill{background:var(--green-wash);color:var(--green-d);border-radius:999px;padding:5px 11px;font-size:.8rem;font-weight:700;display:inline-flex;align-items:center;gap:5px}.pill.muted{background:#f0ede7;color:var(--muted)}.pill-sub{font-weight:500;opacity:.85}.med-note{font-size:.85rem;color:var(--muted);margin:10px 0 0;font-style:italic}.med-actions{display:flex;gap:8px;margin-top:14px}.switch{position:relative;display:inline-block;width:44px;height:26px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;top:0;right:0;bottom:0;left:0;background:#d6cfc4;border-radius:999px;transition:.2s;cursor:pointer}.slider:before{content:"";position:absolute;height:20px;width:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s}.switch input:checked+.slider{background:var(--green)}.switch input:checked+.slider:before{transform:translate(18px)}.empty{text-align:center;padding:44px 20px;color:var(--muted)}.empty-ico{width:68px;height:68px;border-radius:22px;background:var(--green-wash);color:var(--green-d);display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px}.empty h3{font-size:1.1rem;margin-bottom:4px}.empty .btn{margin-top:16px;width:auto;display:inline-flex}.tabbar{position:fixed;left:0;right:0;bottom:0;height:var(--tabbar-h);z-index:20;background:#ffffffeb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--hairline);display:flex;align-items:center;justify-content:space-around;padding:0 6px;padding-bottom:env(safe-area-inset-bottom)}.tab{display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border:none;color:var(--muted);font-size:.66rem;font-weight:700;cursor:pointer;flex:1;padding:6px 0}.tab.active{color:var(--green-d)}.fab{width:56px;height:56px;border-radius:50%;background:var(--green);color:#fff;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;margin-top:-22px;box-shadow:0 8px 18px #0f9d6c66;flex-shrink:0;transition:transform .1s}.fab:active{transform:scale(.94)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e1a146b;display:flex;align-items:flex-end;justify-content:center;z-index:40}.modal{background:#fff;width:100%;max-width:520px;max-height:92dvh;overflow-y:auto;border-radius:22px 22px 0 0;padding:10px 20px 28px;animation:sheet-up .28s cubic-bezier(.2,.8,.2,1)}.sheet-handle{width:40px;height:4px;border-radius:999px;background:var(--hairline);margin:4px auto 10px}.modal-title{font-size:1.2rem;font-weight:800;margin-bottom:6px}@keyframes sheet-up{0%{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}.row2{display:flex;gap:12px}.row2>div{flex:1}.sched-row{border:1.5px solid var(--hairline);border-radius:var(--radius-sm);padding:12px;margin-top:8px}.sched-top{display:flex;align-items:center;gap:10px}.sched-top input[type=time]{width:auto;flex:1}.day-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.chip{border:1.5px solid var(--hairline);background:#fff;color:var(--muted);border-radius:999px;padding:6px 12px;font-size:.82rem;font-weight:700;cursor:pointer}.chip.on{background:var(--green);color:#fff;border-color:var(--green)}.med-form .btn.ghost.small{margin-top:10px;width:auto}.form-actions{display:flex;gap:10px;margin-top:20px}.form-actions .btn{flex:1}.reveal{animation:reveal .4s both}@keyframes reveal{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (min-width: 560px){.modal{border-radius:22px;align-self:center;margin-bottom:0}.modal-backdrop{align-items:center;padding:20px}}
