
:root{--bg:#0b1018;--card:#151e2a;--card2:#1b2735;--card3:#223040;--stroke:#2b3848;--text:#f0f5fa;--muted:#9aaab9;--soft:#718497;--lime:#c1f66a;--blue:#73b8ff;--purple:#a796fd;--warning:#ffbf76;--red:#ff818b;--radius:20px;color-scheme:dark;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;font-synthesis:none;}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;color:var(--text);background:radial-gradient(circle at 95% 0%,#182432 0,transparent 36%),var(--bg);min-height:100vh;-webkit-tap-highlight-color:transparent;font-size:14px;line-height:1.45}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.46}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--lime);outline-offset:2px}button,select,input{touch-action:manipulation}input{min-width:0}svg{display:block}.app-shell{max-width:850px;margin:0 auto;min-height:100svh;padding:0 20px 122px}.app-header{height:84px;display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{display:flex;align-items:center;gap:11px}.brand-icon{width:43px;height:43px;background:var(--lime);color:#131c20;border-radius:13px;display:grid;place-items:center;box-shadow:0 8px 24px #bff86521}.brand-icon svg{width:31px;height:31px}.brand strong{font-size:21px;font-weight:850;letter-spacing:-.8px;display:block;line-height:1.15}.brand small{font-size:9px;letter-spacing:1.6px;color:var(--muted);display:block;margin-top:4px;font-weight:700}.header-icon{height:42px;width:42px;display:grid;place-items:center;color:#d9e4f2;background:#192532;border:1px solid var(--stroke);border-radius:13px}.header-icon svg{width:21px;height:21px}h1{font-size:30px;letter-spacing:-1.25px;line-height:1.1;margin:5px 0 7px}h2{font-size:17px;font-weight:800;letter-spacing:-.5px;margin:0}h3{font-size:15px;font-weight:800;margin:0}p{margin:0}.eyebrow{font-size:10px;color:var(--lime);font-weight:800;letter-spacing:2px;text-transform:uppercase}.muted{color:var(--muted)}.soft{color:var(--soft)}.small{font-size:12px}.xsmall{font-size:11px}.bold{font-weight:750}.page-intro{margin:11px 0 24px}.page-intro p{color:var(--muted)}.stack{display:grid;gap:16px}.card{background:linear-gradient(138deg,#192434,#141d29);border:1px solid var(--stroke);border-radius:var(--radius);padding:19px;box-shadow:0 9px 32px #00000019}.card.alt{background:#141d29}.card-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}.section-title{font-size:16px;font-weight:800;letter-spacing:-.4px}.eyelabel{color:var(--soft);font-size:10px;letter-spacing:1.35px;font-weight:800;text-transform:uppercase}.hero{min-height:207px;background:radial-gradient(ellipse at 100% 0%,#334d35 0%,transparent 47%),linear-gradient(125deg,#20342c,#19262d 70%,#172129);position:relative;overflow:hidden;border:1px solid #426046;border-radius:23px;padding:23px}.hero:after{content:'';position:absolute;width:188px;height:188px;right:-73px;top:30px;border-radius:50%;border:28px solid #c0fb6730;box-shadow:0 0 0 25px #c0fb6710;pointer-events:none}.hero-content{position:relative;z-index:1;max-width:72%}.hero h2{font-size:26px;line-height:1.1;letter-spacing:-1.1px;margin:12px 0 7px}.hero p{color:#d0ddca;max-width:290px;font-size:12px;margin-bottom:20px}.button{border:0;border-radius:13px;padding:12px 16px;font-size:13px;font-weight:780;min-height:44px;display:inline-flex;gap:8px;align-items:center;justify-content:center;transition:transform .15s,background .15s;text-decoration:none}.button:active{transform:scale(.98)}.button.primary{background:var(--lime);color:#152019}.button.secondary{background:#293a4a;color:#ebf3fa;border:1px solid #354658}.button.ghost{color:var(--muted);background:transparent;border:1px solid var(--stroke)}.button.danger{color:#ffe8ed;background:#51303b}.button.small{min-height:37px;padding:8px 12px;font-size:12px}.button.wide{width:100%}.button.icon-only{padding:0;width:40px;height:40px}.button svg,.inline-icon{width:17px;height:17px}.row{display:flex;align-items:center;gap:10px}.between{display:flex;align-items:center;justify-content:space-between;gap:12px}.gap8{gap:8px}.gap12{gap:12px}.right{text-align:right}.tiny-pill{font-size:10px;font-weight:850;color:var(--lime);background:#344332;padding:5px 9px;border:1px solid #475b39;border-radius:20px;white-space:nowrap}.pill-blue{color:var(--blue);background:#24405a;border-color:#345576}.stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.stat{background:var(--card);border:1px solid var(--stroke);border-radius:16px;padding:13px 11px}.stat-label{font-size:10px;color:var(--muted);white-space:nowrap}.stat-number{font-size:21px;letter-spacing:-1px;line-height:1.15;font-weight:850;margin:7px 0 2px}.stat-note{font-size:10px;color:var(--soft)}.stat-number .unit{font-size:11px;color:var(--muted);font-weight:600;letter-spacing:0}.protein-layout{display:flex;align-items:center;gap:20px}.protein-ring{--progress:0%;width:131px;height:131px;flex:0 0 131px;border-radius:50%;background:conic-gradient(var(--lime) var(--progress),#31423d 0);display:grid;place-items:center;position:relative}.protein-ring:after{content:'';position:absolute;inset:12px;border-radius:50%;background:#18242b}.ring-inner{position:relative;z-index:1;text-align:center}.ring-inner strong{font-size:29px;line-height:1;font-weight:850;letter-spacing:-1.5px}.ring-inner small{display:block;font-size:11px;color:var(--muted);margin-top:3px}.protein-copy strong{font-size:20px;letter-spacing:-.6px}.protein-copy p{font-size:12px;color:var(--muted);margin:5px 0 14px}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.weekday{border:1px solid var(--stroke);border-radius:12px;background:#202c3a;text-align:center;padding:10px 2px 8px;min-width:0}.weekday.is-today{border-color:var(--lime);background:#2b3b35}.weekday span{display:block;font-size:10px;color:var(--muted)}.weekday strong{font-size:16px;display:block;margin:3px 0}.weekday .dot{display:block;width:6px;height:6px;border-radius:50%;background:#4c6070;margin:6px auto 0}.weekday .dot.planned{background:var(--purple)}.weekday .dot.done{background:var(--lime)}.schedule-key{display:flex;justify-content:center;gap:18px;margin-top:12px;font-size:10px;color:var(--muted)}.keydot{width:6px;height:6px;border-radius:50%;display:inline-block;vertical-align:2px;margin-right:5px}.meal-quick{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--stroke)}.meal-quick:last-child{border:0;padding-bottom:0}.meal-quick:first-child{padding-top:0}.meal-name{font-weight:680;font-size:13px}.meal-caption{font-size:11px;color:var(--muted);margin-top:3px}.meal-tag{color:var(--lime);font-size:12px;font-weight:850}.clickline{color:var(--lime);font-weight:800;font-size:12px;text-decoration:none;background:transparent;border:0;padding:5px 0}.segmented{background:#101824;border:1px solid var(--stroke);border-radius:13px;display:grid;grid-template-columns:1fr 1fr;padding:4px;gap:4px}.segment{background:transparent;border:0;color:var(--muted);border-radius:10px;padding:12px 9px;font-size:13px;font-weight:800}.segment.active{color:#0e1916;background:var(--lime)}.exercise{border-bottom:1px solid var(--stroke);padding:15px 0}.exercise:last-child{border-bottom:0;padding-bottom:0}.exercise:first-child{padding-top:0}.ex-icon{flex:0 0 36px;width:36px;height:36px;background:#293b40;border-radius:11px;display:grid;place-items:center;color:var(--lime);font-size:16px;font-weight:850}.ex-main{min-width:0;flex:1}.ex-main b{font-size:13px;display:block}.ex-main small{color:var(--muted);display:block;margin-top:2px;font-size:11px}.target-chip{color:var(--blue);background:#24394c;border-radius:8px;padding:5px 8px;font-size:10px;font-weight:800;white-space:nowrap}.workout-active{border-color:#49634f}.set-table{margin:14px 0 3px;display:grid;gap:8px}.set-heading,.set-row{display:grid;grid-template-columns:32px minmax(0,1fr) minmax(0,1fr) 38px;gap:9px;align-items:center}.set-heading{font-size:10px;color:var(--soft);text-align:center}.set-row .set-num{font-size:12px;color:var(--muted);text-align:center}.number-input{width:100%;min-width:0;background:#0d1620;border:1px solid #374657;border-radius:10px;color:var(--text);min-height:40px;padding:7px 9px;font-size:15px;font-weight:750;text-align:center;outline:none}.number-input:focus{border-color:var(--lime)}.number-input:disabled{opacity:.5}.done-set{width:38px;height:38px;border-radius:11px;background:#243342;color:#8a9eb0;border:1px solid #3a4e60;display:grid;place-items:center}.done-set.checked{background:var(--lime);color:#122119;border-color:var(--lime)}.done-set svg{width:19px;height:19px}.timer{display:flex;align-items:center;justify-content:space-between;background:#25353e;border:1px solid #39564c;border-radius:13px;padding:12px 14px;margin-top:12px}.timer-time{font-size:24px;font-variant-numeric:tabular-nums;font-weight:850;color:var(--lime);line-height:1}.progress-track{height:9px;background:#2c3e47;border-radius:20px;overflow:hidden}.progress-fill{height:100%;border-radius:20px;background:var(--lime);transition:width .3s}.food-row{display:grid;grid-template-columns:1fr auto;gap:11px;align-items:center;border-bottom:1px solid var(--stroke);padding:12px 0}.food-row:last-child{border-bottom:0;padding-bottom:0}.food-row:first-child{padding-top:0}.food-symbol{width:37px;height:37px;border-radius:11px;background:#2d3945;display:grid;place-items:center;color:var(--lime);font-size:17px;font-weight:800;flex:0 0 37px}.food-meta strong{font-size:13px;display:block}.food-meta small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.food-actions{display:flex;gap:6px;align-items:center}.mini-btn{width:35px;height:35px;display:grid;place-items:center;border-radius:10px;border:1px solid #405361;background:#263748;color:var(--text);font-size:18px;font-weight:650}.mini-btn.add{background:var(--lime);border-color:var(--lime);color:#172319}.mini-btn svg{height:16px;width:16px}.goalbar{height:12px;background:#33413d;border-radius:20px;overflow:hidden}.goalbar-fill{height:100%;background:var(--lime);border-radius:20px}.date-controls{display:flex;align-items:center;justify-content:space-between;gap:10px}.date-controls .mid{font-size:13px;font-weight:750;text-align:center}.log-item{display:flex;align-items:center;gap:9px;border-bottom:1px solid var(--stroke);padding:11px 0}.log-item:last-child{border:0}.log-item-title{font-size:13px;font-weight:700}.log-item-note{color:var(--muted);font-size:11px}.tag{display:inline-block;background:#233645;color:var(--blue);padding:3px 9px;border-radius:20px;font-size:10px;font-weight:800}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.form-field{display:flex;flex-direction:column;gap:6px;min-width:0}.form-field label{font-size:11px;font-weight:700;color:var(--muted)}.field{width:100%;border-radius:11px;border:1px solid #3a4a5c;min-height:44px;background:#111b26;color:var(--text);padding:10px 12px;font-size:14px}.field::placeholder{color:#748597}.field:focus{border-color:var(--lime);outline:none}.form-field.span2{grid-column:span 2}.chart-box{position:relative;min-height:194px;background:#111b26;border-radius:14px;border:1px solid #273745;padding:14px 10px 9px}.metric-switch{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.metric-button{background:#263646;border:1px solid #394b5b;color:var(--muted);border-radius:10px;padding:10px 5px;font-size:11px;font-weight:760}.metric-button.selected{border-color:#6d8d4d;background:#344537;color:var(--lime)}.chart-box svg{width:100%;height:170px;overflow:visible}.empty{padding:22px 10px;color:var(--muted);font-size:12px;text-align:center}.empty strong{display:block;color:#e3edf3;font-size:14px;margin-bottom:5px}.timeline-item{display:flex;justify-content:space-between;gap:10px;padding:12px 0;border-bottom:1px solid var(--stroke)}.timeline-item:last-child{border-bottom:0}.timeline-item b{display:block;font-size:13px}.timeline-item small{color:var(--muted);font-size:11px}.timeline-value{font-size:13px;font-weight:850;text-align:right}.status{font-size:11px;color:var(--muted);margin-top:5px}.notice{background:#24303b;border:1px solid #45566a;color:#bfccd9;padding:12px;border-radius:11px;font-size:11px}.settings-list{display:grid;gap:12px}.weekday-settings{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.weekday-toggle{height:42px;border-radius:9px;border:1px solid #425367;color:var(--muted);background:#23303e;font-size:11px;font-weight:850}.weekday-toggle.on{background:var(--lime);border-color:var(--lime);color:#122018}.bottom-nav{position:fixed;z-index:10;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,850px);background:#141f2bee;border-top:1px solid #344454;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:10px max(9px,env(safe-area-inset-right)) calc(11px + env(safe-area-inset-bottom));backdrop-filter:blur(18px)}.nav-btn{background:transparent;border:0;display:flex;flex-direction:column;align-items:center;gap:5px;color:#8393a4;padding:5px 2px;border-radius:11px;font-size:10px;font-weight:700;min-height:51px}.nav-btn svg{width:21px;height:21px}.nav-btn.active{color:var(--lime);background:#2a3b36}.modal{border:1px solid #405269;border-radius:22px;background:#18232f;color:var(--text);width:min(92vw,480px);max-height:min(85vh,760px);padding:0;box-shadow:0 35px 100px #000b}.modal::backdrop{background:#03080caa;backdrop-filter:blur(5px)}#modal-content{padding:23px}.modal h2{font-size:21px;margin:0 0 7px}.modal .modal-actions{display:flex;gap:9px;justify-content:flex-end;margin-top:21px}.modal .modal-actions .button{flex:1}.modal-body{display:grid;gap:15px;margin:18px 0}.modal p{color:var(--muted);font-size:12px}.modal .note{font-size:11px;color:var(--soft)}#toast{position:fixed;z-index:30;bottom:108px;left:50%;transform:translate(-50%,20px);width:max-content;max-width:calc(100vw - 34px);background:#e7f7d3;color:#17231c;font-size:12px;font-weight:800;padding:12px 17px;border-radius:12px;opacity:0;pointer-events:none;box-shadow:0 14px 40px #0008;transition:opacity .2s,transform .2s}#toast.show{opacity:1;transform:translate(-50%,0)}.footer-note{text-align:center;color:#607387;font-size:10px;margin:18px 0 7px}.spacer12{height:12px}.spacer8{height:8px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(min-width:700px){.app-shell{padding:0 32px 118px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.hero{min-height:225px}.hero h2{font-size:30px}.desktop-between{display:grid;grid-template-columns:1fr 1fr;gap:16px}.protein-ring{width:120px;height:120px;flex-basis:120px}}@media(max-width:390px){.app-shell{padding-left:13px;padding-right:13px}.hero{padding:18px}.hero h2{font-size:24px}.hero-content{max-width:79%}.stat-number{font-size:19px}.stat-grid{gap:7px}.stat{padding:11px 8px}.protein-ring{width:115px;height:115px;flex-basis:115px}.protein-layout{gap:14px}.card{padding:16px}.set-heading,.set-row{gap:6px;grid-template-columns:25px minmax(0,1fr) minmax(0,1fr) 35px}}

/* FitPlan 1.1: optional exercise help and quick bread adjustments */
.exercise-help{margin:10px 0 3px;padding:7px 10px;display:inline-flex;align-items:center;gap:7px;border:1px solid #465968;background:#243340;color:var(--lime);border-radius:9px;font-size:11px;font-weight:800;min-height:36px}
.exercise-modal-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:13px}
.exercise-modal-head h2{margin:0}
.exercise-illustration{display:block;width:100%;height:auto;aspect-ratio:auto;border:1px solid #364758;border-radius:13px;background:#172330;object-fit:contain}
.exercise-tips{margin-top:15px;color:var(--text);font-size:12px}
.exercise-tips strong{font-size:13px}
.exercise-tips ol{padding-left:21px;display:grid;gap:7px;margin:10px 0 15px;line-height:1.5}
.exercise-help-note{margin-bottom:18px!important}
.bread-choices{display:flex;align-items:center;gap:5px;margin-top:8px;flex-wrap:wrap}
.bread-choices span{font-size:10px;font-weight:750;color:var(--muted);margin-right:3px}
.bread-choice{background:#243648;border:1px solid #4b5a6b;min-width:32px;height:31px;border-radius:8px;color:#d3e0ed;font-size:12px;font-weight:800}
.bread-choice.selected{background:var(--lime);color:#14231b;border-color:var(--lime)}
.food-row:has(.bread-choices){align-items:start}
.food-row .row{min-width:0}
.food-meta{min-width:0}
.no-bread-quick{background:#263944;border:1px solid #42606c;color:var(--lime);font-size:10px;border-radius:9px;padding:7px 8px;font-weight:750;white-space:nowrap}
.log-bread{display:flex;align-items:center;gap:7px;margin-top:8px;flex-wrap:wrap}
.log-bread span{font-size:10px;font-weight:750;color:var(--lime)}
.log-bread button{background:#263a48;color:#e0eaf2;border:1px solid #3b5465;border-radius:7px;font-size:17px;line-height:1;width:30px;height:30px}
.log-bread button:disabled{opacity:.4}
.bread-editor{border:1px solid var(--stroke);background:#223040;border-radius:12px;padding:12px;display:grid;gap:10px}
.bread-editor>label{display:flex;align-items:center;gap:8px;color:var(--text);font-weight:730;font-size:12px}
.bread-editor input[type=checkbox]{width:17px;height:17px;accent-color:var(--lime)}
@media(max-width:390px){.food-actions{gap:4px}.food-row{gap:7px}.food-row .row{gap:7px}.food-symbol{width:30px;height:30px;flex-basis:30px}.food-meta strong{font-size:12px}.food-meta small{font-size:10px}.log-item{gap:5px}.log-item .mini-btn{width:31px;height:34px}.no-bread-quick{font-size:9px;padding:5px 6px}}


.timer-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}figure{margin:16px 0}figcaption{color:var(--lime);margin-top:8px}

.exercise-illustration[hidden]{display:none}figure[data-pose] figcaption{margin-bottom:8px}


/* FitPlan 1.3.2: compare start/end at a glance; zoom each photograph on demand. */
.modal:has(.exercise-photo-grid){width:min(94vw,560px)}
.modal:has(.exercise-photo-grid) #modal-content{padding:16px}
.exercise-photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:15px 0 8px}
.exercise-photo-grid figure{min-width:0;margin:0}
.exercise-photo-thumb{display:block;width:100%;padding:0;border:1px solid #405269;border-radius:12px;overflow:hidden;background:#172330;cursor:zoom-in;touch-action:manipulation}
.exercise-photo-thumb:focus-visible{outline:2px solid var(--lime);outline-offset:2px}
.exercise-photo-grid .exercise-illustration{display:block;width:100%;height:auto;object-fit:contain;border:0;border-radius:0}
.exercise-photo-grid .notice{padding:10px;min-height:128px;line-height:1.4}
.modal .exercise-zoom-hint{font-size:11px;text-align:center;color:var(--muted);margin:7px 0 16px}
.exercise-image-preview{width:min(96vw,820px);max-width:none;max-height:96dvh;padding:12px;border-radius:18px;border:1px solid #43546a;background:#14202c;color:var(--text);box-shadow:0 25px 90px #000c}
.exercise-image-preview::backdrop{background:#02060de8}
.exercise-preview-toolbar{display:flex;justify-content:flex-end;margin-bottom:9px}
.exercise-preview-image{display:block;width:auto;height:auto;max-width:100%;max-height:calc(96dvh - 85px);object-fit:contain;margin:0 auto;border-radius:10px}
@media(max-width:390px){.modal:has(.exercise-photo-grid) #modal-content{padding:12px}.exercise-photo-grid{gap:8px}}

/* FitPlan 1.3.4: permanent rest status beneath each exercise. */
.rest-progress{display:grid;gap:7px;margin:13px 0 1px}
.rest-step{border:1px solid #334453;border-radius:11px;background:#182531;padding:9px 10px;min-width:0}
.rest-step-main{display:flex;align-items:center;justify-content:space-between;gap:9px;min-width:0}
.rest-step-main>div:first-child{min-width:0;flex:1}
.rest-step-label{font-size:11px;font-weight:800;color:#d8e5ed;display:block}
.rest-step-status{font-size:11px;color:var(--muted);display:block;margin-top:3px}
.rest-step-time{font-size:21px;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--lime)}
.rest-step.running{border-color:#658c46;background:#223627}
.rest-step.done{border-color:#426048;background:#1d312a}
.rest-step.done .rest-step-status{color:var(--lime);font-weight:800}
.rest-step.skipped .rest-step-status{color:var(--warning)}
.rest-step .button{min-height:36px;padding:6px 10px;white-space:nowrap}
.rest-step-track{height:5px;border-radius:10px;background:#334a3c;overflow:hidden;margin-top:8px}
.rest-step-fill{width:0;height:100%;background:var(--lime);border-radius:10px;transition:width .25s linear}
@media(max-width:390px){.rest-step{padding:9px 8px}.rest-step-main{gap:6px}.rest-step-label,.rest-step-status{font-size:10px}.rest-step-time{font-size:19px}.rest-step .button{padding:5px 8px;font-size:11px}}

/* FitPlan 1.3.5: scale photo import and explicit signal settings */
.scale-report-image{display:block;width:auto;max-width:100%;max-height:300px;margin:12px auto;border:1px solid var(--stroke);border-radius:10px;object-fit:contain;background:#0c1721}
.scale-import-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0 16px}
.scale-import-actions .status{flex:1;min-width:145px;margin:0;font-size:11px}
.scale-details{border:1px solid var(--stroke);border-radius:12px;padding:10px 12px;margin-top:12px;background:#1b2a38}
.scale-details summary{font-size:12px;font-weight:800;cursor:pointer;color:var(--lime);padding:4px 0}
.scale-details .form-grid{margin-top:12px}
.scale-import-card .button{margin-top:12px}
.scale-signal-switch{min-width:108px}
.scale-signal-switch[aria-checked="true"]{border-color:#779c4b;background:#203c2c;color:var(--lime)}
.scale-signal-switch[aria-checked="false"]{border-color:#495b6e;background:#23303e;color:#adc0d0}
@media(max-width:380px){.scale-import-actions{display:grid;grid-template-columns:1fr}.scale-report-image{max-height:230px}}
