:root{--bg:#eef4fb;--bg2:#dceaf8;--card:#fff;--primary:#1a56a0;--primary-d:#0d3a72;--green:#1e7e34;--green-l:#d4edda;--amber:#cc7000;--amber-l:#fff3cd;--red:#b91c1c;--red-l:#fde8e8;--text:#1a1a2e;--text-s:#3d4a5c;--border:#c4d4e8;--shadow:0 2px 12px #1a56a01f;--radius:16px;--radius-s:10px;--font:"Nunito", sans-serif;--fs-base:16px;--fs-sm:14px;--fs-md:18px;--fs-lg:22px;--fs-xl:28px;--fs-xxl:36px;--pad:20px}body.elder{--fs-base:20px;--fs-sm:18px;--fs-md:22px;--fs-lg:28px;--fs-xl:34px;--fs-xxl:44px;--pad:28px;--radius:20px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:var(--font);font-size:var(--fs-base);background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;overflow-x:hidden}#app{background:var(--bg);flex-direction:column;max-width:480px;min-height:100vh;margin:0 auto;display:flex;position:relative}.screen{flex-direction:column;flex:1;padding-bottom:80px;animation:.3s fadeIn;display:none}.screen.active{display:flex}#screen-login,#screen-register{z-index:500;background:linear-gradient(160deg,#1a56a0 0%,#0d3a72 55%,#1e7e34 100%);justify-content:center;align-items:center;padding:20px;position:fixed;inset:0;overflow-y:auto}.login-box{padding:32px var(--pad);background:#fffffffa;border-radius:28px;width:100%;max-width:440px;box-shadow:0 12px 48px #0000004d}.login-logo{text-align:center;margin-bottom:6px;font-size:52px;line-height:1}.login-title{text-align:center;font-size:var(--fs-xl);color:var(--primary);margin-bottom:4px;font-weight:900}.login-subtitle{text-align:center;font-size:var(--fs-sm);color:var(--text-s);margin-bottom:24px}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.topbar{padding:16px var(--pad);background:var(--primary);color:#fff;z-index:50;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #0000002e}.topbar-title{font-size:var(--fs-lg);letter-spacing:.3px;font-weight:900}.topbar-icon-btn{cursor:pointer;color:#fff;background:#ffffff2e;border:none;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;transition:background .2s;display:flex}body.elder .topbar-icon-btn{width:48px;height:48px;font-size:24px}.topbar-icon-btn:hover{background:#ffffff4d}.topbar-logo{font-size:var(--fs-xl);color:#fff;font-weight:900}.topbar-logo span{color:#7ecfff}#bottom-nav{background:var(--card);border-top:2px solid var(--border);z-index:100;width:100%;max-width:480px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -2px 16px #1a56a01a}.nav-btn{cursor:pointer;background:0 0;border:none;border-radius:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:10px 4px;transition:background .15s;display:flex}.nav-btn:hover{background:var(--bg2)}.nav-btn .nav-icon{font-size:24px;line-height:1}.nav-btn .nav-label{color:var(--text-s);font-size:11px;font-weight:700;font-family:var(--font)}body.elder .nav-btn .nav-icon{font-size:28px}body.elder .nav-btn .nav-label{font-size:13px}.nav-btn.active .nav-icon{filter:drop-shadow(0 0 2px #1a56a080)}.nav-btn.active .nav-label{color:var(--primary)}.nav-btn.active{border-top:3px solid var(--primary)}.card{background:var(--card);border-radius:var(--radius);padding:var(--pad);box-shadow:var(--shadow);margin:0 var(--pad) 16px}.card-title{font-size:var(--fs-md);color:var(--text);align-items:center;gap:8px;margin-bottom:12px;font-weight:800;display:flex}.quick-grid{padding:0 var(--pad);grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px;display:grid}body.elder .quick-grid{grid-template-columns:1fr;gap:14px}.quick-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;border:2px solid #0000;flex-direction:column;gap:6px;padding:16px 14px;transition:transform .15s,border-color .15s;display:flex}.quick-card:active{transform:scale(.97)}.quick-card:hover{border-color:var(--primary)}.quick-card-icon{font-size:32px;line-height:1}body.elder .quick-card-icon{font-size:38px}.quick-card-title{font-size:var(--fs-base);color:var(--text);font-weight:800}.quick-card-value{font-size:var(--fs-sm);color:var(--text-s);font-weight:600}.med-item{border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:14px 0;display:flex}.med-item:last-child{border-bottom:none}.med-icon{background:var(--bg2);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:24px;display:flex}.med-info{flex:1}.med-name{font-size:var(--fs-base);color:var(--text);font-weight:800}.med-time{font-size:var(--fs-sm);color:var(--text-s);margin-top:2px;font-weight:600}.check-item{background:var(--bg2);border-radius:var(--radius-s);cursor:pointer;border:2px solid #0000;align-items:center;gap:14px;margin-bottom:10px;padding:14px;transition:background .15s,border-color .15s;display:flex}.check-item.done{background:var(--green-l);border-color:var(--green)}.check-box{border:2.5px solid var(--border);background:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:18px;font-weight:900;transition:all .15s;display:flex}.check-item.done .check-box{background:var(--green);border-color:var(--green);color:#fff}.check-text{font-size:var(--fs-base);color:var(--text);font-weight:700}.check-label{font-size:var(--fs-sm);color:var(--text-s);margin-top:2px;font-weight:600}.alert-banner{background:var(--red-l);border:2px solid var(--red);border-radius:var(--radius);align-items:center;gap:12px;padding:14px 16px;display:flex}.alert-banner-icon{flex-shrink:0;font-size:28px}.alert-banner-msg{font-size:var(--fs-sm);color:var(--text);font-weight:700}.chat-bubble{max-width:85%;font-size:var(--fs-base);border-radius:18px;padding:12px 16px;font-weight:600;line-height:1.5;animation:.3s fadeIn}.chat-bubble.bot{background:var(--card);color:var(--text);box-shadow:var(--shadow);border-bottom-left-radius:4px;align-self:flex-start}.chat-bubble.user{background:var(--primary);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}.btn{border-radius:var(--radius-s);font-size:var(--fs-md);font-weight:800;font-family:var(--font);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:14px 24px;text-decoration:none;transition:transform .12s,box-shadow .12s,opacity .12s;display:inline-flex}body.elder .btn{min-height:48px;padding:16px 28px}.btn:active{transform:scale(.97)}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 4px 14px #1a56a059}.btn-primary:hover{background:var(--primary-d)}.btn-green{background:var(--green);color:#fff;box-shadow:0 4px 14px #1e7e344d}.btn-amber{background:var(--amber);color:#fff}.btn-red{background:var(--red);color:#fff}.btn-outline{border:2px solid var(--primary);color:var(--primary);background:0 0}.btn-sm{font-size:var(--fs-sm);border-radius:8px;padding:9px 16px}.btn-full{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.form-group{margin-bottom:16px}.form-label{font-size:var(--fs-sm);color:var(--text-s);margin-bottom:6px;font-weight:700;display:block}.form-input{border:2px solid var(--border);border-radius:var(--radius-s);width:100%;font-size:var(--fs-base);font-family:var(--font);background:var(--bg);color:var(--text);outline:none;padding:13px 16px;transition:border-color .2s}.form-input:focus{border-color:var(--primary);background:#fff}select.form-input{cursor:pointer}.modal-backdrop{-webkit-backdrop-filter:blur(4px);z-index:1000;background:#0d3a72b3;justify-content:center;align-items:center;padding:16px;display:none;position:fixed;inset:0;overflow-y:auto}.modal-backdrop.open,.modal-backdrop[style*="display: flex"]{animation:.2s fadeIn;display:flex!important}.modal-overlay{z-index:200;background:#00000080;justify-content:center;align-items:flex-end;display:none;position:fixed;inset:0}.modal-overlay.open{animation:.2s fadeIn;display:flex}.modal-box{background:var(--card);padding:24px var(--pad) 28px;border-radius:24px;width:100%;max-width:480px;max-height:90vh;animation:.3s slideUp;overflow-y:auto;box-shadow:0 16px 48px #0000004d}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-title{font-size:var(--fs-lg);align-items:center;gap:8px;margin-bottom:20px;font-weight:900;display:flex}.modal-close{float:right;background:var(--bg2);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;display:inline-flex}.badge{font-size:var(--fs-sm);border-radius:100px;align-items:center;gap:4px;padding:4px 12px;font-weight:800;display:inline-flex}.badge-green{background:var(--green-l);color:var(--green)}.badge-amber{background:var(--amber-l);color:var(--amber)}.badge-red{background:var(--red-l);color:var(--red)}.badge-blue{color:var(--primary);background:#dbeafe}.toggle-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 0;display:flex}.toggle-label{font-size:var(--fs-base);font-weight:700}.toggle{width:56px;height:30px;position:relative}.toggle input{display:none}.toggle-slider{background:var(--border);cursor:pointer;border-radius:30px;transition:background .2s;position:absolute;inset:0}.toggle-slider:before{content:"";background:#fff;border-radius:50%;width:24px;height:24px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 4px #00000040}.toggle input:checked+.toggle-slider{background:var(--primary)}.toggle input:checked+.toggle-slider:before{transform:translate(26px)}.profile-header{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-d) 100%);color:#fff;padding:28px var(--pad) 32px;text-align:center;margin-bottom:8px;box-shadow:0 4px 16px #1a56a033}.profile-avatar{background:#fff3;border:3px solid #fff9;border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;margin:0 auto 12px;font-size:40px;display:flex;box-shadow:0 4px 12px #00000026}body.elder .profile-avatar{width:96px;height:96px;font-size:48px}.profile-name{font-size:var(--fs-lg);color:#fff;letter-spacing:.3px;font-weight:900}.profile-cond{font-size:var(--fs-sm);color:#fff;letter-spacing:.2px;background:#ffffff38;border:1px solid #ffffff59;border-radius:20px;margin-top:8px;padding:4px 14px;font-weight:700;display:inline-block}body.elder .profile-cond{font-size:var(--fs-base);padding:6px 18px}.profile-badge-row{justify-content:center;align-items:center;gap:8px;margin-top:10px;display:flex}.badge-role-user{color:#fff;font-size:var(--fs-sm);background:#ffffff38;border:1px solid #fff6;border-radius:20px;align-items:center;gap:4px;padding:4px 12px;font-weight:800;display:inline-flex}.badge-role-admin{color:#1a1a2e;font-size:var(--fs-sm);background:#ffc107;border:1px solid #ffb300;border-radius:20px;align-items:center;gap:4px;padding:4px 12px;font-weight:900;display:inline-flex;box-shadow:0 2px 8px #0000002e}.input-hint{color:var(--text-s);align-items:center;gap:4px;margin-top:4px;font-size:12px;transition:color .2s;display:flex}.input-hint.error{color:var(--red);font-weight:700}.input-hint.success{color:var(--green);font-weight:700}.form-input.is-valid{border-color:var(--green);background-color:#f6fff8}.form-input.is-invalid{border-color:var(--red);background-color:#fff8f8}.btn-spinner{vertical-align:middle;border:2.5px solid #fff6;border-top-color:#fff;border-radius:50%;width:18px;height:18px;margin-right:8px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.screen{opacity:0;transition:opacity .25s cubic-bezier(.16,1,.3,1),transform .25s cubic-bezier(.16,1,.3,1);transform:translateY(6px)}.screen.active{opacity:1;transform:translateY(0)}#toast-container{z-index:9999;pointer-events:none;flex-direction:column;gap:8px;width:90%;max-width:420px;display:flex;position:fixed;top:20px;left:50%;transform:translate(-50%)}.toast{border-radius:var(--radius-s);font-size:var(--fs-base);color:#fff;pointer-events:auto;align-items:center;gap:10px;padding:14px 20px;font-weight:700;animation:.3s toastIn,.3s 3.7s forwards toastOut;display:flex;box-shadow:0 4px 20px #00000038}body.elder .toast{font-size:var(--fs-md);padding:18px 24px}.toast-success{background:var(--green)}.toast-warning{background:var(--amber)}.toast-error{background:var(--red)}.toast-info{background:var(--primary)}@keyframes toastIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes toastOut{0%{opacity:1}to{opacity:0}}
