@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes pulseGlow{0%,to{box-shadow:0 0 15px #a855f726}50%{box-shadow:0 0 25px #a855f74d}}@keyframes shimmer{0%{background-position:-200% center}to{background-position:200% center}}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.dash{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;background:linear-gradient(135deg,#e8e9f3,#f5f6fa,#faf5ff)}.date-nav{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;position:sticky;top:0;background:#fffffff2;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid rgba(168,85,247,.08);box-shadow:0 2px 12px #a855f70f;z-index:100}.dash-scroll{padding:14px;display:flex;flex-direction:column;gap:14px}.date-nav-btn{background:linear-gradient(135deg,#a855f7,#ec4899);border:none;color:#fff;font-size:18px;cursor:pointer;padding:10px 16px;border-radius:14px;font-family:inherit;line-height:1;transition:all .25s cubic-bezier(.4,0,.2,1);font-weight:700;box-shadow:0 4px 15px #a855f74d}.date-nav-btn:hover{transform:scale(1.08);box-shadow:0 6px 20px #a855f773}.date-nav-btn:active{transform:scale(.95)}.date-nav-btn:disabled{opacity:.3;cursor:default;transform:none;box-shadow:none}.date-label-clickable{cursor:pointer;padding:6px 16px;border-radius:12px;transition:all .25s;position:relative;background:#a855f70f}.date-label-clickable:hover{background:#a855f71f;color:#7c3aed}.date-hidden-input{position:absolute;opacity:0;width:1px;height:1px;top:50%;left:50%;border:none;padding:0}.card{background:#ffffffb3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:20px;border:none;overflow:hidden;box-shadow:6px 6px 14px #d1d2db,-6px -6px 14px #fff;animation:slideUp .4s ease both;transition:all .3s cubic-bezier(.4,0,.2,1)}.card:hover{box-shadow:8px 8px 18px #d1d2db,-8px -8px 18px #fff;transform:translateY(-2px)}.card-header{padding:14px 18px;font-family:Space Grotesk,sans-serif;font-size:14px;font-weight:700;letter-spacing:.3px;color:#7c3aed;text-transform:uppercase;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(168,85,247,.1);background:linear-gradient(135deg,#a855f70f,#ec48990a)}.card-body{padding:14px 16px}.cal-ring-wrap{display:flex;align-items:center;gap:20px}.cal-ring{position:relative;width:90px;height:90px;flex-shrink:0}.cal-ring svg{transform:rotate(-90deg)}.cal-ring-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.cal-big{font-size:22px;font-weight:800;background:linear-gradient(135deg,#16a34a,#06b6d4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-variant-numeric:tabular-nums;letter-spacing:-1px;line-height:1}.cal-big.over{background:linear-gradient(135deg,#dc2626,#f97316);-webkit-background-clip:text;background-clip:text}.cal-unit{font-size:10px;color:#9ca3af;margin-top:1px}.cal-details{flex:1}.cal-detail-row{display:flex;justify-content:space-between;font-size:13px;color:#6b7280;padding:3px 0}.cal-detail-val{color:#374151;font-weight:500;font-variant-numeric:tabular-nums}.macro-item{margin-bottom:12px}.macro-item:last-child{margin-bottom:0}.macro-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.macro-label{font-size:13px;color:#374151;font-weight:500}.macro-val{font-size:13px;color:#111;font-weight:700;font-variant-numeric:tabular-nums}.macro-bar{height:8px;border-radius:4px;background:#a855f714;overflow:hidden}.macro-fill{height:100%;border-radius:4px;transition:width .6s cubic-bezier(.4,0,.2,1)}.meals-summary{cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1)}.meals-summary:hover{border-color:#a855f733;transform:translateY(-2px)}.meals-summary:active{transform:scale(.98)}.meal-type-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.meal-chip{padding:6px 14px;border-radius:12px;font-size:12px;background:linear-gradient(135deg,#a855f70f,#ec48990a);border:1px solid rgba(168,85,247,.12);color:#7c3aed;font-weight:600;transition:all .2s}.meal-chip:hover{background:#a855f71a}.meal-chip-count{color:#a855f7;font-weight:700;margin-left:4px}.meal-overlay-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e1b4b66;z-index:2000;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.meal-overlay{background:#fffffff2;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid rgba(168,85,247,.15);border-radius:24px;width:92%;max-width:520px;max-height:75vh;display:flex;flex-direction:column;box-shadow:0 24px 48px #a855f733,0 0 0 1px #a855f70d;animation:slideUp .3s cubic-bezier(.4,0,.2,1)}.meal-overlay-header{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;background:linear-gradient(135deg,#7c3aed,#a855f7,#ec4899);background-size:200% 200%;animation:gradientShift 4s ease infinite;border-radius:24px 24px 0 0;position:sticky;top:0;z-index:10}.meal-overlay-title{font-size:18px;font-weight:800;color:#fff;display:flex;align-items:center;gap:8px;letter-spacing:-.3px;text-shadow:0 1px 8px rgba(0,0,0,.15)}.meal-overlay-title:before{content:"🍽️";font-size:20px}.meal-overlay-close{background:#fff3;border:none;font-size:18px;cursor:pointer;color:#fff;transition:all .2s;padding:0;line-height:1;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center}.meal-overlay-close:hover{background:#ffffff59;transform:rotate(90deg)}.meal-overlay-tabs{display:flex;padding:4px 16px;overflow-x:auto;-webkit-overflow-scrolling:touch;gap:6px;background:#a855f708;border-bottom:1px solid rgba(168,85,247,.06);position:sticky;top:0;z-index:9}.meal-overlay-tab{flex:0 0 auto;padding:10px 16px;border:none;background:transparent;font-size:13px;font-weight:600;color:#6b7280;cursor:pointer;border-radius:10px;transition:all .25s}.meal-overlay-tab.active{color:#fff;background:linear-gradient(135deg,#a855f7,#ec4899);box-shadow:0 2px 10px #a855f74d}.meal-overlay-tab:not(.active):hover{color:#7c3aed;background:#a855f70f}.meal-overlay-body{flex:1;overflow-y:auto;padding:16px 20px;-webkit-overflow-scrolling:touch}.meal-list{display:flex;flex-direction:column;gap:10px}.meal-item{background:#fffc;border:1px solid rgba(168,85,247,.08);border-radius:14px;padding:12px 14px;display:flex;justify-content:space-between;align-items:center;transition:all .25s;box-shadow:0 2px 8px #a855f70a}.meal-item:hover{background:#fff;border-color:#a855f726;box-shadow:0 4px 16px #a855f71a;transform:translate(4px)}.meal-item-left{flex:1;min-width:0}.meal-item-name{font-size:13px;font-weight:700;color:#1e1b4b;margin-bottom:4px}.meal-item-details{font-size:11px;color:#6b7280;display:flex;gap:8px}.meal-item-detail{display:flex;align-items:center;gap:2px}.meal-item-actions{display:flex;gap:6px;flex-shrink:0}.meal-item-btn{background:#a855f70f;border:1px solid rgba(168,85,247,.12);cursor:pointer;color:#7c3aed;transition:all .2s;padding:8px;line-height:1;border-radius:10px;display:flex;align-items:center;justify-content:center;min-width:38px;min-height:38px}.meal-item-btn:hover{background:#a855f71f;border-color:#a855f740}.meal-item-btn:active{transform:scale(.92)}.meal-item-btn.delete{background:#ef44440a;border-color:#ef44441f;color:#ef4444}.meal-item-btn.delete:hover{background:#ef44441a;border-color:#ef444440}.meal-overlay-empty{text-align:center;padding:40px 20px;color:#9ca3af;font-size:13px}.meal-overlay-summary{background:linear-gradient(135deg,#a855f70f,#ec48990a);border-top:1px solid rgba(168,85,247,.08);padding:14px 20px;font-size:12px;color:#6b7280;display:flex;gap:16px;justify-content:center;flex-wrap:wrap;border-radius:0 0 24px 24px}.meal-overlay-summary-item{display:flex;gap:4px}.meal-overlay-summary-val{color:#7c3aed;font-weight:700}.edit-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e1b4b66;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2100;display:flex;align-items:center;justify-content:center}.edit-modal{background:#fffffff2;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid rgba(168,85,247,.12);border-radius:22px;width:90%;max-width:420px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 24px 48px #a855f72e;animation:slideUp .25s cubic-bezier(.4,0,.2,1);overflow:hidden}.edit-modal-header{padding:16px 20px;border-bottom:1px solid rgba(168,85,247,.08);font-size:16px;font-weight:800;color:#7c3aed;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#a855f70f,#ec48990a)}.edit-modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:#6b7280;padding:0;line-height:1}.edit-modal-close:hover{color:#111}.edit-modal-body{flex:1;overflow-y:auto;overflow-x:hidden;padding:20px 24px;-webkit-overflow-scrolling:touch;box-sizing:border-box}.edit-modal-body *{box-sizing:border-box}.edit-modal-field{margin-bottom:14px;display:flex;flex-direction:column;gap:4px}.edit-modal-label{font-size:12px;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.5px}.edit-modal-input{padding:10px 12px;border:1px solid transparent;border-radius:14px;font-size:13px;background:#e8e9f3;color:#2b2d42;font-family:inherit;transition:all .3s;box-shadow:inset 3px 3px 6px #d1d2db,inset -3px -3px 6px #fff;width:100%;max-width:100%;box-sizing:border-box}.edit-modal-input:focus{outline:none;border-color:#a855f7;box-shadow:inset 3px 3px 6px #d1d2db,inset -3px -3px 6px #fff,0 0 0 3px #a855f726}.edit-modal-footer{display:flex;gap:10px;padding:14px 20px;border-top:1px solid #f3f4f6}.btn-save{flex:1;padding:12px 14px;background:linear-gradient(135deg,#a855f7,#ec4899);color:#fff;border:none;border-radius:14px;font-size:14px;font-weight:700;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);font-family:inherit;box-shadow:0 4px 15px #a855f74d}.btn-save:hover{transform:translateY(-1px);box-shadow:0 6px 20px #a855f773}.btn-save:active{transform:scale(.97)}.btn-cancel{flex:1;padding:10px 14px;background:#a855f70f;color:#7c3aed;border:1px solid rgba(168,85,247,.15);border-radius:12px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit}.btn-cancel:hover{background:#a855f71f}.supp-counter{color:#6b7280;font-weight:500;text-transform:none;font-size:13px;background:#a855f714;padding:2px 10px;border-radius:12px;transition:all .3s}.supp-counter-done{background:linear-gradient(135deg,#a855f726,#ec48991f);color:#7c3aed;font-weight:700}.supp-progress-track{height:4px;background:#a855f714;border-radius:4px;margin-bottom:12px;overflow:hidden}.supp-progress-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,#a855f7,#ec4899);transition:width .5s cubic-bezier(.4,0,.2,1);min-width:0}.supp-toggle-list{display:flex;flex-wrap:wrap;gap:8px}.supp-toggle-item{display:flex;align-items:center;gap:8px;background:#fffc;border:2px solid rgba(168,85,247,.12);border-radius:14px;padding:10px 14px;cursor:pointer;font-family:inherit;transition:all .3s cubic-bezier(.4,0,.2,1);min-width:0}.supp-toggle-item:hover{border-color:#a855f74d;background:#a855f70a;transform:scale(1.02)}.supp-toggle-item.taken{background:linear-gradient(135deg,#a855f71a,#ec489914);border-color:#a855f7;box-shadow:0 2px 12px #a855f726}.supp-toggle-item.toggling{opacity:.6;pointer-events:none}.supp-toggle-check{width:22px;height:22px;border-radius:8px;background:#fff;border:2px solid rgba(168,85,247,.2);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#a855f7;flex-shrink:0;transition:all .3s}.supp-toggle-item.taken .supp-toggle-check{background:linear-gradient(135deg,#a855f7,#ec4899);border-color:transparent;color:#fff;box-shadow:0 2px 8px #a855f74d}.supp-toggle-name{font-size:13px;font-weight:600;color:#374151;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.supp-toggle-item.taken .supp-toggle-name{color:#7c3aed}.supp-extra-list{margin-top:14px;padding-top:14px;border-top:1px solid rgba(168,85,247,.08);display:flex;flex-direction:column;gap:8px}.supp-extra-label{font-size:11px;font-weight:600;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px}.supp-list-modern{display:flex;flex-direction:column;gap:8px}.supp-extra-item{display:flex;align-items:center;gap:10px;background:#fffc;border:1px solid rgba(168,85,247,.1);border-radius:14px;padding:10px 12px;transition:all .2s;animation:fadeIn .3s ease}.supp-extra-item:hover{background:#a855f70a;border-color:#a855f733}.supp-extra-icon{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#a855f71a,#ec489914);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.supp-extra-info{flex:1;min-width:0}.supp-extra-name{font-size:13px;font-weight:700;color:#7c3aed}.supp-extra-dose{font-size:11px;color:#6b7280;margin-top:1px}.ex-list{display:flex;flex-direction:column}.ex-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #f3f4f6}.ex-row:last-child{border-bottom:none}.ex-left{flex:1}.ex-type{font-size:13px;font-weight:700;color:#ec4899;margin-bottom:2px}.ex-details{font-size:12px;color:#6b7280;display:flex;gap:8px}.ex-actions{display:flex;gap:6px;flex-shrink:0}.weight-card-body{padding:16px}.weight-main{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.weight-big{font-size:28px;font-weight:800;background:linear-gradient(135deg,#a855f7,#ec4899);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-variant-numeric:tabular-nums;line-height:1}.weight-delta{padding:6px 10px;border-radius:6px;font-size:12px;font-weight:600;text-align:center}.weight-delta.neg{background:linear-gradient(135deg,#16a34a14,#06b6d414);color:#16a34a}.weight-delta.pos{background:#ef444414;color:#ef4444}.weight-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.weight-stat{background:#a855f70a;border:1px solid rgba(168,85,247,.1);border-radius:14px;padding:12px;text-align:center;transition:all .2s}.weight-stat:hover{border-color:#a855f733;box-shadow:0 2px 12px #a855f714}.weight-stat-label{font-size:11px;color:#6b7280;margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}.weight-stat-val{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.macro-fill.protein{background:linear-gradient(90deg,#6366f1,#8b5cf6)}.macro-fill.fat{background:linear-gradient(90deg,#f97316,#ec4899)}.macro-fill.carbs{background:linear-gradient(90deg,#16a34a,#06b6d4)}.macro-fill.sodium{background:linear-gradient(90deg,#ef4444,#f97316)}.ring-bg{stroke:#a855f714}.ring-fill{stroke:url(#ringGrad)}.ring-fill.over{stroke:#ef4444}.reminders-fab{position:fixed;bottom:90px;right:16px;z-index:900;width:52px;height:52px;border-radius:50%;border:none;background:linear-gradient(135deg,#a855f7,#ec4899);color:#fff;font-size:22px;cursor:pointer;box-shadow:0 6px 24px #a855f766;display:flex;align-items:center;justify-content:center;transition:all .3s cubic-bezier(.4,0,.2,1);animation:pulseGlow 2s infinite}.reminders-fab:hover{transform:scale(1.1);box-shadow:0 8px 30px #a855f78c}.reminders-fab:active{transform:scale(.95)}.reminders-fab-badge{position:absolute;top:-4px;right:-4px;background:#ef4444;color:#fff;font-size:11px;font-weight:700;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid #fff;box-shadow:0 2px 8px #ef444466}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes fadeInBg{0%{background:#0000}to{background:#0000004d}}.reminders-panel-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2500;animation:fadeInBg .2s ease forwards}.reminders-panel{position:absolute;top:0;right:0;bottom:0;width:min(85vw,380px);background:#fffffff2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:-8px 0 40px #a855f726;display:flex;flex-direction:column;animation:slideInRight .3s cubic-bezier(.4,0,.2,1)}.reminders-panel-header{padding:18px 20px;display:flex;justify-content:space-between;align-items:center;font-size:16px;font-weight:800;color:#7c3aed;background:linear-gradient(135deg,#a855f714,#ec48990f);border-bottom:1px solid rgba(168,85,247,.1)}.reminders-panel-close{background:none;border:none;font-size:22px;cursor:pointer;color:#9ca3af;line-height:1;transition:color .15s}.reminders-panel-close:hover{color:#ef4444}.reminders-panel-add-btn{background:linear-gradient(135deg,#a855f7,#ec4899);border:none;color:#fff;width:28px;height:28px;border-radius:50%;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;box-shadow:0 2px 8px #a855f74d}.reminders-panel-add-btn:hover{transform:scale(1.1)}.reminders-panel-body{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:8px;-webkit-overflow-scrolling:touch}.reminder-item{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:14px;background:#ffffffe6;border:1px solid rgba(168,85,247,.1);box-shadow:0 2px 8px #a855f70d;transition:all .2s}.reminder-item:hover{border-color:#a855f733;box-shadow:0 4px 12px #a855f71a}.reminder-item.high{border-left:3px solid #f59e0b}.reminder-item.done{opacity:.45}.reminder-check{display:flex;align-items:center;gap:10px;flex:1;cursor:pointer;font-size:13px;color:#374151;min-width:0}.reminder-check input[type=checkbox]{width:20px;height:20px;accent-color:#a855f7;cursor:pointer;flex-shrink:0}.reminder-text{overflow:hidden;text-overflow:ellipsis}.reminder-item.done .reminder-text{text-decoration:line-through;color:#9ca3af}.reminder-date{font-size:11px;color:#a855f7;white-space:nowrap;font-weight:600}.reminder-ai{font-size:11px;flex-shrink:0}.reminder-dismiss{background:none;border:none;color:#d1d5db;font-size:16px;cursor:pointer;padding:0 2px;line-height:1;transition:color .15s}.reminder-dismiss:hover{color:#ef4444}.reminder-add-row{display:flex;gap:8px;margin-top:4px}.reminder-add-input{flex:1;border:1px solid rgba(168,85,247,.2);border-radius:12px;padding:10px 14px;font-size:13px;outline:none;background:#fffc;transition:all .2s}.reminder-add-input:focus{border-color:#a855f7;box-shadow:0 0 0 3px #a855f71a}.reminder-add-btn{background:linear-gradient(135deg,#a855f7,#ec4899);color:#fff;border:none;border-radius:12px;padding:10px 16px;cursor:pointer;font-weight:700;box-shadow:0 2px 8px #a855f74d;transition:all .2s}.reminder-add-btn:hover{transform:scale(1.05)}.shopping-fab{position:fixed;bottom:160px;right:16px;z-index:900;width:52px;height:52px;border-radius:50%;border:none;background:linear-gradient(135deg,#16a34a,#06b6d4);color:#fff;font-size:22px;cursor:pointer;box-shadow:0 6px 24px #16a34a66;display:flex;align-items:center;justify-content:center;transition:all .3s cubic-bezier(.4,0,.2,1);animation:pulseGlow 2s infinite}.shopping-fab:hover{transform:scale(1.1);box-shadow:0 8px 30px #16a34a8c}.shopping-fab:active{transform:scale(.95)}.shopping-fab-badge{position:absolute;top:-4px;right:-4px;background:#ef4444;color:#fff;font-size:11px;font-weight:700;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid #fff;box-shadow:0 2px 8px #ef444466}.shopping-panel-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2500;animation:fadeInBg .2s ease forwards}.shopping-panel{position:absolute;top:0;right:0;bottom:0;width:min(85vw,380px);background:#fffffff2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:-8px 0 40px #16a34a26;display:flex;flex-direction:column;animation:slideInRight .3s cubic-bezier(.4,0,.2,1)}.shopping-panel-header{padding:18px 20px;display:flex;justify-content:space-between;align-items:center;font-size:16px;font-weight:800;color:#16a34a;background:linear-gradient(135deg,#16a34a14,#06b6d40f);border-bottom:1px solid rgba(22,163,74,.1)}.shopping-panel-close{background:none;border:none;font-size:22px;cursor:pointer;color:#9ca3af;line-height:1;transition:color .15s}.shopping-panel-close:hover{color:#ef4444}.shopping-panel-body{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:6px;-webkit-overflow-scrolling:touch}.shop-aisle-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#16a34a;padding:8px 0 4px;border-bottom:1px solid rgba(22,163,74,.1);margin-top:4px}.shop-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:12px;background:#ffffffe6;border:1px solid rgba(22,163,74,.08);transition:all .2s}.shop-item:hover{border-color:#16a34a33}.shop-item.checked{opacity:.4}.shop-item-check{display:flex;align-items:center;gap:8px;flex:1;cursor:pointer;font-size:13px;color:#374151;min-width:0}.shop-item-check input[type=checkbox]{width:20px;height:20px;accent-color:#16a34a;cursor:pointer;flex-shrink:0}.shop-item-name{overflow:hidden;text-overflow:ellipsis}.shop-item.checked .shop-item-name{text-decoration:line-through;color:#9ca3af}.shop-item-qty{font-size:11px;color:#6b7280;white-space:nowrap;flex-shrink:0}.shop-item-del{background:none;border:none;color:#d1d5db;font-size:16px;cursor:pointer;padding:0 2px;line-height:1;transition:color .15s}.shop-item-del:hover{color:#ef4444}.shop-add-row{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.shop-add-input{flex:1;min-width:120px;border:1px solid rgba(22,163,74,.2);border-radius:12px;padding:10px 14px;font-size:13px;outline:none;background:#fffc;transition:all .2s}.shop-add-input:focus{border-color:#16a34a;box-shadow:0 0 0 3px #16a34a1a}.shop-add-select{border:1px solid rgba(22,163,74,.2);border-radius:12px;padding:8px 10px;font-size:12px;outline:none;background:#fffc;color:#374151}.shop-add-btn{background:linear-gradient(135deg,#16a34a,#06b6d4);color:#fff;border:none;border-radius:12px;padding:10px 14px;cursor:pointer;font-weight:700;box-shadow:0 2px 8px #16a34a4d;transition:all .2s}.shop-add-btn:hover{transform:scale(1.05)}.shop-clear-btn{width:100%;margin-top:8px;padding:10px;border:1px dashed rgba(239,68,68,.3);border-radius:12px;background:#ef44440a;color:#ef4444;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.shop-clear-btn:hover{background:#ef44441a;border-color:#ef444480}.steps-card-body{padding:16px;display:flex;align-items:center;gap:20px}.steps-ring-wrap{position:relative;width:100px;height:100px;flex-shrink:0}.steps-ring-svg{width:100%;height:100%}.steps-ring-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.steps-count{font-family:Space Grotesk,sans-serif;font-size:20px;font-weight:700;color:#7c3aed;line-height:1.1}.steps-target{font-size:11px;color:#9ca3af}.steps-stats{display:flex;flex-direction:column;gap:8px;flex:1}.steps-stat{display:flex;align-items:baseline;gap:4px}.steps-stat-val{font-family:Space Grotesk,sans-serif;font-size:18px;font-weight:600;color:#374151}.steps-stat-label{font-size:12px;color:#9ca3af}.sleep-card-body{padding:16px}.sleep-total{font-family:Space Grotesk,sans-serif;font-size:28px;font-weight:700;color:#374151;margin-bottom:12px}.sleep-bar{display:flex;height:14px;border-radius:7px;overflow:hidden;margin-bottom:10px;background:#0000000a}.sleep-seg{height:100%;transition:width .4s ease}.sleep-seg.deep{background:#1e3a5f}.sleep-seg.light{background:#60a5fa}.sleep-seg.rem{background:#a855f7}.sleep-seg.awake{background:#f87171}.sleep-legend{display:flex;flex-wrap:wrap;gap:10px}.sleep-leg-item{display:flex;align-items:center;gap:4px;font-size:12px;color:#6b7280}.sleep-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.sleep-dot.deep{background:#1e3a5f}.sleep-dot.light{background:#60a5fa}.sleep-dot.rem{background:#a855f7}.sleep-dot.awake{background:#f87171}.hr-card-body{padding:16px}.hr-main{display:flex;align-items:center;gap:10px;margin-bottom:14px}.hr-resting{font-family:Space Grotesk,sans-serif;font-size:32px;font-weight:700;line-height:1}.hr-unit{font-size:12px;color:#9ca3af}.hr-stats{display:flex;gap:16px}.hr-stat{text-align:center}.hr-stat-val{font-family:Space Grotesk,sans-serif;font-size:18px;font-weight:600;color:#374151}.hr-stat-label{font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.3px}.huawei-card{border:1px dashed rgba(230,0,18,.15)}.huawei-card-body{padding:14px 16px}.huawei-connect-btn{width:100%;padding:12px 16px;background:linear-gradient(135deg,#e60012,#ff4d4d);color:#fff;border:none;border-radius:14px;font-size:14px;font-weight:700;cursor:pointer;box-shadow:0 4px 16px #e6001240;transition:all .2s}.huawei-connect-btn:hover{transform:scale(1.02);box-shadow:0 6px 20px #e6001259}.huawei-actions{display:flex;gap:8px;align-items:center}.huawei-sync-btn{flex:1;padding:10px 16px;background:linear-gradient(135deg,#e6001214,#ff4d4d0f);color:#e60012;border:1.5px solid rgba(230,0,18,.2);border-radius:12px;font-size:13px;font-weight:700;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:6px}.huawei-sync-btn:hover{background:#e600121f}.huawei-sync-btn:disabled{opacity:.6;cursor:not-allowed}.huawei-disconnect-btn{width:36px;height:36px;border-radius:10px;border:1px solid rgba(239,68,68,.15);background:#ef44440a;color:#ef4444;font-size:16px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.huawei-disconnect-btn:hover{background:#ef44441f}.huawei-last-sync{margin-top:8px;font-size:11px;color:#9ca3af}.huawei-sync-result{margin-top:6px;font-size:12px;font-weight:600;color:#22c55e}.huawei-sync-result.error{color:#ef4444}.huawei-spinner{display:inline-block;width:14px;height:14px;border-radius:50%;border:2px solid rgba(230,0,18,.2);border-top-color:#e60012;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.log-animation-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;pointer-events:none}.log-animation-item{position:fixed;display:flex;flex-direction:column;align-items:center;gap:8px;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);z-index:10001}.log-animation-appear{animation:logAppear .6s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes logAppear{0%{transform:translate(-50%,-50%) scale(0) rotate(-15deg);opacity:0}50%{transform:translate(-50%,-50%) scale(1.15) rotate(5deg);opacity:1}to{transform:translate(-50%,-50%) scale(1) rotate(0);opacity:1}}.log-animation-fly{animation:logFly .6s cubic-bezier(.4,0,.2,1) forwards}@keyframes logFly{0%{top:50%;left:50%;transform:translate(-50%,-50%) scale(1);opacity:1}to{top:var(--fly-y);left:var(--fly-x);transform:translate(-50%,-50%) scale(.15);opacity:.3}}.log-animation-done{top:var(--fly-y);left:var(--fly-x);transform:translate(-50%,-50%) scale(.15);animation:logDone .25s ease-out forwards}@keyframes logDone{0%{opacity:.3;transform:translate(-50%,-50%) scale(.15)}to{opacity:0;transform:translate(-50%,-50%) scale(.05)}}.log-animation-emoji{font-size:72px;line-height:1;filter:drop-shadow(0 4px 20px rgba(0,0,0,.25));animation:logEmojiBounce .6s cubic-bezier(.34,1.56,.64,1)}@keyframes logEmojiBounce{0%{transform:scale(0)}60%{transform:scale(1.2)}to{transform:scale(1)}}.log-animation-label{font-family:Space Grotesk,Inter,system-ui,sans-serif;font-size:17px;font-weight:800;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.3);padding:6px 18px;border-radius:20px;background:var(--anim-gradient);box-shadow:0 4px 20px #a855f766;white-space:nowrap;letter-spacing:-.3px}.log-animation-glow{position:absolute;top:50%;left:50%;transform:translate(-50%,-60%);width:120px;height:120px;border-radius:50%;background:var(--anim-gradient);opacity:.15;filter:blur(30px);animation:logGlowPulse .8s ease-in-out}@keyframes logGlowPulse{0%{transform:translate(-50%,-60%) scale(0);opacity:0}50%{transform:translate(-50%,-60%) scale(1.5);opacity:.25}to{transform:translate(-50%,-60%) scale(1);opacity:.15}}.log-animation-particles{position:absolute;top:50%;left:50%;transform:translate(-50%,-60%);pointer-events:none}.log-particle{position:absolute;font-size:24px;opacity:0;animation-duration:.8s;animation-timing-function:ease-out;animation-fill-mode:forwards;animation-delay:.15s}.log-particle-0{animation-name:logParticle0}.log-particle-1{animation-name:logParticle1}.log-particle-2{animation-name:logParticle2}.log-particle-3{animation-name:logParticle3}@keyframes logParticle0{0%{transform:translate(0) scale(0);opacity:0}25%{opacity:1}to{transform:translate(-65px,-75px) scale(.4);opacity:0}}@keyframes logParticle1{0%{transform:translate(0) scale(0);opacity:0}25%{opacity:1}to{transform:translate(70px,-60px) scale(.4);opacity:0}}@keyframes logParticle2{0%{transform:translate(0) scale(0);opacity:0}25%{opacity:1}to{transform:translate(-60px,55px) scale(.4);opacity:0}}@keyframes logParticle3{0%{transform:translate(0) scale(0);opacity:0}25%{opacity:1}to{transform:translate(75px,45px) scale(.4);opacity:0}}.log-animation-type-meal .log-animation-emoji{animation:logMealEmoji .7s cubic-bezier(.34,1.56,.64,1)}@keyframes logMealEmoji{0%{transform:scale(0) rotate(-20deg)}50%{transform:scale(1.3) rotate(10deg)}75%{transform:scale(.95) rotate(-3deg)}to{transform:scale(1) rotate(0)}}.log-animation-type-exercise .log-animation-emoji{animation:logExEmoji .7s cubic-bezier(.34,1.56,.64,1)}@keyframes logExEmoji{0%{transform:scale(0) translateY(30px)}40%{transform:scale(1.2) translateY(-20px)}60%{transform:scale(1.1) translateY(5px)}80%{transform:scale(1.05) translateY(-3px)}to{transform:scale(1) translateY(0)}}.log-animation-type-supplement .log-animation-emoji{animation:logSuppEmoji .7s cubic-bezier(.34,1.56,.64,1)}@keyframes logSuppEmoji{0%{transform:scale(0) rotate(-180deg)}60%{transform:scale(1.2) rotate(20deg)}to{transform:scale(1) rotate(0)}}.log-animation-type-reminder .log-animation-emoji{animation:logRemEmoji .7s cubic-bezier(.34,1.56,.64,1)}@keyframes logRemEmoji{0%{transform:scale(0) rotate(30deg)}30%{transform:scale(1.1) rotate(-15deg)}50%{transform:scale(1.15) rotate(10deg)}70%{transform:scale(1.05) rotate(-5deg)}to{transform:scale(1) rotate(0)}}.log-animation-type-shopping .log-animation-emoji{animation:logShopEmoji .7s cubic-bezier(.34,1.56,.64,1)}@keyframes logShopEmoji{0%{transform:scale(0) translateY(40px)}50%{transform:scale(1.25) translateY(-15px)}70%{transform:scale(.95) translateY(5px)}to{transform:scale(1) translateY(0)}}
