:root{color:#172033;font-synthesis:none;background:#f5f7fb;font-family:Inter,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}main{max-width:1180px;margin:auto;padding:28px 18px 60px}.hero{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px;display:flex}.hero h1{margin:0;font-size:clamp(2rem,5vw,3.2rem)}.hero p{color:#5b6475}.hero-actions{flex-shrink:0;align-items:center;gap:10px;display:flex}.menu-button{color:#1d4ed8;background:#fff;border:1px solid #cbd5e1;width:46px;min-width:46px;padding:10px;position:relative;box-shadow:0 6px 18px #20304a14}.menu-alert-dot{background:#f59e0b;border:2px solid #fff;border-radius:50%;width:9px;height:9px;position:absolute;top:5px;right:5px}.privacy{color:#174a8b;background:#e9f2ff;border-radius:12px;padding:10px 14px}.sync-badge{align-items:center;gap:8px;font-weight:700;display:inline-flex}.sync-syncing svg{animation:1.2s linear infinite sync-spin}.sync-synced{color:#166534;background:#e8f7ee}.sync-offline,.sync-error{color:#92400e;background:#fff7df}.sync-locked{color:#475569;background:#f1f5f9}@keyframes sync-spin{to{transform:rotate(360deg)}}.auth-shell{place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{text-align:center;background:#fff;border:1px solid #e3e8f0;border-radius:20px;width:min(420px,100%);padding:30px;box-shadow:0 18px 55px #20304a21}.auth-card>svg{color:#2563eb}.auth-card h1{margin:14px 0 8px}.auth-card p{color:#5b6475;line-height:1.5}.auth-card form{text-align:left;gap:14px;margin-top:22px;display:grid}.auth-card label{gap:7px;font-weight:700;display:grid}.auth-card input{min-height:48px;font:inherit;letter-spacing:.18em;text-align:center;border:1px solid #cfd7e3;border-radius:10px;padding:11px 12px;font-size:1.15rem}.auth-card form button{width:100%}.auth-error{background:#fff0f0;border-radius:10px;margin:0;padding:10px 12px;font-size:.9rem;color:#a51d14!important}.auth-note{color:#697386;margin-top:18px;font-size:.82rem;line-height:1.45;display:block}.auth-spinner{animation:1.2s linear infinite sync-spin}.panel,.stat{background:#fff;border:1px solid #e3e8f0;border-radius:18px;box-shadow:0 8px 26px #20304a0f}.panel{margin-bottom:18px;padding:20px}.panel h2{margin:0 0 16px}.panel label{flex-direction:column;gap:7px;font-size:.92rem;font-weight:600;display:flex}.panel input,.panel select,select{background:#fff;border:1px solid #cfd7e3;border-radius:10px;min-height:44px;padding:11px 12px}.panel input:focus,.panel select:focus,button:focus-visible{outline-offset:2px;outline:3px solid #2563eb47}button{color:#fff;background:#2563eb;border:0;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:11px 15px;font-weight:700;display:inline-flex}.secondary-button{color:#174a8b;background:#e8eef9}.ghost-button{color:#334155;background:0 0;border:1px solid #cbd5e1}.danger-button{color:#a51d14;background:#fff0f0}.settings-grid,.entry-form{grid-template-columns:repeat(3,1fr) auto;align-items:end;gap:14px;display:grid}.settings-grid{grid-template-columns:1.2fr 1fr 1fr auto}.stats{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px;display:grid}.stat{padding:18px}.stat span,.insight span{color:#697386;margin-bottom:7px;font-size:.85rem;display:block}.stat strong{font-size:1.3rem}.progress-row,.section-head{justify-content:space-between;align-items:center;gap:16px;display:flex}.progress{background:#e8edf5;border-radius:999px;height:12px;margin-top:10px;overflow:hidden}.progress div{background:#2563eb;height:100%}.goal-forecast{color:#1e3a8a;background:#eff6ff;border:1px solid #bfdbfe;border-radius:14px;gap:5px;margin:16px 0;padding:14px 16px;display:grid}.goal-forecast span{text-transform:uppercase;letter-spacing:.04em;font-size:.82rem;font-weight:800}.goal-forecast strong{line-height:1.45}.goal-forecast-target-reached{color:#166534;background:#ecfdf5;border-color:#bbf7d0}.goal-forecast-moving-away,.goal-forecast-beyond-range{color:#9a3412;background:#fff7ed;border-color:#fed7aa}.milestones{flex-wrap:wrap;gap:8px;display:flex}.milestones span{color:#166534;background:#e8f7ee;border-radius:999px;padding:6px 10px;font-size:.84rem;font-weight:700}.subtle{color:#697386;font-size:.88rem}.insights-grid{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.insight{background:#f8fafc;border:1px solid #e3e8f0;border-radius:14px;padding:15px}.insight strong{font-size:1.08rem}.insight-wide{grid-column:span 2}.health-note{color:#5b6475;margin:14px 0 0;font-size:.88rem;line-height:1.5}.chart{min-height:280px}.chart-loading,.chart-empty{text-align:center;color:#647084;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:280px;display:flex}.chart-empty strong{color:#172033;font-size:1.05rem}.chart-summary{color:#5b6475;margin:8px 0 0;font-size:.88rem;line-height:1.5}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;vertical-align:top;border-bottom:1px solid #edf0f5;padding:12px}th{color:#647084;font-size:.82rem}.empty-cell{text-align:center;color:#647084;padding:24px}.actions{gap:6px;display:flex}.icon{color:#1d4ed8;background:#eef3fb;min-width:44px;min-height:44px;padding:8px}.icon.danger{color:#a51d14;background:#fff0f0}.entry-cards{display:none}.entry-card{background:#fbfcfe;border:1px solid #e3e8f0;border-radius:14px;padding:15px}.entry-card-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.entry-card-head span{color:#1d4ed8;font-size:1.15rem;font-weight:800}.entry-card dl{gap:8px;margin:0;display:grid}.entry-card dl div{justify-content:space-between;gap:12px;display:flex}.entry-card dt{color:#697386}.entry-card dd{text-align:right;margin:0}.entry-card .actions{justify-content:flex-end;margin-top:14px}.backup-warning{color:#92400e;background:#fff7df;border-radius:999px;padding:6px 10px;font-size:.82rem;font-weight:800}.backup-status{color:#174a8b;background:#f4f8ff;border-radius:12px;align-items:flex-start;gap:10px;margin-bottom:12px;padding:13px;display:flex}.backup-status strong,.backup-status span{display:block}.backup-status span{color:#51657d;margin-top:3px;font-size:.84rem}.backup-reminder{color:#7c4a03;background:#fff8e6;border:1px solid #f5d98b;border-radius:12px;padding:11px 13px}.button-grid{flex-wrap:wrap;gap:10px;display:flex}.drawer-backdrop{z-index:45;background:#0f172a6b;border-radius:0;width:100%;min-height:0;padding:0;display:block;position:fixed;inset:0}.data-drawer{z-index:50;background:#fff;width:min(420px,100%);padding:24px;animation:.18s ease-out drawer-in;position:fixed;inset:0 0 0 auto;overflow-y:auto;box-shadow:-18px 0 55px #0f172a38}.drawer-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.drawer-head h2{margin:0}.drawer-head p{color:#647084;margin:5px 0 0;font-size:.88rem}.drawer-close{color:#1d4ed8;background:#eef3fb;width:44px;min-width:44px;padding:10px}.drawer-status{margin-top:14px}.drawer-actions{gap:10px;margin-top:18px;display:grid}.drawer-actions button{justify-content:flex-start;width:100%}.drawer-actions .install-button{background:linear-gradient(135deg,#1d4ed8,#7c3aed);justify-content:center;min-height:52px;margin-bottom:6px;font-size:1rem;box-shadow:0 10px 24px #4f46e53d}.drawer-actions .danger-button{margin-top:8px}@keyframes drawer-in{0%{opacity:.6;transform:translate(22px)}}.toast{color:#fff;z-index:30;background:#172033;border-radius:12px;align-items:center;gap:12px;padding:10px 12px 10px 16px;display:flex;position:fixed;top:20px;right:20px;box-shadow:0 8px 24px #0003}.toast-undo{color:#172033;background:#fff;min-height:36px;padding:7px 10px}.celebration-overlay{z-index:80;isolation:isolate;background:radial-gradient(circle,#312e8140,#050818f0);place-items:center;padding:22px;animation:.35s ease-out celebration-fade-in;display:grid;position:fixed;inset:0;overflow:hidden}.celebration-overlay:before{content:"";z-index:0;background:radial-gradient(circle at 20% 30%,#f973164d,#0000 22%),radial-gradient(circle at 80% 28%,#0ea5e952,#0000 24%),radial-gradient(circle at 50% 78%,#ec489947,#0000 25%);animation:2.6s ease-in-out infinite alternate celebration-sky-pulse;position:absolute;inset:-20%}.firework-stage{z-index:1;pointer-events:none;mix-blend-mode:screen;position:absolute;inset:0}.firework{left:var(--firework-x);top:var(--firework-y);width:10px;height:10px;filter:drop-shadow(0 0 14px hsl(var(--firework-hue) 100% 65%));position:absolute}.firework:before{content:"";border:4px solid hsl(var(--firework-hue) 100% 72% / .9);opacity:0;animation:firework-shockwave 2.6s ease-out var(--firework-delay) infinite;border-radius:50%;position:absolute;inset:-20px}.firework:after{content:"";box-shadow:0 0 22px 8px hsl(var(--firework-hue) 100% 65%), 0 0 60px 20px hsl(var(--firework-hue) 100% 55% / .55);animation:firework-center 2.6s ease-out var(--firework-delay) infinite;background:#fff;border-radius:50%;position:absolute;inset:-9px}.firework span{background:linear-gradient(to bottom, white 0 12%, hsl(var(--firework-hue) 100% 70%) 42%, transparent 100%);width:6px;height:38px;box-shadow:0 0 12px 3px hsl(var(--firework-hue) 100% 64%);transform-origin:3px 20px;animation:firework-spark 2.6s cubic-bezier(.12, .72, .25, 1) var(--firework-delay) infinite;border-radius:999px;position:absolute;top:-8px;left:2px}.confetti-field{z-index:2;pointer-events:none;position:absolute;inset:0;overflow:hidden}.confetti-field i{left:var(--confetti-left);background:hsl(var(--confetti-hue) 92% 58%);width:10px;height:18px;box-shadow:0 0 10px hsl(var(--confetti-hue) 92% 58% / .75);animation:confetti-fall var(--confetti-duration) linear var(--confetti-delay) infinite;border-radius:3px;position:absolute;top:-24px}.celebration-card{z-index:3;text-align:center;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:#ffffffed;border:1px solid #ffffffd1;border-radius:28px;width:min(620px,100%);padding:clamp(28px,6vw,54px);animation:.7s cubic-bezier(.16,1,.3,1) celebration-card-arrive;position:relative;box-shadow:0 0 0 7px #ffffff1a,0 28px 90px #00000080}.celebration-card>span{color:#b45309;letter-spacing:.08em;text-transform:uppercase;margin-bottom:12px;font-size:.88rem;font-weight:900;display:block}.celebration-card h2{color:#172033;text-wrap:balance;margin:0 0 26px;font-size:clamp(2rem,6vw,3.8rem);line-height:1.14}.celebration-card button{min-width:150px}@keyframes celebration-fade-in{0%{opacity:0}}@keyframes celebration-sky-pulse{0%{filter:saturate();transform:scale(.9)rotate(-2deg)}to{filter:saturate(1.5);transform:scale(1.08)rotate(2deg)}}@keyframes celebration-card-arrive{0%{opacity:0;transform:scale(.82)translateY(24px)}}@keyframes firework-center{0%,10%{opacity:0;transform:scale(.1)}15%{opacity:1;transform:scale(1.6)}23%{opacity:.85;transform:scale(.85)}46%,to{opacity:0;transform:scale(.2)}}@keyframes firework-shockwave{0%,12%{opacity:0;transform:scale(.1)}17%{opacity:.95}38%,to{opacity:0;transform:scale(6.2)}}@keyframes firework-spark{0%,11%{opacity:0;transform:rotate(var(--spark-angle)) translateY(0) scaleY(.15)}15%{opacity:1}48%{opacity:0;transform:rotate(var(--spark-angle)) translateY(calc(var(--firework-distance) * -1)) scaleY(var(--spark-scale))}to{opacity:0}}@keyframes confetti-fall{0%{opacity:0;transform:translateY(-5vh)rotate(0)}8%{opacity:1}to{opacity:.9;transform:translate3d(var(--confetti-drift), 112vh, 0) rotate(var(--confetti-rotation))}}.modal-backdrop{z-index:40;background:#0f172a94;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:18px;width:min(560px,100%);padding:24px;box-shadow:0 24px 70px #0000004d}.modal h2{margin:0 0 12px}.modal p{color:#475569;line-height:1.55}.modal label{flex-direction:column;gap:7px;margin-top:16px;font-weight:700;display:flex}.modal input{border:1px solid #cbd5e1;border-radius:10px;min-height:44px;padding:10px 12px}.modal-actions{flex-wrap:wrap;gap:10px;margin-top:20px;display:flex}.install-backdrop{z-index:70}.install-modal{width:min(680px,100%);max-height:calc(100vh - 36px);overflow-y:auto}.install-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.install-heading h2{margin-top:5px}.install-kicker{color:#6d28d9;letter-spacing:.08em;text-transform:uppercase;font-size:.78rem;font-weight:900}.install-guides{gap:10px;margin-top:18px;display:grid}.install-guides article{background:#f8fafc;border:1px solid #dbe3f0;border-radius:14px;align-items:flex-start;gap:14px;padding:15px;display:flex}.install-device{color:#fff;background:linear-gradient(135deg,#2563eb,#7c3aed);border-radius:12px;flex:0 0 42px;place-items:center;width:42px;height:42px;font-size:.88rem;font-weight:900;display:grid}.apple-device{font-family:Georgia,serif;font-size:1.35rem}.install-guides h3{margin:1px 0 5px;font-size:1rem}.install-guides p{margin:0;font-size:.9rem}.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}@media (width<=900px){.settings-grid,.entry-form{grid-template-columns:1fr 1fr}.settings-grid button,.entry-form button{width:100%}.insights-grid{grid-template-columns:1fr 1fr}}@media (width<=800px){.hero{flex-direction:row}.stats{grid-template-columns:1fr 1fr}.settings-grid,.entry-form{grid-template-columns:1fr}.panel{padding:16px}.table-wrap{display:none}.entry-cards{gap:12px;display:grid}.chart{margin-inline:-8px}.recharts-legend-wrapper{font-size:.8rem}.section-head{align-items:flex-start}}@media (width<=500px){main{padding-inline:12px}.hero{gap:10px}.hero p{margin-bottom:0}.hero-actions .sync-badge{justify-content:center;width:44px;padding:10px}.hero-actions .sync-badge span{display:none}.data-drawer{padding:20px 16px}.stats,.insights-grid{grid-template-columns:1fr}.insight-wide{grid-column:auto}.button-grid button{width:100%}.modal-actions{flex-direction:column}.modal-actions button{width:100%}.toast{justify-content:space-between;top:12px;left:12px;right:12px}.celebration-overlay{padding:14px}.celebration-card{border-radius:22px}}@media (prefers-reduced-motion:reduce){.celebration-overlay,.celebration-overlay:before,.celebration-card{animation:none}.firework:before,.firework:after,.firework span,.confetti-field i{opacity:.8;animation:none}}
