:root{--paper:#f7f2e8;--paper-deep:#eee4d3;--card:#fffdf8f0;--ink:#24352f;--muted:#66736c;--line:#d9d5c9;--green:#176a56;--green-soft:#e2f2ea;--amber:#8a5a0b;--amber-soft:#fff0ce;--red:#a33c2d;--red-soft:#fae4df;--shadow:0 22px 60px #4f43301a;--radius-xl:28px;--radius-lg:20px;--radius-md:14px}*{box-sizing:border-box}html{background:var(--paper);min-width:320px;color:var(--ink);scroll-behavior:smooth;font-size:18px}body{background:radial-gradient(circle at 8% 0%, #ebb8702e, transparent 27rem), radial-gradient(circle at 92% 12%, #3d997e21, transparent 30rem), linear-gradient(180deg, #fbf8f1 0%, var(--paper) 58%, #f1eadf 100%);min-height:100vh;color:var(--ink);text-rendering:optimizelegibility;margin:0;font-family:Microsoft YaHei UI,PingFang SC,Noto Sans CJK SC,system-ui,sans-serif;line-height:1.55}button,input,select{color:inherit;font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}:focus-visible{outline-offset:3px;outline:3px solid #0b5c49}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.modal-open{overflow:hidden}.eyebrow{color:var(--green);letter-spacing:.08em;margin:0 0 .2rem;font-size:.78rem;font-weight:800}.button,.header-button,.text-button,.close-button,.history-list button,.missed-list button,.offline-notice button{border:0;border-radius:14px;min-height:48px;font-weight:800;transition:transform .16s,box-shadow .16s,background-color .16s}.button:hover:not(:disabled),.header-button:hover:not(:disabled),.text-button:hover:not(:disabled){transform:translateY(-1px)}.button.primary{background:var(--green);color:#fff;box-shadow:0 9px 20px #176a5633}.button.primary:hover:not(:disabled){background:#115743}.button.secondary{color:#245c4c;background:#f0f6f2;border:1px solid #c8d6cf}.app-shell{width:min(1180px,100% - 32px);margin:0 auto;padding:34px 0 46px}.site-header{padding:8px 4px 22px}.brand-row,.time-row{justify-content:space-between;align-items:center;gap:18px;display:flex}.brand{align-items:center;gap:14px;display:flex}.brand-mark,.login-mark,.loading-mark{color:#fffdf7;background:linear-gradient(145deg,#2d8a70,#155945);border:2px solid #ffffffbd;border-radius:19px;flex:none;place-items:center;width:58px;height:58px;font-size:1.4rem;font-weight:900;display:grid;box-shadow:0 12px 30px #176a5638}.brand h1{letter-spacing:-.04em;margin:0;font-size:clamp(1.7rem,4vw,2.35rem);line-height:1.15}.header-actions{gap:8px;display:flex}.header-button{color:#4f6259;background:#ffffffb3;padding:0 16px;box-shadow:0 6px 18px #3c33280f}.time-row{margin-top:20px;padding-left:72px}.time-row time{color:#44584f;font-size:1.05rem;font-weight:700}.sync-chip{min-height:40px;color:var(--muted);background:#ffffffb3;border-radius:999px;align-items:center;padding:0 13px;font-size:.82rem;font-weight:800;display:inline-flex}.sync-chip i{background:#87a297;border-radius:50%;width:9px;height:9px;margin-right:8px}.sync-chip.synced i{background:#2f956f;box-shadow:0 0 0 4px #2f956f1f}.sync-chip.error i{background:var(--red)}.sync-chip.syncing i{animation:1s ease-in-out infinite alternate sync-pulse}.summary-banner{border-radius:var(--radius-lg);background:linear-gradient(105deg,#e7f5edf2,#fffdf7f0);border:1px solid #c6ded3;align-items:center;gap:16px;min-height:92px;margin:4px 0 24px;padding:18px 22px;display:flex;box-shadow:0 12px 32px #36594912}.summary-banner.status-warning{background:linear-gradient(105deg, var(--amber-soft), #fffaf0);border-color:#ead19a}.summary-banner.status-urgent,.summary-banner.status-empty{background:linear-gradient(105deg, var(--red-soft), #fff8f5);border-color:#efc0b6}.summary-icon{width:52px;height:52px;color:var(--green);background:#d4eadf;border-radius:17px;flex:none;place-items:center;font-size:1.35rem;font-weight:900;display:grid}.status-warning .summary-icon{color:var(--amber);background:#f7dfa8}.status-urgent .summary-icon,.status-empty .summary-icon{color:var(--red);background:#f3c8be}.summary-banner p,.summary-banner strong{margin:0;display:block}.summary-banner p{color:var(--muted);font-size:.86rem;font-weight:800}.summary-banner strong{margin-top:2px;font-size:1.02rem}.offline-notice{color:#7a352b;background:#fff2ef;border:1px solid #e5b8af;border-radius:15px;justify-content:space-between;align-items:center;gap:14px;margin:-10px 0 22px;padding:14px 17px;font-weight:700;display:flex}.offline-notice button{color:var(--red);background:#fff;padding:0 15px}.medication-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;display:grid}.medication-card{border-radius:var(--radius-xl);background:var(--card);box-shadow:var(--shadow);border:1px solid #b9b4a5a6;padding:25px;position:relative;overflow:hidden}.medication-card:before{background:var(--liquid-color,#2a9275);content:"";width:100%;height:5px;position:absolute;top:0;left:0}.medication-card.status-warning:before{background:#c48824}.medication-card.status-urgent:before,.medication-card.status-empty:before{background:var(--red)}.card-heading{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.card-heading h2{letter-spacing:-.03em;margin:0;font-size:clamp(1.2rem,3vw,1.42rem);line-height:1.25}.status-badge{background:var(--green-soft);color:var(--green);border-radius:999px;flex:none;padding:7px 10px;font-size:.76rem;font-weight:900}.status-warning .status-badge{background:var(--amber-soft);color:var(--amber)}.status-urgent .status-badge,.status-empty .status-badge{background:var(--red-soft);color:var(--red)}.card-content{grid-template-columns:minmax(104px,128px) minmax(0,1fr);align-items:center;gap:24px;margin-top:23px;display:grid}.liquid-gauge{--liquid-color:#2e9b7b;--liquid-light:#70ceb0;flex-direction:column;align-items:center;width:clamp(104px,19vw,124px);padding-top:9px;display:flex;position:relative}.gauge-xuesaitong{--liquid-color:#4c8fc0;--liquid-light:#8fc5e4}.gauge-atorvastatin{--liquid-color:#c08339;--liquid-light:#e8bd75}.gauge-insulin{--liquid-color:#7b69b5;--liquid-light:#b3a7dc}.glass-rim{z-index:4;background:#ffffff61;border:3px solid #52645f94;border-radius:50%;width:86%;height:18px;position:absolute;top:4px;box-shadow:inset 0 3px 6px #ffffffd9}.glass-body{aspect-ratio:3/4;background:linear-gradient(90deg,#fff9,#ebf1ed4d 45%,#ffffff9e);border:3px solid #52645f7a;border-top:0;border-radius:8px 8px 34px 34px/8px 8px 18px 18px;width:84%;position:relative;overflow:hidden;box-shadow:inset 0 -8px 16px #445c5414,0 10px 22px #324a421c}.glass-body:after{z-index:3;content:"";border:2px solid #4a5c5629;border-radius:50%;height:14px;position:absolute;bottom:4px;left:5px;right:5px}.liquid{height:var(--level);background:linear-gradient(90deg, var(--liquid-light), var(--liquid-color) 58%, color-mix(in srgb, var(--liquid-color), #17483c 20%));border-radius:4px 4px 26px 26px/4px 4px 14px 14px;min-height:0;transition:height .42s;position:absolute;bottom:3px;left:3px;right:3px;box-shadow:inset 8px 0 16px #ffffff2e}.liquid:before{background:color-mix(in srgb, var(--liquid-light), white 14%);content:"";border-radius:50%;height:14px;position:absolute;top:-7px;left:0;right:0;box-shadow:inset 0 -3px 4px #134a3b1f}.glass-shine{z-index:4;background:#ffffff80;border-radius:999px;width:8px;position:absolute;top:15px;bottom:23px;left:10px}.liquid-gauge.is-refilling .liquid{animation:.9s cubic-bezier(.2,.82,.28,1) both refill-liquid}.liquid-gauge.is-empty .liquid:before{display:none}.liquid-gauge>strong{color:var(--ink);margin-top:10px;font-size:1.12rem;line-height:1}.liquid-gauge>span{color:var(--muted);margin-top:4px;font-size:.72rem;font-weight:700}.stock-details{min-width:0}.days-callout>span{color:var(--muted);font-size:.82rem;font-weight:800;display:block}.days-callout>strong{color:var(--ink);letter-spacing:-.07em;align-items:baseline;margin:2px 0 1px;font-size:clamp(2.15rem,7vw,2.9rem);line-height:1.02;display:flex}.days-callout>strong small{letter-spacing:0;margin-left:7px;font-size:.95rem}.days-callout>small{color:var(--muted);font-size:.88rem;line-height:1.4;display:block}.days-callout.empty strong{color:var(--red);letter-spacing:-.03em;margin:8px 0;font-size:1.7rem}.inventory-facts{gap:11px;margin:20px 0 0;display:grid}.inventory-facts>div{border-top:1px solid #e7e1d7;padding-top:10px}.inventory-facts dt{color:var(--muted);font-size:.84rem;font-weight:800}.inventory-facts dd{margin:2px 0 0;font-size:1rem;font-weight:800;line-height:1.45}.inventory-facts dd small{color:var(--muted);margin-top:2px;font-size:.84rem;font-weight:600;display:block}.card-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:24px;display:grid}.card-actions .text-button{color:#5e6c65;text-underline-offset:4px;background:0 0;grid-column:1/-1;min-height:48px;font-size:.82rem;text-decoration:underline}.updated-time{color:#7b857f;text-align:center;margin:9px 0 0;font-size:.8rem}.site-footer{border-radius:var(--radius-lg);color:var(--muted);background:#fffcf5b3;border:1px solid #cbc2b1b3;margin-top:28px;padding:22px 24px}.site-footer strong{color:var(--ink)}.site-footer p{margin:4px 0 0;font-size:.88rem}.toast{z-index:130;color:#fff;background:#263a33;border-radius:15px;max-width:min(420px,100% - 36px);padding:14px 18px;font-size:.86rem;font-weight:700;position:fixed;bottom:18px;right:18px;box-shadow:0 18px 50px #1f302a40}.toast:empty{display:none}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1f2b2785;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal-panel{background:#fffdf8;border:1px solid #ffffffad;border-radius:24px;width:min(600px,100%);max-height:min(86vh,820px);padding:24px;overflow:auto;box-shadow:0 28px 90px #14221d4d}.modal-heading{justify-content:space-between;align-items:center;gap:15px;margin-bottom:18px;display:flex}.modal-heading h2{margin:0;font-size:1.4rem;line-height:1.3}.modal-notice{color:#8d3025;background:#fff0ed;border:1px solid #e7b5aa;border-radius:13px;margin:-4px 0 16px;padding:12px 14px;font-size:.86rem;font-weight:800}.close-button{color:#59655f;background:#f0eee8;flex:none;padding:0 14px}.current-stock{color:#4e6158;background:#f3f5f0;border-radius:13px;margin:0 0 18px;padding:12px 14px;font-weight:800}.package-spec{color:#52665c;margin:0 0 16px;font-size:.88rem;font-weight:800}.package-choice{border:0;margin:0 0 18px;padding:0}.package-choice legend{margin-bottom:8px;font-size:.84rem;font-weight:900}.choice-grid{grid-template-columns:1fr 1fr;gap:9px;display:grid}.choice-grid label{border:2px solid #dedbd2;border-radius:13px;align-items:center;min-height:54px;padding:10px 12px;font-size:.85rem;font-weight:800;display:flex}.choice-grid label.selected{border-color:var(--green);background:var(--green-soft)}.choice-grid input{width:21px;height:21px;accent-color:var(--green);margin:0 9px 0 0}.stepper-list{gap:10px;display:grid}.stepper-row{background:#fff;border:1px solid #dfdbd1;border-radius:15px;justify-content:space-between;align-items:center;gap:12px;min-height:64px;padding:9px 10px 9px 14px;display:flex}.stepper-label{font-size:.84rem;font-weight:800}.stepper-control{grid-template-columns:48px 66px 48px auto;align-items:center;gap:5px;display:grid}.stepper-control button{width:48px;height:48px;color:var(--green);background:#e8f2ed;border:0;border-radius:12px;font-size:1.4rem;font-weight:900}.stepper-control input{text-align:center;background:#fffdf9;border:1px solid #cfcac0;border-radius:10px;width:66px;height:48px;font-weight:900}.stepper-suffix{min-width:24px;color:var(--muted);font-size:.82rem;font-weight:800}.stock-preview{background:#edf7f1;border:1px solid #cfe2d8;border-radius:16px;margin-top:18px;padding:17px;display:grid}.stock-preview span,.stock-preview small{color:#567066;font-size:.78rem;font-weight:700}.stock-preview em{color:#38584c;margin-top:7px;font-size:.82rem;font-style:normal;font-weight:900}.stock-preview strong{color:var(--green);font-size:1.55rem}.form-hint{color:#8d5b0a;margin:10px 0 0;font-size:.8rem;font-weight:700}.form-hint.success{color:var(--green)}.destructive-confirm{color:#7f342a;background:#fff2ef;border:1px solid #e5b4aa;border-radius:13px;align-items:flex-start;gap:10px;margin-top:14px;padding:13px;font-size:.84rem;font-weight:800;display:flex}.destructive-confirm input{width:22px;height:22px;accent-color:var(--red);flex:none;margin:1px 0 0}.modal-actions{grid-template-columns:minmax(110px,.7fr) minmax(180px,1.3fr);gap:10px;margin-top:20px;display:grid}.missed-form>p{color:var(--muted);font-size:.86rem}.date-field{gap:7px;font-weight:900;display:grid}.date-field input{background:#fff;border:1px solid #ccc8be;border-radius:13px;width:100%;min-height:54px;padding:0 14px}.missed-list{border-top:1px solid #e2ded5;margin-top:19px;padding-top:15px}.missed-list h3{margin:0 0 7px;font-size:.9rem}.missed-list>div{border-bottom:1px solid #eeeae2;justify-content:space-between;align-items:center;min-height:53px;display:flex}.missed-list button,.history-list button{color:#76582e;background:#f3eee6;padding:0 15px}.history-list{gap:9px;display:grid}.history-list article{border:1px solid #e4dfd5;border-radius:14px;justify-content:space-between;align-items:center;gap:14px;padding:14px;display:flex}.history-list article div{display:grid}.history-list article strong{font-size:.88rem}.history-list article span{color:#4f5f57;font-size:.82rem}.history-list article small{color:#7c8781;font-size:.7rem}.empty-state{color:var(--muted);text-align:center;padding:28px 8px}.login-shell,.loading-shell{place-items:center;min-height:100vh;padding:22px;display:grid}.login-card{background:#fffdf8f0;border:1px solid #c1b9a9b3;border-radius:30px;width:min(480px,100%);padding:clamp(28px,7vw,44px);box-shadow:0 28px 80px #42382b24}.login-mark{border-radius:23px;width:70px;height:70px;margin-bottom:25px;font-size:1.7rem}.login-card h1{letter-spacing:-.06em;margin:0;font-size:clamp(2rem,8vw,2.55rem)}.login-intro{color:var(--muted);margin:10px 0 25px}.login-card form label{gap:8px;font-weight:900;display:grid}.login-card input{background:#fff;border:2px solid #d3cfc4;border-radius:14px;width:100%;min-height:58px;padding:0 15px}.password-field{grid-template-columns:minmax(0,1fr) 64px;gap:8px;display:grid}.password-field button{min-height:58px;color:var(--green);background:#edf4f0;border:1px solid #cbd6d0;border-radius:13px;font-weight:900}.password-rule{color:#6d7973;font-size:.78rem;font-weight:600}.login-card input:focus{border-color:var(--green)}.login-submit{width:100%;min-height:56px;margin-top:17px}.login-error{color:var(--red);margin:10px 0 0;font-size:.82rem;font-weight:800}.privacy-note{color:#77827d;text-align:center;margin:20px 0 0;font-size:.75rem}.loading-shell{color:var(--muted);text-align:center;align-content:center}.loading-shell h1{color:var(--ink);margin:4px 0;font-size:1.55rem}.loading-shell p{margin:4px 0 18px}.retry-button{min-width:150px;padding:0 20px}.loading-mark{margin:0 auto 16px}@keyframes refill-liquid{0%{height:var(--from-level)}78%{height:calc(var(--level) + 3%)}to{height:var(--level)}}@keyframes sync-pulse{0%{opacity:.45;transform:scale(.82)}to{opacity:1;transform:scale(1)}}@media (width<=860px){.medication-grid{grid-template-columns:1fr}.medication-card{padding:23px}}@media (width<=620px){html{font-size:18px}.app-shell{width:min(100% - 22px,560px);padding-top:19px}.brand-row{align-items:flex-start}.brand-mark{width:52px;height:52px}.brand h1{font-size:1.58rem}.header-actions{display:grid}.header-button{min-height:48px;padding:0 10px;font-size:.74rem}.time-row{flex-direction:column;align-items:flex-start;gap:9px;margin-top:16px;padding-left:0}.time-row time{font-size:.9rem}.summary-banner{align-items:flex-start;padding:16px}.summary-icon{width:46px;height:46px}.summary-banner strong{font-size:.9rem}.medication-card{border-radius:24px}.card-content{grid-template-columns:104px minmax(0,1fr);gap:17px}.liquid-gauge{width:104px}.days-callout>strong{font-size:2.2rem}.modal-backdrop{align-items:end;padding:0}.modal-panel{width:100%;max-height:92vh;padding:21px 16px calc(20px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0}.stepper-row{flex-direction:column;align-items:flex-start}.stepper-control{grid-template-columns:48px minmax(64px,1fr) 48px auto;width:100%}.stepper-control input{width:100%}.modal-actions{grid-template-columns:1fr}.modal-actions .primary{grid-row:1}.choice-grid{grid-template-columns:1fr}.toast{max-width:none;bottom:11px;left:11px;right:11px}}@media (width<=400px){.card-heading{flex-direction:column;align-items:flex-start}.card-content{grid-template-columns:1fr}.liquid-gauge{width:112px;margin:0 auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
