/* Shared design tokens and components. Used by every module. */
button:disabled{opacity:.55;cursor:wait}

/* Reusable exercise anatomy and a compact, metric bar-loading aid. */
.muscle-map{display:grid;grid-template-columns:minmax(115px,42%) minmax(0,1fr);gap:18px;align-items:center;margin:16px 0 24px}
.muscle-illustration{aspect-ratio:1;position:relative;background:var(--paper);border:1px solid var(--line);overflow:hidden}
.muscle-illustration svg{width:100%;height:100%;display:block;padding:8px 8px 24px}
.body-figure path{stroke:var(--paper);stroke-width:1.4;stroke-linejoin:round}
.body-base{fill:#24344b}
.inactive-muscle{fill:#344860}
.primary-muscle{fill:#79c6ff}
.secondary-muscle{fill:#376ea3;stroke:#8ab5da!important;stroke-dasharray:2 2}
[data-crop="upper"] .lower-body{display:none}
[data-crop="lower"] .upper-body{display:none}
.muscle-directions{position:absolute;bottom:5px;left:0;right:0;display:flex;justify-content:space-around;color:var(--muted);font: .58rem var(--font-mono)}
.muscle-map figcaption{font-size:.74rem;line-height:1.5;min-width:0;overflow-wrap:anywhere}
.muscle-map figcaption p{margin:5px 0 12px;color:var(--ink)}
.muscle-legend{display:block;color:var(--muted);font-size:.64rem}
.muscle-legend::before{content:"";display:inline-block;width:9px;height:9px;margin-right:6px;vertical-align:middle;background:#79c6ff}
.secondary-legend::before{background:#376ea3;border:1px dashed #8ab5da}
.catalogue-exercise>summary{cursor:pointer;list-style:none}
.catalogue-exercise>summary::-webkit-details-marker{display:none}
.catalogue-exercise[open]>summary{color:var(--accent)}
.catalogue-exercise .muscle-map{max-width:480px}
.exercise-history-link{display:inline-flex;align-items:center;min-height:44px;margin-bottom:12px;font-size:.8rem}
.muscle-picker{margin-top:20px}
.muscle-picker>summary,.plate-calculator>summary{min-height:44px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;color:var(--accent);font-size:.82rem;list-style:none}
.muscle-picker fieldset{display:grid;grid-template-columns:1fr 1fr;gap:4px;border:1px solid var(--line);padding:12px;margin-top:12px}
.muscle-picker legend{font-size:.8rem;color:var(--muted)}
.muscle-picker label{display:flex;align-items:center;gap:8px;min-height:44px;margin:0;font-size:.76rem}
.muscle-picker input{width:18px;height:18px;min-height:0;flex:0 0 18px;accent-color:var(--action)}
.plate-calculator{border-top:1px solid var(--line);margin-top:20px;padding-top:4px}
.plate-calculator>summary::-webkit-details-marker{display:none}
.plate-calculator[open]>summary>span{transform:rotate(45deg)}
.plate-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.plate-fields label{font-size:.7rem;margin:10px 0 6px}
.plate-visual{position:relative;min-height:160px;background:var(--paper);margin:14px 0;display:flex;align-items:center;padding:12px 30px 12px 20px;overflow:hidden}
.bar-shaft{height:15px;position:absolute;left:0;right:15px;top:calc(50% - 7.5px);background:#758ba3;border:1px solid #adbbcb}
.bar-collar{height:52px;width:6px;background:#b9c9d9;position:relative;flex-shrink:0;margin-right:5px}
.plate-stack{display:flex;align-items:center;gap:3px;position:relative;min-width:0;width:100%}
.weight-plate{height:132px;flex:0 1 42px;min-width:0;background:#2466c5;border:1px solid #84b8ff;color:white;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.78rem;font-weight:600;border-radius:2px;font-variant-numeric:tabular-nums}
.weight-plate[data-kg="10"]{height:112px;background:#22528b}
.weight-plate[data-kg="5"]{height:90px;background:#36516f}
.weight-plate[data-kg="2.5"]{height:70px;background:#3d475a}
.weight-plate[data-kg="1.25"]{height:54px;background:#3d475a}
.weight-plate small{font-size:.58rem;margin-top:4px}
.plate-status,.plate-list{font-size:.78rem;line-height:1.5;margin:10px 0}
.plate-warning{color:var(--danger)}
@media(max-width:380px){.muscle-map{gap:12px;grid-template-columns:42% minmax(0,1fr)}.plate-visual{padding-right:15px}.weight-plate{font-size:.65rem}}

select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
[hidden]{display:none!important}
.page-heading{margin-bottom:var(--space-8)}
.page-heading .eyebrow{margin-bottom:16px}
.page-heading h1{font-size:clamp(2.2rem,4vw,3rem);margin-bottom:16px}
.page-heading .lede{margin-bottom:0}
.surface{position:relative;background:var(--white);border:1px solid var(--line);border-radius:var(--control-radius);padding:var(--space-6);min-width:0}
.content-split{display:grid;grid-template-columns:1.2fr 1fr;gap:var(--space-6);align-items:start}
.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--space-4)}
.button-link{display:inline-flex;align-items:center;text-decoration:none}
.form-actions{flex-wrap:wrap;gap:12px}
.module-tabs{display:flex;gap:8px;padding:0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;margin-bottom:28px;width:fit-content}
.module-tabs a{position:relative;min-height:48px;padding:12px 20px;text-decoration:none;font-size:.88rem;border-radius:var(--control-radius);color:var(--muted)}
.module-tabs a.selected{background:var(--soft);color:var(--accent);font-weight:600}
.module-tabs a.selected::after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--accent);transform:skewX(-30deg)}
.workout-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4)}
.workout-card{text-decoration:none;display:flex;flex-direction:column;min-height:200px;transition:border-color .15s,background .15s}
a.workout-card:hover{border-color:var(--accent);background:var(--raised)}
.workout-card .eyebrow{font-size:.62rem;margin-bottom:18px;letter-spacing:.06em}
.workout-card h2{font-size:1.35rem;overflow-wrap:anywhere}
.card-link{display:flex;justify-content:space-between;margin-top:auto;font-size:.8rem;color:var(--accent);padding-top:16px}
.new-workout{border-style:dashed}
.new-workout label{margin-top:0}
.new-workout button{margin-top:12px;width:100%}
.resume-banner{display:flex;justify-content:space-between;align-items:center;gap:16px;border:1px solid var(--line-strong);background:var(--soft);border-radius:var(--control-radius);padding:20px;text-decoration:none;margin-bottom:20px}
.resume-banner small{display:block;color:var(--muted);margin-top:6px}
.resume-banner>span:last-child{font-size:.85rem;font-weight:600}
.section-heading.compact{padding-top:0;border:0;gap:16px}
.section-heading.compact a{font-size:.8rem}
.empty-copy{color:var(--muted);line-height:1.65;padding:20px 0;margin:0}
.item-row{position:relative;display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:0 10px;padding:12px 76px 12px 0}
.item-row>form,.item-row>.item-name,.item-row>.item-quantity{grid-row:1;align-self:center;margin:0}
.item-row .check-button{width:44px}
.item-row>form{grid-column:1}
.item-row>.item-name{grid-column:2}
.item-row>.item-quantity{grid-column:3}
.inline-editor{display:block;grid-column:1/-1;grid-row:2;min-width:0;width:calc(100% + 76px)}
.inline-editor>summary{position:absolute;right:0;top:12px;list-style:none;min-height:44px;display:flex;align-items:center;padding:8px 0}
.inline-editor[open]{margin-top:12px}
.inline-editor:not([open]){height:0}
.inline-editor>summary::-webkit-details-marker{display:none}
.inline-editor[open]>summary{color:var(--accent);font-weight:600}
.inline-editor:not([open])>:not(summary){display:none}
.inline-editor>form{grid-column:1/-1;margin:0 0 12px}
.inline-fields{display:grid;grid-template-columns:minmax(0,1fr) 90px 100px;gap:12px}
.inline-fields label{margin:4px 0 8px}
.inline-edit-form .form-actions{margin-top:16px}
.inline-delete .quiet{color:var(--danger)}
.inline-error{margin-top:0}
.session-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:25px 0}
.session-heading h1{font-size:2.5rem;margin-bottom:8px;overflow-wrap:anywhere}
.session-heading .eyebrow{margin-bottom:10px}
.session-heading .small-note{margin:0}
.session-help{margin:0 0 24px}
.session-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}
.exercise-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.exercise-heading .eyebrow{margin-bottom:8px;font-size:.6rem}
.exercise-heading h2{font-size:1.1rem;margin:0;overflow-wrap:anywhere}
.exercise-heading>a{font-size:.75rem;white-space:nowrap}
.set-row{padding:8px 10px;margin:4px -10px;border-radius:var(--control-radius);scroll-margin:24px}
.set-inputs{display:flex;gap:8px;align-items:end}
.set-inputs>div{flex:1;min-width:0}
.set-number{align-self:center;display:grid;place-items:center;flex:0 0 27px;height:27px;border-radius:var(--control-radius);background:var(--paper);font-size:.75rem}
.set-inputs label{font-size:.67rem;color:var(--muted);margin:0 0 4px}
.set-inputs input{min-height:44px;padding:9px 8px;text-align:center;font-size:.9rem}
.set-check,.set-skip{min-width:44px;height:44px;border-radius:var(--control-radius);background:var(--soft);color:var(--accent);font-weight:700;font-size:1.05rem}
.set-skip{background:transparent;color:var(--muted)}
.is-done{background:var(--soft)}
.is-done .set-check{background:var(--action);color:white}
.is-skipped{background:var(--input)}
.set-status{display:block;color:var(--muted);font-size:.65rem;margin:4px 0 0 35px}
.set-result{display:flex;gap:16px;align-items:center;min-height:40px}
.set-result>span:last-child{margin-left:auto}
.filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:28px}
.filter-grid label{margin-top:0}
.filter-controls{display:flex;gap:8px}
.filter-controls select{min-width:0}
.history-panel{margin-top:24px}
.history-panel .small-note{margin-top:8px}
.history-panel .overview-row{gap:16px}
.history-panel .overview-row>span:first-child{min-width:0;overflow-wrap:anywhere}
.record-summary{display:flex;justify-content:space-between;align-items:center;gap:16px;background:var(--soft);border-radius:var(--control-radius);padding:20px;margin-top:24px}
.record-summary>span{font-size:.85rem}
.record-summary strong{font-size:1.75rem}
.record-summary small{font-size:.8rem;font-weight:400}
.progress-chart{display:block;width:100%;max-height:220px;margin-top:24px}
.progress-chart rect{fill:var(--accent)}
.ui-icon{width:20px;height:20px;flex-shrink:0;pointer-events:none}
.catalogue-count{margin-top:12px}
.catalogue-group{border-top:1px solid var(--line);margin-top:8px}
.catalogue-group>summary{display:flex;align-items:center;gap:12px;min-height:62px;cursor:pointer;font-weight:650;list-style:none}
.catalogue-group>summary::-webkit-details-marker{display:none}
.catalogue-group>summary::before{content:'›';font-size:1.4rem;color:var(--muted);transition:transform .15s}
.catalogue-group[open]>summary::before{transform:rotate(90deg)}
.catalogue-group>summary .pill{margin-left:auto;min-width:36px;text-align:center}
.catalogue-group .overview-row{padding:16px 4px 16px 26px}
.catalogue-group .overview-row:last-child{border-bottom:0}
.catalogue-group>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--control-radius)}
.move-description .equipment-label{font-size:.75rem;margin-bottom:6px}
.icon-button{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:10px;border-radius:var(--control-radius);background:transparent;color:var(--muted);flex-shrink:0}
.icon-button:hover{background:var(--soft);color:var(--accent)}
.planner-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:24px;align-items:start}
.planner-sidebar{padding:16px}
.planner-sidebar-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.planner-sidebar-title h2{font-size:1rem;margin:0 8px}
.workout-picker{display:flex;flex-direction:column;gap:6px}
.workout-choice{display:flex;flex-direction:column;gap:8px;border:1px solid transparent;border-radius:var(--control-radius);text-decoration:none;padding:16px;overflow-wrap:anywhere}
.workout-choice strong{font-size:.95rem;font-weight:600}
.workout-choice small{font-size:.72rem;color:var(--muted)}
.workout-choice:hover{background:var(--paper)}
.workout-choice.selected{border-color:var(--line-strong);border-left:2px solid var(--accent);background:var(--soft);color:var(--accent)}
.planner-create{border-top:1px solid var(--line);margin-top:16px;padding:4px 8px 8px}
.planner-create .form-actions{gap:8px}
.planner-create button{font-size:.75rem;padding:12px}
.planner-main{min-width:0}
.planner-status{font-size:.75rem;color:var(--accent);min-height:20px;margin-top:-20px}
.planner-main>.validation:empty{display:none}
.planner-panel-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}
.planner-panel-header h2{font-size:1.55rem;margin:0;overflow-wrap:anywhere}
.planner-panel-header .eyebrow{font-size:.62rem;margin-bottom:8px}
.planner-panel-header .primary{white-space:nowrap;font-size:.8rem}
.planner-hint{margin:0 0 22px;font-size:.72rem;line-height:1.6}
.move-list{display:flex;flex-direction:column;gap:10px}
.planner-move{border:1px solid var(--line);border-radius:var(--control-radius);background:var(--white);min-width:0;scroll-margin:24px}
.move-summary{display:flex;align-items:center;gap:6px;padding:12px 10px}
.move-description{flex:1;min-width:0}
.move-description h3{font-size:.95rem;margin:0 0 6px;overflow-wrap:anywhere}
.move-description p{margin:0;font-size:.75rem;line-height:1.6;color:var(--muted)}
.planner-move.is-editing{border-color:var(--accent)}
.planner-move [data-move-editor]{border-top:1px solid var(--line);padding:0 18px 18px}
.planner-move [data-move-editor]>.validation:empty{display:none}
.planner-move label{font-size:.75rem;margin:16px 0 8px}
.planner-move .form-actions{margin-top:18px}
.planner-move .form-actions button{font-size:.75rem}
.planner-move .remove-move{color:var(--danger);margin-left:auto}
.draft-heading{font-size:.95rem;margin:0;padding:18px}
.planner-targets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.planner-targets input{padding:11px;min-width:0}
.planner-move .field-grid{gap:0 12px}
.add-move{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:50px;margin-top:14px;border:1px dashed var(--line-strong);border-radius:var(--control-radius);background:var(--paper);color:var(--accent);font-size:.8rem}
.add-move:hover{background:var(--soft)}
.drag-handle{touch-action:none;cursor:grab}
.drag-handle:active{cursor:grabbing}
.planner-move.is-dragging{box-shadow:0 4px 18px #00000055;background:var(--soft);border-color:var(--accent)}
.planner-panel[aria-busy=true]{cursor:progress}
@media(max-width:760px){.planner-layout{grid-template-columns:1fr;gap:24px}
.planner-sidebar{padding:12px}
.planner-sidebar-title{margin-bottom:4px}
.workout-picker{flex-direction:row;overflow-x:auto;padding-bottom:4px}
.workout-choice{flex:0 0 auto;min-width:140px;max-width:220px;padding:12px}
.planner-create{max-width:400px}
.planner-panel-header{align-items:start}
.planner-panel-header h2{font-size:1.3rem}
.planner-panel-header .primary{font-size:.72rem;padding:12px}
.planner-move .field-grid{grid-template-columns:1fr}
.planner-move [data-move-editor]{padding:0 12px 14px}
.planner-targets{gap:8px}
.planner-move .remove-move{margin-left:0}
.move-summary{padding:10px 4px;gap:2px}
.move-description h3{font-size:.88rem}
.move-description p{font-size:.7rem}
.planner-hint{margin-bottom:16px}
.planner-panel.surface{padding:16px}}
@media(max-width:850px){.content-split{grid-template-columns:1fr}
.workout-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.session-grid{grid-template-columns:1fr;max-width:620px}
.filter-grid{grid-template-columns:1fr;gap:16px}}
@media(max-width:600px){
 .topbar nav{position:fixed;bottom:0;left:0;right:0;z-index:20;height:auto;min-height:64px;display:flex;justify-content:space-around;gap:0;background:var(--white);padding:4px 8px max(4px,env(safe-area-inset-bottom));border-top:1px solid var(--line);box-shadow:0 -3px 18px #00000033}
 .topbar nav a{flex:1;justify-content:center;min-height:52px;border:0;border-radius:var(--control-radius);padding:0 10px}
 .topbar nav a.active{background:var(--soft)}
.footer{padding-bottom:100px}
.page{padding-top:24px}
 .page-heading{margin-bottom:24px}
.page-heading h1{font-size:2.2rem}
.page-heading .lede{font-size:.88rem}
 .surface{padding:18px}
.module-tabs{width:100%;margin-bottom:24px}
.module-tabs a{flex:1;text-align:center;padding:12px 6px;font-size:.8rem}
 .workout-grid{gap:12px}
.workout-card{min-height:170px;padding:16px}
.workout-card h2{font-size:1.1rem}
.workout-card .eyebrow{font-size:.57rem;line-height:1.6}
 .new-workout{grid-column:1/-1;min-height:0}
.new-workout form{display:grid;grid-template-columns:1fr auto;gap:8px}
.new-workout label{grid-column:1/-1;margin:0}
.new-workout button{margin:0;font-size:.78rem;padding:12px}
 .inline-fields{grid-template-columns:1fr 1fr}
.inline-fields .inline-name{grid-column:1/-1}
.item-row{gap:6px}
 .session-heading{gap:12px}
.session-heading h1{font-size:2rem}
.session-heading .primary{padding:12px;font-size:.8rem}
 .session-grid{gap:16px}
.exercise-card .small-note{font-size:.7rem;margin-top:12px}
 .resume-banner{padding:16px}
.resume-banner>span:last-child{font-size:.75rem}
}


/* Shared angular accents; no clipping on content, menus or focusable containers. */
.surface::before { content: ''; position: absolute; top: -1px; right: 20px; width: 28px; height: 2px; background: var(--line-strong); transform: skewX(-30deg); pointer-events: none; }
.surface::after, .app-card::after, .login-card::after, .list-panel::after, .list-overview::after, .edit-card::after {
  content: ''; position: absolute; top: -1px; right: -1px; width: 14px; height: 24.25px; pointer-events: none;
  background: linear-gradient(60deg, transparent calc(50% - .6px), var(--line-strong) calc(50% - .6px), var(--line-strong) calc(50% + .6px), var(--paper) calc(50% + .6px));
}
.catalogue-group>summary { transition: color .15s; }
.catalogue-group>summary:hover, .catalogue-group[open]>summary { color: var(--accent); }
.catalogue-group[open] { border-top-color: var(--line-strong); }
.catalogue-group .pill { color: var(--accent); }
.catalogue-group .overview-row:hover { background: var(--raised); }
.set-number { font-family: var(--font-mono); color: var(--muted); }
.record-summary strong, .set-result { font-variant-numeric: tabular-nums; }
.module-tabs a:hover { color: var(--ink); }
@media(max-width:600px) {
  .topbar nav { background: #0b1423; }
  .topbar nav a.active::after { bottom: auto; top: 0; left: 12px; right: 12px; height: 2px; }
  .module-tabs { gap: 0; }
}

/* Shared inline catalogue and template management. */
.catalogue-feedback{grid-column:1/-1;color:var(--accent)}
.catalogue-feedback:has(:empty):not(:has(:not(:empty))){display:none}
.catalogue-entry{position:relative;border-bottom:1px solid var(--line)}
.catalogue-entry .catalogue-exercise>summary{min-height:76px;padding:14px 100px 14px 4px;border:0}
.catalogue-entry .catalogue-exercise>summary strong{overflow-wrap:anywhere}
.catalogue-actions{position:absolute;top:14px;right:0;display:flex;gap:4px}
.catalogue-actions .icon-button{width:44px;height:44px;min-width:44px}
.catalogue-editor{padding:16px;border-top:1px solid var(--line);background:var(--raised)}
.catalogue-editor h3,.delete-confirmation h3{margin-top:0}
.delete-confirmation p{line-height:1.6}
.delete-confirmation ul{padding-left:22px;overflow-wrap:anywhere}
.danger{border:1px solid var(--danger);color:var(--danger);background:transparent}
.danger:hover{background:var(--raised)}
.workout-title{min-width:0;flex:1}
.workout-title-actions{display:flex;gap:4px;align-items:center;flex-wrap:wrap}
.workout-title-actions h2{flex:1;min-width:100px}
.workout-title-actions .icon-button{flex-shrink:0}
.workout-settings{border:1px solid var(--line);background:var(--raised);padding:16px;margin-bottom:18px}
@media(max-width:600px){.planner-panel-header{flex-wrap:wrap}.workout-title{flex-basis:100%}.catalogue-editor{padding:12px}}
