/* SWACK 6.8: local components using existing theme and font tokens. */
:root{--swack-completion:#6844df;--swack-completion-ink:#fff;--swack-completion-soft:#eee8fc;--swack-completion-text:#5d35ca}
html[data-theme="dark"]{--swack-completion:#7954df;--swack-completion-soft:#302643;--swack-completion-text:#c8b2ff}
/* Completion is one semantic state across Home, plan, sets and history. */
.v6-done-badge,.bp9-completed-check,.swack-complete-mark,.run-complete-icon,.complete-badge,.v62-set-dots i.done,.warmup-panel .warmup-row.done .warm-check,
.v62-stage .set-complete.done,.v618-current .set-complete.done,
.v63-plan-timeline .v6-workout-row.past::before{
 background:var(--swack-completion)!important;color:var(--swack-completion-ink)!important;border-color:var(--swack-completion)!important;box-shadow:none!important;
}
.v62-stage .set-log-row.done,.bp9-completed-set.done,.v63-warmup-toggle,.bp9-save-notice{background:var(--swack-completion-soft)!important;color:var(--swack-completion-text)!important}
.bp9-set-check,.bp9-completed-set.done i,.rir-summary{color:var(--swack-completion-text)!important}
.workout-mode .warmup-row.done,.workout-mode .active-exercise.complete,.swack-cockpit .adapt-list>span{border-color:var(--swack-completion)!important}
.workout-mode .active-exercise.complete .exercise-preview-label{color:var(--swack-completion-text)!important}
.swack-workout-blocks,.v672-run-rx ol.swack-workout-blocks{list-style:none;margin:12px 0 16px;padding:0;display:grid;gap:0;text-align:left}
.swack-workout-blocks li,.v672-run-rx .swack-workout-blocks li{display:grid;grid-template-columns:72px minmax(0,1fr);gap:12px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--bp-line);font:400 15px/1.5 var(--sw-font-body);color:var(--bp-ink);overflow-wrap:anywhere}
.swack-workout-blocks li>strong{font:650 15px/1.5 var(--sw-font-body);font-variant-numeric:tabular-nums;color:var(--bp-ink)}
.swack-workout-legacy li{grid-template-columns:minmax(0,1fr)}
.swack-cardio-session>h2{font:700 22px/1.25 var(--sw-font-body);margin:0 0 12px}
.swack-run-note{font:400 14px/1.5 var(--sw-font-body);color:var(--bp-muted)}
body.workout-mode #app{padding-top:calc(env(safe-area-inset-top,0px) + 12px)!important;padding-bottom:calc(var(--swack-nav-height) + 104px)!important}
.swack-workout-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:0 var(--swack-text-gutter) 18px;padding:4px 0 16px;border-bottom:1px solid var(--bp-line);color:var(--bp-ink);background:transparent}
.swack-workout-header>div{min-width:0;flex:1}.swack-workout-header small{display:block;font:600 12px/1.5 var(--sw-font-body);letter-spacing:.04em;color:var(--bp-muted)}
.swack-workout-header h1{font:750 27px/1.16 var(--sw-font-body)!important;letter-spacing:-.035em;margin:5px 0 7px!important;color:var(--bp-ink)!important;overflow-wrap:anywhere}
.swack-workout-header p{margin:0;font:400 13px/1.5 var(--sw-font-body);color:var(--bp-muted)}
.swack-workout-header>button{flex:0 0 44px;width:44px;height:44px;border:0;border-radius:50%;background:var(--bp-card2);color:var(--bp-ink);font:400 28px/1 var(--sw-font-body)}
body.v62-workout-mode .workout-dock.v618-workout-dock{bottom:calc(var(--swack-nav-height) + 8px)!important;background:var(--bp-card)!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;z-index:105}
body.v62-workout-mode .v6-rest-overlay{bottom:var(--swack-nav-height)!important;overflow-y:auto;padding:20px max(20px,env(safe-area-inset-right)) 24px max(20px,env(safe-area-inset-left));box-sizing:border-box}
.v62-timed-complete h3{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:20px!important;font-size:20px!important}
.v62-timed-complete-mark{display:inline-grid;width:30px;height:30px;flex:0 0 30px;margin:0;border-radius:50%;background:var(--swack-completion);color:var(--swack-completion-ink);font-size:18px;line-height:1;box-shadow:none}
.v6-plan .v6-workout-detail .plan-start-r12{background:var(--swack-action-bg,#6236d8)!important;background-image:none!important;color:#fff!important;border:0!important;min-height:48px;font:650 16px/1.3 var(--sw-font-body)!important;box-shadow:none!important}
.v6-plan .v6-workout-detail .plan-start-r12:active{background:#4c25b7!important;transform:scale(.985)}
.v6-home .v673-rest-start,.v6-home .v675-rest-action{background:var(--bp-card)!important;background-image:none!important;color:var(--bp-purple)!important;border:1px solid var(--bp-line)!important;box-shadow:none!important}
#modalRoot .swack-dialog-backdrop,#modalRoot .swack-settings-backdrop{
  position:fixed!important;inset:0!important;z-index:100010!important;display:flex!important;
  align-items:center!important;justify-content:center!important;padding:16px!important;
  background:rgba(12,14,24,.42)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}
.swack-cockpit,.swack-celebration,#modalRoot .swack-small-dialog,#modalRoot .swack-settings-page{
  position:relative!important;inset:auto!important;transform:none!important;translate:none!important;
  width:min(100%,540px)!important;max-width:100%!important;max-height:calc(100dvh - 32px)!important;
  overflow-y:auto!important;overscroll-behavior:contain;box-sizing:border-box!important;
  margin:0!important;padding:24px!important;border-radius:24px!important;
  background:var(--bp-card,#fff)!important;color:var(--bp-ink,#151826)!important;
  border:1px solid var(--bp-line)!important;box-shadow:0 16px 60px #080b1830!important;
  font-family:var(--sw-font-body,'Geist',sans-serif);
}
body.swack-cockpit-open{overflow:hidden}
.swack-cockpit:focus,.swack-celebration:focus,.swack-small-dialog:focus,.swack-settings-page:focus{outline:none}
#modalRoot .swack-small-dialog{width:min(100%,430px)!important;padding:28px 24px!important}
#modalRoot .swack-settings-page{width:min(100%,600px)!important;min-height:min(460px,70dvh)!important}
#modalRoot .swack-settings-page .modal-handle,#modalRoot .swack-small-dialog .modal-handle{display:none!important}
.swack-settings-back{display:block;min-height:48px;background:transparent;border:0;color:var(--bp-purple);font:700 15px var(--sw-font-body);margin-bottom:8px;padding:0}
.swack-settings-page h2,.swack-cockpit h2,.swack-celebration h2{font-size:28px!important;line-height:1.15!important;margin:8px 0 16px!important;color:var(--bp-ink)!important}
.swack-cockpit header{padding-right:32px}
.swack-cockpit header small,.swack-celebration>small{font-size:12px;font-weight:800;letter-spacing:.08em;color:var(--bp-purple)}
.swack-cockpit h3{font-size:16px!important;line-height:1.4;margin:20px 0 10px}
.swack-close{position:absolute;right:16px;top:12px;border:0;background:transparent;color:var(--bp-muted);width:44px;height:44px;font-size:28px}
.swack-time-control{position:relative;display:grid;justify-items:center;padding:8px 0 0}
.swack-time-control output{font-size:80px;line-height:1;font-weight:750;letter-spacing:-.06em;color:var(--bp-purple);font-variant-numeric:tabular-nums}
.swack-time-control>span{font-size:13px;font-weight:700;color:var(--bp-muted);margin:4px 0 8px}
.swack-time-control input[type=range]{display:block;width:100%;height:44px;margin:0;accent-color:var(--bp-purple);cursor:pointer;padding:0;border:0;background:transparent}
.swack-time-ticks{display:flex;justify-content:space-between;width:100%;gap:2px}
.swack-time-ticks button{border:0;background:transparent;color:var(--bp-muted);min-width:44px;min-height:44px;font:600 15px var(--sw-font-body);padding:4px}
.swack-time-ticks button[aria-pressed=true]{color:var(--bp-purple);font-weight:800}
.swack-impact{display:grid;text-align:center;min-height:52px;align-content:center;gap:4px;margin:8px 0 12px}
.swack-impact strong{font-size:17px}.swack-impact span{font-size:14px;color:var(--bp-muted)}
.swack-location{display:grid;grid-template-columns:24px minmax(0,1fr) 18px;gap:10px;align-items:center;width:100%;padding:12px 0;border:0;border-block:1px solid var(--bp-line);background:transparent;color:var(--bp-ink);text-align:left;font:700 15px var(--sw-font-body)}
.swack-location small{display:block;color:var(--bp-muted);font-size:13px;font-weight:400;margin-top:4px}
#cockpit-locations{padding:8px 0}#cockpit-locations button{display:block;min-height:48px;width:100%;background:var(--bp-card2);border:1px solid var(--bp-line);border-radius:12px;color:var(--bp-ink);padding:10px;text-align:left;margin-top:4px}
.swack-signals{display:flex;flex-wrap:wrap;gap:6px}.swack-signals button{min-height:44px;padding:8px 12px;background:transparent;border:1px solid var(--bp-line);color:var(--bp-ink);border-radius:12px;font:600 13px var(--sw-font-body)}
.swack-signals button[aria-pressed=true]{background:var(--bp-card2);border-color:var(--bp-purple);color:var(--bp-purple)}
.swack-cockpit textarea{display:block;width:100%;margin:12px 0;box-sizing:border-box;resize:vertical;min-height:64px;border:1px solid var(--bp-line);border-radius:12px;padding:12px;background:var(--bp-bg);color:var(--bp-ink);font:400 16px/1.4 var(--sw-font-body)}
.swack-primary{display:block;width:100%;min-height:54px;margin-top:16px;border:0;border-radius:14px;padding:14px 18px;background:var(--swack-action-bg,#6236d8);color:#fff;font:750 16px var(--sw-font-body);cursor:pointer}
.swack-primary:disabled{opacity:.6}.swack-sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.swack-cockpit :focus-visible,.swack-settings-page :focus-visible,.swack-small-dialog :focus-visible{outline:2px solid var(--bp-purple);outline-offset:3px}
.swack-product-links{display:grid;gap:8px}.swack-product-links button,.swack-energy button{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:56px;text-align:left;padding:12px 14px;color:var(--bp-ink);background:var(--bp-card);border:1px solid var(--bp-line);border-radius:14px;font:650 16px var(--sw-font-body)}
.swack-progress-product{margin:24px 0}.swack-week-summary{display:grid;gap:8px;padding:20px;border-radius:18px;background:var(--bp-card2);margin:16px 0}.swack-week-summary>strong{font-size:22px}.swack-week-summary>span{font-size:14px;color:var(--bp-muted)}
.swack-trends{margin-top:20px}.swack-trends p{padding:12px 0;border-bottom:1px solid var(--bp-line)}.swack-trends strong,.swack-trends span{display:block}.swack-trends span{font-size:14px;line-height:1.5;margin-top:6px;color:var(--bp-muted)}
.swack-history-row{display:grid;gap:4px;padding:16px 0;border-bottom:1px solid var(--bp-line)}.swack-history-row span,.swack-history-row small{color:var(--bp-muted)}
.swack-note{font-size:13px!important;line-height:1.5;color:var(--bp-muted);margin-top:20px}
.swack-observation{font-size:16px;line-height:1.5}.swack-trophies{display:grid;gap:12px}.swack-trophies article{display:flex;gap:16px;padding:16px 0;border-bottom:1px solid var(--bp-line)}.swack-trophies article>span{color:var(--bp-purple);font-size:32px}.swack-trophies h3{margin:0 0 6px;font-size:18px}.swack-trophies p{margin:0 0 6px;font-size:14px;color:var(--bp-muted)}.swack-trophies small{color:var(--bp-muted)}
.swack-energy{margin:24px 0}.swack-energy>small{display:block;color:var(--bp-muted);font-size:13px;padding:8px 4px}.swack-energy-total{font-size:32px;font-weight:750;color:var(--bp-purple)}.swack-energy-breakdown{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;font-size:15px}.swack-energy-breakdown dd{margin:0;font-variant-numeric:tabular-nums;font-weight:700}
.swack-celebration{text-align:center}.swack-celebration>p{color:var(--bp-muted);line-height:1.5}.swack-complete-mark{display:grid;place-items:center;width:72px;height:72px;margin:0 auto 20px;border-radius:50%;color:var(--bp-purple);background:var(--bp-card2);font-size:40px}.swack-pr{padding:20px 12px;margin:16px 0;border:1px solid var(--bp-purple);background:var(--bp-card2);border-radius:18px}.swack-pr small{display:block;letter-spacing:.06em;color:var(--bp-purple);margin-bottom:8px}.swack-pr strong{display:block;font-size:20px}.swack-award{color:var(--bp-purple)!important;font-weight:700}
.is-celebrating .swack-complete-mark{animation:swack-complete .6s ease-out both}.is-celebrating .swack-pr{animation:swack-complete .8s ease-out both}
.swack-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none}.swack-confetti i{position:absolute;top:20%;left:50%;width:5px;height:10px;background:var(--bp-purple);opacity:0;animation:swack-particle 1.2s ease-out forwards;transform:rotate(calc(var(--i)*30deg))}
@keyframes swack-complete{0%{transform:scale(.85);opacity:0}60%{transform:scale(1.06);opacity:1}100%{transform:scale(1)}}
@keyframes swack-particle{0%{opacity:0;transform:rotate(calc(var(--i)*30deg)) translateY(0)}20%{opacity:.8}100%{opacity:0;transform:rotate(calc(var(--i)*30deg)) translateY(160px)}}
.bp9-anatomy.swack-atlas-suit .skin{stroke:#7c89a0;stroke-width:.5;opacity:1}.bp9-anatomy.swack-atlas-suit .muscle{fill:#1b233544;stroke:#7c89a044;stroke-width:.45}.bp9-anatomy.swack-atlas-suit .muscle.bp9-hot{fill:#9770ffbb;stroke:#dcc8ff;stroke-width:.65}.swack-atlas-suit .swack-custom-skin{opacity:0!important}
.swack-atlas-explorer{background:var(--bp-soft,var(--bp-card2));border-radius:16px;padding:12px;margin:16px 0}.swack-atlas-explorer .bp9-anatomy{width:100%;height:340px;filter:none}.swack-atlas-explorer .muscle{cursor:pointer}.swack-atlas-explorer .muscle:focus-visible{outline:none;stroke:var(--atlas-primary-stroke);stroke-width:5}
.swack-muscle-choices{display:flex;flex-wrap:wrap;gap:6px}.swack-muscle-choices button{min-height:44px;border:1px solid var(--bp-line);background:var(--bp-card2);color:var(--bp-ink);border-radius:12px;padding:10px;font:600 14px var(--sw-font-body)}#swack-atlas-detail{margin-top:20px}#swack-atlas-detail small{font-size:13px;line-height:1.5;color:var(--bp-muted)}
@media(max-width:360px){.swack-cockpit,#modalRoot .swack-settings-page{padding:18px!important}.swack-cockpit h2{font-size:24px!important}.swack-time-control output{font-size:68px}.swack-time-ticks button{min-width:40px}.swack-energy button{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){.is-celebrating *,.swack-confetti i{animation:none!important}.swack-confetti{display:none!important}.swack-cockpit *{scroll-behavior:auto!important;transition:none!important}}
