:root{--bg: #0f1117;--surface: #1a202c;--surface2: #171d28;--surface3: #1a1f2e;--surface4: #16213e;--border: #2d3748;--border-light: rgba(45,55,72,.19);--border-semi: rgba(45,55,72,.31);--text: #e2e8f0;--text-bright: #f7fafc;--text-muted: #8a9ab0;--text-dim: #667888;--text-secondary: #a0aec0;--accent: #63b3ed;--accent-bg: #1e3350;--cal-data-bg: #182233;--cal-data-text: #c8d8ea;--cal-data-border:#2a4060;--cal-today-bd: #4a90d9;--cal-today-bg: #1c3260;--cal-sel-bd: #48bb78;--cal-sel-bg: #1a3328;--mtoday-bg: #1a2c4a;--done-bd: #276749;--nodata-bg: #151a24;--nodata-text: #3a4558;--nodata-bd: #222a38;--pill-bg: #1e293b;--pill-paused-bg: #1a0e0e;--pill-paused-bd: #742a2a;--pill-paused-tx: #fc8181;--pill-hi-bg: #1a243a;--pill-hi-bd: rgba(43,108,176,.25);--pill-hi-tx: #90cdf4;--note-tag-bg: #1a3350;--warn-bg: rgba(60,32,5,.25);--warn-bd: rgba(192,83,16,.25);--warn-tx: #f6ad55;--warn-slot-bd: rgba(116,42,42,.13);--warn-slot-tx: #f6ad55;--weight-tx: #f6e05e;--protein-tx: #68d391;--cal-today-tx: #fff;--cal-sel-tx: #fff;--empty-slot-tx: #3a4558;--taken-diclo-bg: #2b4c7e;--taken-clar1-bg: #7b4f1a;--taken-clar2-bg: #1c4532;--btn-hover-bg: #1f2937;--btn-bd: #374151;--accent-soft: #1e3350;--danger: #fc8181;--success: #48bb78;--warning: #ed8936;color-scheme:dark}body.theme-light{--bg: #f2ede3;--surface: #e8e2d4;--surface2: #dfd9cb;--surface3: #ede8dc;--surface4: #e0dace;--border: #bdb5a2;--border-light: rgba(120,105,80,.15);--border-semi: rgba(120,105,80,.22);--text: #2a2010;--text-bright: #1a1208;--text-muted: #5a5040;--text-dim: #7e7060;--text-secondary: #625448;--accent: #2e5f8a;--accent-bg: #d0dde8;--cal-data-bg: #dce8d4;--cal-data-text: #2a3820;--cal-data-border:#8aaa78;--cal-today-bd: #3a6a96;--cal-today-bg: #c4d8e8;--cal-sel-bd: #5a8a48;--cal-sel-bg: #d0e8c8;--mtoday-bg: #c8d8e8;--done-bd: #5a8a48;--nodata-bg: #d6d0c4;--nodata-text: #9a9080;--nodata-bd: #c0b8a8;--pill-bg: #d5cfc2;--pill-paused-bg: #f0dbd4;--pill-paused-bd: #b86858;--pill-paused-tx: #7a2810;--pill-hi-bg: #c8dce8;--pill-hi-bd: #7aaac8;--pill-hi-tx: #1a4a6a;--note-tag-bg: #d0dde8;--warn-bg: rgba(160,100,20,.12);--warn-bd: rgba(160,90,10,.3);--warn-tx: #7a4a10;--warn-slot-bd: rgba(180,80,30,.18);--warn-slot-tx: #8a4800;--weight-tx: #8a5a10;--protein-tx: #276749;--cal-today-tx: #1a3050;--cal-sel-tx: #1a3a20;--empty-slot-tx: #9a9080;--taken-diclo-bg: #4a80b8;--taken-clar1-bg: #b87828;--taken-clar2-bg: #4a8858;--btn-hover-bg: var(--surface2);--btn-bd: var(--border);--accent-soft: #d0dde8;--danger: #c53030;--success: #276749;--warning: #b7791f;color-scheme:light}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent)}h1,h2,h3{margin:0}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}@media (max-width: 700px){input,select,textarea{font-size:16px!important}}.theme-btn{padding:5px 12px;border-radius:7px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:.72rem;font-weight:600;cursor:pointer;transition:all .15s}.theme-btn:hover{border-color:var(--accent);color:var(--text)}.theme-btn.active{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:1rem}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:2.5rem 2rem;width:100%;max-width:420px;box-shadow:0 4px 24px #00000014}.auth-logo{font-size:1.8rem;font-weight:700;text-align:center;margin:0 0 .25rem;color:var(--text);letter-spacing:-.5px}.auth-logo span{color:var(--accent)}.auth-subtitle{text-align:center;color:var(--text-muted);font-size:.875rem;margin:0 0 1.75rem}.auth-form{display:flex;flex-direction:column;gap:1rem}.auth-form label{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:500;color:var(--text-muted)}.auth-form input,.auth-form select{padding:.6rem .85rem;border:1px solid var(--border);border-radius:7px;background:var(--bg);color:var(--text);font-size:.95rem;outline:none;transition:border-color .15s}.auth-form input:focus,.auth-form select:focus{border-color:var(--accent)}.auth-role-group{border:1px solid var(--border);border-radius:7px;padding:.75rem 1rem;display:flex;gap:1rem}.auth-role-group legend{font-size:.8rem;color:var(--text-muted);padding:0 .25rem}.auth-radio{display:flex;align-items:center;gap:.4rem;font-size:.9rem;color:var(--text);cursor:pointer}.auth-consent{display:flex;align-items:flex-start;gap:.5rem;font-size:.8rem;color:var(--text-muted);font-weight:400;line-height:1.4}.auth-consent input[type=checkbox]{margin-top:.15rem;flex-shrink:0;width:auto}.auth-consent a{color:var(--accent)}.auth-error{color:var(--danger, #e53e3e);font-size:.85rem;padding:.4rem .75rem;background:#e53e3e14;border-radius:6px;margin:0}.auth-btn{margin-top:.5rem;padding:.7rem;background:var(--accent);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:opacity .15s}.auth-btn:disabled{opacity:.6;cursor:not-allowed}.auth-btn:hover:not(:disabled){opacity:.9}.auth-footer{text-align:center;margin-top:1.25rem;font-size:.875rem;color:var(--text-muted)}.auth-footer a{color:var(--accent);text-decoration:none}.user-menu{position:relative;flex-shrink:0}.user-menu-btn{padding:5px 12px;border-radius:7px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:.72rem;font-weight:600;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:4px}.user-menu-btn:hover,.user-menu-btn.open{border-color:var(--accent);color:var(--text)}.user-menu-caret{font-size:.6rem;opacity:.7}.user-menu-dropdown{position:absolute;right:0;top:calc(100% + 6px);min-width:170px;z-index:100;background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:5px;box-shadow:0 8px 24px #00000059}body.theme-light .user-menu-dropdown{box-shadow:0 8px 24px #3c2d142e}.user-menu-item{display:block;width:100%;text-align:left;padding:8px 10px;border:none;border-radius:6px;background:none;color:var(--text);font-size:.78rem;font-weight:600;cursor:pointer;transition:background .12s;white-space:nowrap}.user-menu-item:hover{background:var(--btn-hover-bg);color:var(--text-bright)}.user-menu-item.danger{color:var(--pill-paused-tx)}.user-menu-item.danger:hover{background:var(--pill-paused-bg)}.user-menu-sep{height:1px;background:var(--border);margin:4px 6px}.ht-app{min-height:100vh;background:var(--bg);color:var(--text);display:flex;flex-direction:column}.ht-header{background:linear-gradient(135deg,var(--surface3),var(--surface4));border-bottom:1px solid var(--border);padding:16px 28px;display:flex;align-items:center;justify-content:space-between}.ht-header h1{font-size:1.2rem;font-weight:700;color:var(--text-bright)}.ht-header p{font-size:.75rem;color:var(--text-muted);margin:2px 0 0}.ht-header-actions{display:flex;gap:6px;flex-shrink:0;align-items:center}.ht-user-btn{padding:5px 12px;border-radius:7px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:.72rem;font-weight:600;cursor:pointer;transition:all .15s}.ht-user-btn:hover{border-color:var(--accent);color:var(--text)}.tab-bar{display:flex;background:var(--surface3);border-bottom:1px solid var(--border);padding:0;overflow-x:auto}.tab-btn{padding:12px 22px;background:none;border:none;color:var(--text-muted);font-size:.82rem;font-weight:600;white-space:nowrap;border-bottom:2px solid transparent;transition:all .15s}.tab-btn:hover{color:var(--text)}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-panel{display:none}.tab-panel.active{display:flex;height:calc(100vh - 96px);overflow:hidden}.cal-panel{width:240px;flex-shrink:0;border-right:1px solid var(--border);padding:16px 12px;overflow-y:auto}.content-panel{flex:1;padding:20px 24px;overflow-y:auto}.content-panel>*{max-width:900px;margin-left:auto;margin-right:auto}.cal-month-title{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin-bottom:6px}.cal-month-title:not(:first-child){margin-top:14px}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px}.cal-day-hdr{text-align:center;font-size:.58rem;color:var(--text-dim);padding:2px 0;font-weight:700}.cal-cell{height:28px;border-radius:5px;border:1px solid transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.72rem;cursor:default;transition:all .1s}.cal-cell.empty{background:transparent;border:none}.cal-cell.no-data{background:var(--nodata-bg);color:var(--nodata-text);border-color:var(--nodata-bd);opacity:.6;cursor:pointer}.cal-cell.no-data:hover{border-color:var(--accent);opacity:.9}.cal-cell.has-data{background:var(--cal-data-bg);color:var(--cal-data-text);border-color:var(--cal-data-border);cursor:pointer}.cal-cell.has-data:hover{border-color:var(--accent);background:var(--accent-bg);color:var(--cal-today-tx)}.cal-cell.today{border-color:var(--cal-today-bd)!important;background:var(--cal-today-bg)!important;color:var(--cal-today-tx)!important}.cal-cell.selected{border-color:var(--cal-sel-bd)!important;background:var(--cal-sel-bg)!important;color:var(--cal-sel-tx)!important}.cal-num{font-weight:600;font-size:.72rem;line-height:1}.cal-dot{width:3px;height:3px;background:#63b3ed;border-radius:50%;margin-top:2px}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-bottom:12px}.card-title{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:10px}.warn-banner{background:var(--warn-bg);border:1px solid var(--warn-bd);border-radius:8px;padding:9px 14px;font-size:.75rem;color:var(--warn-tx);margin-bottom:16px;display:flex;align-items:center;gap:8px}.section-title{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:8px;margin-top:16px}.macros-row{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:12px}.macro-box{background:var(--surface2);border-radius:8px;padding:10px 8px;text-align:center}.macro-pct{font-size:1.5rem;font-weight:700;line-height:1.1}.macro-pct span{font-size:.9rem;font-weight:600}.macro-sub{font-size:.75rem;color:var(--text-muted);margin-top:4px}.macro-lbl{font-size:.58rem;color:var(--text-muted);margin-top:4px;text-transform:uppercase}.macro-bar{height:3px;border-radius:2px;margin-top:5px}.fdb-toolbar{display:flex;gap:10px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.fdb-search{flex:1;min-width:180px;padding:7px 12px;border-radius:8px;border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:.82rem;outline:none}.fdb-search:focus{border-color:var(--accent)}.fdb-cats{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.fdb-cat{padding:4px 10px;border-radius:20px;border:1px solid var(--border);background:var(--surface2);color:var(--text-muted);font-size:.7rem;cursor:pointer}.fdb-cat:hover{border-color:var(--accent);color:var(--accent)}.fdb-cat.active{background:var(--accent);border-color:var(--accent);color:#fff}.fdb-table{width:100%;border-collapse:collapse;font-size:.8rem}.fdb-table thead tr{position:sticky;top:-20px;background:var(--bg);z-index:1}.fdb-table th{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;text-align:right;padding:6px 10px 8px;border-bottom:2px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.fdb-table th:first-child{text-align:left}.fdb-table th.sorted{color:var(--accent)}.fdb-table td{text-align:right;padding:8px 10px;border-bottom:1px solid var(--border-light);color:var(--text)}.fdb-table td:first-child{text-align:left;font-weight:600;color:var(--text-bright)}.fdb-table td:nth-child(2){color:var(--text-muted);font-size:.72rem}.fdb-table tr:hover td{background:var(--surface2)}.fdb-table .td-p{color:var(--protein-tx);font-weight:600}.fdb-table .td-c{color:var(--accent);font-weight:600}.fdb-table .td-f{color:var(--weight-tx);font-weight:600}.fdb-empty{color:var(--text-muted);font-size:.82rem;padding:20px 0;text-align:center}.meas-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border-light)}.meas-row:last-child{border-bottom:none}.meas-label{font-size:.8rem;color:var(--text-muted)}.meas-val{font-size:.9rem;font-weight:700;color:var(--text-bright)}.meas-delta{font-size:.72rem;font-weight:400;margin-left:6px}.meas-hist-table{width:100%;border-collapse:collapse;font-size:.75rem;margin-top:4px}.meas-hist-table th{font-size:.62rem;color:var(--text-muted);text-transform:uppercase;text-align:right;padding:4px 6px;border-bottom:1px solid var(--border)}.meas-hist-table th:first-child{text-align:left}.meas-hist-table td{text-align:right;padding:5px 6px;border-bottom:1px solid var(--border-light);color:var(--text)}.meas-hist-table td:first-child{text-align:left;color:var(--text-muted)}.bw-table{width:100%;border-collapse:collapse;font-size:.78rem;margin-top:4px}.bw-table th{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;text-align:left;padding:4px 8px;border-bottom:1px solid var(--border);white-space:nowrap}.bw-table th:nth-child(2),.bw-table th:nth-child(3){text-align:right}.bw-table td{padding:5px 8px;border-bottom:1px solid var(--border-light);vertical-align:middle}.bw-table tr:last-child td{border-bottom:none}.bw-table td:nth-child(2){text-align:right;font-weight:700}.bw-table td:nth-child(3){text-align:right;font-size:.72rem;color:var(--text-muted)}.bw-ok{color:var(--protein-tx)}.bw-bad{color:#fc8181}.bw-warn{color:var(--weight-tx)}.bw-dev{font-weight:700;font-size:.8rem}.sleep-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.sleep-item{text-align:center}.sleep-val{font-size:.95rem;font-weight:700}.sleep-lbl{font-size:.6rem;color:var(--text-muted);margin-top:2px;text-transform:uppercase}.meal-card{background:var(--surface2);border-left:3px solid var(--border);border-radius:0 7px 7px 0;padding:10px 12px;margin-bottom:7px}.meal-time{font-size:.65rem;color:var(--text-dim);margin-bottom:2px}.meal-name{font-size:.85rem;font-weight:600;margin-bottom:4px}.meal-items{font-size:.72rem;color:var(--text-secondary);margin-bottom:5px}.meal-macros{display:flex;gap:8px;font-size:.65rem}.meal-macros .mp{color:var(--protein-tx)}.meal-macros .mc{color:var(--accent)}.meal-macros .mf{color:var(--weight-tx)}.meal-macros .mk{color:#fc8181}.workout-inline{background:var(--surface2);border-radius:9px;padding:12px;margin-bottom:12px}.workout-inline-title{font-size:.82rem;font-weight:600;margin-bottom:7px}.exercise-table{width:100%;border-collapse:collapse;font-size:.75rem}.exercise-table th{color:var(--text-muted);text-align:left;padding:3px 6px;font-size:.6rem;text-transform:uppercase}.exercise-table td{padding:4px 6px;border-top:1px solid var(--border-light)}.exercise-table tr:first-child td{border-top:none}.note-tag{background:var(--note-tag-bg);color:var(--accent);font-size:.7rem;padding:5px 9px;border-radius:6px;margin-top:7px}.workout-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-bottom:10px;position:relative}.workout-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px 0 0 3px;background:#4299e1}.workout-date{font-size:.68rem;color:var(--text-muted);margin-bottom:3px}.workout-name{font-size:.9rem;font-weight:700;margin-bottom:9px}.empty-day{color:var(--text-muted);font-size:.82rem;padding:20px 0;text-align:center}.sup-day-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 16px;margin-bottom:10px}.sup-day-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.sup-day-title{font-size:.85rem;font-weight:600}.sup-pills{display:flex;flex-wrap:wrap;gap:5px}.sup-pill{display:inline-flex;align-items:center;gap:4px;background:var(--pill-bg);border:1px solid var(--border);border-radius:16px;padding:3px 9px;font-size:.7rem;color:var(--text-secondary)}.sup-pill.paused{border-color:var(--pill-paused-bd);color:var(--pill-paused-tx);background:var(--pill-paused-bg)}.sup-pill.highlight{border-color:var(--pill-hi-bd);color:var(--pill-hi-tx);background:var(--pill-hi-bg)}.prog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px}.prog-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:13px}.prog-card.med-c0{border-top:3px solid #4299e1}.prog-card.med-c1{border-top:3px solid #ed8936}.prog-card.med-c2{border-top:3px solid #48bb78}.prog-name{font-size:.78rem;font-weight:700;color:var(--text-bright);margin-bottom:2px}.prog-sub{font-size:.62rem;color:var(--text-muted);line-height:1.5;margin-bottom:8px}.prog-track{height:5px;background:var(--border);border-radius:3px;overflow:hidden;margin-bottom:5px}.prog-fill{height:100%;border-radius:3px;transition:width .4s}.med-c0 .prog-fill{background:#4299e1}.med-c1 .prog-fill{background:#ed8936}.med-c2 .prog-fill{background:#48bb78}.prog-label{font-size:.65rem;color:var(--text-secondary)}.day-card{background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:11px 14px;margin-bottom:6px;display:flex;align-items:center;gap:14px}.day-card.mtoday{border-color:#4299e1;background:var(--mtoday-bg)}.day-card.past{opacity:.75}.day-card.mselected{border-color:var(--cal-sel-bd)!important;box-shadow:0 0 0 1px #48bb7830}.day-card.all-done:not(.mtoday){border-color:var(--done-bd)}.day-info{min-width:110px;flex-shrink:0}.day-name{font-size:.8rem;font-weight:600;color:var(--text)}.day-sub{font-size:.62rem;color:var(--text-muted);margin-top:2px}.today-tag{display:inline-block;background:#4299e1;color:#fff;font-size:.55rem;font-weight:700;padding:1px 5px;border-radius:7px;margin-left:5px;vertical-align:middle}.doses-wrap{display:flex;align-items:center;gap:5px;flex-wrap:wrap;flex:1}.med-group{display:flex;align-items:center;gap:3px}.med-group-lbl{font-size:.58rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;margin-right:2px}.vsep{width:1px;height:26px;background:var(--border);margin:0 3px;flex-shrink:0}.dose-btn{display:flex;align-items:center;gap:4px;padding:5px 10px;border-radius:7px;border:1px solid var(--btn-bd);background:transparent;color:var(--text-muted);font-size:.7rem;cursor:pointer;transition:all .15s;white-space:nowrap}.dose-btn:hover{border-color:var(--text-dim);color:var(--text-secondary);background:var(--btn-hover-bg)}.dose-btn.taken{border-color:transparent;color:#fff;font-weight:600}.dose-btn.med-c0.taken{background:var(--taken-diclo-bg)}.dose-btn.med-c1.taken{background:var(--taken-clar1-bg)}.dose-btn.med-c2.taken{background:var(--taken-clar2-bg)}.dose-btn.missed{border-color:#742a2a;color:#fc8181}.sup-slot-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin-bottom:8px}.sup-slot-title{font-size:.7rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.sleep-score-ring{width:80px;height:80px;border-radius:50%;border:5px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0;position:relative}.sleep-score-num{font-size:1.5rem;font-weight:800;line-height:1}.sleep-score-lbl{font-size:.55rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}.sleep-score-ring.score-good{border-color:#48bb78}.sleep-score-ring.score-ok{border-color:#ed8936}.sleep-score-ring.score-poor{border-color:#fc8181}.sleep-summary-row{display:flex;align-items:center;gap:18px;margin-bottom:14px}.sleep-summary-info{flex:1}.sleep-times{font-size:1rem;font-weight:700;color:var(--text-bright);margin-bottom:3px}.sleep-duration-big{font-size:.82rem;color:var(--text-secondary)}.sleep-stages-row{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-bottom:14px}.sleep-stage-box{border-radius:9px;padding:10px 8px;text-align:center;border:1px solid var(--border)}.sleep-stage-box.s-light{background:#63b3ed1f;border-color:#63b3ed4d}.sleep-stage-box.s-deep{background:#9f7aea1f;border-color:#9f7aea59}.sleep-stage-box.s-rem{background:#48bb781f;border-color:#48bb784d}.sleep-stage-box.s-inter{background:#f6ad551a;border-color:#f6ad554d}.sleep-stage-val{font-size:.95rem;font-weight:700;color:var(--text-bright)}.sleep-stage-lbl{font-size:.58rem;color:var(--text-muted);margin-top:3px;text-transform:uppercase;letter-spacing:.04em}.sleep-stage-color{width:8px;height:8px;border-radius:50%;margin:0 auto 5px}.s-light .sleep-stage-color{background:#63b3ed}.s-deep .sleep-stage-color{background:#9f7aea}.s-rem .sleep-stage-color{background:#48bb78}.s-inter .sleep-stage-color{background:#f6ad55}.sleep-comp-bar{height:10px;border-radius:5px;display:flex;overflow:hidden;margin-bottom:6px;gap:1px}.sleep-comp-seg{height:100%;transition:width .4s}.sleep-comp-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.62rem;color:var(--text-muted);margin-bottom:14px}.sleep-comp-legend span{display:flex;align-items:center;gap:4px}.sleep-comp-legend span:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%}.sleep-comp-legend .leg-light:before{background:#63b3ed}.sleep-comp-legend .leg-deep:before{background:#9f7aea}.sleep-comp-legend .leg-rem:before{background:#48bb78}.sleep-comp-legend .leg-inter:before{background:#f6ad55}.sleep-trend-row{display:flex;flex-direction:column;gap:4px}.sleep-trend-item{display:flex;align-items:center;gap:8px;cursor:pointer;border-radius:6px;padding:3px 5px;transition:background .1s}.sleep-trend-item:hover{background:var(--surface2)}.sleep-trend-item.selected{background:var(--cal-sel-bg)}.sleep-trend-date{font-size:.65rem;color:var(--text-muted);width:38px;flex-shrink:0;text-align:right}.sleep-trend-bar-wrap{flex:1;height:14px;background:var(--surface2);border-radius:4px;overflow:hidden}.sleep-trend-bar{height:100%;border-radius:4px;min-width:2px;transition:width .4s}.sleep-trend-score{font-size:.65rem;color:var(--text-muted);width:28px;text-align:right;flex-shrink:0}.sleep-trend-dur{font-size:.65rem;color:var(--text-secondary);width:38px;text-align:right;flex-shrink:0}body.theme-light .sleep-stage-box.s-light{background:#2e5f8a14;border-color:#2e5f8a40}body.theme-light .sleep-stage-box.s-deep{background:#6446b414;border-color:#6446b440}body.theme-light .sleep-stage-box.s-rem{background:#32825014;border-color:#32825040}body.theme-light .sleep-stage-box.s-inter{background:#a0641414;border-color:#a0641440}.ht-loading{display:flex;align-items:center;justify-content:center;padding:60px 0;color:var(--text-muted);font-size:.85rem}.ht-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:16px}body.theme-light .ht-modal-overlay{background:#3c2d1459}.ht-modal{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:18px 20px;width:100%;max-width:460px;max-height:90vh;overflow-y:auto;box-shadow:0 16px 48px #0006}.ht-modal-title{font-size:.8rem;font-weight:700;color:var(--text-bright);text-transform:uppercase;letter-spacing:.06em;margin-bottom:14px}.ht-modal-sub{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin:12px 0 8px}.ht-modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ht-field{display:flex;flex-direction:column;gap:4px}.ht-field span{font-size:.68rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.ht-field input,.ht-food-row select,.ht-food-row input{padding:7px 10px;border-radius:7px;border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:.82rem;outline:none}.ht-field input:focus,.ht-food-row select:focus,.ht-food-row input:focus{border-color:var(--accent)}.ht-food-row{display:flex;gap:6px;margin-bottom:8px;align-items:center;flex-wrap:wrap}.ht-food-row select{flex:1;min-width:140px}.ht-food-row input{width:70px;flex-shrink:0}.ht-food-row select.ht-qty{flex:0 0 auto;min-width:58px;width:58px}.ht-food-row select.ht-unit{flex:0 0 auto;min-width:56px;width:56px}.ht-grams-hint{font-size:.68rem;color:var(--text-muted);flex-shrink:0}.ht-qty-incomplete,.ht-food-row-incomplete select.ht-qty{border-color:var(--warn-bd)!important;background:var(--warn-bg)}.ht-row-incomplete-hint{color:var(--warn-tx);flex-shrink:0;display:inline-flex;align-items:center}.ht-row-del{border:1px solid var(--border);background:none;color:var(--pill-paused-tx);border-radius:7px;padding:6px 8px;line-height:1;flex-shrink:0}.ht-row-del:hover{border-color:var(--pill-paused-bd);background:var(--pill-paused-bg)}.ht-add-row{border:1px dashed var(--border);background:none;color:var(--accent);border-radius:7px;padding:6px 12px;font-size:.74rem;font-weight:600;width:100%}.ht-add-row:hover{border-color:var(--accent);background:var(--accent-bg)}.ht-modal-macros{display:flex;gap:14px;font-size:.74rem;font-weight:700;background:var(--surface2);border-radius:8px;padding:9px 12px;margin:12px 0}.ht-modal-actions{display:flex;justify-content:flex-end;gap:8px}.ht-btn{padding:7px 16px;border-radius:7px;border:1px solid var(--border);background:var(--surface2);color:var(--text-secondary);font-size:.78rem;font-weight:600;transition:all .15s}.ht-btn:hover{border-color:var(--text-dim);color:var(--text)}.ht-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.ht-btn.primary:hover{opacity:.9}.ht-btn:disabled{opacity:.55;cursor:default}.ht-ex-head,.ht-ex-row{display:grid;grid-template-columns:1fr 58px 90px 100px 30px;gap:6px;align-items:center;margin-bottom:6px}.ht-ex-head{margin-bottom:4px}.ht-ex-head span{font-size:.62rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.ht-ex-row input{padding:6px 8px;border-radius:7px;border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:.78rem;outline:none;min-width:0}.ht-ex-row input:focus{border-color:var(--accent)}.ht-combo{position:relative;display:flex;flex-direction:column;min-width:0}.ht-combo input{width:100%;box-sizing:border-box}.ht-combo-list{position:absolute;top:calc(100% + 3px);left:0;right:0;z-index:10;margin:0;padding:4px;list-style:none;max-height:200px;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:7px;box-shadow:0 8px 24px #00000059}.ht-combo-list li{padding:6px 8px;border-radius:5px;cursor:pointer;font-size:.8rem;color:var(--text)}.ht-combo-list li.selected{color:var(--accent);font-weight:600}.ht-combo-list li.active{background:var(--surface2)}.ht-manual-row{display:flex;gap:6px;margin-bottom:8px;align-items:center;flex-wrap:wrap}.ht-manual-row input{padding:6px 8px;border-radius:7px;border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:.78rem;outline:none;min-width:0}.ht-manual-row input:focus{border-color:var(--accent)}.ht-manual-row .ht-manual-name{flex:1;min-width:140px}.ht-manual-row input[type=number]{width:62px;flex:0 0 auto}.ht-add-row-group{display:flex;gap:8px}.ht-add-row-group .ht-add-row{flex:1;width:auto}@media (max-width: 700px){.ht-manual-row .ht-manual-name{flex:1 1 100%}.ht-manual-row input[type=number]{width:72px}.ht-manual-row .ht-row-del{margin-left:auto}}.ht-card-actions{display:flex;gap:4px;flex-shrink:0}.ht-icon-btn{border:1px solid var(--border);background:none;color:var(--text-muted);border-radius:6px;padding:3px 6px;line-height:1;transition:all .15s}.ht-icon-btn:hover{border-color:var(--accent);color:var(--accent)}.ht-icon-btn.danger:hover{border-color:var(--pill-paused-bd);color:var(--pill-paused-tx);background:var(--pill-paused-bg)}.ht-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ht-section-head .card-title{margin-bottom:0}.ht-add-btn{border:1px solid var(--border);background:var(--surface);color:var(--accent);border-radius:7px;padding:4px 10px;font-size:.72rem;font-weight:600;transition:all .15s}.ht-add-btn:hover{border-color:var(--accent);background:var(--accent-bg)}@media (max-width: 700px){.ht-food-row>select:first-child{flex:1 1 100%}.ht-food-row input{width:84px}.ht-food-row select.ht-qty{min-width:74px;width:74px}.ht-food-row select.ht-unit{min-width:72px;width:72px}.ht-food-row .ht-row-del{margin-left:auto}.ht-ex-head{display:none}.ht-ex-row{grid-template-columns:72px 1fr 1fr 34px}.ht-ex-row input:first-child{grid-column:1 / -1}}@media (max-width: 700px){.tab-panel.active{flex-direction:column;height:auto;overflow:auto}.cal-panel{width:100%;border-right:none;border-bottom:1px solid var(--border);padding:12px}.content-panel{padding:16px}.macros-row{grid-template-columns:repeat(2,1fr)}.prog-grid{grid-template-columns:1fr}.day-card{flex-direction:column;align-items:flex-start;gap:8px}}.dashboard{min-height:100vh;background:var(--bg);color:var(--text)}.dash-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:10}.dash-brand{font-size:1.4rem;font-weight:700;margin:0}.dash-brand span{color:var(--accent)}.dash-user{display:flex;align-items:center;gap:.75rem}.dash-name{font-size:.9rem;color:var(--text-muted)}.dash-role-badge{font-size:.7rem;padding:.2rem .5rem;border-radius:999px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.dash-role-badge.person{background:var(--accent-soft, #e8f4fd);color:var(--accent)}.dash-role-badge.professional{background:#f0fdf4;color:#16a34a}.dash-logout{font-size:.8rem;padding:.3rem .7rem;background:transparent;border:1px solid var(--border);border-radius:6px;cursor:pointer;color:var(--text-muted)}.dash-logout:hover{background:var(--bg)}.dash-main{max-width:900px;margin:0 auto;padding:2rem 1rem}.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem}.dash-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;padding:1.75rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;cursor:pointer;transition:border-color .15s,box-shadow .15s;text-decoration:none;color:var(--text)}.dash-tile:hover{border-color:var(--accent);box-shadow:0 2px 12px #0000000f}.dash-tile-icon{font-size:2.2rem;color:var(--accent);line-height:1;min-height:30px}.dash-tile-label{font-size:.9rem;font-weight:600}.dash-pro{text-align:center;padding:3rem 1rem}.dash-pro h2{margin-bottom:.5rem}.dash-pro-hint{color:var(--text-muted);margin-bottom:1.5rem}.dash-btn-primary{padding:.7rem 1.5rem;background:var(--accent);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer}.dash-btn-primary:hover{opacity:.9}.page-shell{min-height:100vh;background:var(--bg);color:var(--text);display:flex;flex-direction:column}.page-shell-header{display:flex;align-items:center;gap:.75rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:10}.page-back{background:none;border:none;font-size:1.2rem;cursor:pointer;color:var(--text-muted);padding:.25rem .5rem;border-radius:6px;line-height:1}.page-back:hover{background:var(--bg);color:var(--text)}.page-title{font-size:1.15rem;font-weight:700;margin:0;display:flex;align-items:center;gap:.4rem}.page-body{flex:1;max-width:900px;width:100%;margin:0 auto;padding:1.5rem 1rem}.page-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:4rem 2rem;border:2px dashed var(--border);border-radius:14px;text-align:center;color:var(--text-muted)}.page-placeholder-icon{font-size:3rem}.page-placeholder h3{margin:0;color:var(--text);font-size:1.1rem}.page-placeholder p{margin:0;font-size:.9rem}.prog{display:flex;flex-direction:column;gap:10px}.prog-head .card-title{margin-bottom:2px}.prog-sub{color:var(--text-muted);font-size:.7rem}.prog-card{margin-bottom:0}.prog-day{font-size:.62rem;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);font-weight:700;margin-bottom:2px}.prog-table-wrap{overflow-x:auto}.prog-table td,.prog-table th{white-space:nowrap}.prog-table td:last-child{white-space:normal;min-width:140px}.prog-note{color:var(--text-muted);font-size:.68rem}.prog-rules{margin:4px 0 0;padding-left:18px;font-size:.78rem;display:flex;flex-direction:column;gap:4px;color:var(--text)}.admin-app{display:flex;flex-direction:column;height:100vh;background:var(--bg);color:var(--text)}.admin-header{display:flex;justify-content:space-between;align-items:flex-start;padding:16px 20px;border-bottom:1px solid var(--border);background:var(--surface)}.admin-header h1{margin:0;font-size:1.3rem;font-weight:600;display:flex;align-items:center}.admin-header p{margin:4px 0 0;font-size:.85rem;color:var(--text-muted)}.admin-header-actions{flex-shrink:0}.admin-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);background:var(--surface);padding:0 20px;overflow-x:auto}.admin-tab{padding:12px 16px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;font-size:.95rem;border-bottom:2px solid transparent;transition:all .2s;display:flex;align-items:center;white-space:nowrap}.admin-tab:hover{color:var(--text);background:#ffffff05}.admin-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.admin-content{flex:1;overflow-y:auto;padding:20px}.admin-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;max-width:1200px}.panel-title{font-size:1.1rem;font-weight:600;margin-bottom:16px;display:flex;align-items:center;gap:8px}.admin-toolbar{display:flex;gap:12px;margin-bottom:16px;align-items:center}.admin-toolbar input,.admin-toolbar select{padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface2);color:var(--text);font-size:.9rem}.admin-toolbar input::placeholder{color:var(--text-muted)}.admin-toolbar select{flex-shrink:0}.admin-table{width:100%;border-collapse:collapse;font-size:.9rem}.admin-table thead{border-bottom:2px solid var(--border)}.admin-table th{text-align:left;padding:12px;font-weight:600;color:var(--text-muted);font-size:.85rem}.admin-table td{padding:12px;border-bottom:1px solid var(--border);vertical-align:middle}.admin-table tbody tr:hover{background:#ffffff05}.role-badge{display:inline-block;padding:3px 8px;border-radius:4px;font-size:.8rem;font-weight:600}.role-admin{background:#f4433633;color:#f44336}.role-professional{background:#2196f333;color:#2196f3}.role-person{background:#4caf5033;color:#4caf50}.admin-cell-btn{padding:4px 6px;border:1px solid var(--border);background:var(--surface2);border-radius:4px;cursor:pointer;color:var(--text-muted);display:flex;align-items:center;justify-content:center;transition:all .2s}.admin-cell-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.admin-btn{padding:8px 16px;background:var(--accent);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:600;transition:all .2s}.admin-btn:hover:not(:disabled){opacity:.9}.admin-btn:disabled{opacity:.6;cursor:not-allowed}.setting-group{margin-bottom:16px;padding:12px;background:var(--surface2);border-radius:6px}.setting-group label{display:flex;align-items:center;gap:8px;cursor:pointer}.setting-group input[type=checkbox]{width:18px;height:18px;cursor:pointer}.setting-group input[type=text]{flex:1;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font-size:.9rem}.setting-group input:disabled{opacity:.6;cursor:not-allowed}
