:root{--ground:#f3f5f0;--surface:#fff;--soft:#eef1eb;--line:#e2e6df;--ink:#17211b;--muted:#5b665e;--accent:#93d6a6;--good:#1e5a34;--bad:#8c2b24;--good-bg:#bde7c8;--bad-bg:#ffc7c1;--bad-line:#ff9f95;--track:#d5dad2;--display:"Bricolage Grotesque", system-ui, sans-serif;--body:"DM Sans", system-ui, sans-serif;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--ground);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;touch-action:pan-x pan-y;overscroll-behavior:none;margin:0}button,a,input,textarea{touch-action:manipulation}#root{justify-content:center;min-height:100dvh;display:flex}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:3px solid var(--ink);outline-offset:2px}h1,h2,p{margin:0}code{font-size:.9em}.app{width:100%;max-width:440px}.frame{height:100dvh;position:relative;overflow:clip}.screen{flex-direction:column;width:100%;max-width:440px;height:100dvh;display:flex;overflow:hidden}.screen-padded{padding:calc(var(--safe-top) + 48px) 16px calc(var(--safe-bottom) + 28px);gap:20px;overflow-y:auto}.stack-2,.stack-6,.stack-8,.stack-4,.stack-10,.stack-12,.stack-18{flex-direction:column;display:flex}.stack-2{gap:2px}.stack-6{gap:6px}.stack-8{gap:8px}.stack-10{gap:10px}.stack-4{gap:4px}.stack-12{gap:12px}.stack-18{gap:18px}.row-between{justify-content:space-between;align-items:center;gap:8px;display:flex}.row-between.baseline{align-items:baseline}.row-between.end{align-items:flex-end}.grow{flex-grow:1}.display{font-family:var(--display);letter-spacing:-.02em;font-size:38px;font-weight:800;line-height:1.05}.title{font-family:var(--display);letter-spacing:-.02em;font-size:24px;font-weight:800;line-height:1.1}.eyebrow{color:var(--muted);font-size:15px;font-weight:600}.muted{color:var(--muted)}.small{font-size:13px}.body{font-size:16px;line-height:1.45}.center{text-align:center}.num{font-variant-numeric:tabular-nums}.ellipsis{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.press{transition:transform .12s}.press:active:not(:disabled){transform:scale(.97)}.btn{border:none;border-radius:28px;justify-content:center;align-items:center;gap:10px;height:56px;font-size:17px;font-weight:700;transition:opacity .15s,transform .12s;display:flex}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.4}.btn-dark{background:var(--ink);color:#fff}.btn-soft{background:var(--ground);color:var(--ink)}.btn-white{background:var(--surface);color:var(--ink)}.btn-danger{background:var(--bad);color:#fff}.btn-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.btn-row.single{grid-template-columns:1fr}.icon-btn,.round-btn{background:var(--ground);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.round-btn{background:var(--surface);box-shadow:0 1px 2px #17211b14}.pill-btn{background:var(--surface);border:none;border-radius:22px;flex-shrink:0;align-items:center;gap:8px;height:44px;padding:0 16px;font-size:15px;font-weight:700;display:flex;box-shadow:0 1px 2px #17211b14}.danger-text{color:var(--bad)}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--muted);font-size:14px;font-weight:600}.field input,.field textarea{background:var(--ground);border:2px solid #0000;border-radius:18px;outline:none;height:54px;padding:0 16px;font-size:16px}.field textarea{resize:none;border-radius:20px;height:96px;padding:14px 16px;line-height:1.4}.field input:focus,.field textarea:focus{border-color:var(--accent)}.screen-padded>.stack-12 .field input{background:var(--surface)}.password-input{flex-grow:1;min-width:0;display:flex;position:relative}.password-input input{flex-grow:1;min-width:0;padding-right:52px}.password-toggle{width:44px;height:44px;color:var(--muted);background:0 0;border:none;border-radius:14px;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;right:5px;transform:translateY(-50%)}.input-row{gap:8px;display:flex}.input-row input{flex-grow:1;min-width:0}.input-row .btn{border-radius:18px;height:54px;padding:0 20px}.link-btn{min-height:44px;color:var(--muted);text-underline-offset:3px;background:0 0;border:none;align-self:center;padding:0 12px;font-size:15px;font-weight:600;text-decoration:underline}.account-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;align-items:center;gap:12px;margin-bottom:16px;padding:14px 16px;display:flex}.account-card-icon{background:var(--good-bg);width:40px;height:40px;color:var(--good);border-radius:12px;flex:none;justify-content:center;align-items:center;display:flex}.account-card p{flex-direction:column;gap:2px;margin:0;display:flex}.account-card strong{font-size:15px}.form-error{color:var(--bad);font-weight:600}.form-warning{border:1px solid var(--bad-line);background:color-mix(in srgb, var(--bad-bg) 45%, var(--surface));color:var(--bad);border-radius:18px;flex-direction:column;gap:4px;padding:14px 16px 6px;font-size:15px;display:flex}.form-warning .link-btn{color:var(--bad);align-self:flex-start;padding:0}.signin-hero{flex-direction:column;gap:14px;margin-bottom:12px;display:flex}.signin-logo{background:var(--accent);color:#fff;border-radius:22px;justify-content:center;align-items:center;width:72px;height:72px;display:flex}.scrim{background:#17211b73;animation:.2s fade-in;position:absolute;inset:0}.sheet-scrim{z-index:20}.sheet{max-height:calc(100% - var(--safe-top) - 24px);background:var(--surface);padding:10px 16px calc(var(--safe-bottom) + 28px);z-index:21;overscroll-behavior:contain;border-radius:32px 32px 0 0;outline:none;flex-direction:column;gap:16px;animation:.34s cubic-bezier(.2,.9,.25,1) sheet-up;display:flex;position:absolute;bottom:0;left:0;right:0;overflow-y:auto;box-shadow:0 -12px 40px #17211b2e}.sheet.keyboard-open{max-height:none;padding-bottom:20px}.sheet h2{font-family:var(--display);letter-spacing:-.02em;font-size:28px;font-weight:800}.grabber{background:var(--track);border-radius:3px;align-self:center;width:40px;height:5px}.sheet-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.sheet-heading{flex-direction:column;align-items:flex-start;gap:6px;display:flex}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.username-input{background:var(--ground);border:2px solid #0000;border-radius:18px;align-items:center;padding-left:16px;display:flex}.username-input:focus-within{border-color:var(--accent)}.username-input>span{color:var(--muted);font-size:16px;font-weight:700}.field .username-input input{background:0 0;border:none;flex-grow:1;min-width:0;height:50px;padding-left:2px}.screen-padded>.stack-12 .username-input{background:var(--surface)}.screen-padded>.stack-12 .field .username-input input{background:0 0}.field-hint{color:var(--muted);font-size:13px}.field-hint.bad{color:var(--bad);font-weight:600}.field-hint.good{color:var(--good);font-weight:600}.settings-group{background:var(--ground);border-radius:20px;flex-direction:column;padding:4px 14px;display:flex}.settings-group .group-title{padding:12px 0 4px}.group-title{color:var(--muted);margin:0;font-size:14px;font-weight:700}.switch-row{justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.switch-row+.switch-row{border-top:1px solid var(--line)}.switch-text{flex-direction:column;gap:2px;min-width:0;display:flex}.switch-label{align-items:center;gap:6px;font-size:15px;font-weight:700;display:flex}.switch-row.locked .switch-label{color:var(--muted)}.switch{background:var(--track);border:none;border-radius:15px;flex-shrink:0;width:50px;height:30px;transition:background .2s;position:relative}.switch.on{background:var(--good)}.switch:disabled{opacity:.4}.switch-knob{background:#fff;border-radius:50%;width:24px;height:24px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #17211b40}.switch.on .switch-knob{transform:translate(20px)}.avatar{letter-spacing:.02em;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:800;display:inline-flex;position:relative}.avatar-img{object-fit:cover;border-radius:50%;width:100%;height:100%;position:absolute;inset:0}.avatar-view-btn{background:0 0;border:none;border-radius:50%;flex-shrink:0;padding:0;display:inline-flex}.avatar-view{z-index:40;background:#0a0a0ae0;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;animation:.15s fade-in;display:flex;position:fixed;inset:0}.avatar-view-img{aspect-ratio:1;object-fit:cover;border-radius:50%;width:min(86vw,420px)}.avatar-view-name{color:#fff;margin:0;font-size:18px;font-weight:800}.cropper{z-index:45;padding:calc(env(safe-area-inset-top) + 16px) 20px calc(env(safe-area-inset-bottom) + 20px);color:#fff;background:#0d0d0d;flex-direction:column;align-items:center;gap:16px;animation:.15s fade-in;display:flex;position:fixed;inset:0}.cropper-hint{opacity:.8;margin:0;font-size:15px;font-weight:600}.cropper-stage{touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;flex:auto;justify-content:center;align-self:stretch;align-items:center;min-height:0;display:flex;overflow:hidden}.cropper-area{flex-shrink:0;position:relative}.cropper-img{pointer-events:none;max-width:none;position:absolute;top:0;left:0}.cropper-frame{pointer-events:none;outline:2px solid #ffffffd9;position:absolute;inset:0;box-shadow:0 0 0 9999px #0d0d0dad}.cropper-frame.circle{border-radius:50%}.cropper-frame.rounded{border-radius:22%}.cropper-zoom{accent-color:#fff;width:min(320px,100%)}.cropper-actions{gap:12px;width:min(360px,100%);display:flex}.cropper-btn{color:#fff;height:52px;font:inherit;background:#ffffff24;border:none;border-radius:26px;flex:1 1 0;font-size:16px;font-weight:800}.cropper-btn.primary{color:#0d0d0d;background:#fff}.cropper-btn:disabled{opacity:.5}.avatar-picker{flex-direction:column;align-items:center;gap:6px;display:flex}.avatar-picker-btn{background:0 0;border:none;border-radius:50%;padding:0;position:relative}.avatar-picker-cam{background:var(--surface);width:26px;height:26px;color:var(--ink);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;bottom:-2px;right:-2px;box-shadow:0 1px 4px #0000002e}.avatar-picker-links{gap:16px;display:flex}.avatar-picker-link{color:var(--muted);font:inherit;background:0 0;border:none;padding:0;font-size:14px;font-weight:700}.avatar-live{min-width:10px;min-height:10px;box-shadow:0 0 0 2px var(--surface);background:#3fb565;border-radius:50%;position:absolute;bottom:0;right:0}:root{--ground:#f1f5f4;--soft:#e9efed;--line:#e0e7e5;--ink:#15211f;--muted:#5b6866;--accent:#6fcdb9;--good:#1d6150;--bad:#a3271d;--good-bg:#d3efe6;--bad-bg:#ffd9d4;--bad-line:#f0796b;--track:#d4dddb;--due-bg:#ffe9cc;--due-ink:#85480c;--shadow-card:0 1px 2px #15211f0d, 0 4px 16px -8px #15211f1f}.signin-logo{box-shadow:var(--shadow-card);background:#fff}.card{background:var(--surface);box-shadow:var(--shadow-card);border-radius:24px;padding:16px}.card-label{color:var(--muted);font-size:14px;font-weight:600}.section-title{font-family:var(--display);letter-spacing:-.01em;margin:0;font-size:19px;font-weight:700}.row-gap{align-items:center;gap:12px;min-width:0;display:flex}.row-gap.tight{gap:6px}.icon-btn.small{width:36px;height:36px}.icon-btn:disabled{opacity:.35}.pill-btn.soft{background:var(--ground);box-shadow:none;height:36px;padding:0 14px;font-size:14px}.pill-btn.dark{background:var(--ink);color:#fff;box-shadow:none;height:36px;padding:0 16px;font-size:14px}.pill-btn:disabled{opacity:.5}.small-btn{height:46px;font-size:16px}.btn svg{flex-shrink:0}.chip{background:var(--soft);height:36px;color:var(--ink);white-space:nowrap;border:none;border-radius:18px;flex-shrink:0;align-items:center;gap:6px;padding:0 14px;font-size:14px;font-weight:700;transition:background .15s,color .15s,transform .12s;display:inline-flex}.chip:active{transform:scale(.96)}.chip.on{background:var(--ink);color:#fff}.chip-wrap{flex-wrap:wrap;gap:8px;display:flex}.link-chip{background:var(--soft);height:26px;font-family:var(--body);vertical-align:middle;border:none;border-radius:13px;margin-left:8px;padding:0 10px;font-size:13px;font-weight:700}.add-row{background:var(--soft);height:40px;color:var(--muted);border:none;border-radius:20px;align-self:center;padding:0 16px;font-size:14px;font-weight:700}.skeleton{background:linear-gradient(90deg, var(--soft) 0%, #f7faf9 50%, var(--soft) 100%);background-size:200% 100%;border-radius:20px;animation:1.4s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.form-error{color:var(--bad);font-size:14px;font-weight:600}.home{padding-top:calc(var(--safe-top) + 32px);gap:22px}.home .display{font-size:34px}.home-header{align-items:flex-start}.avatar-btn{padding:0;overflow:hidden}.today-card{background:linear-gradient(135deg,#fff 0%,#e4f5f0 100%);align-items:center;gap:12px;padding:18px;display:flex}.today-card.late{background:linear-gradient(135deg,#fff 0%,#fff0dc 100%)}.today-card.overdue{background:linear-gradient(135deg,#fff 0%,#ffe3df 100%)}.today-count{font-family:var(--display);letter-spacing:-.02em;font-size:44px;font-weight:800;line-height:1}.today-of{letter-spacing:0;color:var(--muted);font-size:18px;font-weight:700}.today-line{margin-top:4px;font-size:15px;font-weight:600}.today-card.late .today-line{color:var(--due-ink)}.today-card.overdue .today-line{color:var(--bad)}.today-skipped{color:var(--bad);font-size:13px;font-weight:700}.today-card.all-done .today-line{color:var(--good)}.ring{flex-shrink:0}.ring-track{fill:none;stroke:var(--soft);stroke-width:7px}.ring-fill,.ring-skipped{fill:none;stroke:var(--accent);stroke-width:7px;transition:stroke-dasharray .4s cubic-bezier(.2,.9,.25,1),stroke-dashoffset .4s cubic-bezier(.2,.9,.25,1)}.ring-skipped{stroke:var(--bad-line)}.today-card.all-done .ring-fill{stroke:var(--good)}.ring-check{fill:none;stroke:var(--good);stroke-width:4px;stroke-linecap:round;stroke-linejoin:round}.push-prompt{grid-template-columns:auto 1fr;align-items:start;gap:12px;display:grid}.push-prompt-icon{background:var(--good-bg);width:40px;height:40px;color:var(--good);border-radius:14px;justify-content:center;align-items:center;display:flex}.push-prompt-actions{grid-column:1/-1;justify-content:flex-end}.empty-card{flex-direction:column;gap:12px;padding:22px 20px;display:flex}.empty-icon{background:var(--good-bg);width:56px;height:56px;color:var(--good);border-radius:20px;justify-content:center;align-items:center;display:flex}.quiet-card{text-align:center;padding:20px}.day-switch{padding:0 2px}.day-switch .icon-btn{background:var(--surface);box-shadow:0 1px 2px #15211f14}.day-title{text-align:center;flex-grow:1}.dose-card{padding:6px 14px 4px}.dose-time{color:var(--muted);font-variant-numeric:tabular-nums;align-items:center;gap:6px;padding:10px 2px 2px;font-size:13px;font-weight:800;display:flex}.dose-row{align-items:center;gap:10px;min-height:66px;animation:.25s backwards row-in;display:flex}.dose-row+.dose-row{border-top:1px solid var(--line)}.dose-main{text-align:left;background:0 0;border:none;flex-grow:1;align-items:center;gap:12px;min-width:0;padding:10px 0;display:flex}.dose-name{font-size:16px;font-weight:700;line-height:1.3;transition:color .2s}.dose-meta{color:var(--muted);flex-wrap:wrap;gap:4px 8px;font-size:13px;font-weight:600;display:flex}.dose-status.due{color:var(--due-ink);font-weight:800}.dose-status.overdue,.dose-status.missed,.dose-status.skipped{color:var(--bad);font-weight:800}.dose-status.taken{color:var(--good)}.dose-row.s-taken .dose-name,.dose-row.s-skipped .dose-name{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1.5px}.dose-row.s-skipped .med-badge,.dose-row.s-taken .med-badge{opacity:.55}.log-btn{gap:4px}.med-badge{border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.check{border:2.5px solid;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;padding:0;transition:background .18s,transform .15s;display:flex;box-shadow:0 0 0 8px #0000;background:0 0!important}.check svg{opacity:0;transition:opacity .15s}.check:active:not(:disabled){transform:scale(.88)}.check:disabled{opacity:.35}.dose-row.s-due .check{box-shadow:0 0 0 4px var(--due-bg)}.dose-row.s-overdue .check{box-shadow:0 0 0 4px var(--bad-bg)}.dose-row.s-taken .check{animation:.3s pop;background:currentColor!important}.dose-row.s-taken .check svg{opacity:1;color:#fff}.dose-row.s-skipped .check{border-style:dashed;color:var(--bad)!important}.dose-row.s-skipped .check svg{opacity:1}.med-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.med-list.stopped{opacity:.7}.med-card{text-align:left;width:100%;color:var(--ink);border:none;align-items:center;gap:12px;display:flex}.med-card>svg{color:var(--muted);flex-shrink:0}.med-name{font-size:16px;font-weight:700}.med-dose{color:var(--muted);font-weight:600}.med-next{color:var(--good);font-weight:700}.sheet>*,.home>*{flex-shrink:0}.field-label{color:var(--muted);font-size:14px;font-weight:600}.weekdays{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.weekday{background:var(--soft);border:none;border-radius:14px;height:44px;font-weight:800;transition:background .15s,color .15s}.weekday.on{background:var(--ink);color:#fff}.stepper{background:var(--ground);border-radius:22px;align-items:center;height:44px;display:inline-flex}.stepper button{background:0 0;border:none;width:44px;height:44px;font-size:22px;font-weight:700}.stepper button:disabled{opacity:.3}.stepper span{text-align:center;min-width:28px;font-size:17px;font-weight:800}.date-input,.time-pill input{background:var(--ground);border:2px solid #0000;border-radius:14px;outline:none;min-width:0;height:44px;padding:0 12px;font-size:16px;font-weight:700}.date-input:focus,.time-pill input:focus{border-color:var(--accent)}.times{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.time-pill{align-items:center;display:inline-flex;position:relative}.time-pill input{font-variant-numeric:tabular-nums;padding-right:34px}.time-pill input:only-child{padding-right:12px}.time-remove{width:28px;height:28px;color:var(--muted);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;right:4px}.add-time{border-radius:14px;height:44px}.presets{margin-top:4px}.chip.open{box-shadow:inset 0 0 0 1.5px var(--line);color:var(--muted);background:0 0;height:32px;font-size:13px}.end-row{padding:0 0 12px}.swatches{flex-wrap:wrap;gap:10px;display:flex}.swatch-btn{border:2px solid #0000;border-radius:14px;justify-content:center;align-items:center;width:44px;height:44px;transition:transform .12s,border-color .15s;display:flex}.swatch-btn.on{border-color:currentColor}.swatch-btn:active{transform:scale(.94)}.schedule-preview{text-align:center}.adherence{background:var(--ground);border-radius:16px;align-items:center;gap:10px;padding:10px 12px;font-size:14px;display:flex}.danger-zone{padding:4px 14px}.settings-action{text-align:left;background:0 0;border:none;flex-direction:column;gap:2px;min-height:52px;padding:10px 0;font-size:16px;font-weight:700;display:flex}.settings-action+.settings-action,.settings-action+.confirm-box{border-top:1px solid var(--line)}.action-hint{font-weight:500}.confirm-box{padding:12px 0}.dose-status-line{background:var(--soft);border-radius:15px;align-self:flex-start;align-items:center;height:30px;padding:0 12px;font-size:14px;font-weight:800;display:inline-flex}.dose-status-line.taken{background:var(--good-bg);color:var(--good)}.dose-status-line.due{background:var(--due-bg);color:var(--due-ink)}.dose-status-line.overdue,.dose-status-line.missed,.dose-status-line.skipped{background:var(--bad-bg);color:var(--bad)}.notes{white-space:pre-wrap}.toast{top:calc(var(--safe-top) + 12px);z-index:30;background:var(--bad);color:#fff;border-radius:18px;padding:14px 16px;font-weight:600;animation:.2s fade-in;position:absolute;left:16px;right:16px;box-shadow:0 12px 30px #15211f40}.notice{left:16px;right:16px;bottom:calc(var(--safe-bottom) + 20px);z-index:15;background:var(--ink);color:#fff;border-radius:20px;align-items:center;gap:8px;min-height:52px;padding:6px 6px 6px 18px;font-weight:600;animation:.22s notice-in;display:flex;position:absolute;box-shadow:0 12px 30px #15211f40}.notice-action{color:#fff;background:#ffffff24;border:none;border-radius:14px;flex-shrink:0;height:40px;padding:0 14px;font-size:15px;font-weight:800}.notice-close{color:#ffffffb3;background:0 0;width:40px;height:40px}@keyframes row-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes pop{0%{transform:scale(.8)}60%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes notice-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@media (width>=700px){.app,.screen{max-width:560px}}.c-violet{color:#4b3aa8;background:#e8e3fc}.c-blue{color:#1f4f8a;background:#dde9fb}.c-teal{color:#1d6150;background:#d3efe9}.c-green{color:#276338;background:#d6efd8}.c-amber{color:#7d4a0e;background:#fbe8c9}.c-coral{color:#9a3324;background:#fde0d8}.c-pink{color:#8a2468;background:#f9daee}.c-slate{color:#3e4a5c;background:#e3e7ee}
