/* base.css = GPT 시제품 디자인 그대로(색·글자·카드). 여기에는 새 기능용 스타일만 추가한다. */

nav{grid-template-columns:repeat(var(--tabs,4),1fr)}
nav button{min-height:52px}
.hero:after{pointer-events:none}
button,select,input{touch-action:manipulation}
:focus-visible{outline:2px solid var(--lime);outline-offset:2px}
.app{padding-bottom:110px}

/* 공통 */
.banner{margin:0 0 14px;padding:12px 14px;border-radius:13px;font-size:12px;line-height:1.6;border:1px solid #5a4a2a;background:#2a2417;color:#f2d79a}
.banner strong{color:#ffe7ae}
.btn-row{display:flex;gap:8px;flex-wrap:wrap}
.btn-row>*{flex:1 1 0;min-width:120px}
.secondary,.primary,.textbtn,.remove-entry,.chip{min-height:44px}
.textbtn{padding:0 4px}
.danger{color:var(--danger);border-color:#51403c}
.hidden{display:none!important}

/* 운동 기록: 세트 행 */
.editbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 12px;padding:11px 13px;border-radius:12px;background:#26301a;border:1px solid #435a22;font-size:12px;color:var(--lime);font-weight:800}
.prev-line{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:2px 0 10px;padding:9px 11px;border-radius:11px;background:#1d2118;border:1px dashed var(--line);font-size:11px;color:var(--muted);line-height:1.5}
.prev-line b{color:var(--text);font-weight:750}
.prev-line .textbtn{font-size:11px;white-space:nowrap}
.suggest{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 0}
.suggest .chip{padding:7px 11px;min-height:36px}
.setgrid{margin:4px 0 2px}
.setgrid-head,.setrow{display:grid;grid-template-columns:34px 1fr 1fr 40px;gap:8px;align-items:center}
.setgrid-head{font-size:11px;color:var(--muted);margin-bottom:6px;padding:0 2px}
.setrow{margin-bottom:8px}
.setno{font-size:12px;font-weight:850;color:var(--lime);text-align:center}
.setrow input{width:100%;min-width:0;border:1px solid var(--line);border-radius:11px;background:#11140f;color:var(--text);padding:11px 10px;outline:none;min-height:44px}
.setrow input:focus{border-color:var(--lime)}
.setdel{border:1px solid var(--line);background:#1a1d18;color:var(--muted);border-radius:10px;min-height:44px;font-size:16px}
.setadd{width:100%;margin-top:2px;font-size:12px}

/* 기록 목록(날짜별 묶음) */
.datehead{display:flex;justify-content:space-between;align-items:baseline;margin:16px 2px 6px;font-size:12px;font-weight:850;color:var(--lime)}
.datehead span{font-size:11px;color:var(--muted);font-weight:600}
.listitem .actions{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:0}
.setline{font-size:11px;color:var(--muted);margin:5px 0 0;line-height:1.7}

/* 홈 */
.today-card{margin-top:12px}
.week-dots{display:flex;gap:6px;margin-top:12px}
.week-dots i{flex:1;height:34px;border-radius:9px;background:#1a1d18;border:1px solid var(--line);display:grid;place-items:center;font-style:normal;font-size:10px;color:var(--muted)}
.week-dots i.on{background:var(--lime);color:#171b11;border-color:var(--lime);font-weight:850}
.week-dots i.today{outline:1px solid var(--lime);outline-offset:1px}

/* 세트 행: 휴식 타이머가 있으면 ✓ 칸이 하나 더 생김 */
.setgrid.has-rest .setgrid-head,.setgrid.has-rest .setrow{grid-template-columns:26px 1fr 1fr 40px 40px;gap:6px}
.setgrid.has-rest .setgrid-head span:nth-child(4){text-align:center}
.setok{border:1px solid var(--line);background:#1a1d18;color:var(--muted);border-radius:10px;min-height:44px;font-size:17px;font-weight:900}
.setrow.done .setok{background:var(--lime);color:#171b11;border-color:var(--lime)}
.setrow.done input{border-color:#435a22}

/* 휴식 타이머 패널 + 화면 아래 작은 바 */
.restcustom{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;margin:2px 0 6px}
.restcustom .primary{padding:0 18px;min-height:46px;white-space:nowrap}
.restbar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(84px + env(safe-area-inset-bottom));width:min(520px,calc(100% - 20px));z-index:6;background:rgba(26,29,24,.98);border:1px solid var(--lime);border-radius:16px;box-shadow:0 8px 28px #0007;overflow:hidden}
.rest-prog{height:4px;background:#30362b}
.rest-prog i{display:block;height:100%;background:var(--lime);transform-origin:left;transform:scaleX(1)}
.rest-row{display:flex;align-items:center;gap:10px;padding:10px 12px}
.rest-time{font-size:26px;font-weight:900;letter-spacing:-.5px;font-variant-numeric:tabular-nums;color:var(--lime);min-width:64px}
.rest-msg{flex:1;font-size:12px;color:var(--muted);font-weight:700}
.restbar .secondary{padding:0 12px;min-height:44px}
.restbar.done{background:var(--lime);border-color:var(--lime)}
.restbar.done .rest-time,.restbar.done .rest-msg{color:#171b11}
.restbar.done .rest-prog{background:rgba(23,27,17,.15)}
.restbar.done .secondary{background:#171b11;color:#fff;border-color:#171b11}
@media(prefers-reduced-motion:no-preference){.restbar.done{animation:restpulse .8s ease-in-out 3}}
@keyframes restpulse{50%{transform:translateX(-50%) scale(1.03)}}
@media(min-width:600px){.restbar{bottom:104px}}
.rest-on .app{padding-bottom:190px}
.rest-on .toast{bottom:165px}
.restpanel{padding:4px 16px}
.restpanel[open]{padding-bottom:14px}
.restpanel summary{display:flex;align-items:center;gap:8px;min-height:48px;list-style:none;cursor:pointer}
.restpanel summary::-webkit-details-marker{display:none}
.restpanel summary h3{margin:0;font-size:14px;font-weight:850;flex:1}
.restpanel summary:after{content:"▾";color:var(--lime);font-size:14px}
.restpanel[open] summary:after{content:"▴"}
.restpanel[open] summary{margin-bottom:4px}

/* ⑥ 부위별 운동 현황 */
.seg{display:inline-flex;border:1px solid var(--line);border-radius:99px;overflow:hidden;flex-shrink:0}
.seg button{border:0;background:none;color:var(--muted);padding:0 14px;min-height:40px;font-size:12px;font-weight:750}
.seg button.on{background:var(--lime);color:#171b11;font-weight:900}
.pstat-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pstat-nav{display:flex;align-items:center;gap:2px}
.pstat-nav .textbtn{min-width:40px;font-size:14px}
.pstat-nav .textbtn:disabled{opacity:.25}
.pstat-label{font-size:13px;font-weight:850;min-width:92px;text-align:center}
.pstat-sum{margin:12px 2px 10px;font-size:12px;color:var(--muted)}
.pstat-sum b{color:var(--text);font-weight:850}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.cal-h{text-align:center;font-size:10px;color:var(--muted);padding-bottom:2px}
.cal-c{height:34px;border-radius:9px;background:#1a1d18;border:1px solid var(--line);display:grid;place-items:center;font-size:11px;color:var(--muted)}
.cal-c.empty{background:none;border:0}
.cal-c.on{background:var(--lime);color:#171b11;border-color:var(--lime);font-weight:850}
.cal-c.today{outline:1px solid var(--lime);outline-offset:1px}
.pbar{display:grid;grid-template-columns:40px 1fr 68px;gap:10px;align-items:center;margin:9px 0;font-size:12px}
.pbar-name{font-weight:800}
.pbar-track{height:10px;border-radius:99px;background:#11140f;border:1px solid var(--line);overflow:hidden}
.pbar-track i{display:block;height:100%;background:var(--lime);border-radius:99px}
.pbar-val{text-align:right;font-variant-numeric:tabular-nums;font-weight:750}
.pbar.zero{opacity:.45}
.pstat-cardio{margin-top:12px;padding-top:12px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.pstat-cardio b{color:var(--text)}

/* ⑬ 성장 통계 */
.gsum{margin-bottom:14px}
.gsum .stat{padding:12px 10px}
.gsum .stat strong{font-size:21px;margin:6px 0 0}
.gcards{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px}
.gcards>div{background:#151812;border:1px solid var(--line);border-radius:13px;padding:11px 9px;min-width:0}
.gcards span{display:block;font-size:10px;color:var(--muted)}
.gcards b{display:block;font-size:14px;margin-top:5px;letter-spacing:-.3px;overflow-wrap:anywhere}
.gcards i{display:block;font-style:normal;font-size:10px;color:var(--muted);margin-top:3px}
.gchart{display:block;width:100%;height:auto;margin-top:8px}
.g-grid{stroke:var(--line);stroke-width:1}
.g-txt{fill:var(--muted);font-size:10px}
.g-val{fill:var(--lime);font-size:11px;font-weight:800}
.g-line{fill:none;stroke:var(--lime);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.g-dot{fill:#1a1d18;stroke:var(--lime);stroke-width:2}
.g-pr{fill:var(--lime);stroke:#1a1d18;stroke-width:2}
.grecent{list-style:none;margin:10px 0 0;padding:0}
.grecent li{display:flex;justify-content:space-between;padding:9px 2px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.grecent li b{color:var(--text);font-variant-numeric:tabular-nums}
.grow{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;min-height:50px;padding:8px 10px;margin:0 0 6px;border:1px solid var(--line);background:#151812;color:var(--text);border-radius:12px;text-align:left}
.grow.on{border-color:var(--lime)}
.grow-name{font-size:13px;font-weight:800;min-width:0}
.grow-name i{font-style:normal;font-size:10px;color:var(--muted);margin-left:6px;font-weight:600}
.grow b{font-size:12px;color:var(--lime);white-space:nowrap}
.prcard{margin-top:16px;background:linear-gradient(135deg,#26301a,#1a1d18);border:1px solid #435a22;border-radius:18px;padding:14px 16px}
.prcard h3{margin:0 0 8px;font-size:14px}
.prrow{display:flex;justify-content:space-between;gap:10px;padding:6px 0;font-size:12px}
.prrow b{color:var(--lime)}
.prrow span{color:var(--muted)}
.gcards{grid-template-columns:1.45fr 1fr 1fr}
.gcards b{font-size:13px;white-space:nowrap;overflow-wrap:normal}
.gcards b{white-space:normal;word-break:keep-all;overflow-wrap:normal}

/* ⑭ 운동 챌린지 */
.chcard .streak{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.chcard .streak strong{display:block;font-size:20px;letter-spacing:-.5px}
.chcard .streak span{display:block;font-size:11px;color:var(--muted);margin-top:4px}
.chcard .streak em{font-style:normal;font-size:12px;font-weight:850;padding:7px 11px;border-radius:99px;background:#1a1d18;border:1px solid var(--line);white-space:nowrap}
.chcard .streak em.ok{background:var(--lime);color:#171b11;border-color:var(--lime)}
.wkstrip{display:grid;grid-template-columns:repeat(8,1fr);gap:5px;margin-top:14px}
.wk{height:30px;border-radius:8px;background:#1a1d18;border:1px solid var(--line);display:grid;place-items:center;font-size:11px;color:var(--muted);font-weight:800}
.wk.on{background:var(--lime);color:#171b11;border-color:var(--lime)}
.wk.cur{outline:1px solid var(--lime);outline-offset:1px}
.wklabel{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);margin-top:6px}
.chsep{height:1px;background:var(--line);margin:16px 0 14px}
.mrow{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;color:var(--muted)}
.mrow b{color:var(--text);font-size:14px}
.mbar{height:12px;border-radius:99px;background:#11140f;border:1px solid var(--line);overflow:hidden;margin:8px 0 6px}
.mbar i{display:block;height:100%;background:var(--lime);border-radius:99px;transition:width .3s}
.mnote{font-size:11px;color:var(--muted)}
.badges{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.badge{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:13px 12px;opacity:.62}
.badge.on{opacity:1;border-color:#5b7a26;background:linear-gradient(160deg,#26301a,#1a1d18)}
.b-emoji{font-size:26px;filter:grayscale(1)}
.badge.on .b-emoji{filter:none}
.b-name{font-size:13px;font-weight:850;margin-top:8px}
.b-desc{font-size:10px;color:var(--muted);line-height:1.5;margin-top:3px;min-height:30px}
.b-prog{font-size:11px;font-weight:800;margin-top:6px;color:var(--muted)}
.badge.on .b-prog{color:var(--lime)}

/* ⑮ 즐겨찾기 */
.namerow{display:flex;gap:8px;align-items:stretch}
.namerow input{flex:1;min-width:0}
.favbtn{flex:0 0 48px;min-height:46px;border:1px solid var(--line);background:#1a1d18;color:var(--muted);border-radius:12px;font-size:21px;line-height:1}
.favbtn[aria-pressed="true"]{color:var(--lime);border-color:var(--lime);background:#26301a}
.favrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}
.favlabel{font-size:11px;color:var(--lime);font-weight:800;margin-right:2px}
.chip.fav{border-color:#5b7a26;color:var(--text)}

/* 허브(운동·식단 탭) */
.hubtabs{display:flex;gap:7px;overflow-x:auto;margin:0 0 14px;padding-bottom:4px;scrollbar-width:none}
.hubtabs::-webkit-scrollbar{display:none}
.hubtabs .chip{flex:0 0 auto;white-space:nowrap;padding:0 16px}
.rtags{display:flex;gap:6px;flex-wrap:wrap;margin:2px 0 8px}
.tag{font-size:10px;font-weight:800;color:var(--lime);background:#1d2616;border:1px solid #3a4a22;border-radius:99px;padding:3px 9px}
.routinecard .primary{margin-top:12px}

/* ② 기구 */
.gearcard{display:block;width:100%;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:14px 15px;margin-bottom:9px;color:var(--text)}
.gc-top{display:flex;justify-content:space-between;align-items:center}
.gc-top strong{font-size:15px}
.gc-star{color:var(--lime)}
.gc-sum{font-size:12px;color:var(--muted);margin:5px 0 9px;line-height:1.5}
.gearcard .rtags{margin:0}
.gd-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.gd-head h3{margin:0;font-size:19px}
.gd-sum{font-size:12px;color:var(--muted);line-height:1.6;margin:0 0 6px}
.gd-photo{width:100%;border-radius:14px;margin:8px 0}
.gd-sec{margin-top:16px}
.gd-sec h4{margin:0 0 8px;font-size:13px;color:var(--lime)}
.gd-sec ol,.gd-sec ul{margin:0;padding-left:20px;font-size:13px;line-height:1.75}
.gd-sec li{margin-bottom:4px}
.gd-sec.warn{background:#241d17;border:1px solid #4d3b25;border-radius:13px;padding:12px 14px 8px}
.gd-sec.warn h4{color:#ffcf8a}
.gd-video{display:block;text-align:center;text-decoration:none;margin-top:14px;color:var(--text)}

/* ⑰ 팁 */
.tipcard{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:15px 16px;margin-bottom:9px}
.tipcard h4{margin:4px 0 6px;font-size:15px}
.tipcard p{margin:0;font-size:12px;line-height:1.7;color:#cdd2c4}
.tip-by{margin-top:9px;font-size:10px;color:var(--muted)}
.tipbox{display:block;width:100%;text-align:left;margin-top:12px;color:var(--text)}
.tipbox strong{display:block;font-size:14px;margin:6px 0 4px}
.tipbox p{margin:0;font-size:12px;line-height:1.65;color:var(--muted)}
.tip-k{font-size:11px;font-weight:850;color:var(--lime)}

/* 식단 (⑦⑧⑨⑪) */
.datebar{display:grid;grid-template-columns:48px 1fr 48px;gap:8px;margin-bottom:12px}
.datebar .secondary{min-height:46px;padding:0}
.datebar input{border:1px solid var(--line);border-radius:12px;background:#11140f;color:var(--text);padding:0 12px;min-height:46px;text-align:center;font-weight:800}
.nsum{margin-bottom:12px}
.nsum-top{display:flex;justify-content:space-between;align-items:flex-end;gap:10px}
.nsum-k{font-size:11px;color:var(--muted)}
.nsum-kcal{font-size:30px;letter-spacing:-1px;font-variant-numeric:tabular-nums}
.nsum-kcal span{font-size:13px;color:var(--muted);font-weight:700}
.nsum-goal{text-align:right;font-size:11px;color:var(--muted);line-height:1.6}
.nsum-goal b{color:var(--lime);font-size:13px}
.nsum-goal b.over,.mbar i.over{color:var(--danger)}
.mbar i.over{background:var(--danger)}
.nsum-ratio{margin-top:6px;font-size:11px;color:var(--muted)}
.nsum-ratio b{color:var(--text)}
.nsum .pbar{grid-template-columns:62px 1fr auto}
.slotcard{margin-bottom:10px;padding-bottom:14px}
.slot-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.slot-head h3{margin:0;font-size:15px}
.mitem{display:grid;grid-template-columns:1fr auto 52px 40px;gap:6px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.mi-name{min-width:0}
.mi-name strong{display:block;font-size:13px;overflow-wrap:anywhere}
.mi-name span{display:block;font-size:10px;color:var(--muted);margin-top:3px;line-height:1.4}
.mi-sv{border:1px solid var(--line);border-radius:10px;background:#11140f;color:var(--text);padding:0 4px;min-height:40px;font-size:12px}
.mi-kcal{text-align:right;font-weight:850;font-size:14px;font-variant-numeric:tabular-nums}
.mi-kcal small{display:block;font-size:9px;color:var(--muted);font-weight:600}
.slot-btns{margin-top:10px}
.photobtn{display:flex;align-items:center;justify-content:center;text-align:center;cursor:pointer;min-height:44px}
.slot-photos{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.slot-photos:empty{display:none}
.mphoto{position:relative;width:76px;height:76px;border-radius:12px;overflow:hidden;background:#11140f;border:1px solid var(--line)}
.mphoto img{width:100%;height:100%;object-fit:cover;display:block}
.mphoto.missing:after{content:"사진 없음";position:absolute;inset:0;display:grid;place-items:center;font-size:10px;color:var(--muted)}
.mp-x{position:absolute;top:3px;right:3px;width:26px;height:26px;border-radius:50%;border:0;background:#000a;color:#fff;font-size:12px}
.slot-picker{margin-top:10px}
.slot-picker:empty{display:none}
.fooditem .kc{color:var(--lime)}
.fooditem p{line-height:1.5}
.customfood{margin-top:10px}
.plan-big{display:flex;align-items:baseline;gap:6px;margin-bottom:12px}
.plan-big strong{font-size:34px;letter-spacing:-1px;color:var(--lime)}
.plan-big span{color:var(--muted);font-weight:700}
.plan-split{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:10px}
.plan-split div{background:#151812;border:1px solid var(--line);border-radius:11px;padding:8px 6px;text-align:center}
.plan-split span{display:block;font-size:10px;color:var(--muted)}
.plan-split b{font-size:12px}
.mealhome .mh-k{font-size:14px}
.mealhome .mh-k strong{font-size:24px;letter-spacing:-.6px}
.mealhome .mbar{margin:8px 0 6px}
.g-goal{stroke:var(--lime);stroke-width:1.2;stroke-dasharray:4 4;opacity:.7}
.g-goaltxt{fill:var(--lime);font-size:9px;opacity:.85}
.bd-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.bd-grid .field{margin:10px 0 0;min-width:0}
.bd-grid .field label{font-size:11px;white-space:nowrap}
.bdrecent li{align-items:center}
.bdrecent .textbtn{font-size:11px}

/* 넓은 화면(PC·태블릿): 하단 메뉴를 바닥에 딱 붙여서 아래로 내용이 비쳐 보이는 틈을 없앰 */
@media(min-width:600px){
  nav{bottom:0;border-radius:0}
  .restbar{bottom:calc(84px + env(safe-area-inset-bottom))}
}
.tag.warn{color:#ffcf8a;background:#2a2218;border-color:#5a4a2a}
