:root{color-scheme:light;--bg:#f4f7f3;--surface:#fff;--surface2:#eaf2ee;--surface3:#f8faf8;--ink:#17211e;--muted:#687671;--brand:#0e665a;--brand-dark:#0a4e46;--brand2:#d9efe8;--ok:#18794e;--ok-bg:#dff4e7;--warn:#a95500;--warn-bg:#fff0dd;--danger:#b42318;--danger-bg:#fde8e6;--line:#dbe4df;--shadow:0 12px 32px rgba(27,55,47,.09);--nav:rgba(255,255,255,.94)}
:root.dark{color-scheme:dark;--bg:#101714;--surface:#18221e;--surface2:#22312b;--surface3:#131c18;--ink:#eef6f2;--muted:#a5b4ae;--brand:#63c9b4;--brand-dark:#3aa892;--brand2:#203d36;--ok:#6bd69b;--ok-bg:#173929;--warn:#ffc06d;--warn-bg:#3d2d17;--danger:#ff9189;--danger-bg:#432522;--line:#304039;--shadow:0 14px 36px rgba(0,0,0,.28);--nav:rgba(24,34,30,.95)}
*{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 system-ui,-apple-system,Segoe UI,sans-serif;padding-bottom:94px;transition:background .2s,color .2s}button,input{font:inherit}button{cursor:pointer;color:inherit}.hidden{display:none!important}
.offline-banner{position:fixed;z-index:200;top:0;left:0;right:0;padding:8px;text-align:center;background:#8a4b00;color:#fff;font-size:12px;font-weight:750}
.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px max(18px,env(safe-area-inset-right)) 16px max(18px,env(safe-area-inset-left));background:color-mix(in srgb,var(--bg) 91%,transparent);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}.topbar h1{margin:0;font-size:28px;letter-spacing:-.9px}.eyebrow,.dialog-kicker{margin:0 0 2px;color:var(--brand);font-size:10px;font-weight:850;letter-spacing:2px}.top-actions{display:flex;align-items:center;gap:8px}.round-button{width:39px;height:39px;border:1px solid var(--line);border-radius:50%;background:var(--surface);font-size:19px;box-shadow:0 2px 10px #0001}.status-pill{border:0;border-radius:999px;padding:10px 13px;background:var(--surface);color:var(--muted);box-shadow:0 3px 14px #0001;font-size:12px;font-weight:750;white-space:nowrap}.status-pill span{display:inline-block;width:8px;height:8px;border-radius:50%;background:#9aa39f;margin-right:7px}.status-pill.online span{background:#25a66a;box-shadow:0 0 0 4px #25a66a25}.status-pill.offline span{background:#d04437;box-shadow:0 0 0 4px #d0443725}
main{max-width:760px;margin:auto;padding:18px}.hero{background:linear-gradient(140deg,var(--brand-dark),#174a44);color:#fff;border-radius:28px;padding:22px;box-shadow:var(--shadow);margin-bottom:15px}.hero-top{display:flex;justify-content:space-between;gap:16px}.hero h2{margin:0;font-size:23px;line-height:1.2}.hero p{margin:6px 0 0;color:#cce3dc}.hero .score{font-size:36px;font-weight:850;line-height:1}.progress{height:9px;background:#ffffff30;border-radius:99px;overflow:hidden;margin-top:20px}.progress span{display:block;height:100%;background:#8ee0c2;border-radius:inherit;transition:width .5s}.insights{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:18px}.insight{background:var(--surface);border:1px solid var(--line);border-radius:17px;padding:12px;min-width:0}.insight small{display:block;color:var(--muted);font-size:11px}.insight strong{display:block;font-size:19px}.insight>span{display:block;color:var(--muted);font-size:10px;margin-top:1px}.metrics-help{color:var(--muted);font-size:11px;margin:-10px 3px 17px}.next-banner{display:flex;align-items:center;gap:11px;background:var(--brand2);color:var(--brand);padding:12px 14px;border-radius:16px;margin-bottom:18px}.next-banner .next-icon{font-size:24px}.next-banner b{display:block}.next-banner small{opacity:.78}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:24px 2px 11px}.section-head h2{font-size:18px;margin:0}.section-head button,.chip-button{border:0;background:var(--brand2);color:var(--brand);border-radius:13px;padding:9px 13px;font-weight:750}.section-head small{color:var(--muted)}.card{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:17px;margin-bottom:12px;box-shadow:0 3px 14px rgba(26,52,45,.04)}
.dose{display:grid;grid-template-columns:50px minmax(0,1fr) auto;gap:13px;align-items:start}.dose-icon{width:50px;height:50px;border-radius:16px;display:grid;place-items:center;background:var(--surface2);font-size:24px}.dose h3,.treatment h3{margin:0;font-size:18px}.meta{color:var(--muted);margin-top:3px;font-size:13px}.time{font-size:21px;font-weight:800}.badge{display:inline-flex;align-items:center;margin-top:8px;border-radius:99px;padding:4px 9px;background:var(--surface2);color:var(--muted);font-size:11px;font-weight:800}.badge.done{background:var(--ok-bg);color:var(--ok)}.badge.pending{background:var(--warn-bg);color:var(--warn)}.badge.paused{background:var(--surface2);color:var(--muted)}.alert-note{display:inline-block;color:var(--muted);font-size:11px;margin:8px 0 0 6px}
.actions{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:13px}.actions button{border:0;border-radius:12px;padding:10px 13px;font-weight:750;background:var(--surface2);color:var(--brand);min-height:40px}.actions .confirm{background:var(--brand);color:#fff}.actions .danger{background:var(--danger-bg);color:var(--danger)}.actions .grow-button{flex:1}
.mini-progress{margin-top:12px}.mini-progress>div{height:7px;background:var(--surface2);border-radius:9px;overflow:hidden}.mini-progress>div>span{display:block;height:100%;background:var(--brand)}.mini-progress small{display:flex;justify-content:space-between;color:var(--muted);margin-top:5px}.treatment-head{display:flex;align-items:center;gap:12px}.treatment .emoji{font-size:28px;width:38px;text-align:center}.grow{flex:1;min-width:0}.menu{border:0;background:var(--surface2);color:var(--brand);border-radius:12px;padding:9px 12px;font-weight:750}.schedule{display:flex;gap:6px;flex-wrap:wrap;margin-top:13px}.schedule span{background:var(--surface2);border-radius:9px;padding:6px 9px;font-size:12px;font-weight:750}.treatment-details{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:12px;color:var(--muted);font-size:12px}.paused-card{border-color:#d4a55f;background:color-mix(in srgb,var(--warn-bg) 35%,var(--surface))}
.filters{position:sticky;top:87px;z-index:5;background:var(--bg);padding:4px 0 10px}.search{position:relative}.search input{padding-left:39px;margin:0}.search:before{content:'⌕';position:absolute;left:14px;top:9px;color:var(--muted);font-size:20px}.filter-chips{display:flex;gap:7px;overflow:auto;padding-top:9px;scrollbar-width:none}.filter-chips button{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 12px;white-space:nowrap;color:var(--muted);font-weight:700}.filter-chips button.active{background:var(--brand);border-color:var(--brand);color:#fff}
.history-date{font-size:16px;margin:24px 2px 10px}.history-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px 2px;border-bottom:1px solid var(--line)}.history-row:last-child{border:0}.history-icon{font-size:23px;text-align:center}.history-row b{display:block}.history-row small{display:block;color:var(--muted);margin-top:2px}.history-status{font-weight:850;color:var(--ok);font-size:18px}.history-status.missed{color:var(--danger)}.history-row>.actions{grid-column:auto;border:0;padding:0;justify-content:flex-end}
.system-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:15px;min-width:0}.stat small{color:var(--muted);display:block}.stat strong{font-size:19px;word-break:break-word}.stat.good strong{color:var(--ok)}.stat.bad strong{color:var(--danger)}.status-detail{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:15px;margin-top:10px}.status-line{display:flex;justify-content:space-between;gap:15px;padding:7px 0}.status-line span{color:var(--muted)}.status-line b{text-align:right}.log{white-space:pre-wrap;background:#101916;color:#cce3dc;border-radius:18px;padding:14px;max-height:320px;overflow:auto;font:11px/1.55 Consolas,monospace}.maintenance{display:grid;gap:9px}.maintenance button{margin:0}
.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:20;display:grid;grid-template-columns:repeat(4,1fr);padding:8px 8px calc(8px + env(safe-area-inset-bottom));background:var(--nav);backdrop-filter:blur(20px);border-top:1px solid var(--line)}.bottom-nav button{border:0;background:none;color:var(--muted);font-size:11px;font-weight:750;padding:5px}.bottom-nav span{display:block;font-size:21px;line-height:1.1}.bottom-nav .active{color:var(--brand)}
.primary,.ghost,.danger-button{border:0;border-radius:14px;padding:12px 16px;font-weight:800;min-height:44px}.primary{background:var(--brand);color:#fff}.ghost{background:var(--surface2);color:var(--brand)}.danger-button{background:var(--danger-bg);color:var(--danger)}.wide{width:100%;margin-top:10px}button:disabled{opacity:.55;cursor:wait}
dialog{width:min(92vw,520px);max-height:min(88vh,760px);border:0;border-radius:25px;padding:22px;background:var(--surface);color:var(--ink);box-shadow:0 25px 80px #0005;overflow-x:hidden}dialog::backdrop{background:#0c18159c;backdrop-filter:blur(5px)}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.dialog-head h2{margin:0;font-size:23px}.dialog-kicker{margin-bottom:3px}.icon-button{border:0;background:var(--surface2);color:var(--brand);width:38px;height:38px;flex:0 0 38px;border-radius:50%;font-size:23px}.dialog-summary{padding:11px 13px;border-radius:13px;background:var(--surface2);color:var(--muted)}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}.confirm-dialog{text-align:center;max-width:390px}.confirm-dialog .dialog-actions{justify-content:center}.confirm-icon{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;margin:0 auto 10px;background:var(--danger-bg);color:var(--danger);font-size:23px;font-weight:850}.confirm-dialog h2{margin:0}.confirm-dialog p{margin:8px 0 0}
label{display:block;font-weight:750;margin-top:15px}label small,.field-help{font-weight:500;color:var(--muted)}.field-help{display:block;margin-top:5px;font-size:11px}#password-help{display:block;margin-top:2px}input{width:100%;min-width:0;max-width:100%;border:1px solid var(--line);color:var(--ink);border-radius:13px;padding:12px;margin-top:6px;background:var(--surface3)}input:focus{outline:3px solid color-mix(in srgb,var(--brand) 25%,transparent);border-color:var(--brand)}input:disabled{opacity:.65}.form-grid{display:grid;grid-template-columns:90px minmax(0,1fr);gap:12px}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--surface3);padding:12px;border-radius:14px}.switch-row span small{display:block}.switch-row input{width:24px;height:24px;flex:0 0 auto;margin:0}.emoji-options{display:flex;gap:7px;margin-top:9px}.emoji-options button{border:1px solid var(--line);background:var(--surface3);border-radius:10px;width:39px;height:36px;font-size:19px}.password-wrap{position:relative}.password-wrap input{padding-right:55px}.password-wrap button{position:absolute;right:7px;top:12px;border:0;background:none;color:var(--brand);font-weight:750;padding:8px}
.login{position:fixed;inset:0;z-index:100;background:radial-gradient(circle at 80% 10%,#2c8174,#0b4d45 48%,#0b302c);display:grid;place-items:center;padding:20px}.login-card{width:min(100%,410px);background:var(--surface);border-radius:28px;padding:28px;box-shadow:0 24px 80px #0006}.login-card img{display:block;margin:auto}.login-card h1,.login-card .eyebrow{text-align:center}.login-card h1{margin:5px 0}.login-card>.muted{text-align:center;margin-top:3px}.login-submit{margin-top:20px}.muted{color:var(--muted)}.error{color:var(--danger);min-height:20px}.empty{text-align:center;padding:35px;color:var(--muted)}.empty-icon{font-size:34px;display:block;margin-bottom:7px}
#toast{position:fixed;left:50%;bottom:99px;z-index:180;transform:translate(-50%,20px);opacity:0;background:#17211e;color:#fff;padding:12px 17px;border-radius:13px;transition:.2s;pointer-events:none;max-width:90vw;text-align:center;box-shadow:0 8px 30px #0004}#toast.show{opacity:1;transform:translate(-50%,0)}.skeleton div{height:112px;border-radius:22px;margin-bottom:12px;background:linear-gradient(90deg,var(--surface2),var(--surface),var(--surface2));background-size:200% 100%;animation:pulse 1.5s infinite}@keyframes pulse{to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media(max-width:380px){main{padding:14px}.topbar{padding-left:14px;padding-right:14px}.status-pill{padding:9px}.status-pill{font-size:0}.status-pill span{margin:0}.insights{grid-template-columns:1fr 1fr}.insight:last-child{grid-column:1/-1}.dose{grid-template-columns:45px minmax(0,1fr) auto}.dose-icon{width:45px;height:45px}.dialog-actions>*{flex:1}.history-row>.actions{grid-column:1/-1}}
@media(min-width:760px){body{padding-bottom:25px}.bottom-nav{left:20px;right:auto;top:112px;bottom:auto;width:168px;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:20px;padding:8px}.bottom-nav button{text-align:left;padding:12px;border-radius:12px}.bottom-nav button:hover{background:var(--surface2)}.bottom-nav span{display:inline;margin-right:9px}.topbar{padding-left:210px}main{padding-left:80px}.card:hover{box-shadow:var(--shadow)}}
