:root{--bg-1: #f4fbf8;--bg-2: #e6f6ef;--panel: #ffffffcc;--text: #17322b;--muted: #4c6f65;--primary: #136f63;--primary-2: #0a8f79;--border: #bfded4;--low: #b91c1c;--high: #9a3412;--ok: #166534;--shadow: 0 18px 45px rgba(19, 111, 99, .14)}*{box-sizing:border-box}body{margin:0;font-family:Nunito,Segoe UI,sans-serif;color:var(--text);background:radial-gradient(circle at 10% 10%,#ffffff 0%,transparent 26%),radial-gradient(circle at 85% 20%,#d5f5e8 0%,transparent 22%),linear-gradient(145deg,var(--bg-1),var(--bg-2));min-height:100vh}.app-shell{width:min(1120px,94vw);margin:0 auto;padding:2.5rem 0 3rem}.topbar{display:flex;align-items:center;gap:.9rem;margin-bottom:1rem}.topbar-copy{display:flex;align-items:center;gap:.55rem}.topbar-brand-text{display:grid;gap:0}.topbar-logo{width:38px;height:38px;border-radius:10px;object-fit:cover;box-shadow:0 8px 20px #136f6333}.topbar-home{background:transparent;color:inherit;padding:0;border:0;border-radius:0;box-shadow:none}.topbar-home:hover{filter:none}.topbar-home .eyebrow{cursor:pointer}.topbar-logout{margin-left:auto}.eyebrow-sub{margin:0;color:#2f5d53;font-weight:800;letter-spacing:.02em;text-transform:none;font-size:.84rem}.section-label{margin:0;color:var(--muted);font-weight:700}.menu-toggle{width:52px;height:52px;display:grid;place-items:center;gap:.28rem;padding:.8rem;border-radius:16px;background:#ffffffd9;border:1px solid var(--border);box-shadow:var(--shadow)}.menu-toggle span{display:block;width:100%;height:3px;border-radius:999px;background:var(--primary)}.menu-drawer{display:grid;gap:.55rem;background:#ffffffd9;border:1px solid var(--border);border-radius:18px;padding:.8rem;margin-bottom:1rem;box-shadow:var(--shadow)}.menu-drawer button{text-align:left;background:#eef8f5;color:var(--text)}.menu-drawer button.active-nav{background:linear-gradient(120deg,var(--primary),var(--primary-2));color:#fff}.hero{margin-bottom:1.75rem;animation:fade-in .5s ease}.eyebrow{margin:0;color:var(--primary);font-weight:800;letter-spacing:.08em;text-transform:uppercase;font-size:.75rem}h1{margin:.25rem 0 .65rem;font-size:clamp(1.7rem,2.2vw,2.7rem);line-height:1.1}.subtitle{margin:0;color:var(--muted);max-width:68ch}.sync-status{margin:.75rem 0 0;display:inline-block;background:#fffd;border:1px solid var(--border);border-radius:999px;padding:.25rem .7rem;font-size:.82rem;color:#2f5d53;font-weight:700}.sync-error{margin:.45rem 0 0;font-size:.8rem;color:#8b1d1d;background:#fff1f1;border:1px solid #f8c7c7;border-radius:8px;padding:.4rem .55rem;max-width:96ch}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:1rem}.panel{background:var(--panel);border:1px solid var(--border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:16px;padding:1rem;margin-bottom:1rem;box-shadow:var(--shadow);animation:rise .45s ease}.auth-panel{max-width:520px;margin:2.2rem auto}.auth-form{display:grid;gap:.8rem;margin-top:.8rem}.auth-panel .sync-error{margin-top:.8rem}.section-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.section-header h2{margin-bottom:0}.action-panel,.measurement-panel{margin-bottom:1rem}h2{margin:0 0 .8rem;font-size:1.05rem}.form{display:grid;gap:.75rem}.daypart-group{border:1px solid var(--border);border-radius:12px;padding:.6rem .7rem;display:grid;gap:.45rem}.daypart-group legend{font-weight:800;font-size:.88rem;padding:0 .2rem}.daypart-group label{display:flex;align-items:center;gap:.5rem;font-size:.88rem;font-weight:700}.daypart-group input{width:auto}.daypart-hint{margin:.2rem 0 0;color:var(--muted);font-size:.8rem}.form-error{margin:0;color:#8b1d1d;background:#fff1f1;border:1px solid #f8c7c7;border-radius:10px;padding:.5rem .6rem;font-size:.82rem;font-weight:700}.form-warning{margin:0;color:#7a4b00;background:#fff7e8;border:1px solid #f3d9a0;border-radius:10px;padding:.5rem .6rem;font-size:.8rem;font-weight:700}label{display:grid;gap:.35rem;font-weight:700;font-size:.88rem}input,textarea,button{font:inherit}input,textarea{width:100%;border:1px solid var(--border);border-radius:10px;padding:.55rem .65rem;background:#fff;color:var(--text)}input:focus,textarea:focus{outline:2px solid #52d3b9;border-color:transparent}input:disabled,textarea:disabled{background:#eef4f2;color:#6d827a;border-color:#d3e4de;cursor:not-allowed}.readonly-field{font-weight:800;letter-spacing:.01em}button{border:0;border-radius:999px;padding:.65rem 1rem;font-weight:800;background:linear-gradient(120deg,var(--primary),var(--primary-2));color:#fff;cursor:pointer}button:hover{filter:brightness(1.04)}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.card{border:1px solid var(--border);border-radius:12px;background:#fffe;padding:.75rem}.card h3{margin:0 0 .4rem;font-size:.82rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.card p{margin:0;font-size:1.25rem;font-weight:900}.alert-low p{color:var(--low)}.alert-high p{color:var(--high)}.chart-wrap{overflow-x:auto}svg{width:100%;min-width:680px;height:auto}.chart-bg{fill:#f8fffc}.axis{stroke:#8db8ad;stroke-width:1}.grid-line{stroke:#e2f0ea;stroke-width:1}.range-line{stroke:#bdded3;stroke-width:1;stroke-dasharray:5 5}.trend{fill:none;stroke:#0d7f6e;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.dot{fill:#0d7f6e;stroke:#fff;stroke-width:1.5}.chart-label{fill:#5a786f;font-size:11px;font-weight:700}.chart-label-axis{fill:#2f5d53}.range-label{fill:#0d7f6e;font-size:11px;font-weight:800}.empty,.welcome{margin:0;color:var(--muted)}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:780px}th,td{padding:.6rem .45rem;border-bottom:1px solid #d9ece5;text-align:left;vertical-align:top;font-size:.9rem}th{color:#426a60;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}.pill{border-radius:999px;padding:.2rem .5rem;font-weight:800;font-size:.78rem;border:1px solid}.pill.low{color:var(--low);background:#fef2f2;border-color:#fecaca}.pill.high{color:var(--high);background:#fff7ed;border-color:#fed7aa}.pill.in-range{color:var(--ok);background:#f0fdf4;border-color:#bbf7d0}button.ghost{background:transparent;color:var(--primary);border:1px solid var(--border);padding:.35rem .7rem}.target-settings,.settings-list{display:grid;gap:.75rem}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:.8rem;border:1px solid var(--border);border-radius:12px;padding:.75rem;background:#ffffffea}.setting-row h3,.setting-row p{margin:0}.setting-row p{margin-top:.2rem;color:var(--muted);font-size:.82rem}.settings-readonly-note{margin:0 0 .8rem;font-size:.82rem;color:#7a4b00;background:#fff7e8;border:1px solid #f3d9a0;border-radius:10px;padding:.5rem .65rem;font-weight:700}.setting-actions{display:flex;align-items:center;gap:.5rem}.setting-actions input{width:120px}.setting-input-number{text-align:right}.setting-input-date{width:180px!important}.setting-input-string{width:360px!important}.save-button{min-width:120px;position:relative;overflow:hidden;transition:filter .2s ease,opacity .2s ease,transform .2s ease}.save-button:disabled{background:linear-gradient(120deg,#b8c8c2,#a7b8b2);color:#edf2ef;cursor:not-allowed;filter:none}.save-button:disabled:hover{filter:none}.save-button-label,.save-button-check{display:inline-block;transition:opacity .2s ease,transform .2s ease}.save-button-check{position:absolute;left:50%;top:50%;transform:translate(-50%,-20%) scale(.7);opacity:0;font-size:1rem;font-weight:900}.save-button.is-saved{background:linear-gradient(120deg,#0e9f6e,#2fbf92);animation:save-success-pulse 2s ease}.save-button.is-saved .save-button-label{opacity:0;transform:translateY(-6px)}.save-button.is-saved .save-button-check{animation:save-check-appear 2s ease forwards}.reminder-form{display:grid;gap:.7rem}.reminder-form label{min-width:0}.reminder-form input[type=time]{width:100%;max-width:100%;min-width:0}.reminder-list{list-style:none;margin:.9rem 0 0;padding:0;display:grid;gap:.6rem}.reminder-list li{display:flex;justify-content:space-between;align-items:center;gap:.6rem;border:1px solid var(--border);border-radius:10px;padding:.5rem .6rem;background:#ffffffea}.reminder-list li strong{display:inline-block;margin-right:.4rem}.row-actions{display:flex;gap:.4rem}.reminder-switch-wrap{display:inline-flex;align-items:center;gap:.45rem;cursor:pointer;-webkit-user-select:none;user-select:none}.reminder-switch-text{min-width:46px;font-size:.8rem;font-weight:800;color:#356359}.reminder-switch-input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.reminder-switch{width:44px;height:24px;border-radius:999px;background:#cad8d3;border:1px solid #afc2bc;position:relative;transition:background-color .2s ease}.reminder-switch:after{content:"";position:absolute;left:3px;top:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0003;transition:transform .2s ease}.reminder-switch-input:checked+.reminder-switch{background:#0d7f6e;border-color:#0d7f6e}.reminder-switch-input:checked+.reminder-switch:after{transform:translate(20px)}.reminder-switch-input:focus-visible+.reminder-switch{outline:2px solid #52d3b9;outline-offset:2px}.export-panel{display:flex;justify-content:space-between;gap:.8rem;align-items:center;flex-wrap:wrap}.export-panel p{margin:0;color:var(--muted)}@media (max-width: 900px){.grid,.cards{grid-template-columns:1fr}.app-shell{padding-top:1.2rem}.section-header,.reminder-list li{align-items:flex-start;flex-direction:column}.row-actions{width:100%;flex-wrap:wrap}.row-actions>*{flex:1 1 auto}.setting-row{flex-direction:column;align-items:stretch}.setting-actions{width:100%;flex-wrap:wrap}.setting-actions input{width:100%;max-width:100%;min-width:0}.setting-input-date,.setting-input-number,.setting-input-string{width:100%!important}.save-button{width:100%}}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes rise{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@keyframes save-success-pulse{0%{transform:scale(1)}12%{transform:scale(1.03)}24%{transform:scale(1)}to{transform:scale(1)}}@keyframes save-check-appear{0%{opacity:0;transform:translate(-50%,-20%) scale(.7)}10%{opacity:1;transform:translate(-50%,-50%) scale(1)}80%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-60%) scale(.85)}}
