/* Shared app tokens. No global header/nav/profile changes. */
/* Only the session card inset changes; retain the original overview dock. */
:root .pf-workspace.pf-overview-page .pf-day>.card{padding:8px 14px 8px 44px}
:root .pf-overview-page .pf-day-grip{left:0;top:8px;width:40px;min-width:40px}
/* Routine editor: quiet controls, one date navigator, no covering save dock. */
:root .pf-routine-page{padding-bottom:100px}
:root .pf-routine-page .pf-day-navigation{display:grid;grid-template-columns:88px minmax(0,1fr) 88px;gap:5px 6px;align-items:center;margin-bottom:6px}
:root .pf-day-navigation>div{text-align:center;min-width:0}
:root .pf-day-navigation>div>span{display:block;font:400 10px/1.316 var(--body);color:var(--muted);margin-top:2px}
:root .pf-routine-page .pf-routine-date{font:600 18px/1.222 var(--body);letter-spacing:-.4px;white-space:nowrap}
:root .pf-day-navigation .pw-btn{padding:8px 5px;min-width:0;min-height:44px;font:500 11px/1.222 var(--body);gap:4px;border-radius:12px}
:root .pf-routine-page .pf-routine-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 6px;min-height:44px}
:root .pf-routine-heading>span{font:400 11px/1.316 var(--body);min-width:0}
:root .pf-routine-more{position:relative;flex:none}
:root .pf-routine-more>summary{list-style:none;min-height:44px;padding:8px 11px;border-radius:12px;font-size:11px;gap:6px}
:root .pf-routine-more>summary::-webkit-details-marker{display:none}
:root .pf-routine-more>summary:after{display:none}
:root .pf-routine-more>div{position:absolute;right:0;top:calc(100% + 6px);z-index:5;display:flex;gap:6px;padding:8px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 24px #00000014}
:root .pf-routine-more>div .pw-btn{min-height:44px;padding:8px 11px;font-size:11px}
:root .pf-routine-controls{display:flex;justify-content:space-between;align-items:flex-end;gap:8px}
:root .pf-routine-controls .pf-total{display:block;margin:0;font:400 10px/1.316 var(--body);color:var(--muted)}
:root .pf-routine-controls .pw-stepper{display:flex;gap:0;margin-top:4px;background:var(--surface);border:1px solid var(--line);border-radius:13px;overflow:hidden}
:root .pf-routine-controls .pw-stepper .pw-btn{border:0;border-radius:0;background:none;box-shadow:none;min-width:44px;width:44px;height:44px;padding:0}
:root .pf-routine-controls output{font:600 17px/1.222 var(--body);min-width:36px;text-align:center}
:root .pf-routine-controls .pf-quiet-regenerate{flex:none;width:123px;min-height:44px;padding:8px;font:500 11px/1.222 var(--body);border-radius:12px}
:root .pf-routine-controls .pf-target-pending{border-color:var(--accent);color:var(--accent-ink);background:var(--surface)}
:root .pf-routine-page .pf-target-hint{font:400 10px/1.316 var(--body);color:var(--muted);min-height:32px;padding:8px 0;margin:0}
:root .pf-routine-page .pf-routine-card{padding:0 13px;border-radius:20px;margin:0}
:root .pf-routine-page .pw-exercise.pw-editable{padding:10px 0 10px 29px}
:root .pf-routine-page .pw-grip{left:-8px;top:10px;width:36px;min-width:36px}
:root .pf-ex-summary{display:flex;align-items:center;gap:8px;justify-content:space-between;min-height:44px}
:root .pf-ex-summary>div{min-width:0;flex:1}
:root .pf-ex-summary strong{font:600 12px/1.316 var(--body);overflow-wrap:anywhere}
:root .pf-ex-preview{font:400 11px/1.457 var(--body);font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:3px;overflow-wrap:anywhere;white-space:pre-wrap}
:root .pf-row-toggle.pw-btn{flex:none;width:44px;min-width:44px;height:44px;padding:0;border-radius:12px}
:root .pf-ex-controls{padding-top:6px}
:root .pf-routine-page [hidden]{display:none!important}
:root .pf-routine-page .pf-add-summary{margin:8px 0}
:root .pf-routine-page .pf-add-button{width:100%;min-height:44px;border-color:var(--line);border-radius:12px;font-size:11px}
:root .pf-routine-page .pw-save-dock.pf-dock{position:static!important;inset:auto!important;transform:none!important;width:auto;max-width:none;background:none;box-shadow:none;backdrop-filter:none;padding:13px 0 0;margin:13px 0 0;border:0;border-top:1px solid var(--line);border-radius:0}
:root .pf-compact-save{display:flex;align-items:center;justify-content:space-between;gap:10px}
:root .pf-compact-save strong{font:500 11px/1.316 var(--body)}
:root .pf-compact-save p{font:400 10px/1.316 var(--body);color:var(--muted);margin:3px 0 0}
:root .pf-compact-save .pw-btn{width:auto;flex:none;min-width:94px;min-height:44px;padding:10px 20px;border-radius:13px;font-size:11px}
/* Refined calendar: one surface, quieter stage navigation, in-flow actions. */
.pf-workspace .pf-steps{gap:8px;grid-template-columns:1.3fr 1fr 1fr .8fr;margin-bottom:16px}
.pf-workspace .pf-steps .pw-btn{min-height:40px;border-radius:0;border-bottom:2px solid var(--line);padding:8px 0 10px;display:block}
.pf-workspace .pf-steps b{display:none}
.pf-workspace .pf-steps button:after{display:none}
.pf-workspace .pf-steps .pf-current{border-color:var(--accent);color:var(--accent-ink);font-weight:600}
:root .pf-workspace.pf-dates-page{padding-bottom:100px}
:root .pf-dates-page .pf-date-sheet{padding:0 16px;margin-bottom:0;border-radius:22px}
.pf-date-sheet .pw-month{margin:0;padding:12px 0 6px;display:flex;gap:0}
.pf-date-sheet .pw-month strong{order:-1;text-align:left;margin-right:auto;font:600 19px/1.4 var(--body);letter-spacing:-.4px}
.pf-date-sheet .pw-month .pw-btn{width:34px;min-width:34px}
.pf-date-sheet .pf-calendar{gap:0}
.pf-date-sheet .pf-calendar>span:nth-child(-n+7){text-align:center;min-width:0}
/* v4.6.79: THE TAB BAR IS CHROME AND CHROME DOES NOT MOVE. The dates page
   gave the step bar its own margins -- 4px above, 6px less below -- so every
   tap between the tabs slid the bar down 4px and pulled the content up 2px,
   in opposite directions. The top margin collapsed through the workspace as
   well, moving the whole page with it. One box for the step bar, everywhere:
   a page may style what is under the tabs, never the tabs themselves. */
.pf-dates-page .pf-date-sheet .pw-month{padding:0;min-height:44px}
.pf-dates-page .pf-date-sheet .pw-month .pw-btn{min-width:44px;width:44px;min-height:44px}
.pf-dates-page .pf-calendar>span:nth-child(-n+7){height:26px;display:flex;align-items:center;justify-content:center;font:400 12px/1.3 var(--body);color:var(--muted)}
.pf-dates-page .pf-date-sheet .pf-calendar .pw-btn{height:44px;padding:0}
.pf-dates-page .pf-date-sheet .pf-calendar-key{padding:9px 0 12px}
.pf-dates-page .pw-save-dock.pf-dock{margin-top:6px;gap:8px}
.pf-dates-page .pf-date-actions,.pf-date-secondary{display:flex;gap:8px}
.pf-dates-page .pf-date-actions .pw-btn,.pf-dates-page .pf-date-secondary .pw-btn{flex:1;min-width:0;min-height:44px;padding:10px 9px;border-radius:13px;font:500 11px/1.222 var(--body)}
:root .pf-dates-page .pf-date-help{text-align:center;margin:0;font-size:10px}
.pf-date-sheet .pf-calendar .pw-btn{font-family:var(--body);border:0;border-radius:12px;box-shadow:none;animation:none;min-height:44px;transition:background-color 180ms,color 180ms}
.pf-date-sheet .pf-calendar small{font-size:8px;min-height:8px}
.pf-date-sheet .pf-calendar-key{justify-content:space-between;padding:14px 0 16px;margin:0;font-size:11px}
.pf-dates-page .pw-save-dock.pf-dock{position:static!important;inset:auto!important;transform:none!important;width:auto;max-width:none;margin:6px 0 0;padding:0;border:0;background:none;box-shadow:none;backdrop-filter:none}
.pf-selection{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:20px;font:400 11px/1.316 var(--body);font-size:11px;font-variant-numeric:tabular-nums}
.pf-selection strong{display:flex;align-items:center;gap:4px;overflow:hidden;font-weight:600}
.pf-selection>span{color:var(--muted)}
.pf-count{display:inline-block;min-width:1ch}
.pf-date-actions{display:grid;grid-template-columns:1fr auto;gap:6px 8px}
.pf-date-actions .pw-btn{min-height:48px;padding:10px 15px;border-radius:14px}
:root .pf-workspace .pf-date-help{font:400 10px/1.41 var(--body);color:var(--muted);margin:0 2px}
.pf-generating{position:relative;overflow:hidden;opacity:1!important}
.pf-generating:after{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 20%,#ffffff30 48%,transparent 75%);animation:pf-generate-sweep 1s ease-in-out infinite;pointer-events:none}
.pf-generating .ic{animation:pf-generate-spark 650ms ease both}
@keyframes pf-generate-sweep{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@keyframes pf-generate-spark{0%{transform:scale(.8) rotate(-15deg)}45%{transform:scale(1.25) rotate(12deg)}100%{transform:none}}
@media(prefers-reduced-motion:reduce){.pf-generating:after,.pf-generating .ic{animation:none}.pf-date-sheet .pf-calendar .pw-btn{transition:none}}
.pf-workspace{padding-bottom:220px}.pf-workspace .card{padding:18px;margin-bottom:11px;border-radius:24px}
.pf-workspace h1{font:600 20px/1.2 var(--body);letter-spacing:-.5px}.pf-workspace h3{font-size:14px}
.pf-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:6px 0 16px}
.pf-steps .pw-btn{position:relative;display:flex;flex-direction:column;background:transparent;border:0;padding:8px 0;font:400 10px/1.316 var(--body);gap:4px 5px;box-shadow:none}
.pf-steps b{display:grid;place-items:center;width:25px;height:25px;border:1px solid var(--line);border-radius:50%;font-weight:500;background:var(--surface);z-index:1}
.pf-steps button:not(:last-child):after{content:'';position:absolute;top:20px;left:calc(50% + 13px);width:calc(100% - 26px);height:1px;background:var(--line)}
.pf-steps .pf-current{color:var(--accent)}.pf-steps .pf-current b{background:var(--accent);color:#fff;border-color:var(--accent)}.pf-steps .pf-passed b{border-color:var(--accent)}
.pf-options{display:grid;grid-template-columns:repeat(4,1fr);gap:5px 6px}.pf-fields{display:flex;gap:12px}.pf-fields label{flex:1;min-width:0;font-size:11px}.pf-fields input{width:100%;box-sizing:border-box;min-height:44px;margin-top:5px;font:400 16px var(--body)}
.pf-select{display:block;font-size:12px;margin-top:13px}.pf-select select{width:100%;min-height:44px;margin-top:6px;font-size:16px}
.pf-slider{display:block;margin:13px 0}.pf-slider strong{font-size:12px}.pf-slider input{display:block;width:100%;margin:6px 0;accent-color:var(--accent)}.pf-slider>span{display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}
.pf-calendar .pw-btn{min-width:0;min-height:44px;display:flex;flex-direction:column;gap:3px;padding:4px;font:400 13px var(--mono);position:relative}.pf-calendar small{font-size:11px;line-height:1}
.pf-calendar-key{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font:400 11px var(--body);margin-top:12px;color:var(--muted)}
.pf-keys{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
.pf-keys>span{display:inline-flex;align-items:center;gap:5px}
.pf-key-ring{display:inline-block;width:11px;height:11px;border-radius:4px;box-shadow:inset 0 0 0 2px #85bff7}
.pf-calendar .pf-editing{animation:pf-edit-pulse 2.4s ease-in-out infinite;box-shadow:inset 0 0 0 2px #85bff7}
@keyframes pf-edit-pulse{0%,100%{box-shadow:inset 0 0 0 2px #b6d8fa}50%{box-shadow:inset 0 0 0 3px #7ab9f5}}
.pf-day{margin-bottom:13px}.pf-day-date{font:500 11px var(--mono);margin:0 0 6px}.pf-day>.card{position:relative;padding-left:54px}.pf-day-grip{position:absolute;left:7px;top:14px;width:40px;padding:0;touch-action:none;border:0;background:transparent}
.pf-day summary{min-height:44px;font-size:14px}.pf-day .pw-exercise{padding:8px 0}.pf-day .pw-ex-title strong{font-size:12px}.pf-day .pw-prescription{font-size:11px;margin:5px 0}.pf-right{display:flex;justify-content:flex-end;margin:3px 0 10px}
.pf-workspace .pw-exercise{padding-top:16px;padding-bottom:12px}.pf-workspace .pw-ex-title{align-items:flex-start}.pf-workspace .pw-ex-title strong{font-size:13px;overflow-wrap:anywhere}.pf-workspace .pw-ex-title .pw-btn{padding:0 3px;min-height:36px;font-size:10px;flex:none}
.pf-set-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:5px}.pf-set-row>span{min-width:0;font-size:11px;line-height:1.551;overflow-wrap:anywhere}.pf-set-row>div{display:flex;flex:none;gap:2px}.pf-set-row .pw-btn{padding:8px 3px;min-height:44px;font-size:10px}
.pf-total{display:flex;align-items:center;justify-content:space-between;margin:10px 0;font-size:12px}.pf-total .pw-stepper{gap:10px;margin:0}.pf-total .pw-stepper output{font-size:21px;min-width:40px}.pf-total .pw-stepper .pw-btn{width:44px;height:44px}
.pf-changed{color:var(--accent)}.pf-balloon{background:var(--surface2);border-left:2px solid var(--accent);padding:10px 12px;border-radius:12px;font-size:11px!important}
.pf-beam{position:relative;overflow:hidden}.pf-beam:after{content:'';position:absolute;inset:-30% -50%;background:linear-gradient(110deg,transparent 42%,#ffffff40 50%,transparent 58%);animation:pf-sheen 2.8s ease-in-out infinite;pointer-events:none}@keyframes pf-sheen{from{transform:translateX(-55%)}to{transform:translateX(55%)}}
.pf-add-summary{text-align:center;margin:11px 0}.pf-add-button{border:1px solid var(--muted);background:transparent}.pf-add-summary p{margin:6px 0}
.pf-history summary{display:flex;align-items:center;gap:8px;justify-content:space-between}.pf-history summary strong{font-size:11px}.pf-history summary span{font-size:10px;margin-left:auto}.pf-history-row{border-top:1px solid var(--line);padding:10px 0}.pf-history-row strong{font-size:11px}.pf-history-row p{font:400 11px/1.551 var(--mono)!important;margin:5px 0}
.pf-dock{display:flex;flex-direction:column;align-items:stretch}.pf-dock>.pw-btn{width:100%;flex:none}.pf-dock .pw-small{margin:0;text-align:center;font-size:10px}.pf-neighbors{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px}.pf-neighbors .pw-btn{padding:8px 4px;font-size:11px}
.pf-saved{padding:10px 0;border-bottom:1px solid var(--line)}.pf-saved:last-child{border:0}.pf-group-form .pw-actions{margin-top:8px}
@media(max-width:360px){.pf-workspace .pw-exercise.pw-editable{padding-left:36px}.pf-set-row{flex-wrap:wrap}.pf-set-row>div{margin-left:auto}.pf-workspace .pw-ex-title{flex-wrap:wrap}.pf-day>.card{padding-left:46px}}
@media(prefers-reduced-motion:reduce){.pf-calendar .pf-editing,.pf-beam:after{animation:none}}
/* Outrank the minimal skin's card padding without changing other app cards. */
:root .pf-workspace .pf-day>.card{padding-left:54px}
@media(max-width:360px){:root .pf-workspace .pf-day>.card{padding-left:46px}}
/* Planner polish: match the app's compact cards and existing header back control. */
header.planmode .hback{display:grid}
header.planmode .brandrow{align-items:center;gap:8px}
header.planmode .h-toprow{gap:8px}
/* Keep the shared .h-date typography and all seven streak squares. */
header.planmode .hback{flex:0 0 32px;width:32px;height:38px;position:relative}
header.planmode .hback::after{content:'';position:absolute;inset:-3px -6px}
.pf-steps{margin:0 0 10px}
.pf-steps button:not(:last-child):after{height:2px;background:color-mix(in srgb,var(--muted) 65%,var(--surface))}
.pf-plan-dot{color:var(--accent);font-style:normal}
.pf-calendar .selected .pf-plan-dot{color:#fff;background:transparent}
.pf-calendar .pw-btn:disabled:has(.pf-plan-dot){opacity:1}
.pf-calendar .pw-btn:disabled:has(.pf-plan-dot)>span{opacity:.3}
:root .pf-workspace .pf-day>.card{padding-top:10px;padding-bottom:10px;margin-bottom:0}
.pf-workspace .pf-day .pw-card-heading{margin:0;min-height:36px}
.pf-day{margin-bottom:10px}
.pf-day-date{margin-bottom:5px}
.pf-day-grip{top:10px}
.pf-day-grip{cursor:grab;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.pf-day.pf-dragging>.card{z-index:2;outline:2px solid var(--accent);outline-offset:-2px;box-shadow:0 14px 32px #00000040,0 3px 10px #00000024}
.pf-dragging .pf-day-grip{color:var(--accent);cursor:grabbing}
.pf-day.pf-drop-target>.card{outline:2px dashed var(--accent);outline-offset:-2px;background:color-mix(in srgb,var(--accent) 7%,var(--surface))}
.pf-workspace .pf-right{margin:0 0 6px}
.pf-primary-row{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px}
.pf-primary-row>.pw-btn{min-width:0;padding:10px 6px;font-size:11px}
.pf-workspace .pw-datebar{margin-bottom:5px}
.pf-workspace .pw-setup{margin-bottom:5px}
.pf-workspace .pw-actions{margin-top:6px}
.pf-total{margin:6px 0}
.pf-workspace .pw-exercise{padding-top:10px;padding-bottom:10px}
.pf-workspace .pw-ex-title{align-items:center}
.pf-workspace .pw-ex-title .pw-btn{min-height:44px}
/* Day editor: one title, compact prescriptions and explicit row actions. */
.pf-done-tools{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px}
.pf-done-tools>span{font:500 11px/1.316 var(--body);color:var(--muted)}
.pf-done-tools .pw-btn{font:500 11px/1.316 var(--body);min-height:44px}
:root .pf-workspace .pf-done-day>.card{padding:12px 16px}
.pf-done-day .pf-day-date{font:600 12px/1.316 var(--body);margin-bottom:5px}
.pf-done-day summary{min-height:48px;align-items:center}
.pf-done-label{display:flex;flex-direction:column;gap:3px 4px}
.pf-done-label strong{font:600 13px/1.269 var(--body)}
.pf-done-label>span,.pf-no-plan{font:400 11px/1.316 var(--body);color:var(--muted)}
.pf-done-day .pw-exercises{margin-top:6px}
.pf-done-day .pw-exercise{padding:10px 0}
.pf-done-day .pw-prescription{font:400 11px/1.504 var(--mono);margin:3px 0 0}
.pf-no-plan{padding:4px 0}
.pf-routine-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;margin:10px 0}
.pf-routine-date{margin:0}
.pf-routine-heading>span{font:400 11px/1.316 var(--body);color:var(--muted)}
.pf-total .pw-stepper{display:grid;grid-template-columns:44px 44px 44px;align-items:center;gap:3px 4px}
.pf-total .pw-stepper output{display:grid;place-items:center;min-width:0;width:44px;height:44px;padding:0;margin:0;font:600 18px/1 var(--body);text-align:center}
.pf-workspace .pw-editable .pw-grip{top:10px;display:grid;place-items:center}
.pf-workspace .pw-editable .pw-ex-title{min-height:44px;margin:0;align-items:center}
.pf-workspace .pw-editable .pw-ex-title strong{line-height:1.222}
.pf-workspace .pf-set-row{margin-top:2px;gap:6px}
.pf-workspace .pf-row-button{display:inline-flex;align-items:center;justify-content:center;gap:3px 4px;border:1px solid var(--line);background:var(--surface2);border-radius:10px;white-space:nowrap}
.pf-workspace .pw-ex-title .pf-row-button,.pf-workspace .pf-set-row .pf-row-button{padding:5px 7px;min-height:36px;font:500 10px/1 var(--body)}
.pf-workspace .pf-row-button svg{width:12px;height:12px;flex:none}
.pf-workspace .pf-set-row>div{gap:5px}
.pf-add-summary .pf-add-button{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:44px;border:1px solid var(--line);background:var(--surface2)}
@media(max-width:360px){.pf-workspace .pf-set-row{row-gap:0}.pf-workspace .pw-ex-title{flex-wrap:nowrap}}
/* v4.6.73: THE ROUTINE PAGE -- one spine, last time beneath, edit in place.
   Weight right | x centred | reps left, each rep in its own invisible column,
   so every line of every exercise lands on the same three verticals whether
   it is ink (the plan), a step lighter (last time) or a row of chips (edit). */
/* v4.6.74: ONE GUTTER, OPEN OR CLOSED. The open exercise bleeds into the
   card's padding to carry its panel, and that bleed used to move everything
   left with it: the grip landed 12px off the grips above and below it, and
   the bin in the gutter lined up with the moved grip rather than with the
   column. The bleed is a variable now, the indent is a variable, and both
   the grip and the bin are positioned FROM them -- so the gutter is one
   vertical down the whole page whichever rows are open, at any width, and
   the open panel's right edge meets the closed rows' too. */
.pf-routine-page .pw-exercise.pw-editable.pe-ex{--pad:29px;--bleed:0px;--pt:8px;margin:0 calc(0px - var(--bleed));padding:var(--pt) var(--bleed) var(--pt) calc(var(--pad) + var(--bleed))}
.pf-routine-page .pe-ex .pf-ex-summary{min-height:44px;gap:10px}
.pf-routine-page .pe-ex .pf-ex-summary strong{font:600 14px/1.41 var(--body)}
.pf-routine-page .pe-toggle.pw-btn{position:relative;width:auto;min-width:44px;height:30px;min-height:30px;padding:0 10px;border-radius:10px;font:500 11px/1 var(--body);gap:5px}
.pf-routine-page .pe-toggle.pw-btn::after{content:'';position:absolute;inset:-7px}   /* the tap target stays 44 */
.pf-routine-page .pe-toggle svg{width:13px;height:13px}
.pe-lines{position:relative;margin-top:2px;display:flex;flex-direction:column;gap:3px 4px}
.pe-line{display:grid;grid-template-columns:80px 26px minmax(0,1fr);align-items:center;font:500 12px/1.504 var(--mono);font-size:12px;color:var(--chalk);font-variant-numeric:tabular-nums;min-width:0}
.pe-line .pe-w{text-align:right;white-space:nowrap;overflow:hidden;text-overflow:clip}
.pe-line .pe-x{text-align:center;color:color-mix(in srgb,var(--faint) 45%,transparent);font-weight:400}
.pe-line .pe-r{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap;min-width:0;padding-left:2px}
.pe-reps{display:inline-flex;white-space:nowrap}   /* the reps never break; the date may */
.pe-line .pe-r i{font-style:normal;display:inline-block;width:3ch;text-align:right}
.pe-line .pe-r i:first-child{width:2.5ch}
.pe-q{font:500 9px/1 var(--body);color:var(--faint);margin-left:8px}
.pe-d{display:inline-flex;align-items:center;height:18px;padding:0 7px;margin-left:12px;border-radius:6px;background:var(--surface2);font:500 9px/1 var(--body);letter-spacing:.02em;color:var(--faint)}
.pe-up{color:var(--accent)}
.pe-last{font-weight:400;color:var(--faint);opacity:.75}
.pe-last .pe-x{opacity:.6}
/* EDIT: the numbers become chips, in the same columns */
/* same weight as the rule that declares --bleed, or 0px keeps winning */
.pf-routine-page .pw-exercise.pw-editable.pe-ex.pe-open{--bleed:12px}
.pe-open{background:var(--ground);border-radius:14px;border-bottom-color:transparent}
/* beats `:root .pf-routine-page .pw-grip`, which pinned every grip to -8px */
:root .pf-routine-page .pe-ex .pw-grip{left:calc(var(--bleed) - 8px)}
.pe-open+.pe-ex{border-top-color:transparent}
.pe-line.pe-edit{position:relative;min-height:32px;column-gap:0}
/* v4.6.355: the line grip, at the right end; lifting a line lifts its delete with it */
.pe-line.pe-edit .pe-grip{position:absolute;right:-10px;top:50%;transform:translateY(-50%);width:36px;height:36px;padding:0;margin:0;border:0;background:transparent;color:var(--muted);display:grid;place-items:center;cursor:grab;touch-action:none;-webkit-tap-highlight-color:transparent}
.pe-line.pe-edit .pe-grip:focus-visible{outline:2px solid var(--accent);outline-offset:-4px;border-radius:10px}
.pe-line.pe-edit.pe-lifting{z-index:3}
.pe-line.pe-edit.pe-lifting::before{content:'';position:absolute;z-index:-1;inset:-5px -14px -5px calc(-10px - var(--pad));background:var(--surface);border-radius:14px;box-shadow:0 10px 24px rgba(0,0,0,.16),0 0 0 1px var(--line)}
.pe-line.pe-edit.pe-lifting .pe-grip{color:var(--accent);cursor:grabbing}
.pe-line.pe-edit .pe-w{display:flex;justify-content:flex-end;overflow:visible}
.pe-line.pe-edit .pe-r{gap:4px;row-gap:5px}
/* under chips, last time keeps the chips' slots: 34px centred, 4px apart */
.pe-open .pe-last .pe-r i,.pe-open .pe-last .pe-r i:first-child{width:34px;margin-right:4px;text-align:center}
.pe-open .pe-last .pe-d{margin-left:auto;padding:0 5px}   /* rides the right edge; if it must wrap, it wraps alone, still right */
.pe-chip{appearance:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:28px;padding:0;border:1px dotted var(--muted);border-radius:8px;background:transparent;color:var(--chalk);font:500 11px/1 var(--mono);font-size:11px;font-variant-numeric:tabular-nums;cursor:pointer;box-sizing:border-box}
.pe-chip.pe-cw{width:auto;max-width:80px;min-width:44px;padding:0 6px;white-space:nowrap}
.pe-chip.pe-add{width:26px;color:var(--faint);border-color:var(--line);font-family:var(--body)}
/* the input IS the chip: same box, same place; 16px so iOS does not zoom */
.pw-workspace .pe-chip.pe-in{display:inline-flex;width:36px;max-width:none;min-width:0;height:28px;margin:0;padding:0 2px;border:1px solid var(--accent);border-radius:8px;background:var(--surface);color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 18%,transparent);font:500 16px/1 var(--mono);text-align:center;outline:0;-moz-appearance:textfield}
.pe-chip.pe-in::-webkit-outer-spin-button,.pe-chip.pe-in::-webkit-inner-spin-button{appearance:none;margin:0}
.pw-workspace .pe-chip.pe-in.pe-cw{width:64px}
/* centre = the grip's centre: (bleed-8)+18 - (pad+bleed) - 13 */
.pe-del{position:absolute;left:calc(-3px - var(--pad));top:50%;transform:translateY(-50%);width:26px;height:26px;padding:0;border:1px dotted color-mix(in srgb,var(--live) 45%,var(--line));border-radius:8px;background:transparent;color:var(--live);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.pe-del svg{width:13px;height:13px}
.pe-del::after{content:'';position:absolute;inset:-9px}
.pe-actions{display:flex;align-items:center;gap:2px;margin:11px 0 2px;padding-top:10px;border-top:1px solid var(--line)}
.pe-actions .pe-btn{min-height:40px;padding:0 10px;border:0;border-radius:12px;background:none;box-shadow:none;font:500 12px/1 var(--body);gap:6px 7px;color:var(--chalk);white-space:nowrap}
.pe-actions .pe-btn svg{width:16px;height:16px;flex:0 0 auto}
.pe-actions .pe-add{padding-left:0}
.pe-actions .pe-gap{flex:1}
.pe-actions .pe-div{width:1px;height:18px;background:var(--line)}
.pe-actions .pe-danger{color:var(--live)}
.pe-actions .pe-avoid{color:var(--muted);padding-right:0}
@media(max-width:360px){.pe-actions .pe-btn{font-size:11px;padding:0 7px;gap:5px}.pe-actions .pe-btn svg{width:14px;height:14px}}
.pe-removed{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;font:400 11px/1.316 var(--body);color:var(--faint)}
.pe-removed b{font-weight:500;color:var(--chalk)}
.pe-removed .pe-undo{min-height:36px;padding:0 12px;border-radius:10px;font-size:11px;color:var(--accent)}
.pe-ex .pe-removed{margin:0}
@media(max-width:360px){.pf-routine-page .pw-exercise.pw-editable.pe-ex{--pad:26px}.pf-routine-page .pw-exercise.pw-editable.pe-ex.pe-open{--bleed:8px}.pe-line{grid-template-columns:70px 20px minmax(0,1fr);font-size:11px}.pe-line .pe-r i{width:2.9ch}.pe-line .pe-r i:first-child{width:2.4ch}.pe-d{margin-left:6px;padding:0 5px}.pe-chip{width:32px}.pe-line.pe-edit .pe-r{gap:3px}.pe-chip.pe-cw{max-width:70px;min-width:40px;padding:0 4px;font-size:11px}.pw-workspace .pe-chip.pe-in{width:34px}.pe-open .pe-last .pe-r i,.pe-open .pe-last .pe-r i:first-child{width:32px;margin-right:3px}.pe-actions{gap:6px}.pe-actions .pe-btn{padding:0 9px;font-size:10px;white-space:nowrap;gap:3px 4px}}
/* v4.6.75: THE WEEK STRIP, AND THE TOOLBAR AS BUTTONS. Chips for every
   planned day sit above the routine; the active one is the accent fill the
   calendar already uses for a selected date. The "··· More" disclosure is
   gone: Paste and Clear are icon buttons beside Regenerate, one row with the
   stepper, at the toolbar's own 44px. */
/* v4.6.77: the browser's scroll anchoring treats the swapped routine as
   content moving under the viewport and adds a correction of its own -- a
   second jump on top of ours. The day's body is not an anchor. */
.pf-day-body{overflow-anchor:none}
.pf-strip{display:flex;gap:6px;margin:2px 0 10px}
.pf-strip .pw-btn.pf-chip{flex:1;min-width:0;flex-direction:column;gap:0;min-height:56px;padding:7px 2px 8px;border-radius:12px;font:600 10px/1.222 var(--mono)}
.pf-chip s{display:block;text-decoration:none;font:400 9px/1.222 var(--mono);color:var(--faint);margin-top:1px}
.pf-chip u{display:block;text-decoration:none;max-width:100%;font:500 8px/1.222 var(--body);color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pf-chip.selected s{color:color-mix(in srgb,#fff 75%,var(--accent))}
.pf-chip.selected u{color:#fff}
.pf-chip{position:relative}
.pf-dot{position:absolute;top:6px;right:6px;width:6px;height:6px;border-radius:50%;background:var(--accent)}
.pf-chip.selected .pf-dot{background:#fff}
:root .pf-routine-page .pf-routine-controls{align-items:flex-end}
.pf-tools{display:flex;gap:6px;flex:none}
:root .pf-routine-controls .pf-tools .pw-btn.pw-icon.pf-tool{width:44px;min-width:44px;height:44px;min-height:44px;border-radius:12px;background:var(--surface2);border-color:var(--line);color:var(--chalk)}
:root .pf-routine-controls .pf-quiet-regenerate{width:auto;padding:8px 12px}
/* D3 spacing on the card: the routine reads as one block, not five cards */
/* v4.6.76: THE GRIP IS THE NAME ROW. It was a 44px box pinned by a `top` that
   had to be re-derived every time the padding changed, so it rode above the
   name it belongs to. It is the name row's own height now, starting where the
   row starts, with the glyph centred in it -- aligned by construction, at any
   type size. The tap target comes back with the inset. */
:root .pf-routine-page .pe-ex .pw-grip{top:var(--pt);height:36px;min-height:0;display:flex;align-items:center;justify-content:center;line-height:0}
:root .pf-routine-page .pe-ex .pw-grip::after{content:'';position:absolute;inset:-6px -4px}
.pf-routine-page .pe-ex:first-child{--pt:0px}
.pf-routine-page .pe-ex .pf-ex-summary{min-height:36px;gap:8px}
.pf-routine-page .pe-ex .pf-ex-summary strong{font:600 12px/1.316 var(--body)}
.pe-lines{margin-top:0;gap:2px}
.pe-line{font-size:11px;line-height:1.41}
.pf-workspace .pf-routine-card.card{padding-top:12px;padding-bottom:12px}
@media(max-width:360px){.pf-strip{gap:4px}.pf-strip .pw-btn.pf-chip{padding:6px 1px 7px;font-size:9px}.pf-chip u{font-size:7px}:root .pf-routine-controls .pf-quiet-regenerate{padding:8px 9px;font-size:10px}}

/* v4.6.78: THE DATES PAGE LOSES ITS TWO HEADINGS AND ITS BLUE BAR.
   "Select dates to plan or edit" said what a calendar under a Dates tab
   already says, and the month was a 19px title competing with the card
   above it -- so the month becomes the label between its own arrows, at the
   size of the weekday row it belongs to, and the calendar starts at the top
   of the card. The selection was a full-bleed fill in a zero-gap grid, so
   five chosen days fused into one long lozenge; it is an inset square now,
   with real space between the days and a corner that reads as square. */
.pf-date-sheet .pw-month{justify-content:space-between}
/* v4.6.81: the month row is the card's first child now, so it sits on the
   card's own padding rather than under the preferences divider. */
:root .pf-dates-page .pf-date-sheet .pw-month{padding:2px 0 8px;min-height:44px}
:root .pf-dates-page .pf-calendar>span:nth-child(-n+7){height:32px}
:root .pf-dates-page .pf-date-sheet .pf-calendar .pw-btn{height:52px}
:root .pf-date-sheet .pw-month strong{order:0;margin:0;flex:1;text-align:center;font:600 14px/1.4 var(--body);letter-spacing:0;color:var(--chalk)}
:root .pf-dates-page .pf-date-sheet .pw-month .pw-btn{width:40px;min-width:40px;min-height:40px}
/* the day is a 44px target; the square it wears is inset inside it */
:root .pf-date-sheet .pf-calendar .pw-btn{background:transparent;border-radius:12px}
:root .pf-date-sheet .pf-calendar .pw-btn::before{content:'';position:absolute;inset:5px 3px;border-radius:10px;background:transparent;z-index:0;transition:background-color 180ms}
:root .pf-date-sheet .pf-calendar .selected::before{background:var(--accent)}
:root .pf-date-sheet .pf-calendar .pw-btn>*{position:relative;z-index:1}
/* the rings that marked a planned or drafted day follow the square in */
:root .pf-date-sheet .pf-calendar .pw-planned:not(.selected){box-shadow:none}
:root .pf-date-sheet .pf-calendar .pw-planned:not(.selected)::before{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--accent) 38%,transparent)}
:root .pf-date-sheet .pf-calendar .pw-drafted:not(.selected)::after{inset:5px 3px;border-radius:10px}
/* the pulse marked the days being edited from inside the old full-bleed fill,
   where it barely showed; on an inset square it reads as a second border
   around a day the accent fill has already claimed. It marks the unselected. */
:root .pf-date-sheet .pf-calendar .pf-editing{box-shadow:none;animation:none}
:root .pf-date-sheet .pf-calendar .pf-editing:not(.selected)::before{animation:pf-edit-pulse 2.4s ease-in-out infinite;box-shadow:inset 0 0 0 2px #85bff7}
@media(prefers-reduced-motion:reduce){:root .pf-date-sheet .pf-calendar .pf-editing:not(.selected)::before{animation:none}}
@media(max-width:360px){:root .pf-date-sheet .pf-calendar .pw-btn::before,:root .pf-date-sheet .pf-calendar .pw-drafted:not(.selected)::after{inset:5px 2px}}

/* v4.6.80: THE INK FLOOD. A day fills from the centre of its own square and is
   clipped by the corner, the number turning white once the ink has passed
   under it; dropping a day runs it back into the centre. Only the square and
   the type change -- nothing in the grid moves, which is what lets forty
   numbers sit still while one of them fills. The keyframes carry the fill on
   the way out because by then the day is no longer selected and its ::before
   has nothing to paint. */
@keyframes pf-ink-in{from{clip-path:circle(0% at 50% 50%)}to{clip-path:circle(78% at 50% 50%)}}
@keyframes pf-ink-out{from{background:var(--accent);clip-path:circle(78% at 50% 50%)}
                      to{background:var(--accent);clip-path:circle(0% at 50% 50%)}}
/* the number holds its ink colour until the flood reaches it, then turns
   white quickly: a long crossfade leaves it grey on blue, which is the one
   moment in this animation where the day is hard to read. */
@keyframes pf-ink-ink{0%,45%{color:var(--chalk)}72%,100%{color:#fff}}
@keyframes pf-ink-ink-out{from{color:#fff}to{color:var(--chalk)}}
@keyframes pf-ink-dot{0%,45%{color:var(--accent)}72%,100%{color:#fff}}
:root .pf-date-sheet .pf-calendar .pf-ink::before{animation:pf-ink-in 260ms cubic-bezier(.4,0,.2,1)}
:root .pf-date-sheet .pf-calendar .pf-ink{animation:pf-ink-ink 260ms linear}
:root .pf-date-sheet .pf-calendar .pf-ink .pf-plan-dot{animation:pf-ink-dot 260ms linear}
:root .pf-date-sheet .pf-calendar .pf-ink-out::before{animation:pf-ink-out 180ms cubic-bezier(.4,0,1,1)}
:root .pf-date-sheet .pf-calendar .pf-ink-out{animation:pf-ink-ink-out 180ms linear}
@media(prefers-reduced-motion:reduce){
 :root .pf-date-sheet .pf-calendar .pf-ink,:root .pf-date-sheet .pf-calendar .pf-ink::before,
 :root .pf-date-sheet .pf-calendar .pf-ink .pf-plan-dot,
 :root .pf-date-sheet .pf-calendar .pf-ink-out,:root .pf-date-sheet .pf-calendar .pf-ink-out::before{animation:none}}
/* v4.6.88: status belongs to the icon, selection to the filled square. */
.pf-date-sheet .pf-status-icon{display:block;flex:none;width:14px;height:14px;fill:currentColor}
:root .pf-date-sheet .pf-calendar .pf-day-status{height:14px;min-height:14px;display:flex;align-items:center;justify-content:center;color:inherit}
:root .pf-date-sheet .pf-calendar .pw-btn::before{inset:2px;border-radius:11px}
:root .pf-date-sheet .pf-calendar .selected{color:#fff}
.pf-keys{flex-wrap:wrap}
.pf-key-selected{display:inline-block;width:14px;height:14px;border-radius:4px;background:var(--accent)}
/* v4.6.122: done and trained. The square is smaller than the Selected swatch
   (8 vs 14px) so the two never read as one mark. On a selected (filled) day
   both turn white, like every other status icon there. */
.pf-date-sheet .pf-done{color:var(--accent)}
.pf-trained{display:block;flex:none;width:8px;height:8px;border-radius:2px;background:var(--accent)}
.pf-calendar-key .pf-trained{display:inline-block}
:root .pf-date-sheet .pf-calendar .selected .pf-done{color:#fff}
:root .pf-date-sheet .pf-calendar .selected .pf-trained{background:#fff}
/* with Done and Trained in the key, 'Up to 7 days' can wrap; it keeps to the right */
.pf-date-sheet .pf-calendar-key>span:last-child{margin-left:auto}
.pf-calendar-key .pf-keys>span{display:inline-flex;align-items:center;gap:5px}
:root .pf-workspace .pf-date-breakdown{margin:0;font:400 11px/1.41 var(--body);color:var(--muted)}
:root .pf-workspace .pf-draft-detail{margin:0;font:400 10px/1.41 var(--body);color:var(--muted)}
.pf-draft-resume{margin:0}
.pf-draft-resume .pw-btn{width:100%;min-height:44px;color:var(--accent-ink)}

/* v4.6.101: Move. The stepper is the routine page's set stepper in a row of
   its own; the landing cell is the saved-plan ring, dashed, so "will be
   here" and "is here" read as the same idea in two tenses. */
.pf-dates-page .pf-move{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0 0;padding:8px 8px 8px 14px;border-radius:14px;background:var(--surface);border:1px solid var(--line)}
.pf-dates-page .pf-move-label{font:400 11px/1.222 var(--body);color:var(--muted)}
.pf-dates-page .pf-move-label b{display:block;font:600 13px/1.222 var(--body);color:var(--chalk)}
.pf-dates-page .pf-move-ctl{display:flex;align-items:center;gap:4px}
.pf-dates-page .pf-move-ctl .pw-btn{width:44px;min-width:44px;height:44px;min-height:44px;padding:0;border-radius:11px;font:600 16px var(--body)}
.pf-dates-page .pf-move-ctl output{min-width:52px;text-align:center;font:600 14px var(--mono);font-size:14px;font-variant-numeric:tabular-nums}
:root .pf-dates-page .pf-move-note{font:400 10px/1.41 var(--body);color:var(--muted);margin:6px 2px 0;min-height:16px}
:root .pf-dates-page .pf-move-problem{color:var(--chalk);font-weight:500}
:root .pf-date-sheet .pf-calendar .pf-lands::before{box-shadow:inset 0 0 0 2px var(--accent-soft)}
:root .pf-date-sheet .pf-calendar .pf-lands{color:var(--accent-ink)}
.pf-parts{margin:3px 0 10px}.pf-parts-label{display:block;font:400 10px/1.316 var(--body);color:var(--muted);margin:0 0 5px}.pf-parts-chips{display:flex;flex-wrap:wrap;gap:5px 6px}
.pf-parts .pw-btn.pf-part{min-height:34px;padding:6px 12px;border-radius:999px;font:500 11px/1 var(--body);background:var(--surface);color:var(--muted);border:1px solid var(--line)}
.pf-parts .pw-btn.pf-part.selected{background:color-mix(in srgb,var(--accent) 16%,var(--surface));color:var(--chalk);border-color:var(--accent)}

/* v4.6.160: THE DAY STRIP SPEAKS THE CHIPS' LANGUAGE. One planned day stretched
   into a full-width slab of solid accent -- the loudest thing on the page, over
   Body parts chips that say "selected" with a tinted surface and an accent edge.
   Each tile is now 68px at most (sharing the row evenly when a week needs it)
   and selected the way the chips are. Chosen as B from the 2026-09-29 mock. */
.pf-strip{justify-content:flex-start}
.pf-strip .pw-btn.pf-chip{flex:1 1 0;max-width:68px;background:var(--surface);color:var(--chalk);border:1px solid var(--line);box-shadow:none}
.pf-strip .pw-btn.pf-chip.selected{background:color-mix(in srgb,var(--accent) 16%,var(--surface));color:var(--chalk);border-color:var(--accent);box-shadow:none}
.pf-chip.selected s{color:var(--muted)}
.pf-chip.selected u{color:var(--chalk)}
.pf-chip.selected .pf-dot{background:var(--accent)}

/* v4.6.174 — an avoided exercise in a plan: set apart, with the swap */
/* v4.6.185: the avoided row and its panel, redesigned (one surface, plain rows) */
.pf-routine-page .pe-ex.xp-avoided .pf-ex-summary strong{color:var(--muted);font-weight:500}
.pf-mtag.xp-avtag{display:inline-flex;align-items:center;gap:5px;padding-left:6px}.pf-mtag.xp-avtag .xp-ic{width:11px;height:11px}
.xp-flag{margin:5px 0 8px;border-radius:16px;background:color-mix(in srgb,var(--chalk) 5%,transparent);overflow:hidden}
.xp-flag-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px 4px}
.xp-flag-h p{margin:0;font:400 11px/1.316 var(--body);color:var(--muted)}
.xp-flag-h .pw-btn.xp-include{min-height:0;height:auto;margin:0;padding:0;border:0;background:none;box-shadow:none;border-radius:0;color:var(--muted);font:500 11px/1.316 var(--body);text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.pw-btn.xp-swap{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:0;height:auto;margin:0;padding:12px 16px;border:0;border-radius:0;background:none;box-shadow:none;text-align:left;color:var(--chalk);font:inherit}
.pw-btn.xp-swap+.pw-btn.xp-swap{border-top:1px solid var(--line)}
.pw-btn.xp-swap>span{min-width:0}
.pw-btn.xp-swap strong{display:block;font:600 13px/1.269 var(--body)}
.pw-btn.xp-swap small{display:block;margin-top:2px;font:400 11px/1.316 var(--body);color:var(--muted)}
.pw-btn.xp-swap i{flex:0 0 auto;font:600 11px/1 var(--body);font-size:11px;font-style:normal;color:var(--accent);white-space:nowrap}
.pw-btn.xp-swap.first i{padding:9px 14px;border-radius:999px;background:color-mix(in srgb,var(--accent) 16%,transparent)}
.pw-btn.xp-swap.ghost strong{font-weight:500}.pw-btn.xp-swap.ghost i{color:var(--muted)}
.xp-was{display:flex;align-items:center;gap:6px;margin:5px 0 0;font:400 11px var(--body);color:var(--muted)}
.xp-was .pw-btn.xp-undo{min-height:0;height:auto;margin:0;padding:2px 4px;border:0;background:none;box-shadow:none;color:var(--accent);font:600 11px var(--body)}
/* v4.6.183: focus rows (a body part's muscles, one row per part), the muscle
   tag beside an exercise name, and the auto set target */
.pf-focus{margin:-2px 0 11px;padding:10px 12px 4px;border-radius:16px;border:1px solid var(--line);background:color-mix(in srgb,var(--chalk) 3%,transparent)}
.pf-focus .pf-parts-label{margin:0 0 2px}
.pf-focus-row{display:flex;align-items:flex-start;gap:8px;padding:6px 0}
.pf-focus-row+.pf-focus-row{border-top:1px solid var(--line)}
.pf-focus-row>b{flex:0 0 66px;padding-top:9px;font:600 11px/1.2 var(--body);color:var(--chalk)}
.pf-focus-chips{display:flex;flex-wrap:wrap;gap:5px 6px;min-width:0}
.pf-focus .pw-btn.pf-focus-chip{min-height:32px;padding:5px 11px;border-radius:999px;font:500 11px/1 var(--body);background:var(--surface);color:var(--muted);border:1px solid var(--line)}
.pf-focus .pw-btn.pf-focus-chip.selected{background:var(--accent);color:#fff;border-color:var(--accent)}
.pf-mtag{display:inline-block;margin-left:8px;padding:2px 7px;border-radius:9px;background:color-mix(in srgb,var(--chalk) 8%,transparent);color:var(--muted);font:600 9px/1.222 var(--mono);letter-spacing:.06em;text-transform:uppercase;vertical-align:2px;white-space:nowrap}
.pf-mtag.on{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}
:root .pf-routine-controls .pf-total .pf-total-label{display:flex;align-items:center;gap:6px}
.pf-auto-tag{font-style:normal;padding:2px 7px;border-radius:9px;background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent);font:600 9px/1.222 var(--mono);letter-spacing:.06em;text-transform:uppercase}
.pf-auto-tag.mine{background:color-mix(in srgb,var(--chalk) 8%,transparent);color:var(--muted)}
:root .pf-routine-page .pf-auto-line{margin:0;padding:8px 0 0;font:400 11px/1.41 var(--body);color:var(--muted)}
.pf-auto-line b{color:var(--chalk);font-weight:600}
.pf-auto-line .pw-btn.pf-auto-back{display:inline;min-height:0;padding:0;border:0;background:none;color:var(--accent);font:600 11px/1.41 var(--body)}

/* v4.6.200: Unselect all, on the selection line; the range sits beside the count */
:root .pf-workspace .pf-selection .pf-range{margin-left:6px;color:var(--muted);font-weight:400;white-space:nowrap}
:root .pf-workspace .pw-btn.pf-unselect{display:inline-flex;align-items:center;gap:5px 6px;flex:none;width:auto;min-width:0;min-height:30px;height:30px;margin:-4px 0;padding:0 12px 0 9px;border:0;border-radius:15px;background:color-mix(in srgb,var(--chalk) 7%,transparent);color:var(--chalk);font:500 11px/1 var(--body);white-space:nowrap;box-shadow:none}
:root .pf-workspace .pw-btn.pf-unselect svg{width:13px;height:13px;opacity:.7}
:root .pf-workspace .pw-btn.pf-unselect:active{background:color-mix(in srgb,var(--chalk) 13%,transparent)}
:root .pf-workspace .pf-selection:has(.pf-unselect){margin-top:5px}

/* v4.6.201: Plan -> Preferences, rebuilt around what changes a plan */
:root .pf-workspace .pf-prefs{display:flex;flex-direction:column;gap:10px 12px}
:root .pf-workspace .pf-prefs .card{margin:0;padding:18px 18px 16px}
:root .pf-workspace .pf-prefs h3{margin:0 0 10px;font:600 13px/1.222 var(--body);color:var(--chalk);letter-spacing:-.01em}
:root .pf-workspace .pf-seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;padding:3px;border-radius:21px;background:color-mix(in srgb,var(--chalk) 7%,transparent)}
:root .pf-workspace .pf-segb{display:flex;align-items:center;justify-content:center;width:auto;min-width:0;height:36px;min-height:0;margin:0;padding:0 6px;border:0;border-radius:18px;background:none;box-shadow:none;font:500 12px var(--body);color:var(--muted);white-space:nowrap;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .18s,color .18s}
/* v4.6.260 INK: what you picked is solid chalk on ground; blue is kept for actions (Save) */
:root .pf-workspace .pf-segb.on{color:var(--ground);font-weight:600}
:root .pf-workspace .pf-seg-sm{width:176px;flex:none}
:root .pf-workspace .pf-seg-sm .pf-segb{height:32px;font-size:11px}
:root .pf-workspace .pf-pref-cap{margin:8px 2px 0;font:400 11px/1.41 var(--body);color:var(--muted)}
:root .pf-workspace .pf-pref-cap strong{color:var(--chalk);font-weight:600}
:root .pf-workspace .pf-pref-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid color-mix(in srgb,var(--chalk) 8%,transparent)}
:root .pf-workspace .pf-prefs h3+.pf-pref-row{border-top:0;padding-top:0}
:root .pf-workspace .pf-pref-row:last-child{padding-bottom:0}
:root .pf-workspace .pf-pref-block{display:block}
:root .pf-workspace .pf-pref-row>span,:root .pf-workspace .pf-pref-row>label{font:500 12px/1.269 var(--body);color:var(--chalk)}
:root .pf-workspace .pf-pref-row>span small{display:block;margin-top:2px;font:400 11px/1.316 var(--body);color:var(--muted)}
:root .pf-workspace .pf-pref-limit input{width:84px;min-height:40px;box-sizing:border-box;padding:0 12px;border:0;border-radius:12px;background:color-mix(in srgb,var(--chalk) 7%,transparent);color:var(--chalk);font:500 16px var(--body);font-size:16px;text-align:center;font-variant-numeric:tabular-nums}
:root .pf-workspace .pf-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:5px 6px;margin-top:8px}
:root .pf-workspace .pf-dowb{display:flex;align-items:center;justify-content:center;width:auto;min-width:0;min-height:0;aspect-ratio:1;margin:0;padding:0;border:0;border-radius:50%;box-shadow:none;font:600 11px var(--body);color:var(--muted);background:none;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chalk) 16%,transparent);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .18s,color .18s}
:root .pf-workspace .pf-dowb.on{background:var(--chalk);color:var(--ground);box-shadow:none}
:root .pf-workspace .pf-switch{position:relative;flex:none;width:46px;min-width:46px;height:28px;min-height:0;margin:0;padding:0;border:0;border-radius:14px;box-shadow:none;background:color-mix(in srgb,var(--chalk) 16%,transparent);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .2s}
:root .pf-workspace .pf-switch::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .2s}
:root .pf-workspace .pf-switch.on{background:var(--accent)}
:root .pf-workspace .pf-switch.on::after{transform:translateX(18px)}
:root .pf-workspace .pf-pref-grp{padding:12px 0;border-top:1px solid color-mix(in srgb,var(--chalk) 8%,transparent)}
:root .pf-workspace .pf-prefs h3+.pf-pref-grp{border-top:0;padding-top:0}
:root .pf-workspace .pf-pref-grp:last-child{padding-bottom:0}
:root .pf-workspace .pf-pref-grp>span{font:500 12px var(--body);color:var(--chalk)}
:root .pf-workspace .pf-pref-grp>span small{margin-left:6px;font:400 11px var(--body);color:var(--muted)}
:root .pf-workspace .pf-xchips{display:flex;flex-wrap:wrap;gap:5px 6px;margin-top:6px}
:root .pf-workspace .pf-xchip{position:relative;display:inline-flex;align-items:center;gap:6px;width:auto;min-width:0;min-height:32px;margin:0;padding:0 10px 0 12px;border:0;border-radius:16px;box-shadow:none;background:color-mix(in srgb,var(--chalk) 7%,transparent);font:500 11px var(--body);color:var(--chalk);text-align:left;cursor:pointer}
:root .pf-workspace .pf-xchip em{font:400 10px var(--mono);font-size:10px;font-style:normal;color:var(--muted)}
:root .pf-workspace .pf-xchip svg{flex:none;width:11px;height:11px;opacity:.55}
:root .pf-workspace .pf-xchip-add{background:none;border:1px dashed color-mix(in srgb,var(--chalk) 22%,transparent);color:var(--accent);padding:0 12px}
:root .pf-workspace .pf-xchip-add select{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;font-size:16px;cursor:pointer}
:root .pf-workspace .pf-prefs .pf-rules{background:none;box-shadow:none;border:1px solid color-mix(in srgb,var(--chalk) 9%,transparent)}
:root .pf-workspace .pf-rules-h{display:block;margin:0 0 8px;font:600 9px/1 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
:root .pf-workspace .pf-rules ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px 9px}
:root .pf-workspace .pf-rules li{display:flex;gap:10px;font:400 11px/1.363 var(--body);color:var(--muted)}
:root .pf-workspace .pf-rules li svg{flex:none;width:14px;height:14px;margin-top:2px;color:var(--accent)}

/* v4.6.202: the toggles move. One thumb per segmented control, slid to the
   chosen segment (--i of --n); the labels, the weekday circles and the switch
   cross-fade. The page is patched in place (pfPrefPatch), so there is an
   element left to animate. */
:root .pf-workspace .pf-seg{position:relative;isolation:isolate}
:root .pf-workspace .pf-seg::before{content:"";position:absolute;z-index:0;top:3px;bottom:3px;left:3px;width:calc((100% - 6px)/var(--n,2));border-radius:18px;background:var(--chalk);box-shadow:none;transform:translateX(calc(var(--i,0)*100%));transition:transform var(--dur-move,.26s) var(--settle)}
:root .pf-workspace .pf-segb{position:relative;z-index:1;transition:color var(--dur-move,.26s) ease}
:root .pf-workspace .pf-dowb{transition:background-color var(--dur-move,.26s) ease,color var(--dur-move,.26s) ease,transform var(--dur-quick,.16s) ease}
:root .pf-workspace .pf-dowb:active{transform:scale(.92)}
:root .pf-workspace .pf-switch{transition:background-color var(--dur-move,.26s) ease}
:root .pf-workspace .pf-switch::after{transition:transform var(--dur-move,.26s) var(--settle)}
:root .pf-workspace .pf-pref-limit.pf-reveal{animation:pf-pref-reveal var(--dur-move,.26s) var(--settle)}
@keyframes pf-pref-reveal{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){:root .pf-workspace .pf-seg::before,:root .pf-workspace .pf-segb,:root .pf-workspace .pf-dowb,:root .pf-workspace .pf-switch,:root .pf-workspace .pf-switch::after{transition:none}:root .pf-workspace .pf-pref-limit.pf-reveal{animation:none}}
/* v4.6.202: the step tabs a size up (11px was the smallest text on the page) */
:root .pf-workspace .pf-steps .pw-btn{font-size:11px}

/* v4.6.203: Your split -- an order of sessions, not a calendar */
:root .pf-workspace .pf-tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px}
:root .pf-workspace .pf-tile{display:flex;flex-direction:column;align-items:flex-start;gap:2px 3px;width:auto;min-width:0;min-height:0;margin:0;padding:12px 14px;border:1.5px solid transparent;border-radius:16px;box-shadow:none;background:color-mix(in srgb,var(--chalk) 6%,transparent);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color var(--dur-move,.26s) ease,border-color var(--dur-move,.26s) ease}
:root .pf-workspace .pf-tile b{font:600 12px/1.2 var(--body);color:var(--chalk);transition:color var(--dur-move,.26s) ease}
:root .pf-workspace .pf-tile small{font:400 11px/1.269 var(--body);color:var(--muted)}
:root .pf-workspace .pf-tile.on{background:color-mix(in srgb,var(--accent) 10%,transparent);border-color:var(--accent)}
:root .pf-workspace .pf-tile.on b{color:var(--accent-ink,var(--accent))}

:root .pf-workspace .pf-split-h{display:block;margin:13px 0 0;font:600 9px/1 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
:root .pf-workspace .pf-rots{margin-top:8px;border-top:1px solid color-mix(in srgb,var(--chalk) 8%,transparent)}
:root .pf-workspace .pf-rot{display:grid;grid-template-columns:1fr 36px;align-items:center;border-bottom:1px solid color-mix(in srgb,var(--chalk) 8%,transparent)}
:root .pf-workspace .pf-rot-main{display:grid;grid-template-columns:24px 1fr;align-items:center;gap:8px 10px;width:auto;min-width:0;min-height:48px;margin:0;padding:6px 0;border:0;border-radius:0;box-shadow:none;background:none;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
:root .pf-workspace .pf-rot-n{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:color-mix(in srgb,var(--chalk) 7%,transparent);font:600 11px var(--mono);font-size:11px;font-style:normal;color:var(--muted);transition:background-color var(--dur-move,.26s) ease,color var(--dur-move,.26s) ease}
:root .pf-workspace .pf-rot.next .pf-rot-n{background:var(--accent);color:#fff}
:root .pf-workspace .pf-rot-tags{display:flex;flex-wrap:wrap;gap:4px 5px;align-items:center;min-width:0}
:root .pf-workspace .pf-rot-tag{display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:13px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-ink,var(--accent));font:500 11px var(--body)}
:root .pf-workspace .pf-rot-name{font:600 11px var(--body);color:var(--chalk);margin-right:2px}
:root .pf-workspace .pf-rot-tags em{font:400 11px var(--body);font-size:11px;font-style:normal;color:var(--muted)}
:root .pf-workspace .pf-rot-next{margin-left:4px;font:600 9px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-ink,var(--accent));white-space:nowrap}
:root .pf-workspace .pf-rot-grip{display:flex;align-items:center;justify-content:flex-end;width:36px;min-width:0;height:44px;min-height:0;margin:0;padding:0;border:0;box-shadow:none;background:none;color:var(--muted);cursor:grab;touch-action:none;-webkit-tap-highlight-color:transparent}
:root .pf-workspace .pf-rot-grip svg{width:16px;height:16px;opacity:.55}
:root .pf-workspace .pf-rot.pf-dragging{opacity:.55}
:root .pf-workspace .pf-rot.pf-drop{box-shadow:inset 0 2px 0 var(--accent)}
:root .pf-workspace .pf-rot-edit{grid-column:1/-1;padding:2px 0 12px 34px;animation:pf-pref-reveal var(--dur-move,.26s) var(--settle)}
:root .pf-workspace .pf-rot-parts{display:flex;flex-wrap:wrap;gap:5px 6px}
:root .pf-workspace .pf-rot-part{width:auto;min-width:0;height:32px;min-height:0;margin:0;padding:0 12px;border:0;border-radius:16px;box-shadow:none;background:color-mix(in srgb,var(--chalk) 7%,transparent);font:500 11px var(--body);color:var(--chalk);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color var(--dur-move,.26s) ease,color var(--dur-move,.26s) ease}
:root .pf-workspace .pf-rot-part.on{background:var(--accent);color:#fff}
:root .pf-workspace .pf-rot-remove{width:auto;min-width:0;min-height:0;margin:8px 0 0;padding:4px 0;border:0;box-shadow:none;background:none;font:500 11px var(--body);color:var(--muted);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
:root .pf-workspace .pf-rot-add{display:block;width:auto;min-width:0;min-height:0;margin:0;padding:13px 0 2px;border:0;box-shadow:none;background:none;font:500 11px var(--body);color:var(--accent-ink,var(--accent));cursor:pointer}
:root .pf-workspace .pf-up{display:flex;flex-direction:column;gap:6px 7px;margin-top:8px}
:root .pf-workspace .pf-up span{display:grid;grid-template-columns:92px 1fr;font:400 11px/1.269 var(--body);color:var(--chalk)}
:root .pf-workspace .pf-up b{font:400 11px/1.41 var(--mono);color:var(--muted)}
:root .pf-workspace .pf-split-note{margin-top:10px}
@media(prefers-reduced-motion:reduce){:root .pf-workspace .pf-tile,:root .pf-workspace .pf-tile b,:root .pf-workspace .pf-rot-n,:root .pf-workspace .pf-rot-part{transition:none}:root .pf-workspace .pf-rot-edit{animation:none}}
/* v4.6.354: the days are chips you tap to choose the session (Sungjee, 2026-10-18) */
:root .pf-workspace .pf-split-line{display:flex;flex-wrap:wrap;gap:6px 8px;margin:10px 0 13px}
:root .pf-workspace .pf-sl-day{box-sizing:border-box;display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 12px 0 14px;margin:0;border-radius:14px;background:var(--surface);border:1px solid var(--line);box-shadow:0 1px 2px rgba(0,0,0,.06);font:400 13px/1.2 var(--body);color:var(--chalk);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .12s}
:root .pf-workspace .pf-sl-day span{white-space:nowrap}
:root .pf-workspace .pf-sl-day b{font-weight:650}
:root .pf-workspace .pf-sl-day .ic{opacity:.5;flex:none}
:root .pf-workspace .pf-sl-day:active{transform:scale(.97)}
:root .pf-workspace .pf-sl-day.on{background:var(--accent);border-color:var(--accent);color:#fff}
:root .pf-workspace .pf-sl-day.on .ic{opacity:.9}
:root .pf-workspace .pf-sl-pick{margin:-3px 0 13px;padding:6px;border-radius:18px;background:var(--surface);border:1px solid var(--line);box-shadow:0 8px 24px rgba(0,0,0,.08)}
:root .pf-workspace .pf-sl-pick-h{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 6px;font-size:12px;color:var(--muted)}
:root .pf-workspace .pf-sl-pick-h b{color:var(--chalk);font-weight:600}
:root .pf-workspace .pf-sl-x{display:grid;place-items:center;width:32px;height:32px;padding:0;margin:0;border:0;border-radius:50%;background:transparent;color:var(--muted);cursor:pointer}
:root .pf-workspace .pf-sl-opt{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:0 10px;margin:0;border:0;border-radius:12px;background:transparent;font:400 13px var(--body);color:var(--chalk);text-align:left;cursor:pointer}
:root .pf-workspace .pf-sl-opt i{font-style:normal;flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--line);font:500 11px var(--mono);color:var(--muted)}
:root .pf-workspace .pf-sl-opt span{flex:1}
:root .pf-workspace .pf-sl-opt.on{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-ink);font-weight:600}
:root .pf-workspace .pf-sl-opt.on i{background:var(--accent);color:#fff}
:root .pf-workspace .pf-sl-note{margin:3px 10px 6px;font-size:11px;color:var(--muted)}
:root .pf-workspace .pf-sl-warn{display:flex;align-items:center;gap:7px;margin:-5px 0 11px;font-size:11px;color:var(--muted)}
:root .pf-workspace .pf-sl-warn .ic{flex:none;opacity:.7}

/* v4.6.204: Body parts you train */
:root .pf-workspace .pf-mypart-chips{display:flex;flex-wrap:wrap;gap:6px 8px}
:root .pf-workspace .pf-mypart{display:inline-flex;align-items:center;justify-content:center;width:auto;min-width:0;height:38px;min-height:0;margin:0;padding:0 16px;border:0;border-radius:19px;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chalk) 16%,transparent);background:none;font:500 12px var(--body);color:var(--muted);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color var(--dur-move,.26s) ease,color var(--dur-move,.26s) ease,transform var(--dur-quick,.16s) ease}
:root .pf-workspace .pf-mypart.on{background:var(--chalk);color:var(--ground);box-shadow:none}
:root .pf-workspace .pf-mypart:active{transform:scale(.96)}
@media(prefers-reduced-motion:reduce){:root .pf-workspace .pf-mypart{transition:none}}

/* v4.6.206: the exercise picker sheet (Avoid, Hold) */
:root.pf-xpick-open,:root.pf-xpick-open body{overflow:hidden}
.pf-pick-host .pf-pick-scrim{animation:pf-pick-fade var(--dur-move,.26s) ease both}
.pf-pick-host .pw-add-sheet.pf-pick{display:flex;flex-direction:column;max-height:86vh;height:86vh;overflow:hidden;padding:10px 0 0;transition:transform var(--dur-move,.26s) var(--settle);animation:pf-pick-in var(--dur-arrive,.42s) var(--settle) both}
.pf-pick-host.out .pf-pick-scrim{animation:pf-pick-fade .2s ease reverse both}
.pf-pick-host.out .pw-add-sheet.pf-pick{animation:pf-pick-in .2s ease reverse both}
@keyframes pf-pick-in{from{transform:translateY(100%)}to{transform:none}}
@keyframes pf-pick-fade{from{opacity:0}to{opacity:1}}
.pf-pick-host .pf-pick-top{flex:none;padding:0 20px;touch-action:none}
.pf-pick-host .pf-pick-grab{width:38px;height:5px;margin:0 auto 10px;border-radius:3px;background:color-mix(in srgb,var(--chalk) 16%,transparent)}
.pf-pick-host .pf-pick-sub{margin:2px 0 0;font:400 11px/1.316 var(--body);color:var(--muted)}
.pf-pick-host .pf-pick-parts{display:flex;gap:6px;overflow-x:auto;margin:0 -20px;padding:0 20px 12px;scrollbar-width:none;touch-action:pan-x;-webkit-overflow-scrolling:touch}
.pf-pick-host .pf-pick-parts::-webkit-scrollbar{display:none}
.pf-pick-host .pf-pick-part{flex:none;display:inline-flex;align-items:center;width:auto;min-width:0;height:32px;min-height:0;margin:0;padding:0 13px;border:0;border-radius:16px;box-shadow:none;background:color-mix(in srgb,var(--chalk) 7%,transparent);font:500 11px var(--body);color:var(--muted);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color var(--dur-move,.26s) ease,color var(--dur-move,.26s) ease}
.pf-pick-host .pf-pick-part.on{background:var(--chalk);color:var(--surface)}
.pf-pick-host .pf-pick-list{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:0 20px 12px;border-top:1px solid color-mix(in srgb,var(--chalk) 8%,transparent)}
.pf-pick-host .pf-pick-mh{display:flex;align-items:baseline;justify-content:space-between;margin:13px 0 3px;font:600 9px/1 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.pf-pick-host .pf-pick-row{display:grid;grid-template-columns:1fr 26px;align-items:center;gap:10px 12px;width:100%;min-height:54px;margin:0;padding:6px 0;border:0;border-bottom:1px solid color-mix(in srgb,var(--chalk) 7%,transparent);border-radius:0;box-shadow:none;background:none;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.pf-pick-host .pf-pick-row b{display:block;font:500 13px/1.222 var(--body);color:var(--chalk)}
.pf-pick-host .pf-pick-row small{display:block;margin-top:1px;font:400 11px/1.222 var(--body);color:var(--muted)}
.pf-pick-host .pf-pick-ck{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--chalk) 22%,transparent);color:#fff;transition:background-color var(--dur-quick,.16s) ease,border-color var(--dur-quick,.16s) ease,transform var(--dur-move,.26s) var(--settle)}
.pf-pick-host .pf-pick-ck svg{width:13px;height:13px;opacity:0;transition:opacity var(--dur-quick,.16s) ease}
.pf-pick-host .pf-pick-row.on .pf-pick-ck{background:var(--accent);border-color:var(--accent);transform:scale(1.06)}
.pf-pick-host .pf-pick-row.on .pf-pick-ck svg,.pf-pick-host .pf-pick-row.have .pf-pick-ck svg{opacity:1}
.pf-pick-host .pf-pick-row.have{cursor:default}
.pf-pick-host .pf-pick-row.have b{color:var(--muted)}
.pf-pick-host .pf-pick-row.have .pf-pick-ck{border-color:transparent;background:color-mix(in srgb,var(--chalk) 8%,transparent);color:var(--muted)}
.pf-pick-host .pf-pick-new{margin-left:6px;font:600 8px/1 var(--mono);letter-spacing:.08em;color:var(--muted);vertical-align:1px}
.pf-pick-host .pf-pick-empty{margin:22px 4px;font:400 12px/1.41 var(--body);color:var(--muted);text-align:center}
.pf-pick-host .pf-pick-foot{flex:none;padding:12px 20px calc(16px + env(safe-area-inset-bottom,0px));background:var(--surface);border-top:1px solid color-mix(in srgb,var(--chalk) 8%,transparent)}
.pf-pick-host .pf-pick-go{display:flex;align-items:center;justify-content:center;width:100%;height:52px;min-height:0;margin:0;padding:0;border:0;border-radius:18px;box-shadow:none;background:var(--accent);color:#fff;font:600 13px var(--body);cursor:pointer;transition:background-color var(--dur-move,.26s) ease,color var(--dur-move,.26s) ease}
.pf-pick-host .pf-pick-go:disabled{background:color-mix(in srgb,var(--chalk) 8%,transparent);color:var(--muted);cursor:default}
@media(prefers-reduced-motion:reduce){.pf-pick-host .pf-pick-scrim,.pf-pick-host .pw-add-sheet.pf-pick{animation:none;transition:none}.pf-pick-host .pf-pick-ck,.pf-pick-host .pf-pick-ck svg,.pf-pick-host .pf-pick-part,.pf-pick-host .pf-pick-go{transition:none}}
.pf-pick-host .pw-add-sheet.pf-pick h3{margin:0;font:600 18px/1.2 var(--body);color:var(--chalk)}

/* v4.6.207: sessions built by moving body-part chips into them */
:root .pf-workspace .pf-pal{position:sticky;top:var(--pf-pal-top,112px);z-index:3;margin:13px -18px 0;padding:12px 18px;background:color-mix(in srgb,var(--chalk) 4%,var(--surface));border-top:1px solid color-mix(in srgb,var(--chalk) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--chalk) 8%,transparent)}
:root .pf-workspace .pf-pal-h{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:7px;font:600 9px/1.2 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
:root .pf-workspace .pf-pal-h em{font:400 11px/1.2 var(--body);font-size:11px;font-style:normal;letter-spacing:0;text-transform:none;color:var(--accent-ink,var(--accent));text-align:right}
:root .pf-workspace .pf-pal-chips{display:flex;flex-wrap:wrap;gap:6px 7px}
:root .pf-workspace .pf-pal-chip{display:inline-flex;align-items:center;width:auto;min-width:0;height:34px;min-height:0;margin:0;padding:0 13px;border-radius:17px;background:var(--surface);border:1.5px solid color-mix(in srgb,var(--chalk) 14%,transparent);box-shadow:0 1px 2px rgba(0,0,0,.05);font:500 12px var(--body);color:var(--chalk);cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;transition:background-color var(--dur-move,.26s) ease,color var(--dur-move,.26s) ease,border-color var(--dur-move,.26s) ease,box-shadow var(--dur-move,.26s) ease,opacity var(--dur-quick,.16s) ease}
:root .pf-workspace .pf-pal-chip.held{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent)}
:root .pf-workspace .pf-pal-chip.pf-lift{opacity:.35;border-style:dashed}
:root .pf-workspace .pf-rots{border-top:0}
:root .pf-workspace .pf-ses{display:grid;grid-template-columns:24px 1fr 30px;align-items:start;gap:8px 10px;margin-top:6px;padding:10px 6px 10px 10px;border-radius:16px;border:1.5px solid color-mix(in srgb,var(--chalk) 9%,transparent);background:var(--surface);transition:border-color var(--dur-quick,.16s) ease,background-color var(--dur-quick,.16s) ease,box-shadow var(--dur-quick,.16s) ease}
:root .pf-workspace .pf-ses>.pf-ses-side>.pf-rot-n{margin-top:2px}

:root .pf-workspace .pf-ses.can{cursor:pointer;border-style:dashed;border-color:color-mix(in srgb,var(--accent) 45%,transparent)}
:root .pf-workspace .pf-ses.pf-drop{border-style:solid;border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface));box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 14%,transparent)}
:root .pf-workspace .pf-ses.pf-dragging{opacity:.55}
/* v4.6.356: the carried session lifts and rides the finger; no text selection or callout on a long press */
:root .pf-workspace .pf-ses.pf-lifting{position:relative;z-index:5;background:var(--surface);border-color:var(--accent);box-shadow:0 14px 32px rgba(0,0,0,.22),0 3px 10px rgba(0,0,0,.12);transition:none}
:root .pf-workspace .pf-ses.pf-lifting .pf-rot-grip{color:var(--accent);cursor:grabbing}
:root .pf-workspace .pf-rot-grip,:root .pf-workspace .pe-grip,.pe-line.pe-edit .pe-grip{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
/* offsets are measured from the list itself */
:root .pf-workspace .pf-rots,.pe-lines{position:relative}
html.pf-rot-carrying,html.pf-rot-carrying *{-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important}
:root .pf-workspace .pf-ses-in{display:flex;flex-wrap:wrap;gap:5px 6px;align-items:center;min-height:30px;min-width:0}
:root .pf-workspace .pf-ses-in em{font:400 11px var(--body);font-size:11px;font-style:normal;color:var(--muted)}
:root .pf-workspace .pf-ses .pf-rot-tag{gap:2px;height:30px;padding:0 2px 0 11px;border-radius:15px;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;transition:background-color var(--dur-move,.26s) ease,color var(--dur-move,.26s) ease,opacity var(--dur-quick,.16s) ease}
:root .pf-workspace .pf-ses .pf-rot-tag.cardio{background:color-mix(in srgb,var(--chalk) 8%,transparent);color:var(--chalk)}
:root .pf-workspace .pf-ses .pf-rot-tag.hit{background:var(--accent);color:#fff}
:root .pf-workspace .pf-ses .pf-rot-tag.pf-lift{opacity:.3}
:root .pf-workspace .pf-rot-x{display:grid;place-items:center;width:26px;min-width:0;height:28px;min-height:0;margin:0;padding:0;border:0;border-radius:50%;box-shadow:none;background:none;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
:root .pf-workspace .pf-rot-x svg{width:10px;height:10px;opacity:.55}
:root .pf-workspace .pf-rot-ghost{display:inline-flex;align-items:center;height:30px;padding:0 11px;border-radius:15px;border:1.5px dashed var(--accent);color:var(--accent-ink,var(--accent));font:500 11px var(--body);animation:pf-pref-reveal var(--dur-move,.26s) var(--settle)}
:root .pf-workspace .pf-ses .pf-rot-remove{margin:0 0 0 4px;padding:4px 0}
:root .pf-workspace .pf-ses .pf-rot-grip{width:30px;height:30px;margin-top:0;justify-content:center}
:root .pf-workspace .pf-ses .pf-rot-next{align-self:center}
.pf-fly{position:fixed;z-index:60;left:0;top:0;display:inline-flex;align-items:center;height:38px;padding:0 16px;border-radius:19px;background:var(--accent);color:#fff;font:600 12px var(--body);box-shadow:0 12px 26px rgba(0,0,0,.28),0 2px 6px rgba(0,0,0,.2);transform:rotate(-4deg);pointer-events:none;white-space:nowrap}
html.pf-chip-drag,html.pf-chip-drag body{user-select:none;-webkit-user-select:none}
/* the day's cardio line on the Edit step */
:root .pf-workspace .pw-exercise.pf-cardio{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 10px}
:root .pf-workspace .pf-cardio-line{margin:3px 0 0;font:400 11px/1.316 var(--mono);color:var(--muted)}
@media(prefers-reduced-motion:reduce){:root .pf-workspace .pf-pal-chip,:root .pf-workspace .pf-ses,:root .pf-workspace .pf-ses .pf-rot-tag{transition:none}:root .pf-workspace .pf-rot-ghost{animation:none}}
:root .pf-workspace .pf-rots.holding .pf-rot-x{pointer-events:none;opacity:.35}
@media(max-width:360px){:root .pf-workspace .pf-pal{padding:10px 18px}:root .pf-workspace .pf-pal-chips{gap:6px}:root .pf-workspace .pf-pal-chip{height:32px;padding:0 10px;font-size:11px}:root .pf-workspace .pf-pal-h em{font-size:10px}}

/* v4.6.209: select sessions by their number; blue means selected and nothing else. Next up is a label. */
:root .pf-workspace .pf-rot.next .pf-rot-n{background:color-mix(in srgb,var(--chalk) 7%,transparent);color:var(--muted)}
:root .pf-workspace .pf-ses>.pf-ses-side>.pf-rot-n{width:28px;min-width:0;height:28px;min-height:0;margin:1px 0 0 -2px;padding:0;border:0;cursor:pointer;box-shadow:0 0 0 1.5px color-mix(in srgb,var(--chalk) 16%,transparent);-webkit-tap-highlight-color:transparent;transition:background-color var(--dur-move,.26s) ease,color var(--dur-move,.26s) ease,box-shadow var(--dur-move,.26s) ease}
:root .pf-workspace .pf-ses>.pf-ses-side>.pf-rot-n::after{content:"";position:absolute;inset:-9px -9px -1px}   /* v4.6.407: not over the grip under it */
:root .pf-workspace .pf-ses>.pf-ses-side>.pf-rot-n{position:relative}
:root .pf-workspace .pf-ses.sel{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface))}
:root .pf-workspace .pf-ses.sel>.pf-ses-side>.pf-rot-n{background:var(--accent);color:#fff;box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent)}
:root .pf-workspace .pf-ses .pf-rot-next{padding:4px 7px;border-radius:7px;background:color-mix(in srgb,var(--accent) 14%,transparent)}
:root .pf-workspace .pf-selbar{display:flex;align-items:center;gap:8px}
:root .pf-workspace .pf-selbar b{font:600 11px/1 var(--body);letter-spacing:0;text-transform:none;color:var(--chalk);white-space:nowrap}
:root .pf-workspace .pf-unsel{display:inline-flex;align-items:center;gap:4px 5px;width:auto;min-width:0;height:28px;min-height:0;margin:-3px 0;padding:0 10px 0 8px;border:0;border-radius:14px;box-shadow:none;background:color-mix(in srgb,var(--chalk) 9%,transparent);font:500 11px/1 var(--body);letter-spacing:0;text-transform:none;color:var(--chalk);white-space:nowrap;cursor:pointer}
:root .pf-workspace .pf-unsel svg{width:10px;height:10px;opacity:.7}
:root .pf-workspace .pf-pal-chip.all{background:var(--accent);border-color:var(--accent);color:#fff}
:root .pf-workspace .pf-ordh{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:11px 0 0}
:root .pf-workspace .pf-ordh .pf-split-h{margin:0}
:root .pf-workspace .pf-fill{display:inline-flex;align-items:center;gap:5px 6px;width:auto;min-width:0;height:32px;min-height:0;margin:0;padding:0 13px 0 10px;border:0;border-radius:16px;background:var(--accent);color:#fff;font:600 11px/1 var(--body);box-shadow:0 2px 8px color-mix(in srgb,var(--accent) 30%,transparent);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent}
:root .pf-workspace .pf-fill svg{width:14px;height:14px}
:root .pf-workspace .pf-fill.undo{background:color-mix(in srgb,var(--chalk) 9%,transparent);color:var(--chalk);box-shadow:none;font-weight:500}
:root .pf-workspace .pf-did{display:flex;gap:8px;align-items:flex-start;margin:2px 0 10px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--accent) 10%,transparent);font:400 11px/1.363 var(--body);color:var(--chalk);animation:pf-pref-reveal var(--dur-move,.26s) var(--settle)}
:root .pf-workspace .pf-did svg{flex:none;width:14px;height:14px;margin-top:2px;color:var(--accent-ink,var(--accent))}
@media(max-width:360px){:root .pf-workspace .pf-pal-h{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){:root .pf-workspace .pf-ses>.pf-ses-side>.pf-rot-n{transition:none}:root .pf-workspace .pf-did{animation:none}}

/* v4.6.210: the two answers to a newer plan stand apart, sharing the row */
:root .pf-workspace .pf-conflict-actions{display:flex;flex-wrap:wrap;gap:8px 10px;margin-top:13px}
:root .pf-workspace .pf-conflict-actions .pw-btn{flex:1 1 140px;min-height:44px;margin:0}
/* v4.6.211: one question, one line, two equal buttons */
:root .pf-workspace .pf-ask h3{margin:0}
:root .pf-workspace .pf-ask-note{margin:5px 0 0;font:400 11px/1.363 var(--body);color:var(--muted)}
:root .pf-workspace .pf-ask .pf-conflict-actions .pw-btn{flex:1 1 0;min-width:0}
/* v4.6.255: Your order -- one card, read from your log; the editor lives in a sheet behind Change */
:root .pf-workspace .pf-ohead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
:root .pf-workspace .pf-ohead h3{margin:0}
:root .pf-workspace .pf-ochange{flex:none;min-height:36px;padding:9px 14px;border:0;border-radius:999px;background:color-mix(in srgb,var(--accent) 9%,transparent);color:var(--accent-ink,var(--accent));font:500 11px/1 var(--body);cursor:pointer}
:root .pf-workspace .pf-oseq{display:flex;flex-wrap:wrap;gap:5px 6px;align-items:center}
:root .pf-workspace .pf-os{display:inline-flex;align-items:center;gap:6px;padding:6px 10px 6px 6px;border-radius:12px;background:color-mix(in srgb,var(--chalk) 5%,transparent);font:500 12px/1.2 var(--body);color:var(--chalk)}
:root .pf-workspace .pf-os i{display:grid;place-items:center;width:20px;height:20px;border-radius:7px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font:600 10px/1 var(--mono);font-size:10px;font-style:normal}
:root .pf-workspace .pf-os.nx{box-shadow:inset 0 0 0 1.5px var(--accent)}
:root .pf-workspace .pf-os.nx i{background:var(--accent);border-color:var(--accent);color:#fff}
:root .pf-workspace .pf-oarr{color:var(--muted);font:400 11px/1 var(--mono)}
:root .pf-workspace .pf-olead{margin:10px 0 0;font:400 11px/1.41 var(--body);color:var(--muted)}
:root .pf-workspace .pf-olead b{font-weight:500;color:var(--chalk)}
:root .pf-workspace .pf-orounds{display:flex;gap:4px;margin-top:6px}
:root .pf-workspace .pf-orounds i{width:14px;height:14px;border-radius:4px;background:var(--accent)}
:root .pf-workspace .pf-oalert{display:flex;gap:8px;align-items:flex-start;margin:10px 0 0;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--accent) 8%,transparent);font:400 11px/1.363 var(--body);color:var(--chalk)}
:root .pf-workspace .pf-oalert b{font-weight:500}
:root .pf-workspace .pf-oalert svg{flex:none;width:16px;height:16px;margin-top:2px;color:var(--accent-ink,var(--accent))}
:root .pf-workspace .pf-olearn{margin:0 0 3px;font:500 13px/1.269 var(--body);color:var(--chalk)}
:root .pf-workspace .pf-osub{margin:0;font:400 11px/1.41 var(--body);color:var(--muted)}
:root .pf-workspace .pf-ocount{margin:10px 0 0;font:400 11px/1.222 var(--mono);color:var(--muted)}
:root .pf-workspace .pf-ocount b{font-weight:600;color:var(--chalk)}
:root .pf-workspace .pf-ostarter{margin-top:11px;padding-top:12px;border-top:1px solid var(--line)}
:root .pf-workspace .pf-otag{display:inline-block;margin:0 0 6px;padding:5px 7px;border:1px solid var(--line);border-radius:6px;font:600 9px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
:root .pf-workspace .pf-ostarter .pf-os{opacity:.78}
.pf-order-host{--pf-pal-top:0px}
.pf-order-host .pf-pick-scrim{animation:pf-pick-fade var(--dur-move,.26s) ease both}
.pf-order-host .pw-add-sheet.pf-order-sheet{display:flex;flex-direction:column;max-height:86vh;height:86vh;overflow:hidden;padding:10px 0 0;animation:pf-pick-in var(--dur-arrive,.42s) var(--settle) both}
.pf-order-host.out .pf-pick-scrim{animation:pf-pick-fade .2s ease reverse both}
.pf-order-host.out .pw-add-sheet.pf-order-sheet{animation:pf-pick-in .2s ease reverse both}
.pf-order-host .pf-pick-top{flex:none;padding:0 20px}
.pf-order-host .pf-pick-grab{width:38px;height:5px;margin:0 auto 10px;border-radius:3px;background:color-mix(in srgb,var(--chalk) 16%,transparent)}
.pf-order-host .pf-osheet-head h3{font:600 17px/1.2 var(--body)}
.pf-order-host .pf-odone{min-height:40px;padding:8px 2px;border:0;background:none;color:var(--accent-ink,var(--accent));font:600 12px/1 var(--body);cursor:pointer}
.pf-order-host .pf-oseg{margin:0 0 10px}
.pf-order-host .pf-order-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:2px 20px calc(24px + env(safe-area-inset-bottom,0px))}
.pf-order-host .pf-order-in{padding:0}
.pf-order-host .pf-olist{display:flex;flex-direction:column;gap:6px 8px}
.pf-order-host .pf-orow{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line);border-radius:14px;font:500 12px/1.222 var(--body);color:var(--chalk)}
.pf-order-host .pf-orow i{flex:none;display:grid;place-items:center;width:26px;height:26px;border:1px solid var(--line);border-radius:50%;color:var(--muted);font:600 11px/1 var(--mono);font-size:11px;font-style:normal}
.pf-order-host .pf-orow small{margin-left:auto;padding:5px 7px;border-radius:6px;background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-ink,var(--accent));font:600 9px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
.pf-order-host .pf-onote{margin:10px 2px 0;font:400 11px/1.41 var(--body);color:var(--muted)}
.pf-order-host .pf-otag{margin-top:11px}
.pf-order-host .pf-from{display:flex;flex-wrap:wrap;gap:5px 6px;align-items:center;margin:0 0 3px;font:400 11px/1 var(--body);color:var(--muted)}
.pf-order-host .pf-from-b{min-height:34px;padding:7px 11px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--chalk);font:500 11px/1 var(--body);cursor:pointer}
.pf-order-host .pf-from-b.on{border-color:var(--accent);color:var(--accent-ink,var(--accent))}
.pf-order-host .pf-split .pf-pal{margin-left:-20px;margin-right:-20px;padding-left:20px;padding-right:20px}
@media(prefers-reduced-motion:reduce){.pf-order-host .pf-pick-scrim,.pf-order-host .pw-add-sheet.pf-order-sheet{animation:none}}
/* v4.6.256: a day chip is a ticket -- day and date, a perforation, the stub that names what it trains; the stub tears off to move the day's routine */
.pf-strip{position:relative}
.pf-strip .pw-btn.pf-chip{padding-bottom:0;overflow:visible;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}
.pf-strip .pf-chip s{align-self:stretch;margin:1px 5px 0;padding-bottom:5px;border-bottom:1.5px dashed color-mix(in srgb,var(--chalk) 20%,transparent)}
.pf-strip .pf-chip.selected s{border-bottom-color:color-mix(in srgb,var(--accent) 45%,transparent)}
.pf-strip .pf-chip u{align-self:stretch;margin:0;padding:6px 2px 8px;text-align:center;touch-action:pan-x;transition:transform var(--dur-move,.26s) var(--settle)}
.pf-strip.tearing .pf-chip:not(.pf-tear-src) u{animation:pf-jiggle .27s ease-in-out infinite}
.pf-strip.tearing .pf-chip:nth-child(2n) u{animation-delay:-.13s;animation-duration:.31s}
.pf-strip.tearing .pf-chip.pf-tear-src u{visibility:hidden}
@keyframes pf-jiggle{0%{rotate:-2.4deg}50%{rotate:2.4deg}100%{rotate:-2.4deg}}
.pf-tear-hint{position:absolute;left:50%;top:-38px;z-index:5;transform:translateX(-50%);margin:0;padding:7px 13px;border-radius:999px;background:var(--surface);box-shadow:0 4px 14px rgba(0,0,0,.14);white-space:nowrap;font:500 11px/17px var(--body);color:var(--accent-ink,var(--accent));pointer-events:none}
.pf-stub-fly{position:fixed;z-index:70;display:grid;place-items:center;min-height:34px;padding:6px 4px 8px;box-sizing:border-box;border:1px solid var(--accent);border-top:2px dashed color-mix(in srgb,var(--accent) 55%,transparent);border-radius:4px 4px 14px 14px;background:var(--surface);color:var(--accent-ink,var(--accent));font:600 10px/1.2 var(--body);white-space:nowrap;box-shadow:0 14px 28px rgba(0,0,0,.22);transform:rotate(-4deg) scale(1.08);pointer-events:none}
/* the day's routine sits inside a blue outline: the day you are editing */
/* the outline reaches out into the page gutter by as much as it pads in, so everything inside keeps the width it had */
:root .pf-workspace .pf-day-body{margin:0 -9px;border:1.5px solid var(--accent);border-radius:22px;padding:13px 7.5px 4px;background:color-mix(in srgb,var(--accent) 4%,var(--ground))}
@media(prefers-reduced-motion:reduce){.pf-strip.tearing .pf-chip u{animation:none}.pf-strip .pf-chip u{transition:none}}
@media(max-width:360px){:root .pf-workspace .pf-day-body .pf-routine-controls{flex-wrap:wrap;row-gap:8px}}
/* v4.6.257: the ticket's notches -- a half-circle cut into each side of the chip at the perforation, so the stub reads as something that tears off */
.pf-strip .pf-chip s{position:relative}
.pf-strip .pf-chip s:before,.pf-strip .pf-chip s:after{content:'';position:absolute;bottom:-7px;width:12px;height:12px;box-sizing:border-box;border-radius:50%;background:var(--ground);border:1px solid var(--line);pointer-events:none}
.pf-strip .pf-chip s:before{left:-14px;clip-path:inset(0 0 0 50%)}
.pf-strip .pf-chip s:after{right:-14px;clip-path:inset(0 50% 0 0)}
.pf-strip .pf-chip.selected s:before,.pf-strip .pf-chip.selected s:after{border-color:var(--accent)}
/* v4.6.258: while a plan is written, the day keeps its place: chips held still, the writing panel inside the day's outline */
:root .pf-workspace .pf-day-body.pf-writing{min-height:360px;display:flex;flex-direction:column;justify-content:center;padding-top:18px;padding-bottom:18px}
.pf-strip .pw-btn.pf-chip:disabled{opacity:1;cursor:default}
:root .pf-workspace .pf-writing .writing{min-height:0;gap:20px;padding:8px 0}
@media(max-height:700px){:root .pf-workspace .pf-day-body.pf-writing{min-height:300px}:root .pf-workspace .pf-writing .writing{gap:14px;padding:0}:root .pf-workspace .pf-writing .wgrid{grid-template-columns:repeat(7,12px);gap:3px 4px}:root .pf-workspace .pf-writing .wsq{width:12px;height:12px}}
/* v4.6.357: Stop, beside the busy button */
.pf-date-actions .pf-stop,.pf-dates-page .pf-date-actions .pf-stop{flex:0 0 auto;padding:10px 18px;gap:6px}

/* v4.6.369: the cardio goal editor. It opens in place of the cardio row, in
   the plan's own card language: activity chips, a goal segment, steppers, and
   picks from what you have done. */
:root .pf-workspace .pf-cardio-line .pf-cg-pace{color:var(--faint)}
:root .pf-workspace .pw-exercise.pf-cg{display:flex;flex-direction:column;align-items:stretch;gap:14px}
.pf-cg-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pf-cg-head strong{font:600 15px var(--body);color:var(--chalk)}
.pf-cg-x{width:36px;height:36px;padding:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}
.pf-cg-acts{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -2px;padding:0 2px}
.pf-cg-acts::-webkit-scrollbar{display:none}
.pf-cg-act{flex:0 0 auto;min-height:36px;padding:0 14px;border:0;border-radius:999px;background:color-mix(in srgb,var(--chalk) 6%,transparent);color:var(--muted);font:500 12px var(--body);cursor:pointer}
.pf-cg-act.on{background:var(--accent);color:#fff}
.pf-cg-modes{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:4px;border-radius:14px;background:color-mix(in srgb,var(--chalk) 5%,transparent)}
.pf-cg-mode{min-height:38px;border:0;border-radius:10px;background:none;color:var(--muted);font:500 12px var(--body);cursor:pointer}
.pf-cg-mode.on{background:var(--surface);color:var(--chalk);font-weight:600;box-shadow:0 1px 3px #0000001a}
.pf-cg-nums{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}
.pf-cg-num{display:flex;flex-direction:column;gap:6px}
.pf-cg-lab{font:400 10px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
.pf-cg-stepper{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:4px;border:1px solid var(--line);border-radius:14px}
.pf-cg-stepper b{font:600 22px var(--body);font-size:22px;font-variant-numeric:tabular-nums;color:var(--chalk);white-space:nowrap}
.pf-cg-stepper b small{font:400 11px var(--mono);color:var(--muted);margin-left:4px}
.pf-cg-pm{width:40px;height:40px;padding:0;border-radius:10px;font:500 20px/1 var(--body);display:inline-flex;align-items:center;justify-content:center}
.pf-cg-pacel{margin:-4px 0 0;font:400 11px var(--mono);color:var(--muted)}
.pf-cg-feel{margin:0;font:400 12px/1.5 var(--body);color:var(--muted)}
.pf-cg-picks{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.pf-cg-pick{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-height:52px;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:var(--surface2);cursor:pointer;text-align:left}
.pf-cg-pick span{font:400 10px var(--mono);color:var(--faint);text-transform:uppercase;letter-spacing:.05em}
.pf-cg-pick b{font:500 12px var(--body);color:var(--chalk)}
.pf-cg-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-top:12px}
.pf-cg-text{background:none;border:0;color:var(--muted);font:500 12px var(--body);padding:0 4px;min-height:40px}
.pf-cg-done{min-height:40px;padding:0 22px;border-radius:12px;border:0;background:var(--accent);color:#fff;font:600 13px var(--body)}
.pf-cg-pick small{font:400 11px var(--mono);color:var(--muted)}
:root .pf-workspace .pw-exercise.pf-cardio:not(.pf-cg) .pf-ex-summary{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
:root .pf-workspace .pw-exercise.pf-cardio:not(.pf-cg) .pf-ex-summary>div{display:flex;align-items:center;gap:8px}
:root .pf-workspace .pw-exercise.pf-cardio:not(.pf-cg) .pf-cardio-line{margin:0;font-size:13px;color:var(--chalk)}
/* v4.6.383: a real change, shown as what changed */
:root .pf-workspace .pf-conflict h3{margin:0 0 4px}
.pw-cf{display:flex;flex-direction:column;margin:12px 0 2px}
.pw-cf-row{padding:12px 0;border-top:1px solid var(--line)}
.pw-cf-row:first-child{border-top:0;padding-top:4px}
.pw-cf-name{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 0 6px}
.pw-cf-name b{font:600 15px/1.25 var(--body);font-size:15px;color:var(--chalk)}
.pw-cf-tag{flex:none;font:600 10px var(--mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.pw-cf-tag.mine{color:var(--accent-ink)}
.pw-cf-line{display:grid;grid-template-columns:52px minmax(0,1fr);gap:8px;align-items:baseline;padding:2px 0}
.pw-cf-line span{font:500 11px var(--body);font-size:11px;color:var(--muted)}
.pw-cf-line em{font:400 13px/1.4 var(--mono);font-size:13px;font-style:normal;color:var(--muted)}
.pw-cf-line.mine span,.pw-cf-line.mine em{color:var(--chalk)}
.pw-cf-same,.pw-cf-none{margin:10px 0 0;padding-top:10px;border-top:1px solid var(--line);font:400 12px/1.4 var(--body);font-size:12px;color:var(--muted)}
/* v4.6.407: YOUR ORDER CAN LOSE A SESSION AND GAIN AN EXTRA DAY, as the routine screen in setup can --
   and it is held the same way (Sungjee 2026-10-24): the left column is the handle, the session's number
   with the grip under it (the whole column below the number grabs); the x sits on the right, where the
   grip was. A session with parts asks first, in the row (Cancel / Remove, setup's words and red).
   The Extra day sits under the numbered sessions with its own tag. */
:root .pf-workspace .pf-ses{grid-template-columns:34px 1fr auto;align-items:stretch;padding-left:6px}
:root .pf-workspace .pf-ses-side{display:flex;flex-direction:column;align-items:center;gap:2px;margin:-2px 0}
:root .pf-workspace .pf-ses-side .pf-rot-grip{flex:1;width:34px;height:auto;min-height:30px;display:flex;align-items:flex-start;justify-content:center;padding:4px 0 0}
:root .pf-workspace .pf-ses-side .pf-rot-grip svg{width:18px;height:18px;opacity:.6}
:root .pf-workspace .pf-ses-acts{display:flex;align-items:flex-start;margin:-6px -2px -6px 0}
:root .pf-workspace .pf-ses-del{display:grid;place-items:center;width:40px;min-width:0;height:42px;min-height:0;margin:0;padding:0;border:0;border-radius:50%;box-shadow:none;background:none;color:var(--muted);cursor:pointer;-webkit-tap-highlight-color:transparent}
:root .pf-workspace .pf-ses-del svg{width:12px;height:12px;opacity:.75}
:root .pf-workspace .pf-ses-del:active{background:color-mix(in srgb,var(--chalk) 8%,transparent)}
:root .pf-workspace .pf-ses-ask{align-items:center;background:color-mix(in srgb,var(--chalk) 4%,var(--surface))}
:root .pf-workspace .pf-ses-ask .pf-ses-side{justify-content:center}
:root .pf-workspace .pf-ask-q{font:500 13px/18px var(--body);color:var(--chalk)}
:root .pf-workspace .pf-ask-acts{display:flex;gap:6px}
:root .pf-workspace .pf-ask-acts button{width:auto;min-width:0;min-height:0;height:32px;margin:0;padding:0 12px;border:0;border-radius:16px;box-shadow:none;font:600 13px var(--body);color:var(--chalk);background:color-mix(in srgb,var(--chalk) 8%,transparent);cursor:pointer}
:root .pf-workspace .pf-ask-acts .pf-ask-go{background:#D64545;color:#fff}
:root .pf-workspace .pf-xses{grid-template-columns:auto 1fr auto;margin-top:14px;border-style:dashed}
:root .pf-workspace .pf-xses.pf-drop{border-style:solid}
:root .pf-workspace .pf-xtag{display:flex;align-items:center;height:24px;margin-top:5px;padding:0 9px;border-radius:12px;background:color-mix(in srgb,var(--chalk) 7%,transparent);font:600 10px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
:root .pf-workspace .pf-xnote{grid-column:2/-1;margin:-2px 0 0;font:400 11px/16px var(--body);color:var(--muted)}
:root .pf-workspace .pf-rot-adds{display:flex;flex-wrap:wrap;gap:0 22px}
:root .pf-workspace .pf-ses>.pf-ses-in,:root .pf-workspace .pf-ses>.pf-ses-acts{align-self:start}
:root .pf-workspace .pf-ses-side .pf-rot-grip{min-height:26px;padding-top:3px}
:root .pf-workspace .pf-ses-ask>.pf-ses-in,:root .pf-workspace .pf-ses-ask>.pf-ask-acts{align-self:center}
/* v4.6.408: BODY PARTS FIRST, ON THE BODY; IN EVERY SESSION; YOUR ORDER READ DOWN THE CARD */
:root .pf-workspace .pf-bp-figs{display:flex;justify-content:center;gap:22px;margin:4px 0 16px}
:root .pf-workspace .pf-bp-fig{width:auto;height:176px}
:root .pf-workspace .pf-bp-fig path{transition:fill var(--dur-move,.26s) ease}
:root .pf-workspace .pf-every{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
:root .pf-workspace .pf-every-h{display:block;margin-bottom:10px}
:root .pf-workspace .pf-every-h b{display:block;font:600 13px/19px var(--body);color:var(--chalk)}
:root .pf-workspace .pf-every-h small{display:block;font:400 11px/16px var(--body);color:var(--muted)}
:root .pf-workspace .pf-every-chips{display:flex;flex-wrap:wrap;gap:6px}
:root .pf-workspace .pf-evchip{display:inline-flex;align-items:center;gap:5px;width:auto;min-width:0;height:32px;min-height:0;margin:0;padding:0 12px;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chalk) 16%,transparent);background:none;font:500 13px var(--body);color:var(--muted);cursor:pointer;transition:background-color var(--dur-quick,.16s) ease,color var(--dur-quick,.16s) ease}
:root .pf-workspace .pf-evchip.on{background:color-mix(in srgb,var(--accent) 14%,transparent);box-shadow:inset 0 0 0 1.5px var(--accent);color:var(--accent-ink,var(--accent));padding-left:9px}
:root .pf-workspace .pf-evchip .ic{width:12px;height:12px}
:root .pf-workspace .pf-oevery{display:flex;align-items:baseline;gap:10px;margin:2px 0 4px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--chalk) 5%,transparent)}
:root .pf-workspace .pf-oevery span{font:500 10px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
:root .pf-workspace .pf-oevery b{font:600 13px/18px var(--body);color:var(--chalk)}
:root .pf-workspace .pf-oevery small{margin-left:auto;font:400 11px var(--body);color:var(--muted);white-space:nowrap}
:root .pf-workspace .pf-oevery-sheet{margin:10px 0 2px;flex-wrap:wrap}
:root .pf-workspace .pf-olines{list-style:none;margin:4px 0 0;padding:0}
:root .pf-workspace .pf-olines li{display:flex;align-items:center;gap:12px;min-height:46px;padding:6px 0;border-top:1px solid var(--line)}
:root .pf-workspace .pf-olines li:first-child{border-top:0}
:root .pf-workspace .pf-olines i{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:color-mix(in srgb,var(--chalk) 7%,transparent);font:600 12px var(--mono);font-size:12px;font-style:normal;color:var(--muted)}
:root .pf-workspace .pf-olines b{flex:1;min-width:0;font:600 15px/20px var(--body);color:var(--chalk)}
:root .pf-workspace .pf-olines small{flex:none;padding:4px 7px;border-radius:7px;background:color-mix(in srgb,var(--accent) 14%,transparent);font:600 9px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-ink,var(--accent))}
:root .pf-workspace .pf-olines li.nx i{background:var(--accent);color:#fff}
:root .pf-workspace .pf-olines li.pf-ox i{width:auto;padding:0 8px;border-radius:14px;font:600 9px var(--mono);letter-spacing:.08em;text-transform:uppercase}
:root .pf-workspace .pf-olines li.pf-ox b{font-weight:500;color:var(--muted)}
:root .pf-workspace .pf-olines li.pf-ox small{background:none;padding:0;color:var(--muted);font:400 11px var(--body);letter-spacing:0;text-transform:none}
/* v4.6.409: WHAT YOU TRAIN BREATHES. The lit parts on the body pulse gently (the heart with them); a chip
   you tap presses in and springs back, and one switched on sends a ring out (Sungjee 2026-10-24). */
@keyframes pfBpPulse{0%,100%{opacity:1}50%{opacity:.58}}
@keyframes pfChipPop{0%{transform:scale(1)}30%{transform:scale(.9)}68%{transform:scale(1.07)}100%{transform:scale(1)}}
@keyframes pfChipRing{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 45%,transparent)}100%{box-shadow:0 0 0 12px color-mix(in srgb,var(--accent) 0%,transparent)}}
:root .pf-workspace .pf-bp-fig path[style*="--accent"]{animation:pfBpPulse 2.6s ease-in-out infinite}
:root .pf-workspace .pf-bp-fig path[style*="D64545"]{animation:pfBpPulse 1.3s ease-in-out infinite}
:root .pf-workspace .pf-mypart,:root .pf-workspace .pf-evchip{position:relative;transition:background-color var(--dur-move,.26s) ease,color var(--dur-move,.26s) ease,box-shadow var(--dur-move,.26s) ease,transform .12s ease}
:root .pf-workspace .pf-mypart:active,:root .pf-workspace .pf-evchip:active{transform:scale(.94)}
:root .pf-workspace .pf-mypart.pop,:root .pf-workspace .pf-evchip.pop{animation:pfChipPop .44s cubic-bezier(.3,.7,.4,1.3)}
:root .pf-workspace .pf-mypart.pop.on::after,:root .pf-workspace .pf-evchip.pop.on::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;animation:pfChipRing .6s ease-out forwards}
@media(prefers-reduced-motion:reduce){:root .pf-workspace .pf-bp-fig path,:root .pf-workspace .pf-mypart.pop,:root .pf-workspace .pf-evchip.pop,:root .pf-workspace .pf-mypart.pop.on::after,:root .pf-workspace .pf-evchip.pop.on::after{animation:none}}
/* v4.6.409: the session's number and its grip share one centre line */
:root .pf-workspace .pf-ses>.pf-ses-side>.pf-rot-n{margin:1px 0 0}
:root .pf-workspace .pf-ses-side .pf-rot-grip{width:34px;padding-left:0;padding-right:0}
:root .pf-workspace .pf-oevery-sheet small{flex-basis:100%;margin:2px 0 0}
/* ================= v4.6.427: ONE SETUP (js/planner-flow.js sfOpen) ================= */
html.sf-open{overflow:hidden}
#sfRoot{position:fixed;inset:0;z-index:95;background:var(--ground);color:var(--chalk);font-family:var(--body);display:flex;flex-direction:column}
#sfRoot .sf-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 20px 24px;overscroll-behavior:contain}
#sfRoot .sf-top{display:flex;align-items:center;gap:16px;padding:calc(env(safe-area-inset-top,0px) + 18px) 20px 10px;background:var(--ground);flex:none;position:relative;z-index:5}
#sfRoot .sf-back{all:unset;cursor:pointer;width:32px;height:32px;display:grid;place-items:center;margin-left:-6px;color:var(--chalk)}
#sfRoot .sf-back .ic{width:20px;height:20px}
#sfRoot .sf-prog{flex:1;display:flex;gap:6px}#sfRoot .sf-prog i{flex:1;height:3px;border-radius:2px;background:color-mix(in srgb,var(--chalk) 14%,transparent)}#sfRoot .sf-prog i.on{background:var(--chalk)}
#sfRoot .sf-n{font:400 12px var(--mono);font-size:12px;color:var(--muted);letter-spacing:.04em}
#sfRoot .sf-h{font:700 24px/1.15 var(--body);font-size:24px;letter-spacing:-.5px;margin:18px 0 6px}
#sfRoot .sf-sub{font:400 13px/1.45 var(--body);font-size:13px;color:var(--muted);margin:0 0 18px}
#sfRoot .sf-card{background:var(--surface);border-radius:18px;padding:16px}
#sfRoot .sf-lab{font:500 11px var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:22px 2px 8px;display:flex;align-items:center;gap:10px}
#sfRoot .sf-sg{width:13px;height:13px;flex:none;color:var(--accent);margin-right:-3px}
#sfRoot .sf-lab::after{content:"";flex:1;height:1px;background:var(--line)}
#sfRoot .sf-lab.first{margin-top:4px}
#sfRoot .sf-how{margin:-2px 2px 10px;font:400 12px/1.5 var(--body);font-size:12px;color:var(--muted)}#sfRoot .sf-how b{font-weight:600;color:var(--chalk)}
#sfRoot .sf-glh{display:inline-flex;vertical-align:middle;position:relative;top:-1px;color:var(--chalk)}#sfRoot .sf-glh .ic{width:14px;height:14px}
#sfRoot .sf-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
#sfRoot .sf-foot{padding:12px 20px calc(env(safe-area-inset-bottom,0px) + 16px);background:linear-gradient(transparent,var(--ground) 30%)}
#sfRoot .sf-cta{all:unset;box-sizing:border-box;display:grid;place-items:center;width:100%;height:56px;border-radius:16px;background:var(--accent);color:#fff;font:600 15px var(--body);font-size:15px;cursor:pointer;text-align:center}
#sfRoot .sf-cta:disabled{background:color-mix(in srgb,var(--chalk) 12%,var(--surface));color:var(--faint);cursor:default;opacity:1;transition:background-color .25s ease,color .25s ease}
#sfRoot .sf-cta{transition:background-color .25s ease,color .25s ease}
#sfRoot .sf-warn{margin:0 2px;height:0;overflow:hidden;opacity:0;font:500 13px var(--body);font-size:13px;color:#D64545;text-align:center;transition:height .25s ease,opacity .25s ease,margin .25s ease}
#sfRoot .sf-warn.on{height:18px;opacity:1;margin:0 2px 10px}
#sfRoot .sf-foot.two{display:grid;grid-template-columns:1fr 2fr;gap:8px}
#sfRoot .sf-cta .ic,#sfRoot .sf-prev .ic{width:14px;height:14px}#sfRoot .sf-cta{display:flex;justify-content:center;align-items:center;gap:6px}
#sfRoot .sf-prev{all:unset;box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:4px;height:56px;border-radius:16px;background:var(--surface);color:var(--chalk);box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--chalk) 12%,transparent);font:600 15px var(--body);font-size:15px;cursor:pointer}
#sfRoot .sf-prev:active,#sfRoot .sf-cta:active{transform:scale(.98)}
#sfRoot.sf-plan .sf-prev{height:44px;border-radius:14px;font:600 13px var(--body);font-size:13px}
#sfRoot.sf-plan .sf-cta{height:44px;border-radius:14px;font:600 13px var(--body);font-size:13px}   /* Plan's own Save; first run keeps the onboarding button */
/* step 1 */
#sfRoot .sf-figs{display:flex;justify-content:center;gap:22px;margin:2px 0 12px}
#sfRoot .sf-fig{height:196px;width:auto;shape-rendering:geometricPrecision}
#sfRoot .sf-fig .mw-sil{transition:fill .5s ease}
#sfRoot .sf-figs.cardio .mw-sil{fill:color-mix(in srgb,var(--accent) 16%,var(--surface))}
/* v4.6.430: muscles fill in with a springy pop, one region after another, and drain out softly */
#sfRoot .sf-lit{fill:var(--accent);opacity:0;transform:scale(.72);transform-box:fill-box;transform-origin:50% 60%;transition:opacity .22s ease,transform .26s ease-in;transition-delay:0s}
#sfRoot .sf-lit.on{opacity:1;transform:scale(1);transition:opacity .28s ease var(--d,0s),transform .52s cubic-bezier(.34,1.7,.5,1) var(--d,0s);animation:sfPulse 2.6s ease-in-out .9s infinite}
@keyframes sfPulse{0%,100%{fill-opacity:1}50%{fill-opacity:.62}}
#sfRoot .sf-key>span{white-space:nowrap;transition:opacity .3s ease}#sfRoot .sf-k2{max-width:220px;overflow:hidden;transition:opacity .3s ease,max-width .35s ease,margin .35s ease}#sfRoot .sf-k2:not(.on){opacity:0;max-width:0;margin-left:-16px}
#sfRoot .sf-key{display:flex;justify-content:center;gap:16px;margin:0 0 14px;font:400 11px var(--body);font-size:11px;color:var(--muted)}
#sfRoot .sf-key span{display:inline-flex;align-items:center;gap:6px}#sfRoot .sf-key i{width:10px;height:10px;border-radius:3px}
#sfRoot .sf-key .k1{background:var(--accent)}#sfRoot .sf-key .k2{background:color-mix(in srgb,var(--accent) 22%,var(--surface))}
#sfRoot .sf-pick{all:unset;box-sizing:border-box;cursor:pointer;height:32px;padding:0 13px;border-radius:16px;display:inline-flex;align-items:center;font:500 13px var(--body);font-size:13px;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--chalk) 16%,transparent);color:var(--muted);transition:color .22s ease,box-shadow .3s ease,transform .12s ease;position:relative;overflow:hidden;isolation:isolate;touch-action:none;-webkit-user-select:none;user-select:none}
/* the fill is a circle that grows from where you touched, and shrinks back to it */
#sfRoot .sf-pick::before{content:"";position:absolute;left:var(--x,50%);top:var(--y,50%);width:240px;height:240px;margin:-120px 0 0 -120px;border-radius:50%;background:var(--accent);transform:scale(0);transition:transform .3s cubic-bezier(.5,0,.75,0);z-index:-1;pointer-events:none}
#sfRoot .sf-pick.on::before{transform:scale(1);transition:transform .42s cubic-bezier(.2,.8,.3,1)}
#sfRoot .sf-pick>span{position:relative;pointer-events:none}
#sfRoot .sf-pick.on{color:#fff;box-shadow:inset 0 0 0 1.5px transparent}
#sfRoot .sf-chips{touch-action:none}
#sfRoot .sf-pick:active{transform:scale(.94)}
@keyframes sfPop{0%{transform:scale(1)}30%{transform:scale(.9)}68%{transform:scale(1.07)}100%{transform:scale(1)}}
@keyframes sfPopOff{0%{transform:scale(1)}35%{transform:scale(.92)}100%{transform:scale(1)}}
@keyframes sfRing{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 45%,transparent)}100%{box-shadow:0 0 0 9px color-mix(in srgb,var(--accent) 0%,transparent)}}
#sfRoot .sf-pick.pop.on{animation:sfPop .44s cubic-bezier(.3,.7,.4,1.3)}#sfRoot .sf-pick.pop:not(.on){animation:sfPopOff .3s ease}
/* step 2 */
#sfRoot .sf-wk{padding:16px 16px 16px}
#sfRoot .sf-wk-n{display:flex;align-items:baseline;gap:8px;margin:0 0 14px}#sfRoot .sf-wk-n b{font:700 36px/1 var(--body);font-size:36px;letter-spacing:-.03em}#sfRoot .sf-wk-n span{font:500 14px var(--body);font-size:14px;color:var(--muted)}
#sfRoot .sf-wk-row{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;touch-action:none;cursor:pointer;outline:none}
#sfRoot .sf-wk-row i{height:34px;border-radius:9px;background:color-mix(in srgb,var(--chalk) 8%,transparent);position:relative;transition:background-color .15s ease,box-shadow .15s ease}
#sfRoot .sf-wk-row i.on{background-color:var(--accent)}
/* v4.6.432: the filled days shimmer together: one band of light crosses the whole row, each filled
   square showing its slice of it (--step and --roww are measured), then a rest */
@property --sfSweep{syntax:'<length>';inherits:true;initial-value:-160px}
#sfRoot .sf-wk-row{animation:sfSweep 3.2s cubic-bezier(.4,0,.4,1) infinite}
@keyframes sfSweep{0%{--sfSweep:-130px}55%{--sfSweep:calc(var(--roww,360px) + 20px)}100%{--sfSweep:calc(var(--roww,360px) + 20px)}}
#sfRoot .sf-wk-row i.on{background-image:linear-gradient(100deg,rgba(255,255,255,0) 22%,rgba(255,255,255,.62) 50%,rgba(255,255,255,0) 78%);background-size:120px 100%;background-repeat:no-repeat;background-position:calc(var(--sfSweep) - var(--k,0) * var(--step,52px)) 0}
@keyframes sfDayPop{0%{transform:scale(.8)}55%{transform:scale(1.08)}100%{transform:scale(1)}}
#sfRoot .sf-wk-row i.pop{animation:sfDayPop .34s cubic-bezier(.3,1.5,.5,1)}
#sfRoot .sf-wk-row i.at{box-shadow:0 0 0 2px var(--surface),0 0 0 3.5px var(--accent),0 5px 12px color-mix(in srgb,var(--accent) 30%,transparent)}
#sfRoot .sf-wk-row i em{position:absolute;left:0;right:0;bottom:-19px;text-align:center;font:500 10px var(--mono);font-size:10px;font-style:normal;color:var(--faint)}
#sfRoot .sf-wk-row:focus-visible i.at{box-shadow:0 0 0 2px var(--surface),0 0 0 4.5px var(--accent)}
#sfRoot .sf-wk-cap{margin:28px 0 0;font:400 12px/1.45 var(--body);font-size:12px;color:var(--muted)}
#sfRoot .sf-opt{all:unset;box-sizing:border-box;cursor:pointer;width:100%;display:grid;grid-template-columns:18px 1fr;gap:3px 11px;padding:13px 16px;border-radius:18px;background:var(--surface);margin-bottom:8px}
#sfRoot .sf-opt.on{box-shadow:inset 0 0 0 1.5px var(--accent)}
#sfRoot .sf-rd{width:18px;height:18px;border-radius:50%;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--chalk) 22%,transparent);margin-top:0;transition:box-shadow .2s ease}
#sfRoot .sf-opt.on .sf-rd{box-shadow:inset 0 0 0 5.5px var(--accent)}
#sfRoot .sf-opt b{font:600 14px/18px var(--body);font-size:14px;display:inline-flex;align-items:center}#sfRoot .sf-opt b .sf-gl{top:0;margin-right:7px}#sfRoot .sf-opt p{grid-column:2;margin:0;font:400 12px/1.5 var(--body);font-size:12px;color:var(--muted)}#sfRoot .sf-opt p strong{color:var(--chalk);font-weight:600}
#sfRoot .sf-tg{grid-column:2;display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}#sfRoot .sf-tg span{font:500 10px var(--mono);font-size:10px;padding:3px 7px;border-radius:7px;background:var(--surface2);color:var(--muted)}
/* step 3 */
#sfRoot .sf-gl{width:13px;height:13px;flex:none;color:var(--accent);margin-right:7px;position:relative;top:1px}
#sfRoot .sf-pc{padding:14px 16px}
#sfRoot .sf-pn{display:flex;align-items:baseline;justify-content:space-between;gap:10px}#sfRoot .sf-pn b{font:600 15px var(--body);font-size:15px;display:inline-flex;align-items:baseline}#sfRoot .sf-pn small{font:400 11px var(--mono);font-size:11px;color:var(--muted)}
#sfRoot .sf-seq{display:flex;flex-wrap:wrap;gap:5px;margin:10px 0 12px}#sfRoot .sf-seq>span{font:500 11px var(--body);font-size:11px;padding:4px 8px;border-radius:7px;background:var(--surface2);color:var(--muted)}
#sfRoot .sf-change{all:unset;box-sizing:border-box;cursor:pointer;width:100%;height:40px;border-radius:12px;background:color-mix(in srgb,var(--accent) 12%,var(--surface));color:var(--accent-ink,var(--accent));display:grid;place-items:center;font:600 13px var(--body);font-size:13px}
#sfRoot .sf-tray{position:sticky;top:0;z-index:4;background:var(--surface2);margin:16px -20px 0;padding:14px 20px 14px;box-shadow:0 6px 14px -10px rgba(0,0,0,.18);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
#sfRoot .sf-tray-h{display:flex;justify-content:space-between;align-items:baseline;margin:0 2px 8px}#sfRoot .sf-tray-h b{display:inline-flex;align-items:center;gap:10px;font:500 11px var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}#sfRoot .sf-tray-h span{font:400 11px var(--body);font-size:11px;color:var(--accent-ink,var(--accent))}
#sfRoot .sf-pc2{all:unset;box-sizing:border-box;cursor:grab;height:34px;padding:0 13px 0 9px;gap:7px;border-radius:11px;display:inline-flex;align-items:center;font:600 13px var(--body);font-size:13px;background:var(--surface);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chalk) 10%,transparent),0 1px 0 color-mix(in srgb,var(--chalk) 10%,transparent),0 3px 8px -2px rgba(0,0,0,.14);color:var(--chalk);transition:transform .14s ease,box-shadow .14s ease;touch-action:none;-webkit-user-select:none;user-select:none}
#sfRoot .sf-dots{width:6px;height:10px;fill:var(--faint);flex:none}
#sfRoot .sf-pc2:active{transform:translateY(-1px) scale(1.04);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent),0 8px 16px -4px rgba(0,0,0,.22)}
#sfRoot .sf-pc2.held .sf-dots{fill:color-mix(in srgb,#fff 70%,transparent)}
:root[data-theme="dark"] #sfRoot .sf-pc2{background:color-mix(in srgb,var(--chalk) 9%,var(--surface));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chalk) 12%,transparent),0 3px 8px -2px rgba(0,0,0,.5)}
#sfRoot .sf-pc2.held{background:var(--accent);color:#fff;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
#sfRoot .sf-pc2.lift,#sfRoot .sf-c.lift{opacity:.4}
#sfRoot .sf-ev{background:var(--surface);border-radius:18px;padding:4px 12px 4px 12px;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--accent) 35%,transparent)}
#sfRoot .sf-slot{display:grid;grid-template-columns:44px 1fr;column-gap:10px;align-items:center;min-height:46px;padding:7px 0}
#sfRoot .sf-slot+.sf-slot{border-top:1px solid var(--line)}
#sfRoot .sf-sl{display:flex;justify-content:center}#sfRoot .sf-sl b{font:600 11px var(--mono);font-size:11px;color:var(--accent-ink,var(--accent))}
#sfRoot .sf-empty{font:400 12px var(--body);font-size:12px;color:var(--faint);border:1.5px dashed color-mix(in srgb,var(--chalk) 18%,transparent);border-radius:14px;height:28px;display:flex;align-items:center;padding:0 12px}
#sfRoot .sf-c{height:28px;padding:0 3px 0 11px;border-radius:14px;display:inline-flex;align-items:center;gap:1px;font:500 12px var(--body);font-size:12px;background:color-mix(in srgb,var(--accent) 12%,var(--surface));color:var(--accent-ink,var(--accent));cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#sfRoot .sf-c.cardio{background:color-mix(in srgb,var(--chalk) 8%,transparent);color:var(--chalk)}
#sfRoot .sf-c.hit{background:var(--accent);color:#fff}
#sfRoot .sf-cx{all:unset;cursor:pointer;width:22px;height:26px;display:grid;place-items:center;color:inherit;opacity:.6}#sfRoot .sf-cx .ic{width:10px;height:10px}
#sfRoot .sf-ghost{height:28px;padding:0 10px;border-radius:14px;display:inline-flex;align-items:center;border:1.5px dashed var(--accent);color:var(--accent-ink,var(--accent));font:500 12px var(--body);font-size:12px}
#sfRoot .sf-end{height:28px;padding:0 9px;border-radius:14px;display:inline-flex;align-items:center;font:500 11px var(--body);font-size:11px;color:var(--faint);border:1.5px dashed color-mix(in srgb,var(--chalk) 18%,transparent)}
#sfRoot .sf-row{display:grid;grid-template-columns:44px 1fr 28px;column-gap:10px;background:var(--surface);border-radius:18px;padding:12px 10px 12px 12px;margin-bottom:8px;position:relative;transition:box-shadow .15s ease,background-color .15s ease}
#sfRoot .sf-side{display:grid;grid-template-rows:20px 28px;row-gap:6px;justify-items:center;align-items:center}
#sfRoot .sf-side b{font:500 11px var(--mono);font-size:11px;color:var(--muted);white-space:nowrap}
#sfRoot .sf-grip{all:unset;cursor:grab;width:40px;height:28px;display:grid;place-items:center;color:var(--faint);touch-action:none}#sfRoot .sf-grip .ic{width:16px;height:16px}
#sfRoot .sf-main{display:grid;grid-template-rows:20px auto;row-gap:6px;min-width:0}
#sfRoot .sf-t{font:600 14px/20px var(--body);font-size:14px;display:flex;align-items:center;gap:6px;min-width:0}
#sfRoot .sf-tag{font:600 9px var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;padding:3px 6px;border-radius:7px;background:color-mix(in srgb,var(--accent) 12%,var(--surface));color:var(--accent-ink,var(--accent))}
#sfRoot .sf-x{all:unset;cursor:pointer;width:28px;height:20px;display:grid;place-items:center;color:var(--faint)}#sfRoot .sf-x .ic{width:12px;height:12px}
#sfRoot .sf-row.can,#sfRoot .sf-slot.can{cursor:pointer}
#sfRoot .sf-row.sf-drop,#sfRoot .sf-slot.sf-drop{box-shadow:inset 0 0 0 2px var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--surface))}
#sfRoot .sf-slot.sf-drop{border-radius:14px}
/* v4.6.433: reordering a day -- the card lifts whole, the others glide apart, a dashed slot marks the landing */
#sfRoot .sf-days>.sf-row.sf-shift,#sfRoot .sf-days>.sf-row.sf-hold{transition:transform .26s cubic-bezier(.2,.85,.25,1)}
#sfRoot .sf-row.sf-hold{background:color-mix(in srgb,var(--accent) 5%,transparent);box-shadow:none}
#sfRoot .sf-row.sf-hold>*{visibility:hidden}
#sfRoot .sf-row.sf-hold::after{content:"";position:absolute;inset:0;border-radius:inherit;border:1.5px dashed color-mix(in srgb,var(--accent) 55%,transparent)}
#sfRoot .sf-flyrow{position:fixed;z-index:200;margin:0;pointer-events:none;transform-origin:30% 50%;transition:transform .2s cubic-bezier(.3,1.5,.5,1),box-shadow .2s ease;box-shadow:0 1px 3px rgba(0,0,0,.08)}
#sfRoot .sf-flyrow.up{transform:scale(1.04) rotate(var(--rot,0deg));box-shadow:0 22px 44px -12px rgba(0,0,0,.38),0 0 0 2px var(--accent)}
#sfRoot .sf-flyrow.up .sf-grip{color:var(--accent)}
#sfRoot .sf-flyrow.drop{transition:top .23s cubic-bezier(.2,.85,.25,1),transform .23s cubic-bezier(.2,.85,.25,1),box-shadow .23s ease;transform:none;box-shadow:0 1px 3px rgba(0,0,0,.08)}
@keyframes sfSettle{0%{transform:scale(1.025)}45%{transform:scale(.985)}100%{transform:scale(1)}}
#sfRoot .sf-row.sf-settle{animation:sfSettle .38s cubic-bezier(.3,1.4,.5,1)}
#sfRoot .sf-extra{background:none;border:1.5px dashed color-mix(in srgb,var(--chalk) 20%,transparent)}
#sfRoot .sf-extra .sf-side{grid-template-rows:20px}
#sfRoot .sf-note{margin:2px 0 0;font:400 12px/1.4 var(--body);font-size:12px;color:var(--muted)}
#sfRoot .sf-ask{background:color-mix(in srgb,var(--chalk) 4%,var(--surface));align-items:center}
#sfRoot .sf-ask .sf-side{grid-template-rows:auto}
#sfRoot .sf-ask .sf-main{display:flex;align-items:center;gap:10px;grid-column:2/-1;flex-wrap:wrap}
#sfRoot .sf-q{flex:1;font:500 12px/1.4 var(--body);font-size:12px}
#sfRoot .sf-acts{display:flex;gap:6px}#sfRoot .sf-acts button{all:unset;cursor:pointer;height:30px;padding:0 12px;border-radius:15px;font:600 12px var(--body);font-size:12px;background:color-mix(in srgb,var(--chalk) 8%,transparent)}#sfRoot .sf-acts .go{background:#D64545;color:#fff}
#sfRoot .sf-adds{display:flex;gap:20px;margin:4px 4px 0}#sfRoot .sf-adds button{all:unset;cursor:pointer;font:500 13px var(--body);font-size:13px;color:var(--accent-ink,var(--accent));padding:6px 0}
.sf-fly{position:fixed;z-index:200;pointer-events:none;height:32px;padding:0 13px;border-radius:16px;display:inline-flex;align-items:center;background:var(--accent);color:#fff;font:600 13px var(--body);box-shadow:0 12px 28px color-mix(in srgb,var(--accent) 40%,transparent);transform:rotate(-3deg)}
html.sf-dragging,html.sf-dragging *{-webkit-user-select:none!important;user-select:none!important}
/* Change Program */
#sfRoot .sf-dim{position:absolute;inset:0;background:rgba(0,0,0,.38);z-index:5}
#sfRoot .sf-sheet{position:absolute;left:0;right:0;bottom:0;max-height:calc(100% - 60px);z-index:6;background:var(--ground);border-radius:26px 26px 0 0;display:flex;flex-direction:column;padding:10px 20px calc(env(safe-area-inset-bottom,0px) + 16px)}
#sfRoot .sf-grab{width:40px;height:5px;border-radius:3px;background:color-mix(in srgb,var(--chalk) 20%,transparent);margin:0 auto 14px;flex:none}
#sfRoot .sf-sh-h{display:flex;justify-content:space-between;align-items:baseline;margin:4px 2px 14px;flex:none}#sfRoot .sf-sh-h b{font:700 20px var(--body);font-size:20px;letter-spacing:-.3px}#sfRoot .sf-sh-h button{all:unset;cursor:pointer;font:500 13px var(--body);font-size:13px;color:var(--accent-ink,var(--accent))}
#sfRoot .sf-sh-list{overflow-y:auto;flex:1;margin:0 -4px;padding:0 4px 12px}
#sfRoot .sf-prg{all:unset;box-sizing:border-box;cursor:pointer;display:block;width:100%;background:var(--surface);border-radius:18px;padding:13px 16px;margin-bottom:8px}
#sfRoot .sf-prg.on{box-shadow:inset 0 0 0 1.5px var(--accent)}
#sfRoot .sf-prg.alt{background:none;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--chalk) 14%,transparent)}
#sfRoot .sf-prg-h{display:flex;align-items:center;gap:8px}#sfRoot .sf-prg-h b{font:600 14px var(--body);font-size:14px;display:inline-flex;align-items:baseline}
#sfRoot .sf-rec{font:600 9px var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;padding:3px 6px;border-radius:7px;background:color-mix(in srgb,var(--accent) 12%,var(--surface));color:var(--accent-ink,var(--accent))}
#sfRoot .sf-ck{margin-left:auto;width:18px;height:18px;border-radius:50%;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--chalk) 22%,transparent);flex:none}
#sfRoot .sf-prg.on .sf-ck{box-shadow:inset 0 0 0 5.5px var(--accent)}
#sfRoot .sf-prg p{white-space:pre-line;margin:5px 0 9px;font:400 12px/1.5 var(--body);font-size:12px;color:var(--muted)}
#sfRoot .sf-prg .sf-seq{margin:0;gap:5px}#sfRoot .sf-prg .sf-seq>span{font-size:10px;padding:3px 7px;border-radius:7px}#sfRoot .sf-prg .sf-seq i{font-style:normal;font-family:var(--mono);color:var(--faint);margin-right:4px}
#sfRoot .sf-sheet-go{flex:none;margin-top:8px}
/* Plan: Routine summary */
.pf-workspace .sf-sums{padding:6px 16px}
.pf-workspace .sf-sum{display:flex;align-items:center;gap:12px;padding:13px 2px;border-top:1px solid var(--line)}.pf-workspace .sf-sum:first-child{border-top:0}
.pf-workspace .sf-sum-ic{width:42px;height:42px;border-radius:12px;background:var(--surface2);display:grid;place-items:center;flex:none;color:var(--accent)}
.pf-workspace .sf-sum-ic b{font:600 20px var(--body);font-size:20px;color:var(--chalk)}.pf-workspace .sf-sum-ic .sf-gl{width:18px;height:18px;margin:0;top:0;color:var(--accent)}
.pf-workspace .sf-sum-tx{flex:1;min-width:0}.pf-workspace .sf-sum-tx small{display:block;font:500 10px var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}
.pf-workspace .sf-sum-tx b{display:block;font:600 13px/1.35 var(--body);font-size:13px}.pf-workspace .sf-sum-tx span{display:block;font:400 12px/1.4 var(--body);font-size:12px;color:var(--muted);margin-top:2px}
.pf-workspace .sf-edit{display:grid;place-items:center;width:32px;min-width:0;height:32px;min-height:0;margin:0;padding:0;border:0;border-radius:50%;box-shadow:none;background:color-mix(in srgb,var(--accent) 12%,var(--surface));color:var(--accent-ink,var(--accent));cursor:pointer;flex:none}.pf-workspace .sf-edit svg{width:14px;height:14px}
.pf-workspace .sf-more{font:500 11px var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:26px 2px 10px;display:flex;align-items:center;gap:10px}.pf-workspace .sf-more::after{content:"";flex:1;height:1px;background:var(--line)}
@media(prefers-reduced-motion:reduce){#sfRoot .sf-days>.sf-row.sf-shift,#sfRoot .sf-days>.sf-row.sf-hold,#sfRoot .sf-flyrow{transition:none}#sfRoot .sf-row.sf-settle{animation:none}}
@media(prefers-reduced-motion:reduce){#sfRoot .sf-wk-row,#sfRoot .sf-wk-row i.pop{animation:none}#sfRoot .sf-wk-row i.on{background-image:none}}
@media(prefers-reduced-motion:reduce){#sfRoot .sf-lit,#sfRoot .sf-lit.on,#sfRoot .sf-pick.pop,#sfRoot .sf-pick.pop.on::after,#sfRoot .sf-pick::before{animation:none;transition:opacity .15s ease}#sfRoot .sf-lit{transform:none}}

/* v4.6.433: Plan's Save and pick dates carries a chevron */
:root .pf-workspace .pw-btn.pf-go-dates{display:flex;align-items:center;justify-content:center;gap:6px}:root .pf-workspace .pw-btn.pf-go-dates .ic{width:14px;height:14px}

/* v4.6.433: the run line reads like a set line -- 11px mono at the set weight, quiet dots, a muted pace
   (it was 13px + the text offset, a size above the sets under it; the sets are 11px + the offset) */
:root .pf-workspace .pw-exercise.pf-cardio:not(.pf-cg) .pf-cardio-line{margin:2px 0 0;font:500 11px/1.5 var(--mono);font-size:11px;color:var(--chalk);display:flex;flex-wrap:wrap;align-items:baseline;gap:0 7px}
:root .pf-workspace .pf-cardio-line b{font-weight:500}
:root .pf-workspace .pf-cardio-line i{font-style:normal;color:var(--faint)}
:root .pf-workspace .pf-cardio-line .pf-cg-pace{color:var(--muted);font-weight:400}
/* v4.6.433: Set target gets room: clear of the Focus card above, and off its own controls */
:root .pf-routine-page .pf-routine-controls{margin-top:22px}
:root .pf-routine-controls .pf-total .pf-total-label{margin:0 0 8px}
:root .pf-routine-controls .pw-stepper{margin-top:0}
/* v4.6.433: Run's edit button is the same size as the exercises' edit buttons below it (44 x 30) */
:root .pf-workspace .pw-exercise.pf-cardio .pw-btn.pf-cardio-edit{width:44px;min-width:44px;height:30px;min-height:30px;padding:0 10px;border-radius:10px;align-self:start}
:root .pf-workspace .pw-exercise.pf-cardio .pw-btn.pf-cardio-edit{position:relative}:root .pf-workspace .pw-exercise.pf-cardio .pw-btn.pf-cardio-edit::after{content:'';position:absolute;inset:-7px}   /* the tap target stays 44 */
:root .pf-workspace .pw-exercise.pf-cardio .pw-btn.pf-cardio-edit svg{width:13px;height:13px}

/* v4.6.457: the stubs tear -- said once, under the strip, with a picture of it */
.pf-tear-tip{display:flex;align-items:center;gap:8px;margin:-2px 2px 14px;white-space:nowrap;font:400 12px/1.35 var(--body);font-size:12px;color:var(--muted)}
.pf-tear-tip .pf-tear-ic{flex:none;width:30px;height:22px;color:var(--accent-ink,var(--accent))}
/* the loop: the stub tears at the perforation, rides the arrow to the next day, fades; a fresh stub
   settles back in place, and the arrow draws itself as the stub travels */
.pf-tear-tip .pf-tear-stub{fill:color-mix(in srgb,var(--accent) 16%,transparent);transform-box:fill-box;transform-origin:20% 0;animation:pfStubTear 2.8s cubic-bezier(.45,0,.25,1) .4s infinite}
.pf-tear-tip .pf-tear-arrow{stroke-dasharray:14;stroke-dashoffset:14;animation:pfArrowDraw 2.8s cubic-bezier(.45,0,.25,1) .4s infinite}
@keyframes pfStubTear{0%,12%{transform:none;opacity:1}24%{transform:translate(.5px,1.2px) rotate(9deg);opacity:1}
  58%{transform:translate(10px,-1px) rotate(16deg);opacity:1}72%{transform:translate(12px,-2px) rotate(18deg);opacity:0}
  73%{transform:translate(0,-3px) rotate(0deg);opacity:0}88%,100%{transform:none;opacity:1}}
@keyframes pfArrowDraw{0%,20%{stroke-dashoffset:14;opacity:1}55%{stroke-dashoffset:0;opacity:1}72%{stroke-dashoffset:0;opacity:0}100%{stroke-dashoffset:14;opacity:0}}
@media(prefers-reduced-motion:reduce){.pf-tear-tip .pf-tear-stub{animation:none;transform:translate(5px,1.5px) rotate(12deg)}.pf-tear-tip .pf-tear-arrow{animation:none;stroke-dashoffset:0}}

/* v4.6.457: SET TARGET, REFINED (Sungjee, 2026-10-27: "the +/- don't seem tappable; the number is out of
   proportion"). A soft track; minus and plus are raised round buttons in the accent; the number sits
   between them at the size of the row's other labels, not a headline. */
:root .pf-routine-controls .pf-total .pw-stepper{display:inline-grid;grid-template-columns:36px 46px 36px;align-items:center;gap:0;height:auto;margin-top:6px;padding:4px;border:0;border-radius:999px;background:var(--surface2);box-shadow:inset 0 0 0 1px var(--line);overflow:visible}
:root .pf-routine-controls .pf-total .pw-stepper .pw-btn{display:grid;place-items:center;width:36px;min-width:36px;height:36px;min-height:36px;padding:0;margin:0;border:0;border-radius:50%;background:var(--surface);color:var(--accent-ink,var(--accent));font:500 20px/1 var(--body);font-size:20px;box-shadow:0 1px 2px rgba(0,0,0,.08),0 2px 8px rgba(0,0,0,.06);transition:transform var(--dur-quick) var(--settle),background-color var(--dur-quick) var(--settle)}
:root .pf-routine-controls .pf-total .pw-stepper .pw-btn:active{transform:scale(.92);background:color-mix(in srgb,var(--accent) 12%,var(--surface))}
:root .pf-routine-controls .pf-total .pw-stepper .pw-btn:disabled{opacity:.4;box-shadow:none}
:root .pf-routine-controls .pf-total .pw-stepper output{display:grid;place-items:center;width:46px;min-width:0;height:36px;margin:0;padding:0;font:600 17px/1 var(--body);font-size:17px;font-variant-numeric:tabular-nums;color:var(--chalk)}
:root .pf-routine-controls .pf-total .pw-stepper output.pf-changed{color:var(--accent-ink,var(--accent))}

/* v4.6.471: Dates -- one primary, then a row of small labelled tools; Delete asks in place */
.pf-date-tools{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:8px;margin-top:10px}
.pf-date-tools .pf-tool-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:62px;margin:0;padding:9px 4px 8px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--chalk);font:500 11px/1.15 var(--body);font-size:11px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform var(--dur-quick) var(--settle)}
.pf-date-tools .pf-tool-btn:active{transform:scale(.96)}
.pf-date-tools .pf-tool-btn:disabled{opacity:.4}
.pf-date-tools .pf-tool-ic{display:grid;place-items:center;height:20px;color:var(--accent-ink,var(--accent))}
.pf-date-tools .pf-tool-danger{color:#C94A4A}
.pf-date-tools .pf-tool-danger .pf-tool-ic{color:#C94A4A}
:root[data-theme="dark"] .pf-date-tools .pf-tool-danger,:root[data-theme="dark"] .pf-date-tools .pf-tool-danger .pf-tool-ic{color:#F07A7A}
.pf-dates-page .pf-date-actions:has(> :only-child){display:block}
.pf-dates-page .pf-date-actions:has(> :only-child) .pw-btn{width:100%}
.pf-del-actions .pw-btn.pf-danger{background:#C94A4A;border-color:#C94A4A;color:#fff;gap:6px}
:root[data-theme="dark"] .pf-del-actions .pw-btn.pf-danger{background:#D45656;border-color:#D45656}
.pf-del-actions .pw-btn.pf-danger .ic{width:15px;height:15px}
/* v4.6.471: even spacing (Sungjee, 2026-10-28): the Unselect pill sits 10 pt from the calendar and 10 pt from
   the main button; the tools row sits closer to the main button than the button to the pill */
:root .pf-dates-page .pf-selection:has(.pf-unselect){margin:6px 0 4px;min-height:30px}   /* + the dock's 8 pt gap: 12 above, 12 below */
:root .pf-dates-page .pw-btn.pf-unselect{margin:0}
:root .pf-dates-page .pf-date-actions{margin-top:0}
:root .pf-dates-page .pf-date-tools{margin-top:0}   /* the dock's 8 pt gap alone: tighter than 12 */
:root .pf-dates-page .pf-selection.pf-del-head{margin-top:6px}   /* the question sits 12 pt under the calendar too */

/* v4.6.475: leaving Plan with unsaved changes -- one question, Save or Discard */
#pfLeaveAsk{position:fixed;inset:0;z-index:90;display:flex;align-items:flex-end;justify-content:center}
#pfLeaveAsk .pf-leave-scrim{position:absolute;inset:0;background:rgba(0,0,0,.42);animation:pfLeaveFade .2s ease-out}
#pfLeaveAsk .pf-leave-ask{position:relative;width:min(480px,100%);box-sizing:border-box;padding:22px 20px calc(env(safe-area-inset-bottom,0px) + 14px);border-radius:24px 24px 0 0;background:var(--surface);color:var(--chalk);animation:pfLeaveUp .28s var(--settle)}
#pfLeaveAsk h3{margin:0 0 6px;font:600 19px/1.25 var(--body);font-size:19px}
#pfLeaveAsk p{margin:0 0 16px;font:400 14px/1.45 var(--body);font-size:14px;color:var(--muted)}
#pfLeaveAsk .pf-leave-acts{display:grid;grid-template-columns:1fr 1.4fr;gap:8px}
#pfLeaveAsk .pf-leave-acts .pw-btn{min-height:50px;border-radius:14px;font:600 15px var(--body);font-size:15px}
#pfLeaveAsk .pf-leave-keep{display:block;margin:8px auto 0;min-height:44px;padding:8px 16px;border:0;background:none;color:var(--muted);font:500 14px var(--body);font-size:14px;cursor:pointer}
@keyframes pfLeaveUp{from{transform:translateY(100%)}to{transform:none}}
@keyframes pfLeaveFade{from{opacity:0}}
@media(prefers-reduced-motion:reduce){#pfLeaveAsk .pf-leave-ask,#pfLeaveAsk .pf-leave-scrim{animation:none}}
