:root{
  --bg:#15171B; --surface:#1E2126; --surface-2:#262A31; --surface-3:#2E333B;
  --ink:#F4F3EF; --ink-dim:#9BA0A8; --ink-faint:#666C76; --line:#31353C;
  --accent:#E08A3C; --accent-ink:#1A0F05;
  --amber:#C97B3D; --red:#C1443C; --green:#4C8C5B;
  --radius:12px; --safe-b: env(safe-area-inset-bottom, 0px);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{background:var(--bg); color:var(--ink); font-family:'Inter',system-ui,sans-serif; -webkit-font-smoothing:antialiased; min-height:100vh; padding-bottom:calc(76px + var(--safe-b));}
body.timer-open{padding-bottom:calc(148px + var(--safe-b));}
.mono{font-family:'JetBrains Mono',monospace;}
.display{font-family:'Oswald',sans-serif; text-transform:uppercase; letter-spacing:.03em;}
#app{max-width:600px; margin:0 auto; position:relative;}

header.topbar{
  padding:20px 18px 16px; position:relative; overflow:hidden;
  background:
    repeating-linear-gradient(45deg, rgba(224,138,60,0.06) 0 2px, transparent 2px 8px),
    repeating-linear-gradient(-45deg, rgba(224,138,60,0.06) 0 2px, transparent 2px 8px),
    var(--surface);
  border-bottom:1px solid var(--line);
}
header.topbar h1{margin:0; font-size:24px; font-weight:700; display:flex; align-items:baseline; gap:8px;}
header.topbar h1 span.dot{color:var(--accent);}
header.topbar p{margin:4px 0 0; color:var(--ink-dim); font-size:12.5px;}

main{padding:16px;}
.view{display:none;}
.view.active{display:block; animation:fade .2s ease;}
@keyframes fade{from{opacity:0; transform:translateY(4px);} to{opacity:1; transform:none;}}

.card{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:18px; margin-bottom:14px;}
.muted{color:var(--ink-dim); font-size:13px; line-height:1.55;}

.progress-dots{display:flex; gap:6px; margin-bottom:18px;}
.progress-dots span{flex:1; height:4px; border-radius:2px; background:var(--line);}
.progress-dots span.done{background:var(--accent);}

.step-title{font-size:20px; margin:0 0 4px;}
.step-sub{color:var(--ink-dim); font-size:13px; margin:0 0 18px;}

.choice-grid{display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px;}
.choice{background:var(--surface-2); border:1.5px solid var(--line); color:var(--ink); border-radius:8px; padding:11px 14px; font-size:13.5px; cursor:pointer; font-weight:500; transition:all .12s ease;}
.choice.selected{border-color:var(--accent); background:rgba(224,138,60,.12); color:var(--accent);}
.choice:focus{outline:2px solid var(--accent); outline-offset:2px;}

.field-label{display:block; font-size:11.5px; color:var(--ink-dim); text-transform:uppercase; letter-spacing:.05em; margin:16px 0 8px;}
input[type=email], input[type=password], input[type=number], input[type=text], input[type=date], textarea, select{
  background:var(--surface-2); border:1px solid var(--line); color:var(--ink);
  border-radius:8px; padding:10px 12px; font-family:'Inter',sans-serif; font-size:16px; width:100%;
}
input.mono-input{font-family:'JetBrains Mono',monospace;}
textarea{resize:vertical; min-height:50px; font-size:15px;}
input:focus, select:focus, textarea:focus, button:focus{outline:2px solid var(--accent); outline-offset:2px;}

.btn{appearance:none; border:none; cursor:pointer; font-family:'Inter',sans-serif; font-weight:600; font-size:14.5px; padding:13px 20px; border-radius:9px; transition:transform .08s ease, opacity .15s ease;}
.btn:active{transform:scale(.97);}
.btn-primary{background:var(--accent); color:var(--accent-ink);}
.btn-ghost{background:var(--surface-2); color:var(--ink); border:1px solid var(--line);}
.btn-danger{background:transparent; color:var(--red); border:1px solid var(--red);}
.btn-block{width:100%; text-align:center;}
.btn-sm{padding:7px 12px; font-size:12.5px;}
.btn-row{display:flex; gap:10px; margin-top:8px;}
.btn:disabled{opacity:.4; cursor:default;}
.icon-btn{background:var(--surface-2); border:1px solid var(--line); color:var(--ink-dim); border-radius:6px; padding:5px 9px; font-size:12px; cursor:pointer; font-weight:600;}

.review-line{display:flex; justify-content:space-between; padding:8px 0; border-bottom:1px dashed var(--line); font-size:13.5px;}
.review-line:last-child{border-bottom:none;}
.review-line .k{color:var(--ink-dim);}
.review-line .v{font-weight:600; text-align:right; max-width:60%;}

.spinner{width:34px; height:34px; border:3px solid var(--surface-3); border-top-color:var(--accent); border-radius:50%; margin:0 auto 18px; animation:spin 0.9s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}

.plan-header h2{font-size:24px; margin:2px 0 8px;}
.safety-box{background:rgba(201,123,61,.1); border:1px solid var(--amber); border-radius:9px; padding:12px 14px; margin-bottom:14px; font-size:12.5px; color:var(--ink);}
.safety-box b{color:var(--amber); display:block; margin-bottom:6px; text-transform:uppercase; font-size:11px; letter-spacing:.04em;}
.safety-box ul{margin:0; padding-left:18px;}

details.day-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); margin-bottom:10px; overflow:hidden;}
details.day-card summary{padding:14px 16px; cursor:pointer; list-style:none; display:flex; justify-content:space-between; align-items:center;}
details.day-card summary::-webkit-details-marker{display:none;}
details.day-card summary .d-label{font-weight:600; font-size:15px;}
details.day-card summary .d-focus{color:var(--ink-dim); font-size:12px; margin-top:2px;}
details.day-card .d-body{padding:0 16px 14px; border-top:1px solid var(--line);}
.plan-ex{padding:10px 0; border-bottom:1px dashed var(--line);}
.plan-ex:last-child{border-bottom:none;}
.plan-ex .pe-name{font-weight:500; font-size:14px;}
.plan-ex .pe-sets{font-family:'JetBrains Mono',monospace; font-size:12.5px; color:var(--accent); margin-top:2px;}
.plan-ex .pe-cue{font-size:12px; color:var(--ink-dim); margin-top:3px; line-height:1.4;}
details.day-card .btn{margin-top:10px;}

.ex-card{background:var(--surface); border:1px solid var(--line); border-left:4px solid var(--accent); border-radius:var(--radius); padding:14px; margin-bottom:12px;}
.ex-head{display:flex; justify-content:space-between; align-items:flex-start; gap:8px;}
.ex-name{font-weight:600; font-size:15.5px;}
.ex-cue{color:var(--ink-dim); font-size:12.5px; margin-top:6px; line-height:1.5;}
.ex-target{color:var(--ink-faint); font-size:11.5px; margin-top:8px; text-transform:uppercase; letter-spacing:.04em;}
.ex-target .rest-hint{color:var(--accent); margin-left:8px;}

table.set-table{width:100%; border-collapse:collapse; margin-top:10px; font-size:13.5px;}
table.set-table th{text-align:left; color:var(--ink-dim); font-weight:600; font-size:10.5px; text-transform:uppercase; padding-bottom:6px; border-bottom:1px solid var(--line);}
table.set-table td{padding:6px 3px; border-bottom:1px solid var(--line); vertical-align:middle;}
table.set-table td.set-num{font-family:'JetBrains Mono',monospace; color:var(--ink-dim); width:18px; font-size:12.5px;}
table.set-table td.warmup-cell{width:30px; text-align:center;}
table.set-table td.done-cell{width:34px; text-align:center;}
table.set-table td.rm-cell{width:24px; text-align:center;}
table.set-table input{padding:6px 7px; font-size:15px; font-family:'JetBrains Mono',monospace;}
table.set-table tr.warmup-row td{opacity:.65;}
table.set-table tr.set-done td{background:rgba(76,140,91,.09);}
table.set-table tr.set-done .set-weight, table.set-table tr.set-done .set-reps{border-color:rgba(76,140,91,.5);}
.set-done-btn{width:30px; height:30px; border-radius:8px; border:1.5px solid var(--line); background:var(--surface-2); color:var(--ink-faint); font-size:14px; line-height:1; cursor:pointer; font-weight:700;}
.set-done-btn.on{background:var(--green); border-color:var(--green); color:#fff;}
.rm-row-btn{background:none; border:none; color:var(--ink-faint); font-size:16px; cursor:pointer; line-height:1; padding:2px 4px;}
.rm-row-btn:disabled{opacity:.25; cursor:default;}
.set-add-row{display:flex; gap:8px; margin-top:10px;}

.ex-extra{margin-top:12px; display:grid; grid-template-columns:1fr 1fr; gap:10px;}
.ex-extra label{display:block; font-size:11px; color:var(--ink-dim); text-transform:uppercase; letter-spacing:.04em; margin-bottom:5px;}
.grid2 .field label{display:block; font-size:11px; color:var(--ink-dim); text-transform:uppercase; letter-spacing:.04em; margin-bottom:5px;}

.log-head{display:flex; justify-content:space-between; align-items:center;}
.log-progress{font-size:15px; color:var(--accent); font-weight:700;}

details.log-entry{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); margin-bottom:10px; overflow:hidden;}
details.log-entry summary{padding:13px 14px; cursor:pointer; display:flex; justify-content:space-between; align-items:center; list-style:none;}
details.log-entry summary::-webkit-details-marker{display:none;}
details.log-entry summary .l-date{font-weight:600; font-size:14.5px;}
details.log-entry summary .l-meta{color:var(--ink-dim); font-size:12px; margin-top:2px;}
details.log-entry .log-body{padding:0 14px 14px; border-top:1px solid var(--line);}
.log-ex-row{padding:9px 0; border-bottom:1px dashed var(--line); font-size:13.5px;}
.log-ex-row:last-child{border-bottom:none;}
.log-ex-row .name{font-weight:500;}
.log-ex-row .setline{color:var(--ink-dim); font-size:12px; margin-top:3px;}
.log-summary{background:var(--surface-2); border-left:3px solid var(--accent); border-radius:0 8px 8px 0; padding:10px 12px; margin:12px 0; font-size:12.5px; line-height:1.5;}
.log-summary b{display:block; margin-bottom:4px; color:var(--accent);}

table.w-table{width:100%; border-collapse:collapse;}
table.w-table th{text-align:left; font-size:11px; color:var(--ink-dim); text-transform:uppercase; padding:0 6px 8px; border-bottom:1px solid var(--line);}
table.w-table td{padding:9px 6px; border-bottom:1px solid var(--line); font-size:13.5px;}

.empty{text-align:center; padding:36px 16px; color:var(--ink-dim);}
.empty .display{font-size:18px; color:var(--ink); margin-bottom:6px;}

.tabbar{position:fixed; left:0; right:0; bottom:0; z-index:20; background:var(--surface); border-top:1px solid var(--line); padding:8px 6px calc(8px + var(--safe-b)); display:flex; max-width:600px; margin:0 auto; gap:6px;}
.tab{flex:1; background:var(--surface-2); border:1px solid var(--line); color:var(--ink-dim); cursor:pointer; padding:11px 4px; border-radius:8px; font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:.02em;}
.tab.active{color:var(--accent); border-color:var(--accent);}

#toast{position:fixed; left:50%; bottom:calc(88px + var(--safe-b)); transform:translateX(-50%) translateY(8px); background:var(--surface-3); border:1px solid var(--line); color:var(--ink); padding:11px 16px; border-radius:8px; font-size:13.5px; opacity:0; pointer-events:none; transition:all .2s ease; z-index:40; max-width:88%; text-align:center;}
#toast.show{opacity:1; transform:translateX(-50%) translateY(0);}
body.timer-open #toast{bottom:calc(158px + var(--safe-b));}
#loading-app{position:fixed; inset:0; background:var(--bg); display:flex; align-items:center; justify-content:center; z-index:100; color:var(--ink-dim); font-size:13px;}
.error-box{background:rgba(193,68,60,.12); border:1px solid var(--red); border-radius:9px; padding:14px; font-size:13px; margin-bottom:14px;}
.id-box{background:var(--surface-2); border:1px solid var(--line); border-radius:8px; padding:10px 12px; font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--ink-dim); word-break:break-all; margin-top:6px;}

.help-links{display:flex; gap:14px; margin-top:6px;}
.help-links a{color:var(--accent); font-size:11.5px; text-decoration:none; font-weight:600;}
.help-links a:hover{text-decoration:underline;}

.overlay{position:fixed; inset:0; background:rgba(10,11,13,.6); display:none; align-items:center; justify-content:center; z-index:50; padding:20px;}
.overlay.show{display:flex;}
.box{background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:20px; max-width:380px; width:100%; max-height:85vh; overflow-y:auto;}
.radio-inline{display:flex; align-items:center; gap:6px; font-size:13.5px; color:var(--ink); font-weight:500;}
.radio-inline input{width:auto;}

.grid2{display:grid; grid-template-columns:1fr 1fr; gap:10px;}
.meas-entry{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:12px 14px; margin-bottom:10px;}
.meas-entry .m-date{font-weight:600; font-size:14px; margin-bottom:6px;}
.meas-entry .m-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:6px 10px; font-size:12.5px;}
.meas-entry .m-grid div span{display:block; color:var(--ink-dim); font-size:10.5px; text-transform:uppercase;}
.meas-entry .m-grid div b{font-family:'JetBrains Mono',monospace; font-size:14px;}

.icon-btn-row{display:flex; gap:6px; flex-shrink:0; flex-wrap:wrap; justify-content:flex-end;}

.draft-banner{background:rgba(224,138,60,.1); border:1px solid var(--accent); border-radius:9px; padding:14px; margin-bottom:14px; font-size:13px;}
.draft-banner b{color:var(--accent); display:block; margin-bottom:4px;}
.draft-banner .btn-row{margin-top:10px;}

.superset-wrap{border:1.5px dashed var(--accent); border-radius:var(--radius); padding:10px; margin-bottom:12px;}
.superset-label{font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--accent); font-weight:700; margin-bottom:8px; padding:0 4px;}
.superset-wrap .ex-card{margin-bottom:8px;}
.superset-wrap .ex-card:last-child{margin-bottom:0;}

.unit-toggle{display:inline-flex; gap:4px;}
.unit-btn{background:var(--surface-2); border:1px solid var(--line); color:var(--ink-dim); border-radius:6px; padding:3px 9px; font-size:11px; font-weight:700; cursor:pointer; text-transform:none; letter-spacing:0;}
.unit-btn.active{background:var(--accent); color:var(--accent-ink); border-color:var(--accent);}

.photo-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:8px;}
.photo-thumb{position:relative; aspect-ratio:3/4; border-radius:8px; overflow:hidden; background:var(--surface-2); border:1px solid var(--line);}
.photo-thumb img{width:100%; height:100%; object-fit:cover; display:block;}
.photo-thumb-broken{width:100%; height:100%; display:flex; align-items:center; justify-content:center; color:var(--ink-faint); font-size:20px;}
.photo-thumb .pt-label{position:absolute; left:0; right:0; bottom:0; background:linear-gradient(transparent, rgba(0,0,0,.75)); color:#fff; font-size:10px; padding:4px 6px 5px; text-align:center;}
.photo-thumb .pt-delete{position:absolute; top:4px; right:4px; background:rgba(10,11,13,.7); color:#fff; border:none; border-radius:50%; width:22px; height:22px; font-size:14px; line-height:1; cursor:pointer;}

.chat-fab{position:fixed; right:16px; bottom:calc(76px + var(--safe-b)); width:52px; height:52px; border-radius:50%; background:var(--accent); color:var(--accent-ink); border:none; font-size:22px; box-shadow:0 4px 14px rgba(0,0,0,.35); z-index:15; cursor:pointer; align-items:center; justify-content:center;}
body.timer-open .chat-fab{bottom:calc(148px + var(--safe-b));}
.chat-header{display:flex; align-items:center; gap:10px; margin-bottom:14px;}
.chat-title{font-weight:600; font-size:16px;}
.chat-messages{display:flex; flex-direction:column; gap:10px; max-height:62vh; overflow-y:auto; padding:4px 2px 12px;}
.chat-msg{max-width:82%; padding:10px 13px; border-radius:14px; font-size:14px; line-height:1.45; white-space:pre-wrap;}
.chat-msg.user{align-self:flex-end; background:var(--accent); color:var(--accent-ink); border-bottom-right-radius:4px;}
.chat-msg.assistant{align-self:flex-start; background:var(--surface-2); border:1px solid var(--line); border-bottom-left-radius:4px;}
.chat-hint{font-size:11.5px; text-align:center; padding:4px 0 6px;}
.chat-input-row{display:flex; gap:8px; position:sticky; bottom:0; background:var(--bg); padding-top:8px;}
.chat-input-row input{flex:1;}
.chat-system{align-self:center; background:rgba(76,140,91,.14); border:1px solid rgba(76,140,91,.5); color:var(--ink); font-size:12px; padding:6px 12px; border-radius:20px; text-align:center; max-width:92%;}
.chat-msg.typing{display:flex; gap:4px; align-items:center; padding:14px;}
.chat-msg.typing span{width:6px; height:6px; border-radius:50%; background:var(--ink-faint); animation:blink 1.2s infinite;}
.chat-msg.typing span:nth-child(2){animation-delay:.2s;}
.chat-msg.typing span:nth-child(3){animation-delay:.4s;}
@keyframes blink{0%,60%,100%{opacity:.25;} 30%{opacity:1;}}

/* ---------------- tap-to-apply proposals ---------------- */
.proposal-wrap{display:flex; flex-direction:column; gap:10px; align-self:stretch;}
.proposal{background:var(--surface); border:1px solid var(--accent); border-radius:12px; padding:13px 14px;}
.proposal.applied{border-color:var(--line); opacity:.88;}
.p-head{display:flex; align-items:center; gap:8px; flex-wrap:wrap;}
.p-scope{font-size:9.5px; text-transform:uppercase; letter-spacing:.06em; font-weight:700; color:var(--accent-ink); background:var(--accent); padding:3px 7px; border-radius:20px;}
.proposal.applied .p-scope{background:var(--surface-3); color:var(--ink-dim);}
.p-title{font-weight:600; font-size:14px;}
.p-why{color:var(--ink-dim); font-size:12.5px; line-height:1.5; margin-top:6px;}
.p-options{display:flex; flex-direction:column; gap:7px; margin-top:11px;}
.p-opt{display:flex; flex-direction:column; gap:2px; text-align:left; background:var(--surface-2); border:1.5px solid var(--line); border-radius:9px; padding:11px 13px; cursor:pointer; color:var(--ink); font-family:'Inter',sans-serif;}
.p-opt:active{transform:scale(.985);}
.p-opt.chosen{border-color:var(--green); background:rgba(76,140,91,.13);}
.p-opt:disabled{opacity:.5; cursor:default;}
.p-opt-none{background:transparent;}
.po-label{font-weight:600; font-size:13.5px;}
.po-detail{color:var(--ink-dim); font-size:12px; line-height:1.45;}
.p-applied{margin-top:10px; font-size:11.5px; color:var(--green); font-weight:600;}

/* ---------------- superset suggestions ---------------- */
.ss-divider{display:flex; align-items:center; gap:10px; margin:18px 0 12px; color:var(--ink-faint); font-size:11px; text-transform:uppercase; letter-spacing:.05em;}
.ss-divider::before, .ss-divider::after{content:''; flex:1; height:1px; background:var(--line);}
.ss-sugg{display:flex; flex-direction:column; gap:2px; width:100%; text-align:left; background:var(--surface-2); border:1px solid var(--line); border-radius:9px; padding:11px 13px; margin-bottom:8px; cursor:pointer; color:var(--ink); font-family:'Inter',sans-serif;}
.ss-name{font-weight:600; font-size:13.5px;}
.ss-why{color:var(--ink-dim); font-size:11.5px; line-height:1.45;}

/* ---------------- rest timer ---------------- */
.rest-timer{position:fixed; left:0; right:0; bottom:calc(70px + var(--safe-b)); z-index:25; max-width:600px; margin:0 auto;
  background:var(--surface-3); border:1px solid var(--accent); border-radius:12px; padding:10px 14px;
  display:flex; align-items:center; justify-content:space-between; gap:10px; box-shadow:0 6px 20px rgba(0,0,0,.4);
  width:calc(100% - 24px); left:12px; right:12px;}
.rest-timer .rt-left{display:flex; flex-direction:column;}
.rest-timer .rt-clock{font-size:22px; font-weight:700; line-height:1.05; color:var(--accent);}
.rest-timer .rt-label{font-size:10.5px; color:var(--ink-dim); text-transform:uppercase; letter-spacing:.04em; margin-top:2px; max-width:150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.rest-timer .rt-actions{display:flex; gap:6px;}
.rt-btn{background:var(--surface-2); border:1px solid var(--line); color:var(--ink); border-radius:7px; padding:8px 10px; font-size:12px; font-weight:600; cursor:pointer;}
.rt-btn.rt-skip{border-color:var(--accent); color:var(--accent);}
.rest-timer .rt-bar{position:absolute; left:0; right:0; bottom:0; height:3px; background:var(--line); border-radius:0 0 11px 11px; overflow:hidden;}
.rest-timer .rt-bar span{display:block; height:100%; background:var(--accent); transition:width .25s linear;}
.rest-timer.warning{border-color:var(--amber);}
.rest-timer.warning .rt-clock{color:var(--amber);}
.rest-timer.done{border-color:var(--green); animation:pulse .5s ease 3;}
.rest-timer.done .rt-clock{color:var(--green);}
@keyframes pulse{0%,100%{box-shadow:0 6px 20px rgba(0,0,0,.4);} 50%{box-shadow:0 0 0 4px rgba(76,140,91,.28);}}

/* ---------------- week strip / completed section ---------------- */
.week-strip{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:13px 15px; margin-bottom:14px;}
.ws-head{display:flex; justify-content:space-between; align-items:baseline;}
.ws-title{font-size:13px; font-weight:600;}
.ws-count{color:var(--accent); font-size:14px; font-weight:700;}
.ws-pips{display:flex; gap:5px; margin-top:9px;}
.ws-pips span{flex:1; height:6px; border-radius:3px; background:var(--surface-3);}
.ws-pips span.on{background:var(--accent);}

.week-banner{background:rgba(76,140,91,.1); border:1px solid var(--green); border-radius:9px; padding:14px; margin-bottom:14px; font-size:13px;}
.week-banner b{color:var(--green); display:block; margin-bottom:4px;}
.week-banner ul{margin:0; padding-left:18px; font-size:12.5px; line-height:1.6; color:var(--ink);}

.week-done{background:var(--surface); border:1px solid var(--green); border-radius:var(--radius); padding:18px; margin-bottom:14px; text-align:center;}

details.completed-section{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); margin:6px 0 14px; overflow:hidden; opacity:.9;}
details.completed-section summary{padding:13px 16px; cursor:pointer; list-style:none; display:flex; justify-content:space-between; align-items:center;}
details.completed-section summary::-webkit-details-marker{display:none;}
.cs-title{font-weight:600; font-size:14px; color:var(--green);}
.cs-sub{color:var(--ink-dim); font-size:12px; margin-top:2px;}
.cs-body{padding:0 16px 12px; border-top:1px solid var(--line);}
.done-row{display:flex; justify-content:space-between; align-items:center; gap:10px; padding:11px 0; border-bottom:1px dashed var(--line);}
.done-row:last-child{border-bottom:none;}
.dr-label{font-weight:500; font-size:13.5px;}
.dr-meta{color:var(--ink-dim); font-size:11.5px; margin-top:2px;}

/* ---------------- post-workout summary ---------------- */
.summary-hero{padding:6px 2px 14px;}
.stat-row{display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:10px;}
.stat{background:var(--surface); border:1px solid var(--line); border-radius:10px; padding:12px 8px; text-align:center;}
.stat b{display:block; font-size:19px; color:var(--accent);}
.stat span{display:block; font-size:10px; color:var(--ink-dim); text-transform:uppercase; letter-spacing:.04em; margin-top:3px;}
.vol-delta{font-size:12.5px; font-weight:600; margin-bottom:14px; text-align:center;}
.vol-delta.up{color:var(--green);}
.vol-delta.down{color:var(--amber);}

.coach-card{border-left:4px solid var(--accent);}
.cc-head{margin-bottom:8px;}
.cc-badge{font-size:9.5px; text-transform:uppercase; letter-spacing:.06em; font-weight:700; color:var(--accent-ink); background:var(--accent); padding:3px 8px; border-radius:20px;}
.skeleton-line{height:11px; border-radius:6px; background:linear-gradient(90deg, var(--surface-2) 25%, var(--surface-3) 50%, var(--surface-2) 75%); background-size:200% 100%; animation:shimmer 1.3s infinite; margin-bottom:8px;}
@keyframes shimmer{0%{background-position:200% 0;} 100%{background-position:-200% 0;}}

.next-list{display:flex; flex-direction:column; gap:9px;}
.next-item{display:flex; gap:10px; align-items:flex-start;}
.ni-tag{font-size:9.5px; text-transform:uppercase; letter-spacing:.05em; font-weight:700; padding:3px 7px; border-radius:5px; flex-shrink:0; margin-top:2px; background:var(--surface-3); color:var(--ink-dim);}
.ni-increase{background:rgba(76,140,91,.2); color:var(--green);}
.ni-hold{background:rgba(224,138,60,.16); color:var(--accent);}
.ni-decrease, .ni-watch{background:rgba(193,68,60,.16); color:var(--red);}
.ni-swap{background:rgba(201,123,61,.18); color:var(--amber);}
.ni-ex{font-weight:600; font-size:13.5px;}
.ni-detail{color:var(--ink-dim); font-size:12.5px; line-height:1.45; margin-top:2px;}

.feedback-card{border-left:4px solid var(--surface-3);}
.rating-row{display:flex; gap:8px;}
.rating-btn{flex:1; background:var(--surface-2); border:1.5px solid var(--line); color:var(--ink-dim); border-radius:8px; padding:12px 0; font-size:15px; font-weight:700; cursor:pointer;}
.rating-btn.on{background:rgba(224,138,60,.16); border-color:var(--accent); color:var(--accent);}

/* ---------------- add-a-day preview ---------------- */
.new-day-preview{background:var(--surface-2); border:1px solid var(--line); border-radius:10px; padding:13px;}
.ndp-label{font-weight:700; font-size:14.5px;}
.ndp-focus{color:var(--ink-dim); font-size:12px; margin:2px 0 10px;}
.ndp-ex{display:flex; justify-content:space-between; gap:10px; padding:6px 0; border-bottom:1px dashed var(--line); font-size:13px;}
.ndp-ex:last-child{border-bottom:none;}
.ndp-ex .mono{color:var(--accent); font-size:12px;}

/* ---------------- exercise browser ---------------- */
.ex-search{position:sticky; top:0; z-index:2; margin-bottom:10px; font-size:16px;}
.fchip-row{display:flex; gap:6px; overflow-x:auto; padding-bottom:8px; margin-bottom:2px; -webkit-overflow-scrolling:touch; scrollbar-width:none;}
.fchip-row::-webkit-scrollbar{display:none;}
.fchip{flex:0 0 auto; background:var(--surface-2); border:1px solid var(--line); color:var(--ink-dim); border-radius:20px; padding:6px 12px; font-size:12px; font-weight:600; cursor:pointer; white-space:nowrap; font-family:'Inter',sans-serif;}
.fchip.on{background:rgba(224,138,60,.15); border-color:var(--accent); color:var(--accent);}
.ex-results{margin-top:6px; display:flex; flex-direction:column; gap:6px;}
.ex-row{display:flex; align-items:center; justify-content:space-between; gap:10px; width:100%; text-align:left; background:var(--surface-2); border:1px solid var(--line); border-radius:9px; padding:10px 12px; cursor:pointer; color:var(--ink); font-family:'Inter',sans-serif;}
.ex-row:active{transform:scale(.99);}
.ex-row-custom{border-style:dashed; border-color:var(--accent);}
.exr-main{min-width:0;}
.exr-name{font-weight:600; font-size:14px;}
.exr-custom{font-size:9.5px; text-transform:uppercase; letter-spacing:.05em; background:var(--surface-3); color:var(--ink-dim); padding:2px 5px; border-radius:4px; vertical-align:middle;}
.exr-tags{display:flex; gap:6px; flex-wrap:wrap; margin-top:3px;}
.exr-tags span{font-size:10.5px; color:var(--ink-dim); background:var(--surface-3); padding:2px 6px; border-radius:4px;}
.exr-flag{color:var(--amber); font-size:15px; flex-shrink:0;}
.exr-plus{color:var(--accent); font-size:18px; font-weight:700; flex-shrink:0;}
.ex-more{text-align:center; padding:10px 4px; font-size:12px;}

/* ---------------- admin: library gaps ---------------- */
.gap-list{margin-top:12px;}
.gap-row{display:flex; justify-content:space-between; align-items:center; gap:10px; padding:9px 0; border-bottom:1px dashed var(--line);}
.gap-row:last-child{border-bottom:none;}
.gap-name{font-weight:500; font-size:13.5px;}
.gap-meta{color:var(--ink-dim); font-size:11.5px; margin-top:2px;}
.gap-count{color:var(--accent); font-size:12.5px; font-weight:700; flex-shrink:0;}

/* ---------------- admin feedback ---------------- */
.fb-entry{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:13px 15px; margin-bottom:10px;}
.fb-top{display:flex; justify-content:space-between; align-items:flex-start; gap:10px;}
.fb-who{font-weight:600; font-size:13px; word-break:break-all;}
.fb-meta{color:var(--ink-dim); font-size:11.5px; margin-top:2px;}
.fb-rating{color:var(--accent); font-weight:700; font-size:15px; flex-shrink:0;}
.fb-body{margin-top:10px; font-size:13.5px; line-height:1.5; white-space:pre-wrap;}
.fb-bug{margin-top:10px; background:rgba(193,68,60,.1); border:1px solid rgba(193,68,60,.5); border-radius:8px; padding:9px 11px; font-size:12.5px; line-height:1.5; white-space:pre-wrap;}
.fb-bug b{display:block; color:var(--red); font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; margin-bottom:4px;}
