:root{color-scheme:dark;--bg:#0d131c;--surface:#17212c;--surface2:#202d39;--border:#344252;--text:#f5f6f8;--sub:#a9b6c6;--orange:#ff7845;--orange2:#ffa47d;--green:#6ed5a5;--red:#fb8486;--radius:16px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);font:15px/1.52 -apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Pretendard",system-ui,sans-serif;color:var(--text)}button,input,select,textarea{font:inherit}button{cursor:pointer;touch-action:manipulation}button:disabled{opacity:.45;cursor:default}.app{max-width:680px;margin:0 auto;min-height:100dvh;padding-bottom:calc(98px + env(safe-area-inset-bottom));}.topbar{padding:calc(16px + env(safe-area-inset-top)) 18px 15px;display:flex;align-items:center;gap:12px;background:#0f1822;position:sticky;top:0;z-index:11;border-bottom:1px solid #27333e}.logo-mark{height:42px;width:42px;display:grid;place-items:center;border-radius:13px;background:linear-gradient(135deg,#ff9654,#e65335);font-weight:900;font-size:23px;box-shadow:0 8px 24px #ff6d3c26}.logo-mark span{color:#321d17}.brand{flex:1;display:flex;flex-direction:column;line-height:1.27}.brand strong{font-size:21px;letter-spacing:-.6px}.brand small{color:var(--sub);font-size:11px;letter-spacing:.4px}.icon-btn{border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);height:40px;min-width:40px}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,680px);display:grid;grid-template-columns:repeat(4,1fr);background:#111b25fa;border-top:1px solid #35404b;padding:8px 7px calc(10px + env(safe-area-inset-bottom));z-index:12;backdrop-filter:blur(16px)}.bottom-nav button{background:transparent;border:0;color:var(--sub);display:flex;flex-direction:column;gap:1px;align-items:center;font-size:11px;padding:5px 0;border-radius:10px}.bottom-nav button.active{color:var(--orange2);background:#ff754514}.nav-icon{font-size:24px;line-height:1.5}main{padding:22px 16px 20px}.eyebrow{font-size:12px;letter-spacing:1px;color:var(--orange2);font-weight:750}.page-title{font-size:27px;letter-spacing:-.7px;margin:3px 0 2px;font-weight:800}.hint,.muted{color:var(--sub)}.hint{margin:0 0 19px;font-size:13px}.section{margin:19px 0 23px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.section-head h2{margin:0;font-size:16px;letter-spacing:-.2px}.card{padding:15px;background:var(--surface);border:1px solid #2b3a48;border-radius:var(--radius);box-shadow:0 6px 18px #0000000e}.card+.card{margin-top:9px}.card.subtle{background:#121c26}.button{border:0;border-radius:11px;color:#15171b;background:var(--orange);padding:11px 14px;font-weight:800;min-height:42px}.button.secondary{background:var(--surface2);border:1px solid var(--border);color:var(--text)}.button.ghost{background:transparent;border:1px solid var(--border);color:var(--sub)}.button.danger{color:#fff;background:#ad3946}.button.small{font-size:12px;padding:7px 10px;min-height:33px}.button.full{width:100%}.button.link{background:transparent;color:var(--orange2);padding:7px 1px}.row{display:flex;align-items:center;gap:9px}.row.between{justify-content:space-between}.flex{flex:1;min-width:0}.stack{display:flex;flex-direction:column;gap:9px}.stack.tight{gap:5px}.two{display:grid;grid-template-columns:1fr 1fr;gap:9px}.three{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat{background:#111b26;border:1px solid #2d3948;padding:12px;border-radius:13px}.stat b{font-size:22px;display:block;line-height:1.4}.stat small{font-size:11px;color:var(--sub)}.pill{display:inline-flex;align-items:center;padding:4px 9px;border-radius:99px;font-size:11px;color:#cbd5df;background:#253341;white-space:nowrap}.pill.orange{background:#7c442a;color:#ffd4c0}.pill.good{background:#1e4b3f;color:#b2ffe2}.pill.bad{background:#653238;color:#ffb5b9}.tiny{font-size:11px}.small{font-size:12px}.strong{font-weight:750}.divider{height:1px;background:#2d3947;margin:13px 0}.exercise-title{font-weight:800;font-size:15px;overflow-wrap:anywhere}.details{color:var(--sub);font-size:12px;line-height:1.5}.number{font-variant-numeric:tabular-nums}label.form-label{font-size:12px;color:var(--sub);font-weight:650;display:block;margin-bottom:4px}.field{min-width:0;width:100%;border:1px solid #405161;border-radius:10px;background:#0f1924;color:#fff;min-height:40px;padding:9px 10px;outline:none}.field:focus{border-color:var(--orange)}.field.search{height:46px;font-size:14px}.field.short{min-height:36px;padding:7px 9px}.field.area{resize:vertical;min-height:100px;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.input-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.input-grid>div{min-width:0}.input-grid .wide{grid-column:span 2}.input-grid input{font-size:13px}input[type=checkbox]{height:20px;width:20px;accent-color:var(--orange);flex-shrink:0}.catalog-row{display:flex;align-items:center;gap:10px;padding:11px 5px;border-bottom:1px solid #2a3948}.catalog-row:last-child{border:0}.catalog-row label{flex:1;min-width:0;cursor:pointer}.catalog-row .cat-name{font-weight:700;font-size:14px}.catalog-row .last{color:var(--sub);font-size:11px}.category-heading{margin:23px 0 8px;color:#ffbd9d;font-size:13px;letter-spacing:.2px;display:flex;justify-content:space-between}.counter{font-size:12px;color:var(--sub)}.tool-strip{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:3px 0 10px}.tool-strip button{white-space:nowrap;flex-shrink:0}.plan-item{padding:14px 13px}.plan-item.completed{border-color:#2e6251}.set-dots{display:flex;flex-wrap:wrap;gap:6px}.set-dot{height:27px;min-width:27px;border-radius:7px;border:1px solid #506477;color:var(--text);display:grid;place-items:center;font-size:11px;background:#142331}.set-dot.done{background:#286450;border-color:#3d9479;color:#e5fff3}.exercise-body{display:flex;flex-direction:column;gap:10px}.mini-btn{height:29px;min-width:29px;background:#1e2c38;border:1px solid #364b5d;color:#d7e2eb;border-radius:8px;font-weight:700}.warning{background:#533025;border:1px solid #9b563e;color:#ffd9bd;border-radius:12px;padding:11px 12px;font-size:12px}.info{background:#142d3a;border:1px solid #275570;color:#c9e5fa;border-radius:12px;padding:11px 12px;font-size:12px}.good{color:var(--green)}.bad{color:var(--red)}.timer-dock{position:fixed;bottom:calc(81px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(calc(100% - 22px),650px);background:#263844;border:1px solid #648090;border-radius:15px;box-shadow:0 7px 32px #0008;z-index:13;padding:10px 12px;display:flex;align-items:center;gap:10px}.timer-dock strong{font-size:24px;font-variant-numeric:tabular-nums}.timer-dock small{color:#c1cfdb}.timer-dock .button{white-space:nowrap}.hidden{display:none!important}.toast{position:fixed;z-index:100;left:50%;transform:translateX(-50%);bottom:calc(167px + env(safe-area-inset-bottom));background:#f0f6f9;color:#151b23;padding:11px 15px;border-radius:12px;font-size:13px;font-weight:650;max-width:min(calc(100% - 26px),450px);box-shadow:0 9px 30px #0009;opacity:0;pointer-events:none;transition:opacity .2s}.toast.show{opacity:1}.modal-shell{position:fixed;inset:0;background:#000b;z-index:70;display:flex;align-items:flex-end;justify-content:center}.modal{width:min(100%,680px);max-height:90dvh;overflow:auto;background:#17232f;border:1px solid #36485b;border-radius:20px 20px 0 0;padding:21px 16px calc(26px + env(safe-area-inset-bottom))}.modal h2{font-size:19px;margin:0 0 12px}.modal .sub{font-size:12px;color:var(--sub);margin-bottom:13px}.modal-action{display:flex;gap:8px;margin-top:14px}.modal-action>*{flex:1}.empty{text-align:center;padding:32px 16px;color:var(--sub);font-size:13px;border:1px dashed #384757;border-radius:var(--radius)}.test-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.test-grid .stat b{font-size:17px}.history-row{padding:10px 0;border-bottom:1px solid #324250}.history-row:last-child{border:0}.rpe-chip{padding:3px 8px;background:#29404a;border-radius:7px;font-size:12px}.pre{white-space:pre-wrap;overflow-wrap:anywhere;color:#c6d4e1;font-size:12px}.required{color:var(--orange)}@media(min-width:560px){.app{border-left:1px solid #223240;border-right:1px solid #223240}main{padding-left:24px;padding-right:24px}}@media(max-width:355px){.input-grid{grid-template-columns:repeat(2,1fr)}.input-grid .wide{grid-column:span 1}.button{padding:9px 10px}.two{grid-template-columns:1fr}.page-title{font-size:24px}}

/* v1.1: compact Hevy-inspired set list + first-class RPE and WOD cards */
:root{--bg:#0d0f13;--surface:#1c2027;--surface2:#232932;--border:#363a42;--text:#f4f4f6;--sub:#9ba3b0;--orange:#319aff;--orange2:#66b4ff;--green:#4ccb91}
body{background:#0b0d12}
.topbar{background:#121519;border-bottom-color:#282b30;padding-top:calc(11px + env(safe-area-inset-top));padding-bottom:10px}
.logo-mark{background:linear-gradient(135deg,#2e95fa,#1562bb);box-shadow:none}
.logo-mark span{color:#dce8ff}
.bottom-nav{background:#121519fa;border-top-color:#313640}
.bottom-nav button.active{background:#278cf51a;color:#8dccff}
.page-title{margin-bottom:3px}
.workout-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:14px}
.training-list{display:flex;flex-direction:column;gap:12px;margin-top:15px}
.exercise-panel{border:1px solid #2e333d;background:#171a20;border-radius:16px;padding:14px 12px 15px;min-width:0}
.exercise-panel.finished{border-color:#35624f}
.exercise-header{align-items:flex-start!important;gap:8px}
.exercise-name{font-size:17px;font-weight:800;color:#58adff;line-height:1.35;margin-bottom:3px}
.exercise-header .details{font-size:11px;line-height:1.4;max-height:3.2em;overflow:hidden}
.row.tight{gap:3px}
.exercise-chips{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin:12px 0 10px}
.chip,.chip-static{border:0;background:#282c34;color:#f1f2f4;font-size:12px;font-weight:650;border-radius:9px;padding:6px 9px;white-space:nowrap}
.chip-static{color:#a5b4c7;background:#202831;margin-left:auto}
.chip{cursor:pointer}
.set-table{display:flex;flex-direction:column;gap:4px;min-width:0}
.set-head,.training-set{display:grid;grid-template-columns:34px minmax(49px,1fr) minmax(48px,.85fr) minmax(48px,.85fr) 48px 36px;gap:5px;align-items:center;text-align:center}
.set-head{color:#9da6b1;font-size:10px;min-height:24px;letter-spacing:-.2px}
.training-set{min-height:40px}
.training-set.set-checked{opacity:.75}
.set-num{border-radius:9px;background:#2b3038;color:#e3e5eb;font-weight:800;font-size:13px;min-height:33px;display:grid;place-items:center}
.set-num.warmup{color:#ecba50;background:#342f25}
.set-previous{font-size:11px;color:#858e9b;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0}
.set-input{border:1px solid #41464e;background:#0d1015;color:#f4f5f6;min-width:0;width:100%;border-radius:8px;padding:5px 1px;min-height:36px;text-align:center;font-size:13px;outline:none;font-variant-numeric:tabular-nums}
.set-input:focus{border-color:#4c9dea;background:#141d2b}
.set-input:disabled{color:#c5c8cf;border-color:#272e35;background:#14181c;opacity:.85}
.set-rpe{font-size:12px}
.set-check{height:34px;width:34px;border:1px solid #37404a;border-radius:9px;background:#2b3138;color:#8e97a1;font-size:17px;font-weight:900}
.set-check.checked{background:#277b5a;border-color:#39976c;color:#fff}
.set-check:disabled{opacity:.66}
.set-add-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.set-add{border:1px solid #303843;background:#292d34;border-radius:9px;color:#f4f5f6;padding:8px 5px;font-size:12px;font-weight:700}
.coach-note{font-size:12px;color:#b5c1cf;line-height:1.55;border-top:1px solid #313741;margin-top:12px;padding-top:10px;overflow-wrap:anywhere}
.coach-note strong{color:#8fc8ff}
.exercise-rating{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:12px;border-top:1px solid #2c333b;padding-top:12px}
.exercise-rating label{font-size:12px;font-weight:700;color:#cdd7e2}
.exercise-rating .field{width:116px}
.end-session{margin-top:18px}
.end-session h2{margin:0 0 10px;font-size:15px}
.rpe-session{max-width:130px}
.wod-panel{background:linear-gradient(180deg,#1b2633,#161b22)}
.wod-panel .eyebrow{font-size:11px;letter-spacing:.08em;color:#87bffe}
.wod-clock{background:#0e1822;border:1px solid #385273;border-radius:14px;margin-top:12px;padding:15px 10px;text-align:center}
.wod-topline{text-transform:uppercase;letter-spacing:.1em;font-size:11px;color:#9caebe}
.wod-timer{font-size:51px;font-weight:850;line-height:1.24;letter-spacing:-1.5px;font-variant-numeric:tabular-nums}
.wod-current{font-size:16px;font-weight:800;margin-top:4px}
.wod-next{color:#9daebe;font-size:12px;margin-top:4px}
.wod-round{color:#6fbaef;font-size:12px;margin-top:7px}
.wod-actions{display:grid;grid-template-columns:1fr 1fr 55px;gap:6px;margin-top:10px}
.wod-actions button{padding:10px 5px;font-size:12px}
.wod-config{border:1px solid #303c48;border-radius:10px;margin:12px 0;overflow:hidden}
.wod-step{display:grid;grid-template-columns:24px 1fr auto;gap:8px;align-items:center;padding:9px 10px;border-bottom:1px solid #303c48;font-size:12px}
.wod-step:last-child{border-bottom:0}
.wod-step strong{font-size:11px;color:#bbd9f6;text-align:right}
.wod-order{height:22px;width:22px;background:#2b435c;color:#acd8ff;border-radius:7px;display:grid;place-items:center}
.wod-rpe-input{width:105px!important}
.button{background:#268df4}
.button.secondary{background:#263849;border-color:#365677}
.button.ghost{background:#262b34;color:#cdd6e2}
.mini-btn{background:#262d37;border-color:#37414c}
.timer-dock{background:#243447;border-color:#4878a1}
@media(max-width:370px){.exercise-panel{padding:12px 8px}.set-head,.training-set{grid-template-columns:30px minmax(42px,1fr) minmax(42px,.85fr) minmax(42px,.85fr) 40px 32px;gap:3px}.set-check{width:32px;height:32px}.set-input{font-size:12px}.set-previous{font-size:10px}}

/* FireFit v1.2: delete controls + left/right independent gripper sets */
.set-head,.training-set{grid-template-columns:34px minmax(44px,1fr) minmax(48px,.9fr) minmax(44px,.85fr) 42px 62px;gap:4px}
.set-row-actions{display:flex;gap:3px;align-items:center;justify-content:center}
.set-row-actions .set-check{min-width:30px;width:30px;height:34px;flex:0 0 30px}
.set-delete{width:27px;height:34px;border-radius:8px;border:1px solid #65404a;background:#37252e;color:#ffb9bd;font-size:17px;font-weight:800}
.set-delete:disabled{opacity:.32;cursor:not-allowed}
.side-set-table .set-head,.side-set-table .training-set{grid-template-columns:42px minmax(34px,.7fr) minmax(52px,1.05fr) minmax(38px,.72fr) 40px 62px;gap:4px}
.set-num.side-right{background:#183c64;color:#b0dcff}
.set-num.side-left{background:#483247;color:#ffd0ee}
.set-input.load-input{font-size:12px;padding-left:2px;padding-right:2px}
.side-mode-option{display:flex;gap:10px;align-items:center;margin:14px 0 6px;font-size:14px;font-weight:700}
.side-set-add .full-line{grid-column:1/-1}
.wod-actions{grid-template-columns:1fr 1fr 52px 58px;gap:5px}
.wod-actions .wod-reset{color:#ffcf90;background:#3b2d25;border-color:#654a31}
@media(max-width:390px){
 .exercise-panel{padding-left:8px;padding-right:8px}
 .set-head,.training-set{grid-template-columns:29px minmax(36px,.75fr) minmax(43px,.95fr) minmax(39px,.75fr) 37px 58px;gap:3px}
 .side-set-table .set-head,.side-set-table .training-set{grid-template-columns:37px minmax(29px,.58fr) minmax(48px,1fr) minmax(35px,.68fr) 37px 58px;gap:3px}
 .set-row-actions{gap:2px}
 .set-row-actions .set-check{min-width:28px;width:28px;height:33px;flex-basis:28px}
 .set-delete{width:26px;height:33px}
 .set-input{font-size:12px}
 .set-previous{font-size:10px}
 .wod-actions{grid-template-columns:1fr 1fr 48px 52px;gap:4px}
 .wod-actions button{font-size:11px;padding:8px 2px}
}
.side-rpe-block{margin:12px 0 0;padding:10px 0;border-top:1px solid #313741;display:grid;grid-template-columns:1fr 1fr;gap:9px}
.side-rpe-block label{display:flex;flex-direction:column;gap:5px;color:#c8d6e7;font-size:12px;font-weight:650}
.side-rpe-block input{width:100%;max-width:none}


/* FireFit v1.3.1 — Stop iOS Safari/PWA auto-zoom when a form field gets focus.
   Keep inputs at 16px+ computed font size; do NOT disable user pinch-to-zoom. */
@media (hover: none) and (pointer: coarse) {
  input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
  textarea, select {
    font-size: 16px !important;
  }
  .set-input {
    font-size: 16px !important;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
  }
  /* The bottom tab bar shouldn't overlap the editing row while the keyboard is open. */
  body:has(input:focus, textarea:focus, select:focus) .bottom-nav {
    visibility: hidden;
    pointer-events: none;
  }
  .set-input, .field { scroll-margin-block: 115px; }
}

/* FireFit 1.4 cloud sync and history */
.cloud-status{font-size:10px;border-radius:8px;padding:4px 7px;max-width:122px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid #465261;flex-shrink:0}.cloud-status.ok{color:#99ebbe;border-color:#34694c;background:#183729}.cloud-status.bad{color:#ffb5b9;border-color:#79333b;background:#42222b}.cloud-status.pending{color:#ffe1a7;border-color:#786038;background:#3b3121}.history-day{width:100%;display:flex;align-items:center;justify-content:space-between;text-align:left;border:0;border-bottom:1px solid #303943;background:transparent;color:#f5f6f8;padding:14px 4px;gap:10px}.history-day:last-child{border-bottom:0}.history-day.chosen{background:#17334c;border-radius:9px;padding-left:10px;padding-right:10px}.history-day>span:first-child{display:flex;flex-direction:column;gap:3px}.history-day small{color:#a8b5c6;font-size:11px}@media(max-width:375px){.cloud-status{max-width:82px}.brand strong{font-size:18px}.brand small{font-size:10px}}
