:root{--bg:#08090d;--surface-1:#101218;--surface-2:#171a22;--surface-3:#1f232d;--surface-hover:#262b37;--border:#252a36;--border-strong:#343b4a;--text:#f2f4f8;--text-muted:#9aa3b4;--text-dim:#6b7385;--accent:#7c5cff;--accent-2:#22d3ee;--accent-soft:#7c5cff29;--success:#22c55e;--success-soft:#22c55e29;--warning:#f59e0b;--warning-soft:#f59e0b29;--danger:#f43f5e;--danger-soft:#f43f5e29;--info:#38bdf8;--info-soft:#38bdf829;--violet-c:#a78bfa;--violet-soft:#a78bfa29;--blue-c:#60a5fa;--blue-soft:#60a5fa29;--cyan-c:#22d3ee;--cyan-soft:#22d3ee29;--emerald-c:#34d399;--emerald-soft:#34d39929;--amber-c:#fbbf24;--amber-soft:#fbbf2429;--rose-c:#fb7185;--rose-soft:#fb718529;--pink-c:#f472b6;--pink-soft:#f472b629;--indigo-c:#818cf8;--indigo-soft:#818cf829;--r-sm:10px;--r-md:14px;--r-lg:20px;--r-full:999px;--shadow-sm:0 1px 2px #0006;--shadow-md:0 8px 24px #00000073;--shadow-lg:0 20px 48px #0000008c;--shell-max:720px;--tabbar-h:68px;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);--ease:cubic-bezier(.32, .72, 0, 1)}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);min-height:100dvh;color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:none;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none}h1,h2,h3,h4{letter-spacing:-.01em;font-weight:650;line-height:1.25}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.app-shell{max-width:var(--shell-max);min-height:100dvh;padding:calc(var(--safe-t) + 8px) 16px calc(var(--tabbar-h) + var(--safe-b) + 24px);animation:fade-up .35s var(--ease) both;margin:0 auto}.app-header{justify-content:space-between;align-items:center;gap:12px;padding:10px 2px 18px;display:flex}.app-header .title-block h1{background:linear-gradient(120deg, var(--text), #c9c4ff 60%, var(--accent-2));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:24px}.app-header .title-block p{color:var(--text-muted);margin-top:2px;font-size:13.5px}.avatar-btn{border-radius:var(--r-full);color:#fff;background:linear-gradient(135deg, var(--accent), var(--accent-2));width:42px;height:42px;box-shadow:var(--shadow-sm);flex:none;place-items:center;font-size:15px;font-weight:700;display:grid}.view{animation:fade-up .3s var(--ease) both}.view>*+*{margin-top:16px}.tabbar{height:calc(var(--tabbar-h) + var(--safe-b));padding-bottom:var(--safe-b);-webkit-backdrop-filter:blur(18px);border-top:1px solid var(--border);z-index:40;background:#0d0f15db;justify-content:center;gap:2px;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar-inner{width:100%;max-width:var(--shell-max);justify-content:space-around;align-items:stretch;display:flex}.tab{color:var(--text-dim);letter-spacing:.01em;transition:color .18s var(--ease);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:10.5px;font-weight:600;display:flex}.tab svg{width:22px;height:22px}.tab.active{color:var(--text)}.tab.active .tab-icon{background:var(--accent-soft);color:var(--accent)}.tab-icon{border-radius:var(--r-full);width:44px;height:30px;transition:background .18s var(--ease), color .18s var(--ease);place-items:center;display:grid}.tab-badge{border-radius:var(--r-full);background:var(--danger);color:#fff;place-items:center;min-width:16px;height:16px;padding:0 4px;font-size:9.5px;font-weight:700;display:grid;position:absolute;top:-3px;right:-8px}.tab-icon-wrap{position:relative}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px}.card.pad-lg{padding:20px}.card-hover{transition:background .18s var(--ease), border-color .18s var(--ease)}.card-hover:hover{background:var(--surface-2);border-color:var(--border-strong)}.section-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);justify-content:space-between;align-items:center;gap:10px;padding:4px 2px;font-size:12px;font-weight:700;display:flex}.section-title .count{color:var(--text-dim);letter-spacing:0;text-transform:none;font-size:12px;font-weight:600}.stack>*+*{margin-top:12px}.stack-sm>*+*{margin-top:8px}.row{align-items:center;gap:10px;display:flex}.row-between{justify-content:space-between;align-items:center;gap:10px;display:flex}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.muted{color:var(--text-muted)}.dim{color:var(--text-dim)}.small{font-size:12.5px}.tiny{font-size:11.5px}.strong{font-weight:650}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.btn{border-radius:var(--r-md);height:42px;transition:transform .12s var(--ease), background .18s var(--ease), opacity .18s;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:14.5px;font-weight:650;display:inline-flex}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{color:#fff;background:linear-gradient(135deg, var(--accent), #5b8cff);box-shadow:0 6px 18px #7c5cff59}.btn-ghost{color:var(--text);background:var(--surface-2);border:1px solid var(--border)}.btn-ghost:hover{background:var(--surface-3)}.btn-subtle{color:var(--text-muted);background:0 0}.btn-subtle:hover{color:var(--text);background:var(--surface-2)}.btn-danger{color:var(--danger);background:var(--danger-soft)}.btn-danger:hover{background:#f43f5e42}.btn-success{color:var(--success);background:var(--success-soft)}.btn-sm{border-radius:var(--r-sm);height:34px;padding:0 12px;font-size:13px}.btn-block{width:100%}.btn-icon{border-radius:var(--r-sm);width:38px;height:38px;color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);padding:0}.btn-icon:hover{color:var(--text);background:var(--surface-3)}.chip{border-radius:var(--r-full);background:var(--surface-2);height:26px;color:var(--text-muted);border:1px solid var(--border);white-space:nowrap;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.chip-time{background:var(--c-soft,var(--accent-soft));color:var(--c,var(--accent));border-color:#0000}.badge{border-radius:var(--r-full);letter-spacing:.02em;text-transform:uppercase;align-items:center;gap:5px;height:22px;padding:0 9px;font-size:11px;font-weight:700;display:inline-flex}.badge-due{background:var(--warning-soft);color:var(--warning)}.badge-taken{background:var(--success-soft);color:var(--success)}.badge-skipped{background:var(--surface-3);color:var(--text-dim)}.badge-missed{background:var(--danger-soft);color:var(--danger)}.badge-upcoming{background:var(--info-soft);color:var(--info)}.badge-low{background:var(--warning-soft);color:var(--warning)}.badge-empty{background:var(--danger-soft);color:var(--danger)}.med-icon{background:var(--c-soft,var(--accent-soft));border-radius:15px;flex:none;place-items:center;width:46px;height:46px;font-size:22px;display:grid}.med-icon.sm{border-radius:12px;width:36px;height:36px;font-size:17px}.med-icon.lg{border-radius:18px;width:58px;height:58px;font-size:28px}.ring-wrap{flex:none;position:relative}.ring-wrap svg{display:block;transform:rotate(-90deg)}.ring-track{stroke:var(--surface-3)}.ring-value{stroke:var(--ring-color,var(--accent));stroke-linecap:round;transition:stroke-dashoffset .6s var(--ease)}.ring-center{text-align:center;place-items:center;display:grid;position:absolute;inset:0}.ring-center .big{letter-spacing:-.02em;font-size:22px;font-weight:750}.ring-center .sub{color:var(--text-dim);font-size:10.5px;font-weight:600}.field{flex-direction:column;gap:6px;display:flex}.field .label{color:var(--text-muted);font-size:12.5px;font-weight:650}.input,.textarea,.select{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);width:100%;color:var(--text);transition:border-color .18s var(--ease), background .18s var(--ease);appearance:none;padding:11px 14px;font-size:15px}.input:focus,.textarea:focus,.select:focus{border-color:var(--accent);background:var(--surface-3);outline:none}.input::placeholder,.textarea::placeholder{color:var(--text-dim)}.textarea{resize:vertical;min-height:76px}.select{background-image:linear-gradient(45deg, transparent 50%, var(--text-dim) 50%), linear-gradient(135deg, var(--text-dim) 50%, transparent 50%);background-position:calc(100% - 20px) 55%,calc(100% - 15px) 55%;background-repeat:no-repeat;background-size:5px 5px}.error-text{color:var(--danger);font-size:12px;font-weight:600}.input.has-error,.textarea.has-error{border-color:var(--danger)}.switch{border-radius:var(--r-full);background:var(--surface-3);border:1px solid var(--border);width:48px;height:28px;transition:background .2s var(--ease);flex:none;position:relative}.switch:after{content:"";border-radius:var(--r-full);width:22px;height:22px;transition:transform .2s var(--ease);box-shadow:var(--shadow-sm);background:#fff;position:absolute;top:2px;left:2px}.switch.on{background:var(--accent);border-color:#0000}.switch.on:after{transform:translate(20px)}.sheet-backdrop{-webkit-backdrop-filter:blur(6px);z-index:60;animation:fade-in .2s var(--ease) both;background:#040509a8;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:var(--shell-max);background:var(--surface-1);border:1px solid var(--border);max-height:92dvh;box-shadow:var(--shadow-lg);animation:sheet-up .32s var(--ease) both;border-bottom:none;border-radius:24px 24px 0 0;flex-direction:column;display:flex}.sheet-head{justify-content:space-between;align-items:center;gap:12px;padding:18px 20px 12px;display:flex}.sheet-head h2{font-size:19px}.sheet-body{-webkit-overflow-scrolling:touch;padding:4px 20px 16px;overflow-y:auto}.sheet-body>*+*{margin-top:16px}.sheet-foot{padding:12px 20px calc(var(--safe-b) + 16px);border-top:1px solid var(--border);background:var(--surface-1);border-radius:0;gap:10px;display:flex}.sheet-foot .btn{flex:1}.sheet-grabber{border-radius:var(--r-full);background:var(--border-strong);width:38px;height:4px;margin:10px auto 0}.dose-row{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-md);transition:border-color .18s var(--ease), opacity .18s var(--ease);align-items:center;gap:12px;padding:12px 14px;display:flex}.dose-row.state-taken{opacity:.72}.dose-row.state-missed{border-color:#f43f5e59}.dose-row.state-due{border-color:#f59e0b73}.dose-main{flex:1;min-width:0}.dose-name{font-size:15px;font-weight:650}.dose-sub{color:var(--text-muted);margin-top:1px;font-size:12.5px}.dose-actions{flex:none;align-items:center;gap:8px;display:flex}.take-btn{border-radius:var(--r-full);border:1.5px solid var(--border-strong);width:40px;height:40px;color:var(--text-dim);transition:all .18s var(--ease);background:0 0;place-items:center;display:grid}.take-btn:hover{border-color:var(--success);color:var(--success)}.take-btn.is-taken{background:var(--success);border-color:var(--success);color:#06220f;box-shadow:0 4px 14px #22c55e59}.hero-card{border-radius:var(--r-lg);border:1px solid var(--border);background:radial-gradient(120% 160% at 100% 0%, #7c5cff38, transparent 55%), radial-gradient(120% 160% at 0% 100%, #22d3ee29, transparent 55%), var(--surface-1);align-items:center;gap:18px;padding:20px;display:flex;position:relative;overflow:hidden}.hero-card .hero-copy{flex:1;min-width:0}.hero-card h2{font-size:18px}.hero-card p{color:var(--text-muted);margin-top:3px;font-size:13px}.next-chip{border-radius:var(--r-md);background:var(--c-soft,var(--accent-soft));color:var(--c,var(--accent));align-items:center;gap:8px;margin-top:12px;padding:8px 12px;font-size:13px;font-weight:650;display:inline-flex}.med-card{align-items:flex-start;gap:14px;display:flex}.med-card .med-times{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.swatches{flex-wrap:wrap;gap:10px;display:flex}.swatch{border-radius:var(--r-full);background:var(--c-soft);width:38px;height:38px;transition:transform .12s var(--ease), border-color .12s;border:2px solid #0000;place-items:center;display:grid}.swatch:after{content:"";border-radius:var(--r-full);background:var(--c);width:16px;height:16px}.swatch.selected{border-color:var(--c);transform:scale(1.08)}.day-toggles{gap:6px;display:flex}.day-toggle{border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--border);height:40px;color:var(--text-muted);transition:all .15s var(--ease);flex:1;font-size:12.5px;font-weight:650}.day-toggle.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.time-chips{flex-wrap:wrap;gap:8px;display:flex}.time-chip{border-radius:var(--r-full);background:var(--accent-soft);height:34px;color:var(--accent);align-items:center;gap:7px;padding:0 6px 0 12px;font-size:13px;font-weight:650;display:inline-flex}.time-chip button{border-radius:var(--r-full);width:22px;height:22px;color:var(--accent);background:#7c5cff38;place-items:center;display:grid}.stat-tiles{grid-template-columns:repeat(auto-fill,minmax(46px,1fr));gap:6px;display:grid}.stat-tile{aspect-ratio:1;border-radius:var(--r-sm);background:var(--surface-2);color:var(--text-dim);border:1px solid var(--border);place-items:center;font-size:10.5px;font-weight:700;display:grid}.stat-tile.lvl-1{color:#86efac;background:#22c55e2e;border-color:#0000}.stat-tile.lvl-2{color:#dcfce7;background:#22c55e61;border-color:#0000}.stat-tile.lvl-3{color:#052e16;background:#22c55ebf;border-color:#0000}.stat-tile.lvl-bad{background:var(--danger-soft);color:var(--danger);border-color:#0000}.bars{align-items:flex-end;gap:8px;height:120px;padding-top:8px;display:flex}.bar-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:6px;height:100%;display:flex}.bar{background:linear-gradient(180deg, var(--accent), #7c5cff59);width:100%;max-width:34px;min-height:4px;transition:height .5s var(--ease);border-radius:8px 8px 4px 4px}.bar.full{background:linear-gradient(180deg, var(--success), #22c55e66)}.bar.zero{background:var(--surface-3)}.bar-label{color:var(--text-dim);font-size:10px;font-weight:600}.med-progress{border-radius:var(--r-full);background:var(--surface-3);height:6px;overflow:hidden}.med-progress>div{border-radius:var(--r-full);background:var(--c,var(--accent));height:100%;transition:width .5s var(--ease)}.streak-card{background:radial-gradient(120% 180% at 100% 0%, #fb923c33, transparent 60%), var(--surface-1);align-items:center;gap:14px;display:flex}.streak-flame{border-radius:var(--r-md);background:#fb923c29;place-items:center;width:52px;height:52px;font-size:26px;display:grid}.auth-page{justify-content:center;align-items:center;min-height:100dvh;padding:24px 16px;display:flex;position:relative;overflow:hidden}.auth-orb{border-radius:var(--r-full);filter:blur(70px);opacity:.5;pointer-events:none;position:absolute}.auth-orb.a{background:#7c5cff80;width:320px;height:320px;top:-80px;right:-60px}.auth-orb.b{background:#22d3ee5c;width:280px;height:280px;bottom:-70px;left:-70px}.auth-orb.c{background:#f472b647;width:220px;height:220px;top:40%;left:55%}.auth-card{border:1px solid var(--border);border-radius:var(--r-lg);-webkit-backdrop-filter:blur(20px);width:100%;max-width:420px;box-shadow:var(--shadow-lg);background:#101218d1;padding:26px 22px;position:relative}.auth-logo{background:linear-gradient(135deg, var(--accent), var(--accent-2));border-radius:18px;place-items:center;width:58px;height:58px;margin:0 auto 14px;font-size:28px;display:grid;box-shadow:0 10px 26px #7c5cff66}.auth-tabs{background:var(--surface-2);border-radius:var(--r-md);margin:18px 0;padding:4px;display:flex}.auth-tabs button{border-radius:var(--r-sm);height:38px;color:var(--text-muted);transition:all .18s var(--ease);flex:1;font-size:13.5px;font-weight:650}.auth-tabs button.active{background:var(--accent-soft);color:var(--accent)}.alert-error{border-radius:var(--r-md);background:var(--danger-soft);color:var(--danger);padding:11px 14px;font-size:13px;font-weight:600}.alert-info{border-radius:var(--r-md);background:var(--info-soft);color:var(--info);padding:11px 14px;font-size:13px}.toast-zone{top:calc(var(--safe-t) + 12px);z-index:80;pointer-events:none;flex-direction:column;align-items:center;gap:10px;padding:0 16px;display:flex;position:fixed;left:0;right:0}.toast{pointer-events:auto;border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--border-strong);width:100%;max-width:480px;box-shadow:var(--shadow-md);animation:toast-in .3s var(--ease) both;align-items:center;gap:12px;padding:13px 15px;display:flex}.toast.reminder{background:radial-gradient(130% 200% at 100% 0%, #f59e0b29, transparent 60%), var(--surface-2);border-color:#f59e0b80}.toast.reminder .toast-icon{background:var(--warning-soft);color:var(--warning)}.toast-icon{border-radius:var(--r-sm);background:var(--accent-soft);width:36px;height:36px;color:var(--accent);flex:none;place-items:center;display:grid}.toast-title{font-size:13.5px;font-weight:650}.toast-body{color:var(--text-muted);margin-top:1px;font-size:12px}.fab{right:max(16px, calc((100vw - var(--shell-max)) / 2 + 16px));bottom:calc(var(--tabbar-h) + var(--safe-b) + 18px);border-radius:var(--r-full);color:#fff;background:linear-gradient(135deg, var(--accent), #5b8cff);z-index:30;height:52px;transition:transform .15s var(--ease);align-items:center;gap:8px;padding:0 20px;font-weight:700;display:inline-flex;position:fixed;box-shadow:0 12px 30px #7c5cff73}.fab:active{transform:scale(.95)}.empty{text-align:center;border:1px dashed var(--border-strong);border-radius:var(--r-lg);color:var(--text-muted);padding:42px 20px}.empty .empty-emoji{margin-bottom:10px;font-size:38px;display:block}.empty h3{color:var(--text);margin-bottom:4px;font-size:16px}.empty p{max-width:300px;margin:0 auto 16px;font-size:13px}.howto{counter-reset:step}.howto li{color:var(--text-muted);padding:8px 0 8px 34px;font-size:13px;list-style:none;position:relative}.howto li:before{counter-increment:step;content:counter(step);border-radius:var(--r-full);background:var(--accent-soft);width:22px;height:22px;color:var(--accent);place-items:center;font-size:11px;font-weight:700;display:grid;position:absolute;top:8px;left:0}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:none}}@keyframes toast-in{0%{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}@media (width>=760px){.app-header .title-block h1{font-size:28px}.hero-card{padding:26px}.fab{height:56px}}@media (width<=380px){.app-shell{padding-left:12px;padding-right:12px}.hero-card{flex-direction:column;align-items:flex-start}.dose-row{gap:10px;padding:10px 12px}.tab{font-size:9.5px}.day-toggle{height:36px;font-size:11px}}.sheet-body::-webkit-scrollbar{width:6px}.sheet-body::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--r-full)}
