/* FFM Fitness Tools. Uses the FFM Editorial tokens when present. */
.ffm-nl, .ffm-tool, .ffm-workout, .ffm-calcs { --t-ink: var(--ffm-ink, #0e0e0e); --t-text: var(--ffm-text, #2b2b2b); --t-muted: var(--ffm-muted, #6f6f6f); --t-line: var(--ffm-line, #e8e5df); --t-cream: var(--ffm-cream, #faf8f4); --t-accent: var(--ffm-accent, #ffcb00); --t-serif: var(--ffm-serif, Georgia, serif); --t-sans: var(--ffm-sans, system-ui, sans-serif); font-family: var(--t-sans); }
.ffm-sr, .ffm-hp { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------------------------------------------------------- newsletter */
.ffm-nl { margin: 3em 0 0; }
.ffm-nl-inner { background: var(--t-ink); color: rgba(255, 255, 255, .82); padding: clamp(28px, 5vw, 48px); position: relative; overflow: hidden; }
.ffm-nl-inner::before { content: ""; position: absolute; left: clamp(28px, 5vw, 48px); top: 0; width: 56px; height: 3px; background: var(--t-accent); }
.ffm-nl-eyebrow { font-size: .7rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--t-accent); margin: 0 0 10px; }
.ffm-nl-title { font-family: var(--t-serif); font-weight: 400; font-size: clamp(1.6rem, 3vw, 2.2rem); line-height: 1.15; color: #fff; margin: 0 0 10px; letter-spacing: -.01em; }
.ffm-nl-text { margin: 0 0 22px; font-size: 1rem; line-height: 1.6; max-width: 520px; }
.ffm-nl-form { display: flex; flex-wrap: wrap; gap: 10px; }
.ffm-nl-input { flex: 1 1 220px; min-width: 0; height: 52px; padding: 0 18px; border: 1px solid rgba(255, 255, 255, .25); background: rgba(255, 255, 255, .06); color: #fff; font: inherit; font-size: 1rem; border-radius: 0; -webkit-appearance: none; appearance: none; }
.ffm-nl-input::placeholder { color: rgba(255, 255, 255, .55); }
.ffm-nl-input:focus { outline: none; border-color: var(--t-accent); }
.ffm-nl-btn { height: 52px; padding: 0 28px; border: 0; background: var(--t-accent); color: var(--t-ink); font: 600 .78rem/1 var(--t-sans); letter-spacing: .16em; text-transform: uppercase; cursor: pointer; transition: filter .2s; }
.ffm-nl-btn:hover { filter: brightness(1.06); }
.ffm-nl-btn[disabled] { opacity: .6; cursor: wait; }
.ffm-nl-msg { flex-basis: 100%; margin: 4px 0 0; font-size: .92rem; min-height: 1.4em; }
.ffm-nl-msg.is-ok { color: #fff; font-weight: 600; }
.ffm-nl-msg.is-error { color: #ffb4a8; }
.ffm-nl.is-done .ffm-nl-input, .ffm-nl.is-done .ffm-nl-btn { display: none; }
.ffm-nl-band .ffm-nl-inner { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px 56px; align-items: center; padding: clamp(36px, 6vw, 72px); }
.ffm-nl-band .ffm-nl-inner::before { left: clamp(36px, 6vw, 72px); }
.ffm-nl-band .ffm-nl-text { margin: 0; }
.ffm-nl-band { margin: 0; }
@media (max-width: 860px) { .ffm-nl-band .ffm-nl-inner { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------- tools */
.ffm-tool { border: 1px solid var(--t-line); background: #fff; padding: clamp(20px, 4vw, 32px); margin: 2em 0; color: var(--t-text); }
.ffm-tool-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.ffm-tool-title, .entry-content .ffm-tool-title { font-family: var(--t-serif); font-weight: 400; font-size: 1.55rem; margin: 0; color: var(--t-ink); }
.ffm-tool-intro { font-size: .98rem; color: var(--t-muted); margin: 0 0 20px; }
.ffm-fields { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px 16px; margin-bottom: 18px; }
.ffm-field { display: flex; flex-direction: column; gap: 6px; margin: 0; }
.ffm-wide { grid-column: 1 / -1; }
.ffm-label { font-size: .72rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--t-ink); }
.ffm-label em { font-style: normal; color: var(--t-muted); letter-spacing: .04em; text-transform: none; font-weight: 500; }
.ffm-tool input[type="number"], .ffm-tool select { height: 48px; width: 100%; padding: 0 14px; border: 1px solid var(--t-line); background: var(--t-cream); font: inherit; font-size: 1.05rem; color: var(--t-ink); border-radius: 0; -webkit-appearance: none; appearance: none; }
.ffm-tool select { background-image: linear-gradient(45deg, transparent 50%, var(--t-ink) 50%), linear-gradient(135deg, var(--t-ink) 50%, transparent 50%); background-position: calc(100% - 20px) 21px, calc(100% - 15px) 21px; background-size: 5px 5px; background-repeat: no-repeat; padding-right: 36px; }
.ffm-tool input:focus, .ffm-tool select:focus { outline: none; border-color: var(--t-ink); background-color: #fff; }
.ffm-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.ffm-seg, .ffm-units { display: inline-flex; border: 1px solid var(--t-line); }
.ffm-seg label, .ffm-units label { position: relative; margin: 0; }
.ffm-seg input, .ffm-units input { position: absolute; opacity: 0; }
.ffm-seg span, .ffm-units span { display: block; padding: 12px 16px; font-size: .9rem; cursor: pointer; color: var(--t-ink); }
.ffm-units span { padding: 8px 12px; font-size: .8rem; }
.ffm-seg input:checked + span, .ffm-units input:checked + span { background: var(--t-ink); color: #fff; }
.ffm-seg input:focus-visible + span, .ffm-units input:focus-visible + span { outline: 2px solid var(--t-ink); outline-offset: 2px; }
.ffm-calc[data-units-now="imperial"] [data-metric], .ffm-calc[data-units-now="metric"] [data-imperial] { display: none !important; }
.ffm-tool-btn { display: inline-flex; align-items: center; justify-content: center; height: 50px; padding: 0 28px; border: 1px solid var(--t-ink); background: var(--t-ink); color: #fff; font: 600 .78rem/1 var(--t-sans); letter-spacing: .16em; text-transform: uppercase; cursor: pointer; transition: .2s; }
.ffm-tool-btn:hover { background: var(--t-accent); border-color: var(--t-accent); color: var(--t-ink); }
.ffm-tool-btn.ffm-ghost { background: #fff; color: var(--t-ink); }
.ffm-result { margin-top: 22px; padding: 22px; background: var(--t-cream); border-left: 3px solid var(--t-accent); }
.ffm-result-big { font-family: var(--t-serif); font-size: clamp(2.2rem, 6vw, 3rem); line-height: 1; color: var(--t-ink); margin: 0 0 6px; }
.ffm-result-big small { font-family: var(--t-sans); font-size: .9rem; color: var(--t-muted); margin-left: 6px; }
.ffm-result p { margin: 0 0 8px; font-size: .98rem; }
.ffm-result-rows { display: grid; gap: 1px; background: var(--t-line); border: 1px solid var(--t-line); margin-top: 12px; }
.ffm-result-rows div { display: flex; justify-content: space-between; gap: 12px; padding: 10px 14px; background: #fff; font-size: .95rem; }
.ffm-result-rows strong { color: var(--t-ink); white-space: nowrap; }
.ffm-scale { position: relative; height: 8px; margin: 18px 0 26px; background: linear-gradient(90deg, #a7c7e7 0 28.3%, #9fd3a8 28.3% 50%, #f6d77a 50% 66.7%, #f2a48f 66.7%); }
.ffm-scale i { position: absolute; top: -5px; width: 3px; height: 18px; background: var(--t-ink); transform: translateX(-50%); }
.ffm-scale span { position: absolute; top: 14px; font-size: .7rem; color: var(--t-muted); transform: translateX(-50%); white-space: nowrap; }
.ffm-tool-note { margin: 16px 0 0; font-size: .78rem; color: var(--t-muted); }
.ffm-error { color: #b3261e; font-size: .92rem; margin: 0; }

/* tabs */
.ffm-calcs { margin: 2em 0; }
.ffm-tabs { display: flex; gap: 0; border-bottom: 1px solid var(--t-line); overflow-x: auto; scrollbar-width: none; }
.ffm-tabs::-webkit-scrollbar { display: none; }
.ffm-tabs button { flex: none; padding: 14px 18px; border: 0; border-bottom: 2px solid transparent; background: none; font: 600 .74rem/1 var(--t-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--t-muted); cursor: pointer; margin-bottom: -1px; }
.ffm-tabs button[aria-selected="true"] { color: var(--t-ink); border-bottom-color: var(--t-accent); }
.ffm-calcs .ffm-tool { margin-top: 0; border-top: 0; }

/* timer */
.ffm-timer-face { text-align: center; padding: 24px 0 18px; }
.ffm-timer-phase { font-size: .78rem; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: var(--t-muted); margin: 0 0 6px; }
.ffm-timer-time { font-family: var(--t-serif); font-size: clamp(4rem, 16vw, 7rem); line-height: 1; color: var(--t-ink); margin: 0; font-variant-numeric: tabular-nums; }
.ffm-timer-round { font-size: .95rem; color: var(--t-muted); margin: 10px 0 16px; min-height: 1.4em; }
.ffm-timer-bar { height: 4px; background: var(--t-line); max-width: 420px; margin: 0 auto; }
.ffm-timer-bar span { display: block; height: 100%; width: 0; background: var(--t-accent); transition: width .25s linear; }
.ffm-timer.is-work .ffm-timer-phase { color: var(--t-ink); }
.ffm-timer.is-work .ffm-timer-bar span { background: var(--t-ink); }
.ffm-timer.is-rest .ffm-timer-phase { color: #3c8a55; }
.ffm-timer-controls { display: flex; justify-content: center; gap: 10px; margin-bottom: 16px; }
.ffm-timer-set summary { cursor: pointer; font-size: .85rem; color: var(--t-ink); text-align: center; margin-bottom: 14px; }
.ffm-check { font-size: .9rem; }

/* workout card */
.ffm-workout { background: var(--t-cream); padding: clamp(22px, 4vw, 34px); margin: 2em 0; border-top: 3px solid var(--t-accent); }
.ffm-workout-eyebrow { font-size: .7rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--t-muted); margin: 0 0 6px; }
.ffm-workout-title, .entry-content .ffm-workout-title { font-family: var(--t-serif); font-weight: 400; font-size: 1.6rem; margin: 0 0 16px; color: var(--t-ink); }
.ffm-workout-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 1px; background: var(--t-line); border: 1px solid var(--t-line); margin: 0 0 20px; }
.ffm-workout-facts div { background: #fff; padding: 12px 14px; }
.ffm-workout-facts dt { font-size: .66rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--t-muted); }
.ffm-workout-facts dd { margin: 2px 0 0; font-weight: 600; color: var(--t-ink); }
.ffm-workout-steps { margin: 0; padding: 0; list-style: none; counter-reset: step; }
.ffm-workout-steps li { counter-increment: step; display: grid; grid-template-columns: 34px 1fr; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--t-line); margin: 0; }
.ffm-workout-steps li:last-child { border-bottom: 0; }
.ffm-workout-steps li::before { content: counter(step, decimal-leading-zero); font-family: var(--t-serif); font-style: italic; color: var(--t-muted); }
