/* Iron Log — redesign prototype. Production tokens; safe, separate from the shipping app. */
:root{
  /* type scale: sans for words, mono for numbers and labels. Nothing under 11px, no half pixels. */
  --fs-display:40px; /* first-run display moments only: the welcome headline, the paywall price */
  --fs-hero:32px;   /* the Today headline number (sans 800) */
  --fs-page:28px;   /* page titles (sans 800) */
  --fs-title:20px;  /* section headings, a timeline node's date or week (sans 700) */
  --fs-name:16px;   /* lift and list item names (sans 600) */
  --fs-body:15px;   /* sentences (sans 400) */
  --fs-data:16px;   /* numbers you act on: weights, reps, set targets (mono 600) */
  --fs-value:13px;  /* values, rows, meta lines (mono 400) */
  --fs-label:11px;  /* labels, usually uppercase (mono 400) */
  --ls-label:.18em; /* the one letter-spacing for uppercase labels */
  --fs-chev:16px;   /* every chevron and arrow glyph (sans) */
  --fs-icon:20px;   /* glyph buttons: the ⋯ menu, close ×, search */
  --ink:#0a0a0b;          /* base bg (near black, high contrast) */
  --stage:#060607;        /* deepest */
  --ink-2:#1c1f24;
  --panel:#20242a;
  --panel-2:#262b32;
  --hair:#333942;
  --hair-soft:#2a2f36;
  --steel:#6b7178;
  --steel-2:#9aa1a9;
  --paper:#e7e3da;
  --paper-dim:#b9b6ad;
  --lume:#c2472f;         /* wax = record (brightened for OLED black; matches the app icon + splash) */
  --lume-hi:#dd5a42;      /* hot wax for large numbers / emphasis */
  --lume-dim:#8a3a2e;     /* muted wax for faint bars / dim states */
  --on-lume:#fbe9e5;      /* text/ticks that sit ON the accent (cream, both themes) */
  --lume-text:var(--lume-hi); /* accent used AS TEXT on dark: brighter wax so small labels clear AA (5.3:1) */
  --blue:#5f8fc7;
  --red:#cf6a55;
  --lume-hero:var(--lume);  /* vibrant wax reserved for large numbers/graphics; deepens for small text in light */
  /* RGB bases for theme-aware tints (flip in the light theme below) */
  --lume-rgb:194,71,47;
  --lume-hi-rgb:221,90,66;
  --tint:255,255,255;     /* subtle raised-highlight overlay (white on dark) */
  --scrim:14,15,18;       /* the PR-ceremony backdrop */
  --line-2:#3a4048;       /* dots / dotted underlines */
  --faint2:#43484f;       /* chevrons */
  --wb-empty:#1b1a16;     /* empty week/strip bars */
  --card:#0c0b0a;         /* deep card (records) */
  --cell:#17161a;         /* empty heatmap cell */
  --illus-tile:#141619;   /* a drawing's plate: its background is swapped to this (app.js illRender) */
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --sans:"Geist",system-ui,-apple-system,"Segoe UI",sans-serif;
  --pixel:"Silkscreen","JetBrains Mono",ui-monospace,monospace;
  /* spacing — 4px base scale. Layout uses these; 2px is allowed only inside a component. */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:20px; --s6:24px; --s8:32px;
  --gutter:24px;   /* screen left/right edge */
  --row-y:16px;    /* two-line list-row vertical padding (--s4) */
  --row-y-tight:12px; /* single-line dense row (--s3) */
  --top:66px;      /* header clearance below the status bar / Dynamic Island */
  --sab:env(safe-area-inset-bottom,0px);   /* safe areas; the desktop frame below fakes an iPhone's */
  --sat:env(safe-area-inset-top,0px);
  /* motion — durations + easing. See the navigation model in app.js. */
  --dur-fast:120ms;   /* micro-feedback */
  --dur-base:230ms;   /* lateral fade, child slide */
  --dur-slow:340ms;   /* global slide-up, the differentiator */
  --ease:cubic-bezier(.22,1,.36,1);      /* decelerate — entrances */
  --ease-in:cubic-bezier(.4,0,1,1);      /* accelerate — exits */
}
/* ---------------- Light theme (proof-ink-wax: cream paper, ink text, wax seal) ---------------- */
:root.theme-light{
  --ink:#e7e2d8;          /* base bg = paper (the deeper sheet) */
  --stage:#ddd7ca;        /* frame behind the app = a shade deeper still */
  --ink-2:#f1ede4;        /* raised surface = card (the lighter sheet) */
  --panel:#f1ede4;        /* card surface = a sheet laid on the page */
  --panel-2:#eae4d9;      /* mid panel */
  --hair:#cbc3b4;         /* rule — divider */
  --hair-soft:#d5cec1;    /* the ledger hairline that groups a card */
  --steel:#5c5952;        /* mid — faint labels (AA ~5.8:1 on paper) */
  --steel-2:#46443e;      /* readable secondary text = deeper mid */
  --paper:#15161a;        /* main text = ink */
  --paper-dim:#3b3934;    /* dimmed text = ink softened */
  --lume:#8e2b24;         /* accent = wax (AA ~7.6:1 on paper) */
  --lume-text:var(--lume);  /* accent text on cream: the deep wax already passes, keep it */
  --lume-hero:#9a3128;    /* wax, a touch brighter for large graphics / the seal */
  --lume-hi:#78201a;      /* deeper wax for emphasis */
  --lume-dim:#d8bdb8;     /* pale wax for faint bars / dim states */
  --blue:#4a6b93;         /* muted slate — secondary indicator, warmed for the cream ground */
  --red:#a5342b;          /* wax-family red for rough / negative */
  --lume-rgb:142,43,36;
  --lume-hi-rgb:154,49,40;
  --tint:0,0,0;           /* subtle overlays go dark on light */
  --scrim:237,233,225;    /* PR-ceremony backdrop = warm paper wash */
  --line-2:#cbc3b4;       /* dots / dotted underlines */
  --faint2:#8a857c;       /* chevrons — warm gray */
  --wb-empty:#d5cec1;     /* empty week/strip bars = the hairline */
  --card:#f1ede4;         /* the lighter sheet */
  --cell:#e7e2d8;         /* empty heatmap cell = page tone */
  --illus-tile:#000;      /* light skins keep the black drawing plate */
}
/* Light theme: darken the SVG icon tints (they're calibrated light-on-dark) */
:root.theme-light .lift .ic img,
:root.theme-light .h1row .exic img,
:root.theme-light .picktile img{filter:invert(42%) sepia(10%) saturate(360%) hue-rotate(169deg) brightness(90%);}
:root.theme-light .lift.done .ic img,
:root.theme-light .picktile.on img{filter:invert(20%) sepia(64%) saturate(1400%) hue-rotate(191deg) brightness(78%);}
/* The peer-note LCD stays a dark readout even on light (reads as a device screen) */
*{margin:0;padding:0;box-sizing:border-box;-webkit-text-size-adjust:100%;text-size-adjust:100%;
  -webkit-tap-highlight-color:transparent;}
html,body{height:100%;}
button,.seg span,.co-feel span,.day,.dots{user-select:none;-webkit-user-select:none;}
body{background:var(--stage);font-family:var(--sans);color:var(--paper);
  display:flex;align-items:flex-start;justify-content:center;padding:20px 16px;}

/* Desktop preview frame: an iPhone 17 Pro at 1x points (402 x 874), with its safe areas, status bar,
   Dynamic Island and home indicator, so a screen recording reads like the phone. app.js never sees it. */
#device{width:402px;max-width:100%;height:874px;flex:none;background:var(--ink);border-radius:62px;
  position:relative;overflow:hidden;transform-origin:top center;
  box-shadow:0 0 0 1px rgba(var(--tint),.05),0 40px 90px rgba(0,0,0,.6);}
@media (min-width:441px){ :root{--sab:34px;--sat:62px;} }
.ios-chrome{display:none;}
@media (min-width:441px){
  .ios-chrome{display:block;position:absolute;left:0;right:0;z-index:200;pointer-events:none;color:var(--paper);}
  .ios-status{top:0;height:54px;}
  .ios-time{position:absolute;left:0;width:150px;top:19px;text-align:center;
    font:600 17px/22px -apple-system,"SF Pro Text",system-ui,sans-serif;letter-spacing:-.02em;}
  .ios-island{position:absolute;left:50%;top:11px;width:125px;height:37px;margin-left:-62.5px;border-radius:20px;background:#000;}
  .ios-icons{position:absolute;right:0;width:150px;top:22px;display:flex;justify-content:center;align-items:center;gap:6px;}
  .ios-icons svg{display:block;fill:currentColor;}
  .ios-home{bottom:8px;left:50%;right:auto;width:139px;height:5px;margin-left:-69.5px;border-radius:3px;background:currentColor;}
}
#app{position:absolute;inset:0;overflow:hidden;}

/* screens — transitions are driven per navigation type from app.js (navTo).
   Opaque background so a sliding screen fully covers the one it moves over. */
.screen{position:absolute;inset:0;display:flex;flex-direction:column;pointer-events:none;
  background:var(--ink);will-change:opacity,transform;}
.screen.active{pointer-events:auto;}
/* lateral fade for the History Patterns|Sessions panel (peers) */
.hist-panel.fade-in{animation:panel-fade var(--dur-base) var(--ease);}
@keyframes panel-fade{from{opacity:0}to{opacity:1}}
/* child: accordion grows open in place */
.rc-body{animation:reveal var(--dur-base) var(--ease);}
@keyframes reveal{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;}
.scroll::-webkit-scrollbar{width:0;}

/* shared bits */
/* Sticky headers — stay pinned with an opaque black behind so content scrolls under.
   Inset bg is seamless because the whole app background is --ink. */
.topbar,.page-head,.d-head{position:sticky;top:0;z-index:5;background:var(--ink);}
.topbar{display:flex;align-items:center;gap:12px;padding:var(--top) 0 10px;}
.glyph{width:40px;height:40px;flex:none;display:flex;align-items:center;justify-content:center;}
.glyph svg{width:40px;height:40px;}
.brand{font-family:var(--mono);font-weight:700;letter-spacing:.01em;font-size:19px;color:var(--paper);white-space:nowrap;flex-shrink:0;margin-left:-4px;}
.date{margin-left:auto;font-family:var(--mono);letter-spacing:.13em;font-size:var(--fs-value);color:var(--steel-2);white-space:nowrap;}
.gear{margin-left:10px;color:var(--steel-2);font-size:18px;background:none;border:none;cursor:pointer;padding:0;
  width:34px;height:34px;flex:none;display:inline-flex;align-items:center;justify-content:center;}   /* a box, so the icon centers on the date */
.gear svg{display:block;}
.date{line-height:1;}
.gear:active{color:var(--paper-dim);}
.label{font-family:var(--mono);letter-spacing:var(--ls-label);font-size:var(--fs-label);color:var(--steel);text-transform:uppercase;}
.rule{height:1px;background:var(--hair-soft);}

/* seal */


/* ---------------- BRIEFING ---------------- */
#s-brief .scroll{padding:0 24px 24px;}
.brief-label{padding:22px 0 0;}
.weeknav{display:flex;align-items:center;justify-content:center;gap:18px;margin:24px 0 22px;}
.weeknav .arw{color:var(--steel);font-size:var(--fs-chev);padding:6px;background:none;border:none;cursor:pointer;line-height:1;
  min-width:29px;text-align:center;}
button.arw:active{color:var(--paper);}
.weeknav .arw.off{visibility:hidden;pointer-events:none;}
.weeknav .rng{font-family:var(--mono);letter-spacing:.12em;font-size:var(--fs-value);color:var(--steel-2);min-width:120px;text-align:center;}
.prline{display:flex;align-items:center;justify-content:center;gap:18px;margin-bottom:24px;}
.prline .seal{width:80px;height:80px;flex:none;}
.prstat b{color:var(--lume-hero);font-size:var(--fs-hero);font-weight:800;line-height:.95;letter-spacing:-.01em;
  font-family:var(--sans);display:block;}
.prstat span{font-family:var(--mono);letter-spacing:var(--ls-label);font-size:var(--fs-label);color:var(--steel);margin-top:5px;display:block;}
.dots{display:flex;justify-content:space-between;padding:0 4px;margin-bottom:16px;}
.day{display:flex;flex-direction:column;align-items:center;gap:9px;}
.day .dot{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--line-2);}
.day.done .dot{background:var(--lume);border-color:var(--lume-text);}
.day.today .dot{border-color:var(--lume-text);box-shadow:0 0 0 3px rgba(var(--lume-rgb),.16);}
.day em{font-family:var(--mono);font-style:normal;font-size:var(--fs-label);color:var(--steel);letter-spacing:.06em;}
.day.today em{color:var(--lume-text);}
/* an empty past day is tappable to backfill: a dashed dot invites the tap, without shouting */
button.day{background:none;border:none;padding:0;cursor:pointer;font:inherit;transition:transform .1s ease;}
.day.fillable .dot{border-style:dashed;border-color:var(--steel);}
.day.fillable:active{transform:scale(.9);}
.day.fillable:active .dot{border-color:var(--lume-text);background:rgba(var(--lume-rgb),.14);}
.day.opens:active{transform:scale(.9);}   /* a done day opens what was logged */
/* "logging a past day" banner on the routine screen */
.backfill-note{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;color:var(--steel);
  background:rgba(var(--lume-rgb),.08);border:1px solid rgba(var(--lume-rgb),.22);border-radius:10px;
  padding:8px 12px;margin:0 0 16px;}
.backfill-note b{color:var(--lume-text);font-weight:600;}
.streak{text-align:center;font-family:var(--mono);letter-spacing:.12em;font-size:var(--fs-label);color:var(--steel);}
.brief .rule{margin:24px 0;}
.lastrow{display:block;width:100%;background:none;border:none;text-align:left;cursor:pointer;padding:0;
  font-family:var(--mono);color:var(--steel);}
.lr-top{display:flex;align-items:baseline;gap:8px;font-size:var(--fs-label);letter-spacing:var(--ls-label);text-transform:uppercase;}
.lastrow .k{color:var(--steel);flex:none;}
.lr-day{flex:1;min-width:0;color:var(--steel-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lr-top .chev{flex:none;color:var(--steel-2);font-family:var(--sans);font-size:var(--fs-chev);line-height:1;letter-spacing:0;align-self:center;}
.lr-btm{display:flex;align-items:baseline;gap:10px;margin-top:7px;font-size:var(--fs-value);letter-spacing:.02em;color:var(--paper-dim);}
.lr-lift{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lr-btm .pr{flex:none;color:var(--lume-text);white-space:nowrap;}
.nextup{margin-top:26px;}
/* Day-one hero: same type + rows as steady state, just the score withheld.
   Header and week view are fixed; only the lift list scrolls (like the strike screen). */
.nextup.d1{margin-top:22px;}
.d1-meta{margin-top:-4px;margin-bottom:0;}
#s-brief.d1screen .d1-top{flex:none;padding:0 24px;}
#s-brief.d1screen .d1-lifts{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 24px;}
#s-brief.d1screen .d1-bottom{flex:none;padding:16px 24px 8px;}
.d1-hook{margin-top:0;margin-bottom:0;}
.nextup .head{display:flex;align-items:center;gap:8px;margin:14px 0;background:none;border:none;
  color:inherit;padding:0;cursor:pointer;text-align:left;}
.nextup h2{font-size:var(--fs-title);font-weight:700;letter-spacing:-.01em;}
.cv{color:var(--steel);font-size:var(--fs-chev);}
.nextup .head:active .cv{color:var(--lume-text);}
.nextup .head.static{cursor:default;}
.nx-set .tgt.first{color:var(--steel-2);font-size:var(--fs-label);letter-spacing:var(--ls-label);}
.hook{font-size:var(--fs-name);line-height:1.45;color:var(--paper);margin-bottom:20px;max-width:32ch;}
.nx-set{display:flex;align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--hair-soft);}
.nx-set .nm{font-size:var(--fs-name);font-weight:400;}
.chip{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.1em;color:var(--lume-text);
  border:1px solid rgba(var(--lume-rgb),.4);border-radius:5px;padding:2px 5px;}
.nx-set .tgt{margin-left:auto;font-family:var(--mono);font-weight:400;font-size:var(--fs-data);color:var(--paper);letter-spacing:.03em;}
.nx-set .tgt .x{color:var(--steel);}

/* docked CTA */
.dock{padding:14px 24px calc(24px + var(--sab));
  background:linear-gradient(to top,var(--ink) 66%,rgba(22,24,28,0));}
/* When the tab bar follows the dock (Today), the bar already reserves the bottom
   safe area — so drop the dock's, or the button floats too far above the bar. */
.dock:has(+ .tabbar){padding-bottom:16px;}
.cta{width:100%;background:var(--lume-hero);color:var(--on-lume);border:none;border-radius:15px;padding:18px;
  font-family:var(--mono);font-weight:700;font-size:var(--fs-data);letter-spacing:.09em;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:8px;transition:transform .1s ease,filter .1s ease;}
.cta:active{transform:scale(.985);filter:brightness(1.05);}
.cta.win{box-shadow:0 0 0 1px rgba(var(--lume-rgb),.5),0 10px 30px rgba(var(--lume-rgb),.22);}

/* ---------------- ROUTINE ---------------- */
#s-routine .scroll{padding:0 24px 20px;}
.r-head{display:flex;align-items:center;gap:12px;padding:2px 0 16px;}
.r-head h1{font-size:21px;font-weight:700;letter-spacing:-.01em;}
/* uniform back control — same look/position everywhere: "‹ PARENT" top-left */
.backnav,.d-back{background:none;border:none;color:var(--steel);font-family:var(--mono);font-size:var(--fs-value);
  letter-spacing:.14em;cursor:pointer;padding:var(--top) 0 4px;display:block;text-align:left;}
.backnav:active,.d-back:active{color:var(--paper-dim);}
#s-routine .backnav{padding-bottom:24px;}   /* same breathing room as the strike header */
.prog{display:flex;align-items:center;gap:12px;margin-bottom:20px;}
.prog .bar{flex:1;height:3px;border-radius:2px;background:rgba(var(--tint),.09);overflow:hidden;}
.prog .bar i{display:block;height:100%;background:var(--lume);border-radius:2px;transition:width .4s ease;}
.prog .n{font-family:var(--mono);letter-spacing:.1em;font-size:12px;color:var(--steel-2);}
.prog .n b{color:var(--paper);font-weight:600;}
/* Day coverage, in the lifts bar's slot: one segment per area, deeper with each lift logged there. */
.dcov{margin-bottom:20px;}
.dcov .bar{display:flex;gap:4px;height:4px;}
.dcov .seg{flex:1;border-radius:2px;background:rgba(var(--tint),.09);transition:background .3s ease;}
.dcov .seg.l1{background:rgba(var(--lume-rgb),.55);}
.dcov .seg.l2{background:rgba(var(--lume-rgb),.8);}
.dcov .seg.l3{background:var(--lume);}
.dcov .labels{display:flex;gap:4px;margin-top:7px;}
.dcov .labels span{flex:1;min-width:0;font-family:var(--mono);font-size:9.5px;letter-spacing:.04em;color:var(--steel);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dcov .labels span.on{color:var(--paper);}
.dcov.many .labels span{font-size:8.5px;letter-spacing:0;}
.dcov .n{font-family:var(--mono);letter-spacing:.1em;font-size:12px;color:var(--steel-2);margin-top:16px;}
.dcov .n b{color:var(--paper);font-weight:600;}
/* One quiet fact under the bar, with its own dismiss. */
.cov-note{display:flex;align-items:flex-start;gap:10px;margin:-6px 0 20px;font-family:var(--mono);font-size:11px;letter-spacing:.04em;line-height:1.5;color:var(--steel-2);}
.cov-note span{flex:1;min-width:0;}
.cov-note button{background:none;border:none;color:var(--steel);font-size:17px;line-height:1;padding:0 2px;margin-top:-2px;cursor:pointer;}
.cov-note button:active{color:var(--paper);}
.lift .sub .dot{display:inline-block;width:7px;height:7px;border-radius:50%;border:1.5px solid var(--steel);box-sizing:border-box;margin-right:6px;vertical-align:1px;}
.lift .sub .dot.on{background:var(--lume);border-color:var(--lume);}
.lift-wrap{position:relative;overflow:hidden;border-top:1px solid var(--hair-soft);}
.lift-wrap:first-of-type,.dcov + .lift-wrap,.cov-note + .lift-wrap,.prog + .lift-wrap{border-top:none;}
.lift-remove{position:absolute;inset:0 0 0 auto;width:104px;border:none;background:var(--red);
  color:#1a0d0a;font-family:var(--mono);font-weight:700;font-size:12px;letter-spacing:.14em;cursor:pointer;}
.lift{position:relative;display:flex;align-items:center;gap:14px;padding:15px 0;background:var(--ink);
  cursor:pointer;transform:translateX(0);transition:transform .22s ease;touch-action:pan-y;
  user-select:none;-webkit-user-select:none;}
.lift .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lift.swiped{transform:translateX(-104px);}
.lift .ic{width:38px;height:38px;flex:none;border-radius:10px;background:var(--panel);border:1px solid var(--hair);
  display:flex;align-items:center;justify-content:center;}
.lift .ic svg{width:22px;height:22px;}
.lift .ic img{width:22px;height:22px;opacity:1;filter:invert(78%) sepia(8%) saturate(280%) hue-rotate(169deg) brightness(102%);}
.lift .body{min-width:0;}
.lift .nm{font-size:17px;font-weight:600;}
.lift .sub{font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;color:var(--steel);margin-top:2px;}
.lift .right{margin-left:auto;display:flex;align-items:center;gap:11px;}
.lift .tgt{font-family:var(--mono);font-weight:600;font-size:16px;color:var(--paper);letter-spacing:.03em;white-space:nowrap;}
.lift .tgt .pr{font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--steel);margin-right:5px;}
.lift .tgt .x{color:var(--steel);}
.lift .first{font-family:var(--mono);letter-spacing:.14em;font-size:11.5px;color:var(--steel);}
.lift .chev{color:var(--faint2);font-size:17px;}
/* done = gold */
.lift.done .ic{background:rgba(var(--lume-rgb),.09);border-color:rgba(var(--lume-rgb),.24);}
.lift.done .ic img{opacity:1;filter:invert(48%) sepia(80%) saturate(1050%) hue-rotate(330deg) brightness(86%);}
.lift.done .tgt{color:var(--lume-text);}
.lift.done .tgt .x{color:rgba(var(--lume-rgb),.5);}
.lift.done .check{color:var(--lume-text);font-size:16px;}
/* logged (done, no PR) — neutral, no gold */
.lift.logged .tgt{color:var(--paper);}
.lift.logged .check{color:var(--steel-2);}
.lift.logged .sub{color:var(--steel);}
/* skipped (not logged this session) — muted target */
.lift.skipped .tgt{color:var(--steel);}
.lift.skipped .tgt .pr{color:var(--steel);}
/* file-session button dims until there's something to file */
.cta.off{opacity:.4;}
.addlift{display:flex;align-items:center;gap:10px;padding:20px 12px 6px;margin:0 -12px;width:calc(100% + 24px);
  background:none;border:none;text-align:left;cursor:pointer;
  font-family:var(--mono);letter-spacing:.16em;font-size:12px;color:var(--steel-2);}
.addlift:active{color:var(--paper);}

/* Muscle Coverage — shared readout (during a workout / at close-out / weekly summary). Ink data bars. */
.cov{margin:22px 0 2px;}
.cov-h{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.12em;color:var(--steel);margin-bottom:13px;}
.cov-row{display:flex;align-items:center;gap:10px;margin:9px 0;}
.cov-nm{flex:0 0 84px;font-family:var(--sans);font-size:13.5px;color:var(--paper);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cov-tr{flex:1;height:8px;border-radius:4px;background:rgba(var(--tint),.08);overflow:hidden;}
.cov-bf{display:block;height:100%;border-radius:4px;background:var(--paper);opacity:.82;transition:width .3s ease;}
.cov-pc{flex:0 0 34px;text-align:right;font-family:var(--mono);font-size:12px;color:var(--steel-2);font-variant-numeric:tabular-nums;}
.cov-foot{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--steel);margin-top:13px;}
/* the muscle-detail "your exercises" list reuses the coverage bars, but names need more room */
.cov.exlist .cov-nm{flex:0 0 138px;}
/* routine (sequence) editor — labeled blocks in a rotation; label is opaque (day / muscle / foo) */
#s-redit .scroll{padding:0 24px 20px;}
.redit-lede{font-family:var(--sans);font-size:var(--fs-body);line-height:1.5;color:var(--steel);margin:2px 0 22px;}
.redit-block{border:1px solid var(--hair-soft);border-radius:16px;background:var(--card);padding:14px 14px 12px;margin-bottom:14px;}
.redit-bhead{display:flex;align-items:center;gap:10px;}
.redit-idx{font-family:var(--mono);font-size:var(--fs-label);font-weight:700;color:var(--lume-text);flex:none;width:14px;}
.redit-label{flex:1;min-width:0;font-family:var(--sans);font-weight:700;font-size:var(--fs-name);color:var(--paper);background:none;border:none;border-bottom:1px solid transparent;padding:4px 0;}
.redit-label:focus{outline:none;border-bottom-color:var(--hair);}
.redit-bacts{display:flex;gap:4px;flex:none;}
/* Fold toggle: the lift count plus a chevron. The name field stays editable, so this is its own target. */
.redit-tog{display:flex;align-items:center;gap:6px;background:none;border:none;padding:4px 8px 2px 0;margin:2px 0 0 24px;cursor:pointer;color:var(--steel);}   /* under the name, aligned past the number */
.redit-count{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.06em;color:var(--steel-2);white-space:nowrap;}
.redit-chev{font-size:var(--fs-chev);line-height:1;}
.redit-block.folded{padding-bottom:12px;}
/* Move animation: the block slides to its new place (transform set by JS) and the moved one glows briefly. */
.redit-block{will-change:transform;transition:border-color .5s ease,box-shadow .5s ease;}
.redit-block.moved{border-color:var(--lume-text);box-shadow:0 0 0 1px rgba(var(--lume-rgb),.35);}
/* Lift menu entry points: ⋯ on an editor row and on a day-screen row. */
.redit-lacts{display:flex;align-items:center;gap:2px;flex:none;}
.redit-lm{background:none;border:none;color:var(--steel);font-size:var(--fs-icon);line-height:1;padding:4px 8px;cursor:pointer;}
/* Rename sheet */
.rn-input{display:block;width:100%;box-sizing:border-box;font-family:var(--sans);font-size:18px;font-weight:700;color:var(--paper);background:rgba(var(--tint),.05);border:1px solid var(--hair);border-radius:12px;padding:12px 14px;margin:6px 0 10px;}
.rn-input:focus{outline:none;border-color:var(--lume-text);}
.rn-use{margin-bottom:14px;}


.day-opt.off{opacity:.4;}
.redit-bacts button{width:30px;height:30px;border-radius:8px;border:1px solid var(--hair);background:none;color:var(--steel);font-size:var(--fs-chev);cursor:pointer;}
.redit-bacts .redit-del{color:var(--red);}
.redit-bacts button:disabled{opacity:.28;cursor:default;}
.redit-lifts{margin-top:12px;}
.redit-lift{display:flex;align-items:center;justify-content:space-between;padding:9px 2px;border-top:1px solid var(--hair-soft);}
.redit-ln{font-family:var(--sans);font-size:var(--fs-body);color:var(--paper);}
.redit-lx{background:none;border:none;color:var(--steel);font-size:var(--fs-chev);cursor:pointer;padding:4px 8px;}
.redit-addlift{margin-top:8px;background:none;border:none;color:var(--lume-text);font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;cursor:pointer;padding:7px 2px;}
.redit-addblock{width:100%;background:none;border:1px dashed var(--hair);border-radius:14px;color:var(--steel);font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.06em;padding:15px;cursor:pointer;margin-top:2px;}
.redit-empty{font-family:var(--sans);font-size:var(--fs-body);color:var(--steel);text-align:center;margin:16px 0;}
/* CSV import (Strong / Hevy): confirm sheet + manage-imports rows */
.imp-note{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.03em;color:var(--steel-2);background:rgba(var(--tint),.05);border:1px solid var(--hair-soft);border-radius:10px;padding:9px 12px;margin:0 0 14px;}
.imp-note.warn{color:var(--lume-text);border-color:rgba(var(--lume-rgb),.35);background:rgba(var(--lume-rgb),.08);}
.imp-unit{display:flex;align-items:center;gap:12px;margin:16px 0 0;}
.imp-ul{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.04em;color:var(--steel);}
.imp-useg{display:inline-flex;background:var(--panel-2);border-radius:9px;padding:3px;gap:2px;}
.imp-useg span{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel);padding:7px 15px;border-radius:7px;cursor:pointer;}
.imp-useg span.on{background:var(--panel);color:var(--paper);}
.imp-uhint{font-family:var(--sans);font-size:var(--fs-value);color:var(--steel);margin:8px 0 0;}
/* Specific enough to beat `.sheet > button:not(.cta){display:block}`, which was collapsing the checkbox to a line. */
.sheet > button.imp-sched[data-isched],.imp-sched{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;background:rgba(var(--tint),.04);border:1px solid var(--hair-soft);border-radius:13px;padding:14px;margin-top:14px;cursor:pointer;}
.imp-chk{flex:none;width:22px;height:22px;border-radius:7px;border:1.5px solid var(--hair);margin-top:1px;position:relative;}
.imp-sched.on .imp-chk{background:var(--lume);border-color:var(--lume-text);}
.imp-sched.on .imp-chk::after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--ink);font-size:var(--fs-value);font-weight:700;}
.imp-schl b{display:block;font-family:var(--sans);font-size:var(--fs-body);font-weight:700;color:var(--paper);}
.imp-schl small{font-family:var(--sans);font-size:var(--fs-value);color:var(--steel);line-height:1.4;}
.imp-uxlist{display:flex;flex-direction:column;gap:8px;margin:14px 0 6px;}
.imp-ux{display:flex;align-items:center;justify-content:space-between;width:100%;background:rgba(var(--tint),.04);border:1px solid var(--hair-soft);border-radius:12px;padding:13px 15px;cursor:pointer;font-family:var(--sans);font-size:var(--fs-body);color:var(--paper);}
.imp-uxc{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.08em;color:var(--lume-text);flex:none;}
.imp-rec{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding:12px 14px;border:1px solid var(--hair-soft);border-radius:13px;}
.imp-rt b{display:block;font-family:var(--sans);font-size:var(--fs-body);font-weight:700;color:var(--paper);}
.imp-rt span{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.03em;color:var(--steel);}
.imp-ra{display:flex;gap:8px;flex:none;}
.imp-ra button{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.04em;color:var(--steel-2);background:none;border:1px solid var(--hair);border-radius:9px;padding:8px 10px;cursor:pointer;}
.imp-ra .imp-del{color:var(--red);}
/* cold-muscle reference: neutral "commonly trained by" chips (encyclopedic, not a suggestion) */
.cold-ref{margin-top:26px;}
.cold-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.cold-list span{font-family:var(--sans);font-size:13px;color:var(--steel-2);background:rgba(var(--tint),.05);
  border:1px solid var(--hair-soft);border-radius:9px;padding:7px 11px;}

/* ---------------- STRIKE ---------------- */
/* Inverted strike layout: fixed header, scrolling log, pinned bottom dock.
   On a short window (e.g. a resized Mac window) the whole screen scrolls instead
   of squeezing the log to nothing; the log keeps a floor so a set always shows. */
#s-strike{overflow-y:auto;}
#s-strike .strike-log{min-height:120px;}
#s-strike .strike-top{flex:none;padding:0 24px 14px;border-bottom:1px solid var(--hair);}
.strike-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;}
.exit-top{background:none;border:none;color:var(--steel);font-family:var(--mono);font-size:13px;
  letter-spacing:.14em;cursor:pointer;padding:var(--top) 0 4px;}
.exit-top:active{color:var(--paper-dim);}
#s-strike .strike-log{padding:14px 24px 10px;}
.cmp-empty{font-family:var(--mono);font-size:12px;letter-spacing:.05em;color:var(--steel-2);
  text-align:center;padding:26px 0;}
.strike-dock{flex:none;padding:16px 24px calc(16px + var(--sab));
  border-top:1px solid var(--hair);background:var(--ink);}
.strike-dock .inputs{margin-bottom:20px;}
#s-strike h1{font-size:21px;font-weight:700;letter-spacing:-.01em;margin-bottom:11px;}
/* Fixed height, not min-height: a fallback glyph (the check in "beat it") has a taller line box and
   was growing the row, which pushed the divider below it down. Now nothing can move that line. */
.beat{display:flex;align-items:baseline;gap:8px;margin-bottom:16px;height:20px;}
.beat .rec{font-family:var(--mono);font-weight:600;font-size:16px;line-height:20px;color:var(--lume-text);letter-spacing:.02em;}
.beat .rec .k{font-size:11px;font-weight:700;letter-spacing:.12em;margin-right:5px;}
.beat .rec .x{color:rgba(var(--lume-rgb),.5);}
.beat .rec .rec-side{margin-left:9px;margin-right:0;}
.beat .rec.none{color:var(--steel);}
.beat .live{margin-left:auto;font-family:var(--mono);font-size:13px;line-height:20px;letter-spacing:.08em;text-align:right;white-space:nowrap;}
.beat .live.near{color:var(--steel-2);}
.beat .live.near b{color:var(--paper);}
.beat .live.win{color:var(--lume-text);font-weight:700;}
.beat .live.beat{color:var(--lume-text);font-weight:600;}   /* live "+X to beat last time" target */
.beat .live.warm{color:var(--lume-text);opacity:.7;font-weight:600;}
#s-strike .rule{margin:16px 0;}
.setrow{display:flex;align-items:center;gap:10px;margin-bottom:16px;}
.setrow .s{font-family:var(--mono);letter-spacing:.14em;font-size:13px;color:var(--steel-2);}
.rest{margin-left:auto;display:flex;align-items:center;gap:7px;border:1px solid var(--hair);border-radius:8px;
  padding:5px 10px;font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--steel-2);}
.rest .c{color:var(--steel);}
.rest .rest-tog,.rest .rest-t{background:none;border:none;padding:0;cursor:pointer;
  font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--steel-2);line-height:1;}
.rest .rest-tog{display:flex;align-items:center;}
.rest .rest-t{font-variant-numeric:tabular-nums;min-width:34px;text-align:right;}
.rest.is-on{border-color:var(--lume-dim);color:var(--lume-hi);}
.rest.is-on .c,.rest.is-on .rest-t{color:var(--lume-hi);}
.rest.is-running{border-color:var(--lume-text);background:rgba(var(--lume-rgb),.08);}
.rest.is-running .rest-t{color:var(--lume-hi);}

.segs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px;}
/* Tighter padding here so BOTH/L/R + BODYWEIGHT + WARMUP fit one row on a phone. */
.segs .seg span{padding-left:12px;padding-right:12px;}
/* WARMUP toggle: when on, a muted amber to signal "this set won't count." */
.seg span[data-warmup].on{background:rgba(var(--lume-rgb),.14);color:var(--lume-text);}
.seg{display:flex;border:1px solid var(--hair);border-radius:10px;overflow:hidden;}
.seg span{font-family:var(--mono);letter-spacing:.08em;font-size:var(--fs-value);color:var(--steel-2);padding:9px 15px;cursor:pointer;}
.seg span.on{background:rgba(var(--tint),.06);color:var(--paper);}
.inputs{display:flex;margin-bottom:20px;}
/* Inset each field's content so the gap BETWEEN the two −/+ pairs (28px) is
   double the gap WITHIN a pair (14px); the pairs read as two groups. */
/* Fields reach the full width (same as STRIKE SET); the group gap sits only on the
   inner side of each field, so the two −/+ pairs still read as two groups. */
.fld{flex:1;display:flex;flex-direction:column;align-items:center;gap:14px;}
.fld:not(.divl){padding-right:16px;}
.fld.divl{border-left:1px solid var(--hair-soft);padding-left:16px;}
.val{display:flex;align-items:baseline;gap:6px;user-select:none;}
.val .num{font-family:var(--mono);font-weight:800;font-size:50px;line-height:1;color:var(--paper);
  letter-spacing:-.02em;border-bottom:1.5px dotted var(--line-2);padding-bottom:2px;cursor:ns-resize;min-width:1.4em;text-align:center;}
.val .u{font-size:16px;color:var(--steel-2);font-weight:600;}
.val.gold .num{color:var(--lume-text);border-bottom-color:rgba(var(--lume-rgb),.45);}
.steps{align-self:stretch;display:flex;gap:14px;padding:0;}
.steps button{flex:1;height:52px;background:var(--panel);border:1px solid var(--hair);border-radius:14px;
  color:var(--paper);font-size:28px;font-weight:300;cursor:pointer;transition:background .1s ease;font-family:var(--mono);}
.steps button:active{background:var(--panel-2);}
.strike{width:100%;background:var(--lume);color:var(--on-lume);border:none;border-radius:15px;padding:19px;
  font-family:var(--mono);font-weight:700;font-size:16px;letter-spacing:.12em;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:9px;transition:transform .1s ease,box-shadow .2s ease;}
.strike:active{transform:scale(.985);}
.strike.win{box-shadow:0 0 0 1px rgba(var(--lume-rgb),.5),0 10px 30px rgba(var(--lume-rgb),.28);letter-spacing:.09em;}
/* --- strike flourish (ported from the shipping app) — the button is gold, so the
   disc fills DARK and a gold check draws on it, then the button drops like a bar --- */
.strike .strike-tick{display:inline-flex;align-items:center;justify-content:center;
  width:20px;height:20px;border-radius:50%;border:2px solid var(--on-lume);flex:none;}
.strike .strike-tick svg{width:11px;height:11px;opacity:0;stroke:var(--lume);}
.strike.is-striking{pointer-events:none;}
.strike.is-striking .strike-tick{background:var(--on-lume);border-color:var(--on-lume);
  transition:background .14s ease,border-color .14s ease;}
.strike.is-striking .strike-tick svg{opacity:1;}
.strike.is-striking .strike-tick svg path{stroke-dasharray:16;stroke-dashoffset:16;
  animation:strikeCheck .24s ease .12s forwards;}
@keyframes strikeCheck{to{stroke-dashoffset:0;}}
.strike.is-dropping{animation:strikeDrop .26s cubic-bezier(.3,.9,.3,1) .4s both;}
@keyframes strikeDrop{0%{transform:translateY(0) scale(1);}38%{transform:translateY(-3px) scale(1.015);}
  60%{transform:translateY(5px) scale(.985);}100%{transform:translateY(0) scale(1);}}
/* the completed row stamps in as it files */
.crow-stamp{animation:crowStamp .32s cubic-bezier(.2,.7,.2,1);}
@keyframes crowStamp{0%{opacity:0;transform:translateY(-10px) scale(.97);}
  60%{transform:translateY(0) scale(1.01);}100%{opacity:1;transform:none;}}
.exit{text-align:center;font-family:var(--mono);letter-spacing:.14em;font-size:12px;color:var(--steel-2);
  margin:16px 0 6px;cursor:pointer;}
.cmp{margin-top:8px;}
.cmp .lab{font-family:var(--mono);letter-spacing:.2em;font-size:11px;color:var(--steel);margin-bottom:6px;}
.crow{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--hair-soft);}
.crow .si{font-family:var(--mono);letter-spacing:.1em;font-size:12px;color:var(--steel);}
.crow .rs{font-family:var(--mono);font-weight:600;font-size:16px;color:var(--paper);}
.crow .rs .x{color:var(--steel);}
.crow.pr .rs{color:var(--lume-text);}
.crow .miniseal{width:22px;height:22px;}

/* A warmup set: a small amber tag, and the whole row reads dimmer (it isn't a working set). */

.crow.warm{opacity:.62;}
.crow.warm .rs{color:var(--steel);}
.crow .acts{margin-left:auto;display:flex;gap:8px;}
.crow-btn{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.08em;cursor:pointer;
  border-radius:8px;padding:7px 12px;line-height:1;border:1px solid var(--hair);background:var(--panel);}

.crow-del{color:var(--red);border-color:rgba(207,106,85,.4);background:rgba(207,106,85,.08);}
.crow-del:active{background:rgba(207,106,85,.18);}

/* Scannable set-list grid — shared by the strike log + session detail. Columns line up:
   set# · marker (PR = weight-in-circle seal / warm-up = gray W) · weight · × · reps · L/R/BW · ⋯ */
.setline{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-top:1px solid var(--hair-soft);}
.setline.warm{opacity:.62;}
.sl-n{flex:none;width:46px;font-family:var(--mono);font-size:var(--fs-label);font-weight:700;letter-spacing:.06em;color:var(--steel);}
.sl-mark{flex:none;width:22px;display:flex;align-items:center;justify-content:center;height:20px;}
.sl-mark .miniseal{width:20px;height:20px;}
.sl-warm{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;
  border:1px solid var(--hair);color:var(--steel-2);font-family:var(--mono);font-size:var(--fs-label);font-weight:700;}
.sl-w{flex:none;width:72px;text-align:right;font-family:var(--mono);font-weight:600;font-size:var(--fs-data);color:var(--paper);white-space:nowrap;}
.sl-r{flex:none;width:66px;text-align:left;font-family:var(--mono);font-weight:600;font-size:var(--fs-data);color:var(--paper);white-space:nowrap;}
.sl-w .u,.sl-r .u{font-size:var(--fs-label);font-weight:600;color:var(--steel);margin-left:3px;}
.sl-tag{flex:none;width:18px;text-align:center;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.06em;color:var(--steel-2);}
.setline.pr .sl-w,.setline.pr .sl-r{color:var(--lume-text);}
/* A record that day that has since been beaten: the seal stays, muted; the numbers read plain. */
.setline.pr.old .sl-w,.setline.pr.old .sl-r{color:var(--paper);}
.setline.pr.old .sl-mark{opacity:.35;}
.sd-rec{display:block;margin-top:3px;font-family:var(--mono);font-size:var(--fs-label);font-weight:700;letter-spacing:.12em;color:var(--lume-text);}
.sd-rec.old{color:var(--steel);font-weight:600;}
.setline.warm .sl-w,.setline.warm .sl-r{color:var(--steel);}
.sl-menu{flex:none;background:none;border:none;color:var(--steel-2);font-size:var(--fs-icon);line-height:1;cursor:pointer;padding:2px;}
.sl-menu:active{color:var(--paper);}

/* ---------------- Set editor + destructive confirm ---------------- */
.sheet.seteditor{padding:16px 16px 24px;}
.se-fields{display:flex;gap:10px;margin:6px 0 16px;}
.se-fld{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:6px;background:var(--ink);
  border:1px solid var(--hair);border-radius:14px;padding:14px 16px;cursor:pointer;}
.se-fld:active{border-color:var(--steel);}
.se-fld[disabled]{opacity:.5;pointer-events:none;}
.se-k{font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--steel);}
.se-v{font-family:var(--mono);font-size:30px;font-weight:600;color:var(--paper);font-variant-numeric:tabular-nums;line-height:1;}
.se-u{font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--steel);}

.sheet.histsets{padding:18px 18px 24px;}
.hs-hint{font-family:var(--sans);font-size:13px;line-height:1.45;color:var(--steel);margin:2px 0 16px;}
.hs-sets{display:flex;flex-direction:column;margin-bottom:16px;}
.hs-set{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid var(--hair-soft);}
.hs-set:first-child{border-top:none;}
.hs-set-v{font-family:var(--mono);font-weight:600;font-size:16px;color:var(--paper);}

/* ---------------- STRIKE MOMENT ---------------- */
#moment{position:absolute;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;
  justify-content:center;text-align:center;padding:40px 30px;cursor:pointer;
  background:radial-gradient(120% 90% at 50% 42%,rgba(var(--scrim),.86),rgba(var(--scrim),.98));
  opacity:0;pointer-events:none;transition:opacity .3s ease;}
#moment.show{opacity:1;pointer-events:auto;}
.m-stage{position:relative;width:170px;height:170px;display:flex;align-items:center;justify-content:center;margin-bottom:8px;}
#moment.play .m-stage{animation:shake 1.4s .1s both;}
.m-flash{position:absolute;width:230px;height:230px;border-radius:50%;
  background:radial-gradient(circle,rgba(var(--lume-hi-rgb),.55),rgba(var(--lume-hi-rgb),0) 62%);opacity:0;}
.m-ring{position:absolute;width:150px;height:150px;border-radius:50%;border:2px solid var(--lume-hi);opacity:0;}
.m-seal{width:132px;height:132px;position:relative;z-index:3;opacity:0;
  filter:drop-shadow(0 6px 18px rgba(var(--lume-rgb),.25));}
#moment.play .m-seal{animation:stamp .7s cubic-bezier(.2,.9,.2,1.4) both;}
#moment.play .m-flash{animation:flash .8s both;}
#moment.play .m-ring{animation:ring .9s .18s both;}
#moment.play .m-ring.r2{animation:ring2 1.1s .2s both;}
.m-txt>*{opacity:0;}
#moment.play .m-kicker{animation:rise .5s .34s both;}
#moment.play .m-lift{animation:rise .5s .42s both;}
#moment.play .m-num{animation:rise .5s .5s both;}
#moment.play .m-delta{animation:rise .5s .58s both;}
#moment.play .m-meta{animation:rise .5s .66s both;}

.m-kicker{font-family:var(--mono);letter-spacing:.34em;font-size:13px;color:var(--lume-text);margin-top:22px;}
.m-lift{font-size:20px;font-weight:700;color:var(--paper);margin-top:12px;}
.m-num{font-family:var(--mono);font-weight:800;font-size:44px;color:var(--lume-hi);letter-spacing:-.01em;margin-top:10px;}
.m-num .x{color:rgba(var(--lume-hi-rgb),.5);}
.m-delta{font-family:var(--mono);font-size:13.5px;letter-spacing:.06em;color:var(--steel-2);margin-top:8px;}
.m-delta b{color:var(--paper);}
.m-meta{font-family:var(--mono);letter-spacing:.18em;font-size:11px;color:var(--steel);margin-top:18px;}

@keyframes stamp{
  0%{opacity:0;transform:scale(2.7) rotate(-13deg);}
  55%{opacity:1;transform:scale(.9) rotate(0);}
  72%{transform:scale(1.06);}
  100%{opacity:1;transform:scale(1);}
}
@keyframes ring{0%{opacity:0;transform:scale(.35);}30%{opacity:.7;}100%{opacity:0;transform:scale(2.3);}}
@keyframes ring2{0%{opacity:0;transform:scale(.35);}30%{opacity:.4;}100%{opacity:0;transform:scale(2.9);}}
@keyframes flash{0%{opacity:0;}18%{opacity:1;}100%{opacity:0;}}
@keyframes shake{0%,8%{transform:translate(0,0);}12%{transform:translate(-5px,2px);}
  16%{transform:translate(4px,-2px);}20%{transform:translate(-3px,1px);}24%{transform:translate(2px,-1px);}
  30%,100%{transform:translate(0,0);}}
@keyframes rise{0%{opacity:0;transform:translateY(10px);}100%{opacity:1;transform:translateY(0);}}

/* ---------------- Strike title row + ⋯ menu ---------------- */
.h1row{display:flex;align-items:center;gap:12px;margin-bottom:11px;}
#s-strike .h1row h1{margin-bottom:0;}
.h1row .exic{width:34px;height:34px;flex:none;border-radius:9px;background:var(--panel);border:1px solid var(--hair);
  display:flex;align-items:center;justify-content:center;}
.h1row .exic img{width:20px;height:20px;opacity:1;filter:invert(78%) sepia(8%) saturate(280%) hue-rotate(169deg) brightness(102%);}
.dots{margin-left:auto;background:none;border:none;color:var(--steel-2);font-size:24px;line-height:1;
  cursor:pointer;padding:2px 8px;}
/* strike header ⋯ — neutralize the week-strip .dots margin so it centers with the icon + title */
.h1row .dots{margin-bottom:0;display:flex;align-items:center;justify-content:center;height:34px;}

/* ---------------- Bottom sheet + icon picker ---------------- */
.sheet-backdrop{position:absolute;inset:0;z-index:60;background:rgba(0,0,0,.55);opacity:0;pointer-events:none;
  transition:opacity .2s ease;display:flex;flex-direction:column;justify-content:flex-end;}
.sheet-backdrop.show{opacity:1;pointer-events:auto;}
.sheet{background:var(--ink-2);border-top:1px solid var(--hair);border-radius:20px 20px 0 0;padding:10px 10px 24px;
  transform:translateY(100%);transition:transform .26s cubic-bezier(.2,.8,.2,1);}
.sheet-backdrop.show .sheet{transform:translateY(0);}
.sheet>button:not(.cta){display:block;width:100%;text-align:left;background:none;border:none;color:var(--paper);
  font-family:var(--sans);font-size:var(--fs-name);padding:16px 14px;border-radius:12px;cursor:pointer;}
.sheet>button:not(.cta):active{background:rgba(var(--tint),.05);}
.sheet>button.danger{color:var(--red);}
.sheet>button.cancel{text-align:center;color:var(--steel-2);font-family:var(--mono);font-size:var(--fs-value);
  letter-spacing:.14em;margin-top:2px;}
.sheet.picker{padding:18px 14px 24px;}
.picker-h{font-family:var(--mono);letter-spacing:.2em;font-size:var(--fs-label);color:var(--steel);margin:2px 4px 14px;}
.picker-hrow{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.picker-edit{background:none;border:none;font-family:var(--mono);letter-spacing:.06em;font-size:var(--fs-label);color:var(--lume-text);cursor:pointer;padding:2px 0;flex:none;}
.picker-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;max-height:44vh;overflow-y:auto;margin-bottom:8px;}
.picktile{aspect-ratio:1;border:1px solid var(--hair);border-radius:12px;background:var(--panel);padding:0;
  display:flex;align-items:center;justify-content:center;cursor:pointer;}
.picktile img{width:26px;height:26px;opacity:.92;filter:invert(78%) sepia(6%) saturate(240%) hue-rotate(169deg) brightness(96%);}
.picktile.on{border-color:var(--lume-text);background:rgba(var(--lume-rgb),.1);}
.picktile.on img{opacity:1;filter:invert(48%) sepia(80%) saturate(1050%) hue-rotate(330deg) brightness(86%);}

/* ---------------- Day picker ---------------- */
.sheet.daypick{padding:18px 12px 24px;}
.sheet button.day-opt{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:none;
  border-radius:12px;padding:16px 14px;cursor:pointer;color:var(--paper);}
.day-opt:active{background:rgba(var(--tint),.05);}
.day-opt .do-nm{font-size:var(--fs-name);font-weight:600;letter-spacing:-.01em;}
.day-opt .do-sub{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.05em;color:var(--steel);margin-left:auto;}
.day-opt.on{background:rgba(var(--lume-rgb),.08);box-shadow:inset 0 0 0 1px rgba(var(--lume-rgb),.35);}
.day-opt.on .do-nm{color:var(--lume-hi);}
.day-opt .do-check{color:var(--lume-text);font-size:16px;margin-left:12px;}

/* ---------------- History search ---------------- */
.lsearch{display:flex;align-items:center;gap:10px;margin:18px 0 4px;background:var(--ink-2);
  border:1px solid var(--hair);border-radius:12px;padding:0 12px;}
.lsearch .hs-mag{color:var(--steel-2);font-size:var(--fs-icon);line-height:1;}
.lsearch input{flex:1;min-width:0;background:none;border:none;color:var(--paper);
  font-family:var(--sans);font-size:16px;padding:13px 0;}
.lsearch input:focus{outline:none;}
.lsearch input::placeholder{color:var(--steel);}
.lsearch:focus-within{border-color:var(--steel);}
.hs-clear{background:none;border:none;color:var(--steel);font-size:var(--fs-icon);line-height:1;cursor:pointer;padding:0 2px;}
.stub{font-family:var(--mono);font-size:13px;letter-spacing:.04em;color:var(--steel);padding:28px 2px;text-align:center;}

/* ---------------- Close-out sheet ---------------- */
.sheet.closeout{padding:18px 18px 24px;}
.co-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.co-x{background:none;border:none;color:var(--steel);font-size:var(--fs-icon);line-height:1;cursor:pointer;padding:0 4px;}
.co-meta{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.06em;color:var(--lume-text);margin-bottom:16px;}
/* close-out scoreboard: iron moved / reps / sets vs last same-day session */
.co-moved{display:flex;gap:8px;margin-bottom:12px;}
.co-moved .cm-stat{flex:1;background:var(--panel);border:1px solid var(--hair);border-radius:10px;padding:12px 10px;
  display:flex;flex-direction:column;align-items:flex-start;gap:2px;}
.co-moved .cm-stat b{font-family:var(--sans);font-size:var(--fs-title);font-weight:700;line-height:1;font-variant-numeric:tabular-nums;}
.co-moved .cm-stat span{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.08em;color:var(--steel-2);text-transform:uppercase;}
.co-moved .cm-stat em{font-family:var(--mono);font-size:var(--fs-label);font-weight:600;font-style:normal;margin-top:3px;}
.co-moved .cm-stat em.up{color:var(--lume-text);}
.co-moved .cm-stat em.dn,.co-moved .cm-stat em.ev{color:var(--steel);}
.co-verdict{font-size:var(--fs-value);line-height:1.5;color:var(--paper-dim);margin:0 0 20px;}
.co-q{font-size:var(--fs-title);font-weight:700;color:var(--paper);letter-spacing:-.01em;margin-bottom:14px;}
.co-feel{width:100%;margin-bottom:14px;}
.co-feel span{flex:1;text-align:center;padding:12px 0;font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.06em;
  color:var(--steel-2);cursor:pointer;border-right:1px solid var(--hair);}
.co-feel span:last-child{border-right:none;}
.co-feel span.on{background:rgba(var(--tint),.07);color:var(--paper);}
.co-note{width:100%;background:var(--ink);border:1px solid var(--hair);border-radius:12px;padding:14px;
  color:var(--paper);font-family:var(--sans);font-size:16px;margin-bottom:16px;}
.co-note::placeholder{color:var(--steel);}
.co-note:focus{outline:none;border-color:var(--steel);}
.co-file{width:100%;}

/* ---------------- Number pad ---------------- */
.sheet.numpad{padding:16px 16px 24px;}
.np-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.np-lab{font-family:var(--mono);font-size:12px;letter-spacing:.18em;color:var(--steel);}
.np-disp{display:flex;align-items:baseline;justify-content:center;gap:8px;padding:10px 0 18px;}
.np-val{font-family:var(--mono);font-size:52px;font-weight:600;line-height:1;color:var(--steel-2);
  font-variant-numeric:tabular-nums;letter-spacing:-.02em;}
.np-val.typed{color:var(--lume-hi);}
.np-u{font-family:var(--mono);font-size:14px;letter-spacing:.08em;color:var(--steel);}
.np-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px;}
.np-k{height:60px;border:1px solid var(--hair);border-radius:14px;background:var(--panel);
  color:var(--paper);font-family:var(--mono);font-size:24px;font-weight:500;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:background .08s ease;}
.np-k:active{background:var(--panel-2);}
.np-k.np-alt{background:none;border-color:var(--hair-soft);color:var(--steel-2);font-size:22px;}
.np-k.np-blank{background:none;border:none;pointer-events:none;}
.np-set{width:100%;}

/* ---------------- Bottom tab bar ---------------- */
.tabbar{display:flex;border-top:1px solid var(--hair-soft);background:var(--ink);
  padding:9px 0 calc(8px + var(--sab));}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;background:none;border:none;
  color:var(--steel);cursor:pointer;padding:2px 0;transition:color .15s ease;}
.tab svg{width:22px;height:22px;stroke:currentColor;stroke-width:1.5;fill:none;}
.tab svg#body-ic{stroke:none;}.tab svg#body-ic path{fill:currentColor;stroke:none;}
.tab span{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.1em;}
.tab.on{color:var(--paper);}
.tab:active{color:var(--paper-dim);}

/* ---------------- Records / History ---------------- */
#s-records .scroll,#s-history .scroll{padding:0 24px 24px;}
.page-head{padding:var(--top) 0 12px;display:flex;align-items:baseline;justify-content:space-between;}
.page-head h1{font-size:var(--fs-page);font-weight:800;letter-spacing:-.01em;}
.ph-scope{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.1em;color:var(--steel);}
.stub{color:var(--steel-2);font-size:16px;line-height:1.5;margin-top:14px;max-width:34ch;}

/* routine card (accordion: collapsed → expand) */
.rec-card{border:1px solid var(--hair-soft);border-radius:18px;padding:0;background:var(--card);margin-top:16px;overflow:hidden;}
.rec-card.open{border-color:var(--hair);}
.rc-head{display:flex;flex-direction:column;gap:8px;width:100%;background:none;border:none;color:inherit;
  text-align:left;cursor:pointer;padding:18px 18px 14px;}
.rc-title{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.rc-title h2{font-size:var(--fs-title);font-weight:700;letter-spacing:-.01em;}
/* status is one word — legible mid-scroll; the number lives in the detail view */
.rc-status{display:flex;align-items:center;gap:8px;flex:none;font-family:var(--mono);font-weight:600;
  font-size:var(--fs-label);letter-spacing:.14em;color:var(--steel);text-transform:uppercase;}

.rc-chev{flex:none;color:var(--faint2);font-size:var(--fs-chev);transition:transform .2s ease;}
.rec-card.open .rc-chev{transform:rotate(180deg);}
.strip{padding:0 18px 16px;}
.wbars{display:flex;align-items:flex-end;gap:4px;height:40px;}
/* History reads in ink at varying opacity; only THIS WEEK is wax, so the eye lands on the live bar. */
.wb{flex:1;border-radius:2px;background:var(--wb-empty);height:16%;}
.wb.g1{background:var(--paper);opacity:.6;height:46%;}
.wb.g2{background:var(--paper);opacity:.78;height:72%;}
.wb.g3{background:var(--paper);opacity:.94;height:100%;}
.wb.now,.wb.now.g1,.wb.now.g2,.wb.now.g3{background:var(--lume);opacity:1;min-height:30%;}
.wlabel{display:flex;justify-content:space-between;margin-top:14px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--steel);}
.wlabel .now{color:var(--lume-text);}
.rc-body{padding:0 18px 8px;}
.rc-div{height:1px;background:var(--hair-soft);margin:2px 0 4px;}
.prr,.rec-flat .prr{display:grid;width:100%;background:none;border:none;color:inherit;text-align:left;cursor:pointer;
  padding:16px 0;grid-template-columns:1fr auto auto;grid-template-areas:"name delta chev" "meta now chev";
  column-gap:14px;row-gap:9px;align-items:baseline;}
.prr+.prr{border-top:1px solid var(--hair-soft);}
.prr:active{opacity:.6;}
/* Tier 1 — the scannable name, alone on its line */
.prr-name{grid-area:name;min-width:0;font-size:var(--fs-name);font-weight:600;line-height:1.25;letter-spacing:-.005em;}
.prr.never .prr-name{color:var(--steel-2);font-weight:500;}
/* Tier 2 — the delta, size = magnitude */
.prr-delta{grid-area:delta;justify-self:end;text-align:right;white-space:nowrap;
  font-family:var(--mono);font-weight:800;line-height:1;letter-spacing:-.01em;}
.prr-delta .u{font-weight:600;font-size:.5em;letter-spacing:.04em;margin-left:2px;}
.prr-delta .d2{display:block;font-size:12px;font-weight:700;color:var(--lume-text);letter-spacing:.02em;margin-top:5px;}
.prr-delta.held{font-size:15px;font-weight:600;color:var(--steel-2);letter-spacing:.04em;}
.d-xl{font-size:29px;color:var(--lume-hi);}
.d-l{font-size:24px;color:var(--lume-text);}
.d-m{font-size:21px;color:var(--lume-text);}
.d-s{font-size:var(--fs-chev);color:var(--lume-dim);}
/* Tier 3 — muted meta line: highlight tag pops, range/now recede */
.prr-meta{grid-area:meta;display:flex;flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;}
.prr-meta .rng{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.05em;color:var(--faint);white-space:nowrap;}
.prr-now{grid-area:now;justify-self:end;white-space:nowrap;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.05em;color:var(--faint);}
.prr .jump,.prr .streak,.prr .kind{display:inline-block;font-family:var(--mono);font-size:9px;font-weight:700;
  letter-spacing:.1em;border-radius:4px;padding:3px 6px;vertical-align:middle;white-space:nowrap;}
.prr .jump{color:var(--on-lume);background:var(--lume-hi);}
.prr .streak{color:var(--lume-text);border:1px solid rgba(var(--lume-rgb),.5);}
.prr .kind{color:var(--steel-2);border:1px solid var(--hair);}
.prr-chev{grid-area:chev;align-self:center;color:var(--steel);font-size:var(--fs-chev);}
.rec-flat{margin-top:6px;}
.rec-flat .prr{padding:16px 2px;border-top:1px solid var(--hair-soft);}
.stale{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;text-align:left;cursor:pointer;
  margin-top:6px;padding:14px 0 4px;border-top:1px solid var(--hair-soft);}
.stale .k{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.14em;color:var(--blue);}
.stale .t{font-size:13.5px;color:var(--steel-2);}
.stale .t b{color:var(--paper-dim);font-weight:600;}
.stale .push{margin-left:auto;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:var(--faint);flex:none;}

/* lift detail */
.d-wrap{padding:0 24px calc(28px + var(--sab));}
/* more breathing room around the line under the BEST/LAST/SESSIONS stats */
#s-detail .rule{margin:18px 0 2px;}
/* .d-back styled with .backnav (shared uniform back control) */
.d-head{padding-bottom:16px;}
.d-title{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin:6px 0 0;}
.d-title h1{font-size:var(--fs-page);font-weight:800;letter-spacing:-.01em;}
.d-grp{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.14em;color:var(--steel);flex:none;}
.d-stats{display:flex;gap:8px;}
.d-stat{flex:1;}
.d-stat .k{display:block;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.12em;color:var(--steel);margin-bottom:6px;}
.d-stat b{font-family:var(--mono);font-weight:800;font-size:var(--fs-page);line-height:1;letter-spacing:-.01em;}
.d-stat b.gold{color:var(--lume-hero);}
.d-stat .u{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel);margin-left:4px;}
.d-block{margin-top:22px;}
.d-bh{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px;}
.lbl{font-family:var(--mono);font-size:var(--fs-label);font-weight:600;letter-spacing:.18em;color:var(--steel);}
.lbl.blue{color:var(--blue);}
.d-trend{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.06em;color:var(--faint);}
.d-prog{display:flex;align-items:flex-end;gap:6px;height:120px;}
.pbar{flex:1;background:var(--paper);opacity:.24;border-radius:4px 4px 1px 1px;min-height:6px;}
.pbar.pr{background:var(--lume);opacity:1;}
.d-ins{margin-top:24px;}
.ins-h{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:var(--fs-label);font-weight:700;letter-spacing:.18em;color:var(--lume-text);margin-bottom:24px;}
.ins-h .miniseal{width:15px;height:15px;}
.ins-row{display:flex;gap:14px;padding:16px 0;border-top:1px solid var(--hair-soft);}
.ins-k{flex:none;width:90px;font-family:var(--mono);font-size:var(--fs-label);font-weight:700;letter-spacing:.08em;color:var(--lume-text);padding-top:3px;line-height:1.3;overflow-wrap:break-word;;text-transform:uppercase}
.ins-k.hot{color:var(--lume-hi);}
.ins-k.ps-lbl{letter-spacing:.01em;color:var(--steel-2);}   /* sentence case, not a caps tag; all states read the same muted gray */
.ins-row p{flex:1;font-size:var(--fs-body);line-height:1.4;color:var(--paper);}
.d-rec{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:14px 0;border-top:1px solid var(--hair-soft);
  width:100%;background:none;border-left:none;border-right:none;border-bottom:none;text-align:left;cursor:pointer;}
button.d-rec:active .rd{color:var(--paper-dim);}
.d-block>.lbl{margin-bottom:24px;}   /* clear the RECENT label so its rule doesn't hug it */
.d-rec .rs{font-family:var(--mono);font-size:var(--fs-data);letter-spacing:.02em;color:var(--paper-dim);}
.d-rec .rd{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.06em;color:var(--steel);flex:none;}
.d-first{color:var(--steel-2);font-size:16px;line-height:1.5;margin-top:8px;}

/* consistency + volume */

.rb-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px;}
.rb-meta{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.08em;color:var(--steel);}
.heat{display:grid;grid-template-rows:repeat(7,1fr);grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;}




/* ---------------- History rhythm band ---------------- */
.statline{display:flex;flex-wrap:wrap;align-items:baseline;font-family:var(--mono);font-size:12.5px;letter-spacing:.04em;
  color:var(--steel-2);margin:16px 0 4px;padding:12px 0;border-top:1px solid var(--hair-soft);border-bottom:1px solid var(--hair-soft);}
.statline span{white-space:nowrap;}
.statline span:not(:last-child)::after{content:"·";margin:0 9px;color:var(--steel);}
.statline b{color:var(--paper);font-weight:700;}
.tw-hd{margin-top:24px;}
/* Patterns | Sessions tab switch */
.histtab{width:100%;margin:16px 0 4px;}
.histtab span{flex:1;text-align:center;padding:12px 0;font-family:var(--sans);font-size:var(--fs-body);font-weight:600;
  letter-spacing:.01em;color:var(--steel-2);cursor:pointer;border-right:1px solid var(--hair);text-transform:none;}
.histtab span:last-child{border-right:none;}
.histtab span.on{background:rgba(var(--tint),.07);color:var(--paper);}

/* THE WEEK — the hero chart of the Patterns tab */
.theweek{margin-top:16px;}
.tw-row{display:grid;grid-template-columns:36px repeat(7,minmax(0,1fr));gap:8px;align-items:center;}
.tw-lbl{font-family:var(--mono);font-size:var(--fs-label);font-weight:700;letter-spacing:.1em;color:var(--steel);}
.twc{display:flex;align-items:center;justify-content:center;}
.tw-head .twc{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.06em;color:var(--steel-2);padding-bottom:4px;}
.tw-head .twc.rest{margin-left:0;color:var(--steel);opacity:.5;border:none;border-radius:0;padding:0 0 4px;gap:0;}
.tw-show{height:132px;}   /* taller, so day-to-day differences read at a glance */
.tw-show .twc{height:100%;align-items:flex-end;}
/* the week reads in ink; seals are the only wax on the screen */
.tw-bar{width:66%;background:var(--paper);border-radius:4px 4px 1px 1px;min-height:6px;opacity:.82;}
.tw-rest{width:6px;height:6px;border-radius:50%;background:var(--hair);}
.tw-feel{margin-top:12px;}
.tw-ft{width:66%;height:14px;border-radius:3px;background:var(--steel);}
.tw-ft.f-easy{background:var(--steel);opacity:.5;}
.tw-ft.f-solid{background:var(--steel);}
.tw-ft.f-grind{background:var(--paper-dim);}
.tw-ft.f-rough{background:var(--paper);}
.tw-ft.f-rest{background:none;box-shadow:inset 0 0 0 1px var(--hair);}
.tw-prs{margin-top:14px;min-height:16px;}
/* PR row: a gold fill sized to the share of that day's sessions that set a record (a rate) */
.tw-prtrack{width:66%;height:14px;border-radius:3px;background:rgba(var(--tint),.09);overflow:hidden;display:flex;}
.tw-prfill{height:100%;background:var(--lume);border-radius:3px;min-width:4px;}
.tw-nopr{width:11px;height:2px;border-radius:1px;background:var(--hair);}
.obs-block{margin-top:12px;}
.obs{display:flex;gap:11px;padding:14px 0;border-top:1px solid var(--hair-soft);}
.obs:first-child{border-top:none;}
.obs-pip{flex:none;width:6px;height:6px;border-radius:50%;background:var(--lume);margin-top:8px;
  box-shadow:0 0 0 3px rgba(var(--lume-rgb),.14);}
.obs p{font-size:var(--fs-body);line-height:1.45;color:var(--steel-2);}
.obs b{color:var(--paper);font-weight:600;}

/* ---- compare control (shared: Patterns / Body / muscle detail): a switch enables it, then
   a big-target pager reveals. Every control is >= 44pt for thumbs. ---- */
.cmp2{border:1px solid var(--hair);border-radius:14px;background:var(--card);overflow:hidden;width:100%;}
#s-history .cmp2{margin-top:14px;}
.cmp2.on{border-color:var(--lume-text);background:rgba(var(--lume-rgb),.06);}
.cmp2-lock{border-style:dashed;}
.cmp2-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:48px;
  padding:8px 15px;background:none;border:none;text-align:left;cursor:pointer;color:inherit;font:inherit;}
.cmp2-txt{min-width:0;}
.cmp2-title{font-family:var(--sans);font-size:var(--fs-body);font-weight:600;color:var(--paper);display:block;}
.cmp2-sub{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.03em;color:var(--steel);display:block;margin-top:3px;}
.cmp2-sub.gold{color:var(--lume-text);}
.cmp2-unlock{font-family:var(--mono);font-size:11px;letter-spacing:.05em;color:var(--lume-text);display:inline-flex;align-items:center;gap:5px;white-space:nowrap;}
/* iOS-style switch (compact) */
.tgl{width:44px;height:26px;border-radius:13px;background:var(--hair);position:relative;flex:none;transition:background .2s;}
.tgl.on{background:var(--lume);}
.tgl i{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;
  box-shadow:0 1px 2px rgba(0,0,0,.35);transition:left .2s;}
.tgl.on i{left:21px;}
/* revealed pager: bare chevrons (no button chrome), each a 44pt+ tap target */
.cmp2-pager{display:flex;align-items:center;gap:6px;padding:0 8px 11px;}
.pg-btn{flex:none;min-width:48px;min-height:44px;display:flex;align-items:center;justify-content:center;
  background:none;border:none;color:var(--lume-text);font-size:24px;line-height:1;cursor:pointer;padding:0;}
.pg-btn[disabled]{color:var(--faint);opacity:.4;cursor:default;}
.pg-win{flex:1;min-height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;}
.pg-win b{color:var(--paper);font-family:var(--mono);font-size:12.5px;}
.pg-win span{font-family:var(--mono);font-size:9px;letter-spacing:.1em;color:var(--faint);}

/* ghost outline of the prior window behind a weekday bar (scaled to the cell, so a taller
   prior bar shows above a shorter current one) */
.tw-show .twc{position:relative;}

/* compare: two bars per day, prior (dim) vs this window (bright) */
.tw-pair{display:flex;align-items:flex-end;justify-content:center;gap:5px;width:100%;height:100%;}
.tw-pair .tw-bar{width:40%;min-height:4px;}
.tw-bar.tw-prior{background:var(--paper);opacity:.32;}
.tw-bar.tw-cur{background:var(--paper);opacity:.85;}
.tw-bar.zero{min-height:4px;opacity:.22;}
.tw-key{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:12px;
  font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--steel-2);}
.tw-key-i{width:11px;height:11px;border-radius:2px;display:inline-block;}
.tw-key-i.prior{background:var(--paper);opacity:.32;}
.tw-key-i.cur{background:var(--paper);opacity:.85;margin-left:8px;}

/* delta chips + lines for the compare reads */




/* record-surface compare (paid): Records list chip, Reel header, Record-detail momentum */
.mv{font-family:var(--mono);font-size:10px;letter-spacing:.04em;white-space:nowrap;flex:none;}
.mv.up{color:var(--lume-text);}
.mv.idle{color:var(--faint);}
.reel-cmp{margin:2px 0 0;font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.03em;color:var(--steel);}
.reel-cmp b{color:var(--paper);font-weight:700;}
.reel-cmp .rc-up{color:var(--lume-text);}
.reel-cmp .rc-dn{color:var(--blue);}
.reel-cmp .rc-flat{color:var(--faint);}
.d-momentum{display:flex;flex-direction:column;gap:4px;margin:14px 0 2px;padding:12px 14px;border:1px solid var(--hair-soft);border-radius:12px;background:rgba(var(--lume-rgb),.05);}
.dm-k{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.14em;color:var(--faint);}
.dm-v{font-family:var(--sans);font-size:var(--fs-body);color:var(--paper);}

/* history: feel filter + session list */
.hist-feel{width:100%;margin:16px 0 14px;}
.hist-feel span{flex:1;text-align:center;padding:10px 0;font-family:var(--mono);font-size:12px;letter-spacing:.05em;
  color:var(--steel-2);cursor:pointer;border-right:1px solid var(--hair);}
.hist-feel span:last-child{border-right:none;}
.hist-feel span.on{background:rgba(var(--tint),.07);color:var(--paper);}
/* Session card is now a button (tap to open the session detail). Reset button chrome. */
.hs{display:flex;gap:16px;padding:16px 0;border-top:1px solid var(--hair-soft);align-items:flex-start;
  width:100%;text-align:left;background:none;border-left:none;border-right:none;border-bottom:none;color:inherit;font:inherit;cursor:pointer;}
.hs:active{background:rgba(var(--tint),.04);}
.hs-chev{align-self:center;color:var(--steel-2);font-size:22px;line-height:1;margin-left:2px;flex:none;}
.hs-date{flex:none;width:64px;align-self:flex-start;}
.hs-date b{display:block;white-space:nowrap;font-family:var(--mono);font-size:var(--fs-body);font-weight:600;color:var(--paper);letter-spacing:.01em;}
.hs-date span{display:block;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.14em;color:var(--steel);margin-top:3px;}
.hs-body{flex:1;min-width:0;}
.hs-top{display:flex;align-items:center;gap:10px;}
.hs-group{font-size:var(--fs-name);font-weight:600;}
.hs-feel{font-family:var(--mono);font-size:var(--fs-label);font-weight:700;letter-spacing:.12em;color:var(--steel-2);}
.f-easy{color:var(--blue);}
.f-rough{color:var(--red);}
.hs-meta{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--steel);margin-top:6px;}
.hs-rec{color:var(--lume-text);display:inline-flex;align-items:center;gap:5px;vertical-align:middle;}
.hs-rec .miniseal{width:15px;height:15px;}
.hs-hi{font-family:var(--mono);font-size:12px;color:var(--lume-text);margin-top:7px;letter-spacing:.02em;}

/* ---- Session detail (edit a filed session) ---- */
#s-sessdetail .scroll{padding:0 24px 40px;}
.sd-head{display:flex;align-items:flex-end;justify-content:space-between;padding-top:14px;}
.sd-daymore{flex:none;background:none;border:none;color:var(--steel);font-size:var(--fs-icon);line-height:1;padding:0 2px 4px 12px;cursor:pointer;}
.sd-daymore:active{color:var(--paper);}
.sd-top{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:6px 0 22px;}
.sd-date{display:flex;flex-direction:column;align-items:flex-start;gap:2px;}
.sd-dow{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.14em;color:var(--steel);}
.sd-date b{font-family:var(--mono);font-size:var(--fs-page);font-weight:700;color:var(--paper);letter-spacing:.01em;}
.sd-daylabel{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.1em;color:var(--steel-2);text-transform:uppercase;padding-bottom:4px;}
.sd-ex{margin-bottom:20px;}
.sd-exname{font-size:var(--fs-name);font-weight:600;color:var(--paper);margin-bottom:8px;}
.sd-exhead{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px;}
.sd-exhead .sd-exname{margin-bottom:0;flex:1;min-width:0;}
.sd-exmore{flex:none;background:none;border:none;color:var(--steel);font-size:var(--fs-icon);line-height:1;padding:2px 6px;cursor:pointer;}
.sd-exmore:active{color:var(--paper);}
.sd-empty{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--steel-2);line-height:1.5;margin:4px 0 16px;}
.rn-list{list-style:none;margin:4px 0 16px;padding:0;max-height:38vh;overflow-y:auto;-webkit-overflow-scrolling:touch;}
.rn-list li{position:relative;padding:0 0 10px 16px;font-family:var(--sans);font-size:14px;line-height:1.35;color:var(--paper);}
.rn-list li::before{content:"";position:absolute;left:2px;top:.55em;width:5px;height:5px;border-radius:50%;background:var(--steel);}
.rn-list .rn-from{color:var(--steel-2);}
.rn-list .rn-to{font-weight:600;}
.rn-list .rn-n{display:block;margin-top:2px;font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--steel);}
/* Today, no routine: repeat the last session in one tap, and the invitation to build a week. */
.lr-again{display:block;width:100%;text-align:left;background:none;border:none;padding:8px 0 0;color:var(--lume-text);font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.06em;cursor:pointer;}




/* iOS: strip the native date-input chrome so it respects width:100% instead of overflowing right. */
.sd-dateinput{width:100%;max-width:100%;min-width:0;box-sizing:border-box;-webkit-appearance:none;appearance:none;
  margin:4px 0 14px;padding:13px 14px;border-radius:12px;border:1px solid var(--hair);
  background:var(--panel);color:var(--paper);font-family:var(--mono);font-size:16px;}
.sd-dateinput::-webkit-date-and-time-value{text-align:left;margin:0;}
.sd-dateinput::-webkit-calendar-picker-indicator{margin:0;}
.sd-addset{margin-top:8px;background:none;border:none;padding:6px 0;font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.06em;color:var(--lume-text);cursor:pointer;}
.sd-addlift{width:100%;margin:6px 0 14px;padding:13px;border-radius:12px;border:1px dashed var(--hair);background:none;
  font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.06em;color:var(--paper);cursor:pointer;}
.sd-addlift:active{background:rgba(var(--tint),.05);}

/* ---------------- Settings (global) ---------------- */
#s-settings .scroll{padding:0 24px calc(36px + var(--sab));}
.set-done{background:none;border:none;color:var(--lume-text);font-family:var(--mono);font-size:var(--fs-value);
  letter-spacing:.08em;cursor:pointer;align-self:flex-end;}
.set-done:active{opacity:.6;}
.set-wrap{margin-top:8px;}
/* group headers give Settings a level of hierarchy: Preferences / Training / Your data / About */
.set-group-h{font-family:var(--mono);font-size:var(--fs-label);font-weight:700;letter-spacing:.2em;color:var(--paper-dim);margin:36px 0 2px;padding-bottom:11px;border-bottom:1px solid var(--hair);}
.set-group-h:first-of-type{margin-top:12px;}
.set-group-h + .set-block{border-top:none;}
.set-sublink{display:block;width:100%;text-align:left;background:none;border:none;color:var(--steel-2);font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;padding:13px 2px 0;cursor:pointer;}
.set-sublink:active{opacity:.6;}
.set-block{padding:20px 0;border-top:1px solid var(--hair-soft);}
.set-block:first-child{border-top:none;}
.set-block .label{margin-bottom:12px;}
.set-seg{width:100%;}
.set-seg span{flex:1;text-align:center;padding:12px 6px;font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;
  color:var(--steel-2);cursor:pointer;border-right:1px solid var(--hair);}
.set-seg span:last-child{border-right:none;}
.set-seg span.on{background:rgba(var(--tint),.07);color:var(--paper);}
.set-seg.tri span{font-size:var(--fs-label);letter-spacing:0;}
.set-foot{font-family:var(--sans);font-size:var(--fs-value);line-height:1.45;color:var(--steel);margin-top:12px;}



.set-btn{width:100%;margin-top:14px;background:var(--ink-2);border:1px solid var(--hair);border-radius:12px;
  padding:15px;color:var(--paper);font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.06em;cursor:pointer;}
.set-btn:active{background:var(--panel);}
.set-row2{display:flex;gap:10px;}
.set-row2 .set-btn{margin-top:0;}


.set-about{display:flex;justify-content:space-between;margin-top:24px;font-family:var(--mono);
  font-size:11px;letter-spacing:.1em;color:var(--faint);}

/* ---------------- Paywall (one-time unlock) ---------------- */
.pw-scroll{padding:0 30px calc(30px + var(--sab));display:flex;flex-direction:column;}
.pw-close{position:absolute;top:calc(var(--top) - 14px);right:22px;background:none;border:none;color:var(--steel);
  font-size:20px;cursor:pointer;padding:6px;z-index:2;}
.pw-inner{margin:auto 0;text-align:center;padding:60px 0 20px;}
.pw-mark{display:flex;justify-content:center;margin-bottom:26px;}
.pw-mark .seal{width:112px;height:112px;}
.pw-title{font-size:var(--fs-page);font-weight:800;letter-spacing:-.02em;line-height:1.1;color:var(--paper);}
.pw-sub{font-size:var(--fs-body);line-height:1.5;color:var(--steel-2);margin:16px auto 0;max-width:30ch;}
.pw-price{display:flex;align-items:baseline;justify-content:center;gap:8px;margin:28px 0;}
.pw-amt{font-family:var(--mono);font-weight:800;font-size:var(--fs-display);letter-spacing:-.02em;color:var(--paper);}
.pw-once{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.1em;color:var(--steel);text-transform:uppercase;}
.pw-buy{margin-bottom:12px;}
.pw-restore{background:none;border:none;color:var(--steel-2);font-family:var(--mono);font-size:var(--fs-value);
  letter-spacing:.08em;cursor:pointer;padding:6px;}
.pw-foot{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.06em;color:var(--faint);margin-top:22px;}

/* ---------------- Onboarding / FTUX ---------------- */
/* welcome — cinematic photo hero bleeding into black, copy centered, CTA docked */
/* Onboarding — one gold video plays continuously behind EVERY step (syncObBg, in
   #device). The FRAME is fixed: the video, a dark veil and the back rail never move.
   Only .ob-content slides + dissolves between steps, so it reads as the middle
   content parallaxing over a steady backdrop. */
/* Fixed dark values (not var(--ink)) — this layer lives in #device, outside the
   onboarding theme override, and must stay dark even when the app is in light mode. */
.ob-bg{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;background:#0a0a0b;}
.ob-bgvid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.ob-bg .ob-scrim{position:absolute;inset:0;background:
  linear-gradient(to bottom,rgba(10,10,11,.50) 0%,rgba(10,10,11,.28) 32%,
  rgba(10,10,11,.60) 72%,rgba(10,10,11,.92) 92%,#0a0a0b 100%);}
#s-onboard{background:transparent;}
/* Onboarding reuses its dark hero video, but in light mode we wash it to a warm-paper
   backdrop (via .ob-veil below) and run the UI in the paper-ink-wax palette. */
:root.theme-light #s-onboard{
  --ink:#e7e2d8; --ink-2:#f1ede4; --panel:#f1ede4; --panel-2:#eae4d9;
  --hair:#cbc3b4; --hair-soft:#d5cec1; --line-2:#cbc3b4; --faint2:#8a857c;
  --steel:#5c5952; --steel-2:#46443e; --paper:#15161a; --paper-dim:#3b3934;
  --lume:#8e2b24; --lume-hi:#78201a; --lume-dim:#d8bdb8; --lume-hero:#9a3128; --lume-text:#8e2b24;
  --lume-rgb:142,43,36; --lume-hi-rgb:154,49,40; --tint:0,0,0;
}
/* light mode: video stays its natural color, but the overlay veil is forced ON (even on the welcome
   step, where it's normally off) as a warm-PAPER wash so ink text reads. Dark skin keeps its
   black veil + light text, untouched. */
:root.theme-light #s-onboard .ob-bg{background:var(--ink);}
:root.theme-light #s-onboard .ob-veil{opacity:1;background:linear-gradient(to bottom,rgba(231,226,216,.93) 0%,rgba(231,226,216,.92) 45%,rgba(231,226,216,.96) 100%);}
/* welcome step: veil ON in BOTH skins (dark too, so it doesn't feel bare next to light), transparent
   at top where the video shows, ramping to a wash at the bottom where the text/button sit. The two
   gradients use matching stops + comparable opacity so light and dark feel balanced, not lopsided. */
#s-onboard[data-obstep="welcome"] .ob-veil{opacity:1;background:linear-gradient(to bottom,rgba(10,10,11,.04) 0%,rgba(10,10,11,.08) 52%,rgba(10,10,11,.5) 66%,rgba(10,10,11,.8) 80%,rgba(10,10,11,.86) 100%);}
:root.theme-light #s-onboard[data-obstep="welcome"] .ob-veil{background:linear-gradient(to bottom,rgba(231,226,216,.05) 0%,rgba(231,226,216,.1) 52%,rgba(231,226,216,.56) 66%,rgba(231,226,216,.86) 80%,rgba(231,226,216,.94) 100%);}
/* fixed veil — off on welcome (video prominent), fades on for the dense steps */
.ob-veil{position:absolute;inset:0;z-index:0;pointer-events:none;opacity:0;transition:opacity .42s ease;
  background:linear-gradient(to bottom,rgba(10,10,11,.9) 0%,rgba(10,10,11,.92) 55%,rgba(10,10,11,.96) 100%);}
#s-onboard:not([data-obstep="welcome"]) .ob-veil{opacity:1;}
/* fixed back rail — never moves; fades out on welcome */
.ob-backrail{position:absolute;top:calc(var(--top) + 2px);left:26px;z-index:3;background:none;border:none;
  color:var(--steel);font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.14em;cursor:pointer;
  padding:6px 6px 6px 0;transition:opacity .3s ease;}
#s-onboard[data-obstep="welcome"] .ob-backrail{opacity:0;pointer-events:none;}
/* light/dark toggle, top-right of onboarding; sets DATA.theme so it cascades app-wide + stays in Settings */
.ob-themetoggle{position:absolute;top:calc(var(--top) + 2px);right:20px;z-index:4;
  display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;
  background:rgba(0,0,0,.34);border:1px solid rgba(255,255,255,.16);color:#e9e5dc;cursor:pointer;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background .18s ease,transform .1s ease;}
.ob-themetoggle:active{transform:scale(.94);}
.ob-themetoggle .ic-sun{display:none;} .ob-themetoggle .ic-moon{display:block;}
:root.theme-light .ob-themetoggle{background:rgba(241,237,228,.82);border-color:rgba(0,0,0,.1);color:#15161a;}
:root.theme-light .ob-themetoggle .ic-moon{display:none;} :root.theme-light .ob-themetoggle .ic-sun{display:block;}
/* content stage — steps stack here; only these slide + dissolve, frame stays put */
.ob-stage{position:relative;z-index:1;flex:1;min-height:0;}
.ob-content{position:absolute;inset:0;display:flex;flex-direction:column;
  transition:transform .52s cubic-bezier(.22,1,.36,1),opacity .34s ease;}
.ob-content.in-right{transform:translateX(48px);opacity:0;}
.ob-content.in-left{transform:translateX(-48px);opacity:0;}
.ob-content.leaving{pointer-events:none;}
.ob-content.out-left{transform:translateX(-40px);opacity:0;}
.ob-content.out-right{transform:translateX(40px);opacity:0;}
/* welcome: video prominent, copy docked low */
#s-onboard[data-obstep="welcome"] .ob-wc{justify-content:flex-end;padding-bottom:6px;}
#s-onboard[data-obstep="welcome"] .ob-title,#s-onboard[data-obstep="welcome"] .ob-lede,
#s-onboard[data-obstep="welcome"] .ob-ethos{text-shadow:0 1px 24px rgba(0,0,0,.55);}
#s-onboard[data-obstep="welcome"] .dock{background:transparent;}
/* dense panels clear the fixed back rail */
#s-onboard .ob-panel{padding-top:calc(var(--top) + 42px);}
/* Walk-in → "the feature opens": a black curtain drops over the video, then the
   briefing fades up from black, gently pushes to rest, and develops in a cascade.
   The gold seal blooms last, like the title card. Applied once, per walk-in only. */
.ob-curtain{position:absolute;inset:0;z-index:60;background:var(--ink);opacity:0;
  pointer-events:none;transition:opacity 500ms cubic-bezier(.4,0,.2,1);}
.ob-curtain.show{opacity:1;}
#s-brief.movie-open{animation:movieOpen 820ms cubic-bezier(.16,1,.3,1) both;}
@keyframes movieOpen{0%{opacity:0;transform:scale(1.045);}100%{opacity:1;transform:none;}}
#s-brief.movie-open > *{animation:rise 660ms cubic-bezier(.16,1,.3,1) both;}
#s-brief.movie-open > *:nth-child(2){animation-delay:.10s;}
#s-brief.movie-open > *:nth-child(3){animation-delay:.20s;}
#s-brief.movie-open > *:nth-child(n+4){animation-delay:.30s;}
#s-brief.movie-open .prline .seal{animation:sealBloom 1000ms ease-out both;animation-delay:.34s;}
@keyframes sealBloom{
  0%{opacity:0;transform:scale(.62);filter:drop-shadow(0 0 0 rgba(var(--lume-rgb),0));}
  52%{opacity:1;transform:scale(1.07);filter:drop-shadow(0 0 20px rgba(var(--lume-rgb),.6));}
  100%{transform:scale(1);filter:drop-shadow(0 0 0 rgba(var(--lume-rgb),0));}}
.ob-hero{position:relative;flex:none;height:45%;overflow:hidden;background:var(--ink);}
.ob-hero img{width:100%;height:100%;object-fit:cover;object-position:center 42%;display:block;}

.ob-wc{padding:2px 26px 0;display:flex;flex-direction:column;text-align:center;}
.ob-wc .ob-title{margin-top:6px;}
.ob-wc .ob-lede{text-align:center;max-width:30ch;margin-left:auto;margin-right:auto;}
#s-onboard .dock{background:var(--ink);}
.ob-scroll{padding:0 26px calc(30px + var(--sab));}
.ob-panel{padding-top:calc(var(--top) + 6px);}


.ob-title{font-size:var(--fs-display);font-weight:800;letter-spacing:-.025em;line-height:1.02;text-align:center;color:var(--paper);}
.ob-lede{font-size:var(--fs-body);line-height:1.5;color:var(--paper-dim);margin-top:14px;}

.ob-ethos{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.1em;color:var(--lume-text);margin:20px 0;text-align:center;}
.ob-panel .cta{margin-top:22px;}
.ob-foot{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.06em;color:var(--steel);text-align:center;margin-top:16px;}
.ob-h2{font-size:var(--fs-hero);font-weight:800;letter-spacing:-.025em;line-height:1.04;margin:12px 0;color:var(--paper);}
.ob-field{margin:20px 0;}
.ob-field .label{margin-bottom:10px;}
.ob-field .seg span{flex:1;text-align:center;padding:12px 4px;font-family:var(--mono);font-size:var(--fs-value);
  color:var(--steel-2);cursor:pointer;border-right:1px solid var(--hair);}
.ob-field .seg span:last-child{border-right:none;}
.ob-field .seg span.on{background:rgba(var(--tint),.07);color:var(--paper);}
.ob-field .seg.tri span{font-size:var(--fs-label);}
.ob-fork{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:var(--ink-2);
  border:1px solid var(--hair);border-radius:14px;padding:16px;margin-top:12px;cursor:pointer;color:var(--paper);}
.ob-fork:active{background:var(--panel);}
.ob-num{font-family:var(--mono);font-weight:800;font-size:var(--fs-value);color:var(--lume-text);flex:none;}
.ob-forkbody{flex:1;min-width:0;}
.ob-forkbody b{display:block;font-size:var(--fs-name);font-weight:600;}
.ob-forkbody small{display:block;font-size:var(--fs-value);color:var(--steel);margin-top:3px;}
.ob-arrow{color:var(--steel);flex:none;}
.ob-skip{width:100%;background:none;border:none;color:var(--steel-2);font-family:var(--mono);font-size:var(--fs-value);
  letter-spacing:.06em;cursor:pointer;padding:20px 6px 4px;}
.ob-textarea{width:100%;min-height:220px;background:var(--ink-2);border:1px solid var(--hair);border-radius:12px;
  padding:14px;color:var(--paper);font-family:var(--mono);font-size:14px;line-height:1.6;resize:none;margin-top:6px;}
/* On the "paste your routine" step, fill the screen so the box is tall and
   "Lay it out" drops into the thumb zone at the bottom. */
.ob-panel:has(.ob-textarea){display:flex;flex-direction:column;min-height:100%;}
.ob-panel:has(.ob-textarea) .ob-textarea{flex:1 1 auto;}
/* the flex column would stretch + center the back link; keep it left like other steps */

.ob-textarea:focus{outline:none;border-color:var(--steel);}
.ob-hint{font-size:var(--fs-value);line-height:1.45;color:var(--steel);margin-top:12px;}
.ob-splits{margin-top:6px;}
.ob-split{display:block;width:100%;text-align:left;background:var(--ink-2);border:1px solid var(--hair);
  border-radius:12px;padding:14px;margin-top:10px;cursor:pointer;color:var(--paper);}
.ob-split.on{border-color:var(--lume-text);background:rgba(var(--lume-rgb),.08);}
.ob-split b{font-size:var(--fs-name);font-weight:600;}
.ob-split small{display:block;font-size:var(--fs-value);color:var(--steel);margin-top:3px;}
.ob-week{margin-top:6px;}
.ob-day{padding:15px 0;border-top:1px solid var(--hair-soft);}
.ob-day-head{display:flex;align-items:baseline;justify-content:space-between;}
.ob-day b{font-size:var(--fs-name);font-weight:600;}
.ob-day span{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.06em;color:var(--steel);}
.ob-lifts{list-style:none;margin:10px 0 0;padding:0;}
.ob-lifts li{font-family:var(--mono);font-size:var(--fs-value);line-height:1.5;color:var(--paper-dim);
  padding-left:16px;position:relative;}
.ob-lifts li::before{content:"";position:absolute;left:2px;top:.62em;width:4px;height:4px;
  border-radius:50%;background:var(--lume);}

/* ---------------- Toast ---------------- */
#toast{position:absolute;left:24px;right:24px;bottom:calc(30px + var(--sab));z-index:70;
  background:var(--panel-2);border:1px solid var(--hair);border-radius:12px;padding:14px 16px;
  font-family:var(--sans);font-size:var(--fs-body);line-height:1.4;color:var(--paper);text-align:center;
  opacity:0;transform:translateY(10px);transition:opacity .22s ease,transform .22s ease;box-shadow:0 12px 30px rgba(0,0,0,.5);}
#toast.show{opacity:1;transform:none;}

/* ---------------- Peer note: LCD verdict readout ---------------- */
#peernote.lcd{position:absolute;left:24px;right:24px;bottom:calc(104px + var(--sab));z-index:72;
  background:#0c0e0b;border:1px solid var(--hair);border-radius:14px;padding:12px 18px;
  box-shadow:0 12px 34px rgba(0,0,0,.55), inset 0 0 22px rgba(0,0,0,.5);
  opacity:0;transform:translateY(10px);transition:opacity .16s ease,transform .16s ease;}
#peernote.lcd.show{opacity:1;transform:none;}
#peernote.lcd.is-off{opacity:0;transition:opacity .12s steps(2,end);}
.lcd-tag{display:block;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.24em;
  margin-bottom:7px;color:var(--steel);}
.lcd-text{display:block;font-family:var(--pixel);font-size:19px;letter-spacing:.02em;line-height:1;
  min-height:19px;text-shadow:0 0 14px currentColor;}
.lcd--peak{color:var(--lume-hi);}   .lcd--peak .lcd-tag{color:var(--lume-text);}
.lcd--held{color:var(--blue);}      .lcd--held .lcd-tag{color:var(--blue);}
.lcd--real{color:var(--steel-2);}   .lcd--real .lcd-tag{color:var(--steel);}
.lcd--sealed{color:var(--lume-hi);} .lcd--sealed .lcd-tag{color:var(--lume-text);}
/* Light theme: the LCD readout becomes a warm-paper panel (not a black LED screen) */
:root.theme-light #peernote.lcd{background:#eee8dd;box-shadow:0 8px 24px rgba(60,50,40,.12),inset 0 0 0 rgba(0,0,0,0);}
:root.theme-light .lcd-text{text-shadow:none;}

/* Native app / phone: fill the screen instead of the desktop preview frame */
@media (max-width:440px){
  body{padding:0;}
  #device{width:100vw;height:100vh;height:100dvh;max-width:none;border-radius:0;box-shadow:none;}
}

/* ============================================================
   Body — muscle heatmap tab (pinned dark surface, gold-on-dark
   in BOTH themes: this is a deliberate immersive surface, like
   Activity rings, so it uses literal dark/gold values, not vars) */
#s-body{background:#0a0a0b;overflow:hidden;}
.b-stage{position:absolute;inset:0;z-index:0;}
.b-stage svg{width:100%;height:100%;display:block;}
.b-stage svg path{fill:#17171c;transition:fill .45s ease, opacity .5s ease;}
.b-stage svg{transition:opacity .26s ease;}

.b-top{position:absolute;top:0;left:0;right:0;z-index:4;display:flex;align-items:center;justify-content:space-between;
  padding:var(--top) 24px 14px;
  background:linear-gradient(to bottom,var(--ink) 42%,color-mix(in srgb,var(--ink) 50%,transparent) 76%,color-mix(in srgb,var(--ink) 0%,transparent));transition:opacity .4s ease;}   /* the page color, so it never shows as a band */
.b-top h1{font-family:var(--sans);font-size:var(--fs-page);font-weight:800;letter-spacing:-.01em;margin:0;color:#e7e3da;}

.b-seg{position:absolute;top:calc(var(--top) + 44px);left:50%;transform:translateX(-50%);z-index:4;
  display:inline-flex;background:rgba(255,255,255,.05);border:1px solid #2a2f36;border-radius:22px;padding:3px;transition:opacity .4s ease;}
.b-seg button{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.05em;color:#8b9198;background:none;border:none;
  padding:7px 20px;border-radius:19px;cursor:pointer;transition:color .15s,background .15s;}
.b-seg button.on{background:var(--lume);color:var(--on-lume);font-weight:700;}

.b-overlay{position:absolute;top:calc(var(--top) + 92px);left:50%;transform:translateX(-50%);z-index:4;
  font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;color:#6b7178;white-space:nowrap;transition:opacity .4s ease;}
.b-overlay b{color:#cfcabf;}.b-overlay .cv{color:#6b7178;}

.b-legend{position:absolute;right:15px;top:46%;transform:translateY(-50%);z-index:4;display:flex;flex-direction:column;
  align-items:center;gap:9px;font-family:var(--mono);font-size:10px;color:#6b7178;letter-spacing:.08em;transition:opacity .4s ease;}
/* THE RAMP legend — the same cool-to-warm scale on both grounds (LOW at bottom, HIGH at top) */
.b-legend .bar{width:8px;height:148px;border-radius:5px;background:linear-gradient(to top,#59403D,#78423A,#994535,#B64A34,#D45335,#E96542,#F77A55,#FF9B73);}
:root.theme-light .b-legend .bar{background:linear-gradient(to top,#d6b4a6,#d0a190,#c98b77,#bf745e,#b25f48,#a04c36,#883e2b,#6f3122);}
.b-legend .bu{font-size:9px;color:var(--steel);text-align:center;line-height:1.4;}

/* compare control docked at the bottom of the Body screen (where the range strip was) */
.b-cmp{position:absolute;left:14px;right:14px;bottom:calc(78px + var(--sab));z-index:4;transition:opacity .4s ease;}
.b-cmp:empty{display:none;}
/* compare-mode legend: MORE (warm) at top, no change (neutral) in the middle, LESS (cool) at the bottom */
.b-legend.diff .bar{background:linear-gradient(to top,#3F6E96,#3E8E8A,#2b2b31,#a9a69e,#e7e3da);}
:root.theme-light .b-legend.diff .bar{background:linear-gradient(to top,#3F6E96,#3E8E8A,#cbc5b7,#6b655b,#2a2824);}

/* ---- Body: light skin (muscle ramps come from bShade/bShadeCool in app.js; these are the chrome) ---- */
:root.theme-light #s-body{background:var(--ink);}
:root.theme-light .b-stage svg path{fill:#d9d4c9;}
:root.theme-light .b-module{background:rgba(241,237,228,.74);border-color:var(--hair);
  -webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);}
:root.theme-light .b-overlay b{color:var(--paper);}
/* the muscle ramp is now ground-agnostic (same hex on paper + ink) — no per-skin legend override */
:root.theme-light .b-prs .k{color:var(--lume-hero);}
/* balance + breakdown bars use the ramp on both grounds (no per-skin override) */
:root.theme-light .b-top{background:linear-gradient(to bottom,var(--ink) 42%,rgba(231,226,216,.5) 76%,transparent);}
:root.theme-light .b-top h1{color:var(--paper);}
/* module: the big values + list were light-on-dark; make them dark-on-light */
:root.theme-light .b-mh b,:root.theme-light .b-stats b{color:var(--paper);}
:root.theme-light .b-prs li{color:var(--paper);}

:root.theme-light .b-grab{background:var(--hair);}
:root.theme-light .b-bal .track{background:var(--panel-2);}
:root.theme-light .b-back{background:rgba(241,237,228,.84);border-color:var(--hair);color:var(--paper);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);}
:root.theme-light .b-omenu{background:rgba(241,237,228,.95);border-color:var(--hair);}
:root.theme-light .b-omenu button{color:var(--paper);}
/* proof-ink-wax: the primary CTA is INK (action), wax is reserved for the seal / record accent */
:root.theme-light .cta{background:var(--paper);color:var(--ink);border-color:var(--paper);}
/* the strike IS the sealing act — keep it wax, with cream text */
:root.theme-light .strike,
:root.theme-light .mus-chip.on,
:root.theme-light .mus-save{color:var(--ink);}
:root.theme-light .b-seg button.on{background:var(--lume-hero);color:var(--ink);}

/* Paywall: in light mode it drops the dark/gold and runs on warm paper, ink text, wax seal */
:root.theme-light .pw-backdrop{background:rgba(34,28,22,.5);}
:root.theme-light .pw{background:radial-gradient(120% 82% at 50% 0%,var(--card) 0%,var(--ink) 60%,var(--stage) 100%);
  border-top:1px solid var(--hair);box-shadow:0 -24px 60px rgba(60,50,40,.22);}
:root.theme-light .pw-seal{filter:drop-shadow(0 4px 16px rgba(142,43,36,.28));}
:root.theme-light .pw h2,:root.theme-light .pw-price b{color:var(--paper);}
:root.theme-light .pw-sub,:root.theme-light .pw-price span,:root.theme-light .pw-row span,:root.theme-light .pw-note,:root.theme-light .pw-trust p,:root.theme-light .pw-link{color:var(--steel);}
:root.theme-light .pw-sub b{color:var(--lume-text);}
:root.theme-light .pw-row b{color:var(--paper);}
:root.theme-light .pw-dot{background:var(--lume);box-shadow:none;}
:root.theme-light .pw-sep{color:var(--hair);}
:root.theme-light .pw-cta{background:var(--paper);color:var(--ink);}   /* primary action = ink, like every CTA */

#s-body .tabbar{position:absolute;bottom:0;left:0;right:0;z-index:5;transition:opacity .4s ease;}

.b-back{position:absolute;top:var(--top);left:14px;z-index:7;display:inline-flex;align-items:center;
  gap:6px;font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.03em;color:#e7e3da;background:rgba(20,20,24,.82);
  border:1px solid #333942;border-radius:20px;padding:8px 15px;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .3s ease;}
#s-body.zoom .b-back{opacity:1;pointer-events:auto;transition-delay:.25s;}
#s-body.zoom .b-top,#s-body.zoom .b-seg,#s-body.zoom .b-overlay,#s-body.zoom .b-legend,#s-body.zoom .b-cmp,#s-body.zoom .tabbar{opacity:0;pointer-events:none;}

/* empty state (no data in range) */
.b-empty{position:absolute;left:0;right:0;bottom:calc(120px + var(--sab));z-index:4;text-align:center;
  font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;color:#6b7178;padding:0 40px;transition:opacity .4s ease;}
#s-body.zoom .b-empty{opacity:0;}

/* ---- draggable detail sheet (Apple-Stocks style: complete card, grows up) ---- */
.b-module{position:absolute;left:12px;right:12px;bottom:26px;height:230px;background:rgba(20,21,26,.86);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid #333942;
  border-radius:26px;padding:0 22px 20px;pointer-events:none;transform:translateY(140%);
  transition:transform .55s cubic-bezier(.16,1,.3,1),height .5s cubic-bezier(.16,1,.3,1);
  z-index:6;touch-action:none;box-shadow:0 22px 54px rgba(0,0,0,.6);overflow:hidden;}
.b-module.show{transform:translateY(0);pointer-events:auto;}
.b-module.show.exp{height:76vh;}
.b-grab{width:40px;height:5px;border-radius:3px;background:#3a3a44;margin:12px auto 16px;}
.b-row{opacity:0;transform:translateY(8px);transition:opacity .4s ease,transform .45s cubic-bezier(.16,1,.3,1);}
.b-module.show .b-row{opacity:1;transform:none;}
.b-module.show .b-r1{transition-delay:.06s;}.b-module.show .b-r2{transition-delay:.14s;}.b-module.show .b-r3{transition-delay:.22s;}
.b-mh{display:flex;align-items:center;gap:10px;}
.b-mh b{font-family:var(--sans);font-size:26px;font-weight:800;color:#e7e3da;letter-spacing:-.01em;}
.b-pill{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;padding:3px 9px;border-radius:11px;font-weight:700;}
.b-msub{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:#6b7178;margin-top:3px;}
.b-stats{display:flex;justify-content:space-between;margin-top:18px;}
.b-stats>div{display:flex;flex-direction:column;gap:3px;}
.b-stats b{font-family:var(--sans);font-size:22px;font-weight:800;color:#e7e3da;}
.b-stats b i{font-family:var(--mono);font-size:9.5px;font-weight:700;font-style:normal;letter-spacing:.03em;color:#6b7178;margin-left:2px;vertical-align:baseline;}
.b-stats b i.b-delta{font-size:10px;vertical-align:middle;}
.b-delta.up{color:var(--paper);}
.b-delta.dn{color:var(--blue);}
.b-stats span{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;color:#6b7178;}
.b-bal{margin-top:18px;}
.b-bal .lab{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:#6b7178;margin-bottom:7px;}
.b-bal .track{position:relative;height:6px;border-radius:3px;background:#26272e;overflow:hidden;}
.b-bal .fill{position:absolute;top:0;bottom:0;left:0;background:var(--steel-2);border-radius:3px;}
.b-bal .mid{position:absolute;top:-3px;bottom:-3px;left:50%;width:1px;background:#4a4f56;}
.b-prs{margin-top:20px;}
.b-prs .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--lume-text);}
.b-prs.top .k{color:#6b7178;}
.b-prs ul{list-style:none;margin:8px 0 0;padding:0;}
.b-prs li{font-family:var(--sans);font-size:14px;color:#cfcabf;padding:3px 0;}
.b-chart{margin-top:20px;opacity:0;transition:opacity .35s ease;}
.b-module.show.exp .b-chart{opacity:1;transition-delay:.14s;}
.b-clabel{font-family:var(--mono);font-size:11px;color:#565b62;letter-spacing:.1em;margin-bottom:10px;}
.b-cmeta{display:flex;justify-content:space-between;font-family:var(--mono);font-size:11px;color:#6b7178;margin-top:8px;}



/* overlay picker */
.b-overlay{background:none;border:none;cursor:pointer;padding:3px 8px;}
.b-omenu{position:absolute;top:calc(var(--top) + 118px);left:50%;transform:translateX(-50%);z-index:6;
  display:flex;flex-direction:column;min-width:156px;background:#17181d;border:1px solid #333942;border-radius:14px;
  padding:6px;box-shadow:0 16px 40px rgba(0,0,0,.55);}
.b-omenu[hidden]{display:none;}
.b-omenu button{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.03em;color:#cfcabf;background:none;border:none;
  text-align:left;padding:9px 12px;border-radius:9px;cursor:pointer;}
.b-omenu button.on{color:var(--lume-text);background:rgba(var(--lume-rgb),.10);font-weight:700;}
.b-omenu button:active{background:rgba(255,255,255,.05);}
#s-body.zoom .b-omenu{display:none;}
/* muscle-target picker */
.sheet.picker.mus{max-height:84vh;display:flex;flex-direction:column;}
.mus-sub{font-family:var(--mono);font-size:11px;color:var(--steel);letter-spacing:.02em;margin:4px 2px 15px;line-height:1.45;}
.mus-grid{display:flex;flex-wrap:wrap;gap:8px;overflow-y:auto;padding:2px;-webkit-overflow-scrolling:touch;}
.mus-chip{font-family:var(--sans);font-size:13px;color:var(--paper-dim);background:var(--panel);border:1px solid var(--hair);
  border-radius:20px;padding:9px 14px;cursor:pointer;transition:background .12s ease,color .12s ease,border-color .12s ease;}
.mus-chip.on{color:var(--on-lume);background:var(--lume);border-color:var(--lume-text);font-weight:600;}
.mus-foot{display:flex;gap:10px;margin-top:16px;flex:none;}
.mus-auto{flex:0 0 auto;font-family:var(--mono);font-size:12px;letter-spacing:.03em;color:var(--steel);background:none;
  border:1px solid var(--hair);border-radius:12px;padding:12px 16px;cursor:pointer;}
.mus-save{flex:1;font-family:var(--sans);font-weight:700;font-size:15px;color:var(--on-lume);background:var(--lume);border:none;
  border-radius:12px;padding:12px;cursor:pointer;}

/* history-depth paywall */
.pw-backdrop{position:absolute;inset:0;z-index:30;display:flex;align-items:flex-end;justify-content:center;
  background:rgba(6,7,10,.74);opacity:0;transition:opacity .32s ease;}
.pw-backdrop.show{opacity:1;}
.pw{position:relative;width:100%;background:radial-gradient(120% 82% at 50% 0%,#1d1710 0%,#110e0b 55%,#0b0a09 100%);
  border-top:1px solid #3a2f18;border-radius:28px 28px 0 0;padding:32px 26px calc(24px + var(--sab));
  box-shadow:0 -30px 80px rgba(0,0,0,.6);transform:translateY(101%);transition:transform .44s cubic-bezier(.16,1,.3,1);text-align:center;}
.pw-backdrop.show .pw{transform:translateY(0);}
.pw-seal{display:flex;justify-content:center;margin-bottom:4px;filter:drop-shadow(0 4px 16px rgba(var(--lume-rgb),.35));}
.pw h2{font-family:var(--sans);font-size:var(--fs-page);font-weight:800;letter-spacing:-.01em;color:#efe9dd;margin:8px 0 0;}
.pw-sub{font-family:var(--sans);font-size:var(--fs-body);line-height:1.55;color:#b0aca2;margin:11px auto 22px;max-width:330px;}
.pw-sub b{color:var(--lume-text);font-weight:700;}
.pw-rows{display:flex;flex-direction:column;gap:14px;text-align:left;max-width:330px;margin:0 auto 22px;}
.pw-row{display:flex;align-items:flex-start;gap:12px;}
.pw-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--lume);margin-top:6px;box-shadow:0 0 10px rgba(var(--lume-rgb),.6);}
.pw-row b{display:block;font-family:var(--sans);font-size:var(--fs-body);font-weight:700;color:#e7e3da;}
.pw-row span{display:block;font-family:var(--sans);font-size:var(--fs-value);color:#8f8b82;line-height:1.4;margin-top:1px;}
.pw-price{display:flex;align-items:baseline;justify-content:center;gap:6px;margin-bottom:16px;}
.pw-price b{font-family:var(--sans);font-size:var(--fs-hero);font-weight:800;color:#efe9dd;}
.pw-price span{font-family:var(--mono);font-size:var(--fs-value);color:#8f8b82;letter-spacing:.04em;}
.pw-cta{width:100%;max-width:360px;font-family:var(--mono);font-weight:700;font-size:var(--fs-data);letter-spacing:.09em;color:#1b1608;
  background:var(--lume-hero);border:none;border-radius:15px;padding:18px;cursor:pointer;transition:transform .1s ease,filter .1s ease;}
.pw-cta:active{transform:scale(.985);filter:brightness(1.05);}

.pw-note{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.03em;color:#8f8b82;margin:-6px 0 18px;}
.pw-trust{margin:16px auto 2px;max-width:330px;}
.pw-trust p{font-family:var(--mono);font-size:var(--fs-label);line-height:1.5;letter-spacing:.02em;color:#7a7f86;margin:0 0 4px;}
.pw-foot{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:6px;}
.pw-link{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.05em;color:#7a7f86;background:none;border:none;padding:10px 6px 2px;cursor:pointer;}
.pw-link:active{color:#b0aca2;}
.pw-sep{color:#4a4f56;padding-top:8px;}
/* add-lift live detection row */
/* Add-lift typeahead: pick a lift you already do (keeps records/patterns linked). */
/* Fixed height (~4 rows) that always scrolls, so the sheet never grows/shrinks as matches change. */
.al-suggest{display:flex;flex-direction:column;margin-top:8px;border:1px solid var(--hair);border-radius:12px;overflow-y:auto;height:180px;flex:none;}
.al-sug{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;
  background:var(--panel);border:none;border-bottom:1px solid var(--hair-soft);padding:12px 14px;cursor:pointer;font:inherit;color:inherit;}
.al-sug:last-child{border-bottom:none;}
.al-sug:active{background:var(--panel-2);}
.al-sug-nm{font-size:15px;font-weight:600;color:var(--paper);}

.al-nomatch{padding:16px 14px;font-family:var(--sans);font-size:13px;line-height:1.45;color:var(--steel);}
.al-detect{display:flex;gap:10px;margin:14px 0 6px;}
.al-chip{display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--hair);border-radius:13px;
  padding:11px 13px;cursor:pointer;min-width:0;}
.al-icon{flex:0 0 auto;padding:9px 11px;}
.al-icon img{width:24px;height:24px;display:block;filter:invert(78%) sepia(8%) saturate(280%) hue-rotate(169deg) brightness(102%);}
.al-mus{flex:1;justify-content:space-between;}
.al-mtext{font-family:var(--sans);font-size:13.5px;color:var(--paper-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.al-mus.empty .al-mtext{color:var(--lume-text);}
.al-edit{font-family:var(--mono);font-size:10px;letter-spacing:.09em;color:var(--steel);flex:none;margin-left:8px;}
/* graceful locked-history card (History / Records / lift detail) */
.lock-card{display:flex;align-items:center;gap:12px;width:100%;text-align:left;margin:10px 0 4px;cursor:pointer;
  background:linear-gradient(180deg,rgba(var(--lume-rgb),.07),rgba(var(--lume-rgb),.02));
  border:1px solid rgba(var(--lume-rgb),.24);border-radius:15px;padding:14px 16px;transition:background .15s ease;}
.lock-card:active{background:rgba(var(--lume-rgb),.12);}
.lock-card .lock-ic{flex:none;display:flex;}
.lock-card .lock-tx{display:flex;flex-direction:column;gap:2px;min-width:0;}
.lock-card .lock-tx b{font-family:var(--sans);font-size:var(--fs-body);font-weight:700;color:var(--paper);}
.lock-card .lock-tx > span{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.02em;color:var(--steel);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lock-card .lock-cta{margin-left:auto;flex:none;font-family:var(--mono);font-size:var(--fs-label);font-weight:700;letter-spacing:.08em;color:var(--lume-text);}
.lock-block{margin:10px 0 4px;}
.lock-block .lock-card{margin:0;}
.lock-alt{font-family:var(--mono);font-size:var(--fs-label);line-height:1.5;letter-spacing:.02em;color:var(--steel);text-align:center;margin:9px 8px 0;}
.pbar.locked{background:#303036;opacity:.55;}
/* graceful pre-paywall lock sheet (Body) */
.sheet.ls{text-align:center;}
.ls-card{display:flex;align-items:center;gap:12px;text-align:left;margin-bottom:16px;padding:16px;border-radius:15px;
  background:linear-gradient(180deg,rgba(var(--lume-rgb),.07),rgba(var(--lume-rgb),.02));border:1px solid rgba(var(--lume-rgb),.24);}
.ls-ic{flex:none;display:flex;}
.ls-tx{display:flex;flex-direction:column;gap:3px;min-width:0;}
.ls-tx b{font-family:var(--sans);font-size:16px;font-weight:700;color:var(--paper);}
.ls-tx span{font-family:var(--mono);font-size:11.5px;letter-spacing:.02em;color:var(--steel);}
.ls-unlock{margin-bottom:2px;}
.sheet.ls .ls-cancel{display:block;width:100%;text-align:center;font-family:var(--mono);font-weight:400;font-size:var(--fs-value);letter-spacing:.05em;color:#7a7f86;background:none;border:none;padding:14px 0 2px;cursor:pointer;}

/* ---------------- First-run empty state (seal + ghost preview) ---------------- */
.empty-first{display:flex;flex-direction:column;align-items:center;text-align:center;padding:20px 6px 44px;}
.empty-seal{opacity:.5;margin-bottom:20px;animation:sealBreathe 3.8s ease-in-out infinite;}
@keyframes sealBreathe{0%,100%{opacity:.4;transform:scale(.985)}50%{opacity:.64;transform:scale(1.012)}}
.empty-h{font-family:var(--sans);font-size:var(--fs-page);font-weight:800;letter-spacing:-.01em;color:var(--paper);margin:0;}
.empty-p{font-family:var(--sans);font-size:var(--fs-body);line-height:1.55;color:var(--steel-2);margin:9px 0 24px;max-width:288px;}
.empty-cta{margin-bottom:38px;}
.empty-plabel{display:block;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.18em;color:var(--faint2);margin-bottom:14px;}
.empty-ghost{width:100%;display:flex;flex-direction:column;gap:12px;opacity:.55;pointer-events:none;
  -webkit-mask-image:linear-gradient(to bottom,#000 55%,transparent);mask-image:linear-gradient(to bottom,#000 55%,transparent);}
.gk-card{border:1px solid var(--hair-soft);border-radius:14px;padding:15px 15px 16px;background:rgba(var(--tint),.02);}
.gk-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;}
.gk-title{display:block;width:118px;height:12px;border-radius:6px;background:var(--panel);}
.gk-cad{display:block;width:34px;height:26px;border-radius:6px;background:var(--panel);}
.gk-strip{display:flex;align-items:flex-end;gap:4px;height:42px;}
.gk-bar{flex:1;background:var(--panel);border-radius:3px 3px 1px 1px;min-height:5px;}
.gk-week{display:flex;justify-content:space-between;gap:6px;}
.gk-day{flex:1;display:flex;flex-direction:column;align-items:center;gap:7px;}
.gk-dot{width:15px;height:15px;border-radius:50%;border:1.5px solid var(--hair);}
.gk-dl{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.05em;color:var(--faint2);}
.gk-sess{height:46px;border-radius:12px;background:rgba(var(--tint),.03);border:1px solid var(--hair-soft);}
.recal-warn{font-family:var(--sans);font-size:13.5px;line-height:1.5;color:var(--lume-text);background:rgba(var(--lume-rgb),.08);border:1px solid rgba(var(--lume-rgb),.22);border-radius:12px;padding:12px 14px;margin:2px 0 10px;}

/* ---------------- Moment card (session-close celebration, ship-order A) ----------------
   Cinematic dark in BOTH themes (hardcoded), like the reel it belongs to. */
.moment-backdrop{position:fixed;inset:0;z-index:999;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(120% 90% at 50% 32%,#141216 0%,#08080a 68%);opacity:0;transition:opacity .3s ease;padding:32px 26px;}
.moment-backdrop.show{opacity:1;}
.moment{display:flex;flex-direction:column;align-items:center;text-align:center;width:100%;max-width:360px;color:#e9e5dc;}
.mo-eyebrow{font-family:var(--mono);font-weight:700;letter-spacing:.32em;font-size:12px;color:var(--lume-text);margin-bottom:22px;}
.mo-sealwrap{position:relative;display:grid;place-items:center;margin-bottom:26px;}
.mo-sealwrap .seal{position:relative;z-index:1;}
.mo-flash{position:absolute;top:50%;left:50%;width:132px;height:132px;transform:translate(-50%,-50%);border-radius:50%;
  background:radial-gradient(circle,rgba(var(--lume-hi-rgb),.55),rgba(var(--lume-rgb),0) 68%);z-index:0;pointer-events:none;}
.mo-big{font-family:var(--sans);font-weight:800;font-size:76px;line-height:.92;letter-spacing:-.03em;color:#f4efe4;
  font-variant-numeric:tabular-nums;display:flex;align-items:baseline;justify-content:center;gap:8px;}
.mo-unit{font-size:30px;font-weight:700;color:#c9c4ba;letter-spacing:0;}
.mo-biglabel{font-size:26px;font-weight:600;color:#c9c4ba;letter-spacing:.01em;}
.mo-name{font-family:var(--sans);font-weight:800;font-size:26px;letter-spacing:-.01em;color:#f0ebe0;margin-top:14px;text-wrap:balance;}
.mo-line{font-family:var(--mono);font-size:14px;letter-spacing:.06em;color:#8b9098;margin-top:8px;}
.mo-dry{font-family:Georgia,"Times New Roman",serif;font-style:italic;font-size:17px;line-height:1.35;color:#a7abb1;margin-top:16px;max-width:24ch;}
.mo-also{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--lume-text);margin-top:16px;opacity:.9;}
.mo-meta{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#6f747c;margin-top:10px;}
.mo-foot{display:flex;flex-direction:column;align-items:stretch;gap:6px;width:100%;margin-top:34px;}
.mo-share{width:100%;}
.mo-done{background:none;border:none;font-family:var(--mono);font-size:13px;letter-spacing:.12em;color:#7a7f86;padding:12px;cursor:pointer;}
.mo-done:active{color:#e9e5dc;}

@keyframes moStampIn{0%{transform:scale(1.7) rotate(-8deg);opacity:0;}60%{transform:scale(.95) rotate(1.5deg);opacity:1;}100%{transform:scale(1) rotate(0);opacity:1;}}
@keyframes moFlash{0%{transform:translate(-50%,-50%) scale(.2);opacity:0;}25%{opacity:.55;}100%{transform:translate(-50%,-50%) scale(2.5);opacity:0;}}
@keyframes moRise{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:translateY(0);}}
.moment-backdrop .mo-sealwrap .seal{animation:moStampIn .55s cubic-bezier(.2,.9,.25,1) both;}
.moment-backdrop .mo-flash{animation:moFlash .7s ease-out both;}
.moment-backdrop .mo-big{animation:moRise .5s ease-out .38s both;}
.moment-backdrop .mo-name{animation:moRise .5s ease-out .46s both;}
.moment-backdrop .mo-line{animation:moRise .5s ease-out .52s both;}
.moment-backdrop .mo-dry{animation:moRise .5s ease-out .6s both;}
.moment-backdrop .mo-also,.moment-backdrop .mo-meta{animation:moRise .5s ease-out .68s both;}
.moment-backdrop .mo-foot{animation:moRise .5s ease-out .8s both;}
@media (prefers-reduced-motion:reduce){
  .moment-backdrop .mo-sealwrap .seal,.moment-backdrop .mo-flash,.moment-backdrop .mo-big,.moment-backdrop .mo-name,
  .moment-backdrop .mo-line,.moment-backdrop .mo-dry,.moment-backdrop .mo-also,.moment-backdrop .mo-meta,.moment-backdrop .mo-foot{animation:none;}
  .moment-backdrop .mo-flash{display:none;}
}

/* ---------------- Week One: promo card (briefing) ---------------- */
.w1-promo{position:relative;display:block;width:100%;text-align:left;overflow:hidden;cursor:pointer;
  border:1px solid rgba(var(--lume-rgb),.4);border-radius:16px;padding:14px 18px 13px;margin:14px 0 18px;
  background:linear-gradient(150deg,rgba(var(--lume-rgb),.14),rgba(var(--lume-rgb),.03) 60%),var(--panel);}
.w1p-glow{position:absolute;right:-30px;top:-30px;width:160px;height:160px;border-radius:50%;
  background:radial-gradient(circle,rgba(var(--lume-rgb),.35),transparent 70%);pointer-events:none;}
.w1p-k{position:relative;display:block;font-family:var(--mono);font-weight:700;letter-spacing:.24em;font-size:var(--fs-label);color:var(--lume-text);}
.w1p-big{position:relative;display:block;font-family:var(--sans);font-weight:800;font-size:var(--fs-title);letter-spacing:-.02em;color:var(--paper);margin-top:4px;}
.w1p-sub{position:relative;display:block;font-family:Georgia,serif;font-style:italic;font-size:var(--fs-body);color:var(--steel-2);margin-top:3px;}
.w1p-moved{position:relative;display:block;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.03em;color:var(--steel-2);margin-top:6px;}
.w1p-cta{position:relative;display:block;font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.1em;color:var(--lume-text);margin-top:8px;}
/* Big-week promo: frosted glass instead of the heavy gold gradient — lighter, more premium. */
.wk-promo{border:1px solid rgba(255,255,255,.12);
  background:linear-gradient(160deg,rgba(255,255,255,.10),rgba(255,255,255,.02) 70%);
  -webkit-backdrop-filter:blur(20px) saturate(1.4);backdrop-filter:blur(20px) saturate(1.4);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 12px 36px rgba(0,0,0,.30);}
.wk-promo .w1p-glow{opacity:.4;filter:blur(6px);}
/* Dismiss the recap without watching the reel. */
.w1p-x{position:absolute;top:5px;right:6px;z-index:2;width:30px;height:30px;display:flex;align-items:center;justify-content:center;
  font-size:19px;line-height:1;color:var(--steel-2);border-radius:50%;}
.w1p-x:active{background:rgba(255,255,255,.10);}
:root.theme-light .w1p-x:active{background:rgba(0,0,0,.06);}
:root.theme-light .wk-promo{border:1px solid rgba(0,0,0,.07);
  background:linear-gradient(160deg,rgba(245,241,233,.72),rgba(241,237,228,.42) 70%);
  box-shadow:inset 0 1px 0 rgba(255,252,246,.85),0 8px 24px rgba(60,50,40,.10);}

/* ---------------- Week One: the cinematic reel ---------------- */
.w1-reel{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:radial-gradient(120% 90% at 50% 30%,#131117 0%,#050506 70%);opacity:0;transition:opacity .4s ease;padding:56px 30px 40px;color:#e9e5dc;}
.w1-reel.show{opacity:1;}
.w1-skip{position:absolute;top:20px;right:22px;background:none;border:none;font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.12em;color:#6f747c;cursor:pointer;z-index:2;}
.w1-skip:active{color:#e9e5dc;}
.w1-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:100%;max-width:360px;gap:2px;}
.w1-dots{display:flex;gap:8px;padding-top:20px;}
.w1-dots span{width:6px;height:6px;border-radius:50%;background:#3a3a42;transition:background .3s;}
.w1-dots span.on{background:var(--lume);}

.w1-eyebrow{font-family:var(--mono);font-weight:700;letter-spacing:.34em;font-size:var(--fs-label);color:var(--lume-text);margin-bottom:8px;}
.w1-say{font-family:var(--sans);font-weight:700;font-size:var(--fs-title);letter-spacing:-.01em;color:#f0ebe0;max-width:18ch;line-height:1.25;text-wrap:balance;}
.w1-stats{display:flex;flex-direction:column;gap:12px;margin-top:34px;}
.w1-stat{font-family:var(--mono);font-size:var(--fs-name);letter-spacing:.14em;color:#c9c4ba;}
.w1-count{font-family:var(--sans);font-weight:800;font-size:150px;line-height:.9;letter-spacing:-.04em;color:#f4efe4;font-variant-numeric:tabular-nums;}
.w1-countlabel{font-family:var(--sans);font-weight:600;font-size:var(--fs-page);color:#c9c4ba;margin-top:4px;}
.w1-dry{font-family:Georgia,serif;font-style:italic;font-size:var(--fs-name);color:#a7abb1;margin-top:22px;}
.w1-sealwrap{position:relative;display:grid;place-items:center;margin-bottom:24px;}
.w1-sealwrap .seal{position:relative;z-index:1;opacity:.22;filter:grayscale(.35);transition:opacity .5s ease,filter .5s ease;}
.w1-sealwrap.struck .seal{opacity:1;filter:none;animation:moStampIn .55s cubic-bezier(.2,.9,.25,1) both;}
.w1-flash{width:140px;height:140px;}
.w1-sealwrap.struck .w1-flash{animation:moFlash .7s ease-out both;}
.w1-hero{margin-top:6px;}
.w1-baseline{font-family:Georgia,serif;font-style:italic;font-size:var(--fs-title);color:#cbb789;margin-top:18px;}

/* force the seal gold in these dark overlays regardless of app theme */
.w1-reel .seal .seal-line,.moment-backdrop .seal .seal-line{stroke:var(--lume);}
.w1-reel .seal .seal-fill,.moment-backdrop .seal .seal-fill{fill:var(--lume);}

/* beat entrance: content rises in when the stage gets .go */
.w1-stage.go>.w1-eyebrow,.w1-stage.go>.w1-say,.w1-stage.go>.w1-count,.w1-stage.go>.w1-countlabel,
.w1-stage.go>.w1-dry,.w1-stage.go>.w1-hero,.w1-stage.go>.mo-name,.w1-stage.go>.mo-line,
.w1-stage.go>.w1-baseline,.w1-stage.go>.mo-foot,.w1-stage.go>.w1-sealwrap{animation:moRise .6s ease-out both;}
.w1-stage.go>.w1-say{animation-delay:.12s;}
.w1-stage.go>.w1-countlabel{animation-delay:.1s;}
.w1-stage.go>.w1-dry{animation-delay:.5s;}
.w1-stage.go>.mo-name{animation-delay:.12s;}
.w1-stage.go>.mo-line{animation-delay:.2s;}
.w1-stage.go>.w1-baseline{animation-delay:.34s;}
.w1-stage.go>.mo-foot{animation-delay:.5s;}
.w1-stage.go .w1-stat{animation:moRise .5s ease-out both;}
/* big-week reel: the roll call of the week's sealed records */
.wr-list{display:flex;flex-direction:column;width:100%;max-width:320px;margin:10px auto 0;}
.wr-pr{display:flex;align-items:center;gap:11px;padding:10px 2px;border-top:1px solid rgba(255,255,255,.07);opacity:0;transform:translateY(8px);}
.wr-pr:first-child{border-top:none;}
.wr-pr .miniseal{width:22px;height:22px;flex:none;}
.w1-stage.go .wr-pr{animation:wrIn .45s ease-out forwards;}
.wr-nm{flex:1;min-width:0;text-align:left;font-family:var(--sans);font-size:15px;font-weight:600;color:#f4efe4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.wr-w{font-family:var(--mono);font-size:13px;color:#a7abb1;white-space:nowrap;}
.wr-w .x{color:#6b7178;}
.wr-tag{font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;color:var(--lume-text);border:1px solid rgba(var(--lume-rgb),.4);border-radius:8px;padding:2px 5px;}
.wr-more{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:#6b7178;margin-top:10px;text-align:center;}
@keyframes wrIn{to{opacity:1;transform:none;}}
@media (prefers-reduced-motion:reduce){
  .w1-stage.go>*,.w1-stage.go .w1-stat,.w1-stage.go .wr-pr{animation:none!important;opacity:1;transform:none;}
  .w1-sealwrap .seal{opacity:1;filter:none;}
  .w1-sealwrap.struck .seal,.w1-sealwrap.struck .w1-flash{animation:none;}
  .w1-flash{display:none;}
}

/* Week One: Done button matches the moment card's text button */
.w1-done{background:none;border:none;font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.12em;color:#7a7f86;padding:12px;cursor:pointer;width:100%;}
.w1-done:active{color:#e9e5dc;}
.w1-share{width:100%;}

/* ---- Light theme: the celebratory reel + moment run on warm paper, ink text, wax seal ---- */
:root.theme-light .moment-backdrop{background:radial-gradient(120% 90% at 50% 32%,var(--card) 0%,var(--ink) 66%,var(--stage) 100%);}
:root.theme-light .w1-reel{background:radial-gradient(120% 90% at 50% 30%,var(--card) 0%,var(--ink) 68%,var(--stage) 100%);color:var(--paper);}
:root.theme-light .moment{color:var(--paper);}
:root.theme-light .mo-big,:root.theme-light .w1-count,:root.theme-light .w1-say,
:root.theme-light .mo-name,:root.theme-light .wr-nm{color:var(--paper);}
:root.theme-light .mo-unit,:root.theme-light .mo-biglabel,:root.theme-light .w1-stat,
:root.theme-light .w1-countlabel{color:var(--steel-2);}
:root.theme-light .mo-dry,:root.theme-light .w1-dry,:root.theme-light .wr-w,
:root.theme-light .mo-line,:root.theme-light .mo-meta,:root.theme-light .wr-more,
:root.theme-light .w1-skip,:root.theme-light .w1-done,:root.theme-light .mo-done{color:var(--steel);}
:root.theme-light .mo-eyebrow,:root.theme-light .w1-eyebrow,:root.theme-light .mo-also,
:root.theme-light .wr-tag{color:var(--lume-hero);}
:root.theme-light .w1-dots span{background:var(--hair);}
:root.theme-light .w1-dots span.on{background:var(--lume-hero);}
:root.theme-light .w1-baseline{color:var(--lume-text);}
:root.theme-light .w1-reel .seal .seal-line,:root.theme-light .moment-backdrop .seal .seal-line{stroke:var(--lume-hero);}
:root.theme-light .w1-reel .seal .seal-fill,:root.theme-light .moment-backdrop .seal .seal-fill{fill:var(--lume-hero);}
:root.theme-light .wr-pr{border-top-color:rgba(0,0,0,.08);}
:root.theme-light .wr-tag{border-color:rgba(var(--lume-rgb),.4);}
:root.theme-light .wr-w .x{color:var(--steel);}

/* ---------------- The Reel (premium record archive, ship-order D) ---------------- */
/* briefing entry point: make the PR line tappable */
button.prline{background:none;border:none;font:inherit;color:inherit;width:100%;cursor:pointer;}
.prline-chev{color:var(--steel-2);font-size:var(--fs-chev);align-self:flex-start;margin-top:8px;}

.reel-screen{background:var(--ink);}
#s-reel .scroll{padding:0 24px 24px;}
.reel-head{position:sticky;top:0;z-index:5;background:var(--ink);padding-bottom:18px;}
.reel-head .reel-sub{margin-bottom:0;}
.reel-h{font-family:var(--sans);font-weight:800;font-size:var(--fs-page);letter-spacing:-.01em;color:var(--paper);margin:0;}
.reel-sub{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;color:var(--steel);margin:8px 0 22px;}
.reel-month{font-family:var(--mono);font-weight:700;font-size:var(--fs-label);letter-spacing:var(--ls-label);color:var(--lume-text);margin:24px 0 6px;}

.reel-entry{display:grid;grid-template-columns:34px 1fr;gap:14px;position:relative;padding:12px 0;}
.reel-rail{position:relative;display:flex;justify-content:center;}
.reel-rail::before{content:"";position:absolute;top:-12px;bottom:-12px;left:50%;width:1.5px;background:var(--hair);transform:translateX(-50%);}
.reel-entry:first-of-type .reel-rail::before{top:14px;}
.reel-rail .miniseal{position:relative;z-index:1;width:26px;height:26px;background:var(--ink);border-radius:50%;padding:2px;box-sizing:border-box;}
.reel-body{padding-top:1px;}
.reel-lift{font-family:var(--sans);font-weight:700;font-size:var(--fs-name);color:var(--paper);letter-spacing:-.01em;}
.reel-num{font-family:var(--mono);font-size:var(--fs-title);color:var(--paper);margin-top:3px;font-variant-numeric:tabular-nums;}
.reel-num .x{color:var(--steel);margin:0 2px;}
.reel-delta{font-family:var(--mono);font-size:var(--fs-value);color:var(--lume-text);margin-left:6px;letter-spacing:.02em;}
.reel-first{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.16em;color:var(--lume-text);border:1px solid rgba(var(--lume-rgb),.4);border-radius:5px;padding:2px 6px;margin-left:6px;vertical-align:2px;}
.reel-date{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;color:var(--steel);margin-top:5px;}

.reel-entry.locked{opacity:.62;}
.reel-entry.locked .reel-num,.reel-entry.locked .reel-date{filter:blur(5px);user-select:none;}
.reel-entry.locked .reel-rail .miniseal{opacity:.5;}

.reel-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:18px;padding:50px 20px;}
.reel-empty .seal{width:96px;height:96px;opacity:.5;}
.reel-empty p{font-family:var(--sans);font-size:var(--fs-body);color:var(--steel);max-width:26ch;line-height:1.4;}
.reel-end{font-family:var(--mono);font-style:normal;font-size:var(--fs-value);color:var(--steel);text-align:center;padding:30px 0 10px;}

/* ---- Standard confirm sheet (.sheet.std) ----
   Header (label + x), a short question, an optional gray detail line, one filled primary
   (red when it deletes), an outlined second choice only when there are two real answers,
   and a small centered dismiss. No notes under buttons. */
.sheet.std{padding:16px 18px 22px;}
.sheet.std .co-head{margin-bottom:12px;}
.sheet.std .co-q{font-family:var(--sans);font-size:var(--fs-name);font-weight:500;line-height:1.35;letter-spacing:0;color:var(--paper);margin:0 0 4px;}
.sheet.std .std-d,.sheet.std .co-meta{font-family:var(--sans);font-size:var(--fs-value);line-height:1.45;letter-spacing:0;color:var(--steel-2);margin:0 0 16px;}
.sheet.std .co-q + .std-p,.sheet.std .co-q + .rn-input{margin-top:12px;}
.sheet.std .std-warn{margin:8px 0 0;text-align:center;}
.sheet.std > .std-p,.sheet.std > .std-s,.sheet.std > .std-x{display:block;width:100%;box-sizing:border-box;text-align:center;font-family:var(--mono);cursor:pointer;}
.sheet.std > .std-p{background:var(--lume-hero);color:var(--on-lume);border:none;border-radius:14px;padding:15px 14px;font-size:var(--fs-body);font-weight:600;letter-spacing:.05em;margin-top:4px;}
.sheet.std > .std-p.del{background:var(--red);color:#1b0d0a;}
.sheet.std > .std-s{background:none;border:1px solid var(--hair);border-radius:14px;padding:14px;margin-top:10px;color:var(--paper);font-size:var(--fs-body);font-weight:600;letter-spacing:.05em;}
.sheet.std > .std-s.del{color:var(--red);}
.sheet.std > .std-x{background:none;border:none;border-radius:0;padding:14px 0 2px;color:var(--steel-2);font-size:var(--fs-value);font-weight:400;letter-spacing:.04em;}
.sheet.std > .std-p:active,.sheet.std > .std-s:active{filter:brightness(.92);}
.sheet.std > .std-x:active{color:var(--paper);background:none;}
.sheet.std .rn-input,.sheet.std .sd-dateinput{margin-bottom:12px;}
.sheet.std .recal-warn{margin:0 0 14px;}
.sheet.std .co-q.rn-use{font-size:var(--fs-value);font-weight:400;color:var(--steel-2);margin:0 0 14px;}
.d-toprow{display:flex;align-items:flex-end;justify-content:space-between;padding-top:14px;margin-bottom:18px;}   /* same as a day page (sd-head): back sits at the same height, 18px to the content */
.sheet > .menu-div{height:1px;background:var(--hair-soft);margin:6px 12px;}

/* ---- Sheet spacing standard (modeled on Add lift) ----
   Every sheet's text starts 18px from the edge: 18px top, 24px bottom. Tappable rows keep an 8px gutter
   so their pressed/selected highlight never touches the sheet edge, and pad 10px inside it so their
   text lands on the same 18px line as the header. Header to first content: 14px. */
.sheet{padding:18px 8px 24px;}
.sheet.daypick{padding:18px 8px 24px;}
.sheet.closeout,.sheet.std,.sheet.picker{padding:18px 18px 24px;}
.sheet>button:not(.cta){padding:16px 10px;}
.sheet button.day-opt{padding:16px 10px;}
.picker-h{margin:0 10px 14px;}
.sheet.closeout .picker-h,.sheet.picker .picker-h{margin:0 0 14px;}
.sheet.std .co-head,.sheet.closeout .co-head{margin-bottom:14px;}
.co-x{padding:0;}
.sheet > .menu-div{margin:6px 10px;}

/* Session performance context: Today's Last row line and the session screen's note. */
.lr-ctx{margin-top:6px;font-family:var(--sans);font-size:13px;line-height:1.4;color:var(--steel-2);}
.sd-ctx{margin:-8px 0 22px;padding:14px 16px;border:1px solid var(--hair);border-radius:14px;}
.sd-ctx-k{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--steel);margin-bottom:6px;}
.sd-ctx-lead{font-family:var(--sans);font-size:15px;font-weight:600;color:var(--paper);margin:0 0 4px;}
.sd-ctx-p{font-family:var(--sans);font-size:13.5px;line-height:1.45;color:var(--steel-2);margin:0;}
.sd-ctx-p + .sd-ctx-p{margin-top:6px;}

/* History by look-back (prototype) */


.h2-row{align-items:center;}
.h2-line{font-family:var(--sans);font-size:var(--fs-value);line-height:1.35;color:var(--steel-2);margin-top:5px;}
.h2-line.read{color:var(--paper-dim);}







/* History prototype v2: Insights | Sessions, one grid for every chart */


.tw-show .twc.h2-daycell{align-items:stretch;cursor:pointer;}
.h2-daycell svg{display:block;width:100%;height:100%;}
.tw-head .twc.now{color:var(--paper);}
.h2-more{display:block;width:100%;text-align:left;background:none;border:none;padding:14px 0 4px;color:var(--lume-text);font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.05em;cursor:pointer;}
.h2-lifts .twc{align-items:center;}
/* each training day gets its container back (rest days stay open), so a day reads as one unit */
.tw-show .twc.h2-daycell{background:rgba(var(--tint),.045);border-radius:7px;padding:0 3px;box-sizing:border-box;}
.h2-measure{font-family:var(--sans);font-size:var(--fs-value);line-height:1.4;color:var(--steel);margin:-6px 0 12px;}
/* History prototype: YOUR GOAL, building muscle (sets per area vs the 10 to 20 range) */

.h2g{position:relative;margin-bottom:10px;}
.h2g-row{display:grid;grid-template-columns:86px 1fr 30px;align-items:center;gap:10px;padding:4px 0;}
.h2g-nm{font-family:var(--sans);font-size:var(--fs-value);color:var(--steel-2);white-space:nowrap;}
.h2g-bar{position:relative;height:8px;border-radius:4px;background:rgba(var(--tint),.05);overflow:hidden;}
.h2g-band{position:absolute;top:0;bottom:0;background:rgba(var(--tint),.09);}
.h2g-fill{position:absolute;left:0;top:2px;bottom:2px;border-radius:2px;background:var(--steel);}
.h2g-row.in .h2g-fill{background:var(--paper-dim);}
.h2g-row.in .h2g-nm{color:var(--paper);}
.h2g-row.over .h2g-fill{background:var(--paper);}
.h2g-n{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);text-align:right;}
.h2g-row.in .h2g-n{color:var(--paper);}
.h2g-scale{position:relative;height:14px;margin-left:96px;margin-right:40px;font-family:var(--mono);font-size:9.5px;color:var(--steel);}
.h2g-scale span{position:absolute;top:2px;transform:translateX(-50%);}
/* PROTOTYPE: goal-aligned headline on Today (building muscle) */
.goalline .prstat b{font-size:var(--fs-hero);}
.goal-sub{display:block;font-style:normal;font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.02em;color:var(--steel-2);margin-top:6px;}
.h2g-plan{font-family:var(--sans);font-size:var(--fs-value);line-height:1.45;color:var(--steel-2);border:1px solid var(--hair);border-radius:12px;padding:11px 13px;margin:0 0 14px;}
.h2g-plan b{color:var(--paper);font-weight:600;}
.h2g-top{display:flex;align-items:baseline;gap:12px;margin:-2px 0 6px;}
.h2g-top b{font-family:var(--sans);font-size:var(--fs-page);font-weight:800;color:var(--lume-hero);letter-spacing:-.01em;}
.h2g-top span{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;color:var(--steel-2);}
/* PROTOTYPE: goal headline left-aligned, seal left, text beside it, arrow at the right edge */
.prline.goalline{justify-content:flex-start;text-align:left;gap:16px;}
.prline.goalline .prstat{text-align:left;align-items:flex-start;}
.prline.goalline .prstat span,.prline.goalline .goal-sub{text-align:left;}
.prline.goalline .prline-chev{margin-left:-6px;align-self:center;}
.weeknav.left{justify-content:flex-start;gap:10px;}
.weeknav.left .arw:first-child{padding-left:0;}
.weeknav.left .rng{min-width:0;text-align:left;}

.nx-set .tgt{white-space:nowrap;}
/* PROTOTYPE: goal screen entry on Body, gap tag on a Today lift */
.b-goal{background:rgba(var(--tint),.06);border:1px solid var(--hair);border-radius:10px;color:var(--paper-dim);font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;padding:6px 10px;cursor:pointer;}
.nx-tag{display:block;font-family:var(--sans);font-size:11.5px;font-weight:400;color:var(--lume-text);margin-top:2px;letter-spacing:0;}
#s-goal .scroll{padding:0 24px 40px;}
#s-goal .page-head:not(.sd-head){padding-top:4px;margin-top:0;}
/* PROTOTYPE History: Week / Rhythm / All time, the count opens the sessions slide-over */
.sheet.logsheet{height:88vh;display:flex;flex-direction:column;padding:18px 18px 12px;}
.logsheet .log-search{margin:0 0 8px;}
.logsheet .log-list{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;margin:0 -2px;}
.h2-trend{margin:0 0 14px;}
.h2-trendsvg{display:block;width:100%;height:210px;}
/* PROTOTYPE goal reel: entries are buttons that open the day */
button.reel-entry{background:none;border:none;padding:12px 0;width:100%;text-align:left;color:inherit;font:inherit;cursor:pointer;}

.reel-rail .reel-dot{position:relative;z-index:1;width:9px;height:9px;border-radius:50%;background:var(--steel);box-shadow:0 0 0 4px var(--ink);margin-top:6px;}
.reel-num .miniseal{width:18px;height:18px;vertical-align:-3px;margin-right:6px;}
.reel-num.won{color:var(--lume-text);}






.reel-entry.dated .reel-rail .reel-dot{margin-top:8px;}
.reel-day{font-family:var(--sans);font-weight:700;font-size:var(--fs-title);color:var(--paper);letter-spacing:-.01em;line-height:26px;}
.reel-sub2{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.03em;color:var(--steel-2);margin-top:3px;}


.reel-entry.dated .reel-num{margin-top:6px;}

.reel-week{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px 0 2px;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--steel);}
.reel-week .reel-rail{align-self:stretch;align-items:center;}
.reel-week .reel-tick{position:relative;z-index:1;width:16px;height:1.5px;background:var(--steel);box-shadow:0 0 0 3px var(--ink);}
.reel-week .rw-r{letter-spacing:.06em;color:var(--steel-2);}
.reel-week.won .rw-r{color:var(--lume-text);}
.reel-gap{display:grid;grid-template-columns:34px 1fr;gap:14px;padding:10px 0;font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--steel);}
.reel-gap .reel-rail::before{background:repeating-linear-gradient(var(--hair) 0 3px,transparent 3px 7px);}
.reel-week{position:relative;margin-top:8px;padding-top:18px;}
.reel-week::after{content:"";position:absolute;left:25px;right:0;top:6px;height:1px;background:var(--hair);}
.reel-week .rw-l{color:var(--steel-2);}
.reel-bar{display:block;position:relative;width:120px;height:5px;border-radius:3px;background:var(--hair);overflow:hidden;margin-top:8px;}
.reel-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:3px;background:var(--paper);}
.reel-bar.won i{background:var(--lume);}

.reel-week .rw-bar{grid-column:2 / 4;}
.reel-week .rw-bar .reel-bar{width:100%;margin-top:2px;height:4px;}
.reel-proof{font-family:var(--mono);font-size:14px;color:var(--lume-text);margin-top:8px;}
.reel-proof .miniseal{width:18px;height:18px;vertical-align:-4px;margin-right:7px;}
.reel-sets{font-family:var(--mono);font-size:13px;color:var(--paper);margin-top:6px;}
.reel-week .rw-l,.reel-week .rw-r{white-space:nowrap;}
.bw{margin-top:22px;}


.bw-row{display:grid;grid-template-columns:96px minmax(0,1fr) 34px;gap:12px;align-items:center;padding:6px 0;}
.bw-nm{font-family:var(--sans);font-size:var(--fs-value);font-weight:600;color:var(--paper);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.bw-bar{position:relative;height:6px;border-radius:3px;background:var(--hair);overflow:hidden;}

.bw-fill{position:absolute;left:0;top:0;bottom:0;background:var(--paper);border-radius:3px;}
.bw-row.in .bw-fill{background:var(--lume);}
.bw-ghost{position:absolute;top:0;bottom:0;background:var(--paper);opacity:.38;}
.bw-n{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);text-align:right;font-variant-numeric:tabular-nums;}
.bw-row.in .bw-n{color:var(--lume-text);}

.bw-key{font-family:var(--mono);font-size:var(--fs-label);color:var(--steel);margin:14px 0 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.bw-key i{display:inline-block;width:14px;height:6px;border-radius:3px;}
.bw-key .k-fill{background:var(--paper);}
.bw-key .k-ghost{background:var(--paper);opacity:.38;margin-left:10px;}


.bw-tl{margin-top:18px;}
.bw-week .reel-body{padding-bottom:10px;}
.bw-rows{margin-top:10px;}
.bw-week .bw-row{grid-template-columns:92px 110px auto;gap:14px;padding:3px 0;}
.bw-week .bw-nm{font-family:var(--mono);font-size:var(--fs-value);font-weight:400;color:var(--paper);}
.bw-week .bw-bar{height:9px;border-radius:2px;}
.bw-week .bw-fill{border-radius:2px;}
.bw-week .bw-n{font-size:var(--fs-value);text-align:left;color:var(--steel-2);}
.bw-week .bw-n .x{color:var(--steel);}
.reel-sub2.won{color:var(--lume-text);}
.reel-rail .reel-dot.won{background:var(--lume);}
.bw-week .bw-key{margin-top:8px;}
.bw-week .bw-row{grid-template-columns:88px 92px auto;gap:10px;}
.bw-week .bw-n{white-space:nowrap;}
.sw-strip{display:grid;grid-template-columns:repeat(7,26px);gap:6px;margin-top:12px;}
.sw-day{display:flex;flex-direction:column;align-items:center;gap:5px;}
.sw-day b{font-family:var(--mono);font-size:10px;font-weight:400;color:var(--steel);}
.sw-day i{width:12px;height:12px;border-radius:50%;background:var(--hair);}
.sw-day.on i{background:var(--paper);}
.sw-day.on{cursor:pointer;}
.sw-day.fut i{background:none;border:1.5px dashed var(--hair);box-sizing:border-box;}
.bw-week .sw-strip + .bw-rows{margin-top:12px;}
/* goal timelines: one type scale. Mono 12.5 for summaries and rows, mono 11 for labels. */
#s-reel .reel-sub2{font-size:var(--fs-value);letter-spacing:.02em;}
#s-reel .reel-sub2 .miniseal{width:16px;height:16px;vertical-align:-4px;margin-right:6px;}
#s-reel .bw-nm,#s-reel .bw-n{letter-spacing:.02em;}
#s-reel .bw-key,#s-reel .sw-day b,#s-reel .reel-gap{font-size:var(--fs-label);}
#s-reel .bw-tl .reel-month:first-child{margin-top:4px;}
.rc-row{display:grid;grid-template-columns:minmax(0,1fr) auto 64px;gap:10px;align-items:baseline;padding:3px 0;}
.rc-row .bw-nm{font-family:var(--mono);font-size:var(--fs-value);color:var(--paper);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rc-v{font-family:var(--mono);font-size:var(--fs-value);color:var(--lume-text);white-space:nowrap;font-variant-numeric:tabular-nums;}
.rc-v .x{color:var(--steel);}

.rc-row{grid-template-columns:minmax(0,1fr) auto;}
/* PROTOTYPE Body: full-body sheet, in the muscle sheet's format */
.cov-row.fb .cov-tr{position:relative;}
.cov-row.fb .fb-tick{position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:var(--steel);opacity:.7;}
.cov-row.fb.in .cov-bf{background:var(--lume);}
.cov-row.fb.in .cov-pc,.cov-row.fb.in .cov-nm{color:var(--lume-text);}
.b-stats b i{font-style:normal;font-size:var(--fs-value);color:var(--steel);margin-left:1px;}
.b-fnote{font-family:var(--sans);font-size:var(--fs-value);line-height:1.5;color:var(--paper-dim);margin:16px 0 0;}
.b-fnote.dim{color:var(--steel);}
.b-fulllink{display:block;width:100%;margin:22px 0 4px;padding:14px 0;background:none;border:none;border-top:1px solid var(--hair);color:var(--lume-text);font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;text-align:left;cursor:pointer;}
/* PROTOTYPE This week (Today ↗) and Progress */
#s-week .scroll{padding:0 24px 40px;}
.wk-dates{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);margin:4px 0 18px;}
.wk-big{font-family:var(--sans);font-size:var(--fs-page);font-weight:800;letter-spacing:-.01em;color:var(--paper);display:flex;align-items:baseline;gap:10px;margin:0 0 14px;}
.wk-big small{font-family:var(--mono);font-size:var(--fs-value);font-weight:400;color:var(--steel-2);letter-spacing:.02em;}
.wk-big.won{color:var(--lume-text);}
.wk-big .miniseal{width:24px;height:24px;align-self:center;}
.wk-grp{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);color:var(--steel);margin:20px 0 6px;}
.wk-none{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel);margin:4px 0;}
.wk-more{background:none;border:none;padding:8px 0 0;font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);cursor:pointer;}
.wk-all{display:block;width:100%;margin:24px 0 0;padding:16px 0;background:none;border:none;border-top:1px solid var(--hair);color:var(--lume-text);font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;text-align:left;cursor:pointer;}
#s-week .bw-row{grid-template-columns:96px minmax(0,1fr) 72px;gap:12px;padding:5px 0;}
#s-week .bw-nm{font-family:var(--mono);font-size:var(--fs-value);font-weight:400;}
#s-week .bw-bar{height:9px;border-radius:2px;}
#s-week .bw-n,#s-records .bw-n{font-size:var(--fs-value);text-align:left;white-space:nowrap;}
.rc-m2{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel);white-space:nowrap;}
.wk-sess{width:100%;background:none;border:none;border-bottom:1px solid var(--hair-soft);padding:9px 0;text-align:left;cursor:pointer;color:inherit;}
.sw-day.hot i{background:var(--lume);}
.prog-seg{margin-bottom:14px;}
.prog-sum{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel);margin:0 0 14px;}
.prog-now{display:flex;justify-content:space-between;align-items:center;width:100%;margin:6px 0 4px;padding:12px 14px;background:none;border:1px dashed var(--hair);border-radius:12px;color:var(--steel-2);font-family:var(--mono);font-size:var(--fs-value);cursor:pointer;}
.prog-now b{font-family:var(--sans);font-size:var(--fs-body);font-weight:600;color:var(--paper);}
.prog-wkh{display:flex;justify-content:space-between;align-items:baseline;width:100%;background:none;border:none;padding:0;color:inherit;cursor:pointer;text-align:left;}
.prog-chev{font-size:var(--fs-chev);color:var(--steel);}
.prog-wk .bw-rows{margin-top:10px;}
#s-records .bw-row{grid-template-columns:88px 92px auto;gap:10px;padding:3px 0;}
#s-records .bw-nm{font-family:var(--mono);font-size:var(--fs-value);font-weight:400;}
.pl-grp{display:flex;justify-content:space-between;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);color:var(--steel);margin:18px 0 2px;}
.pl-row{display:grid;grid-template-columns:minmax(0,1fr) 46px 96px;gap:10px;align-items:center;width:100%;padding:11px 0;background:none;border:none;border-bottom:1px solid var(--hair-soft);text-align:left;color:inherit;cursor:pointer;}
.pl-nm{min-width:0;}
.pl-nm b{display:block;font-family:var(--sans);font-size:var(--fs-name);font-weight:600;color:var(--paper);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pl-nm small{display:block;font-family:var(--mono);font-size:var(--fs-label);color:var(--steel);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pl-spark{width:46px;height:18px;display:block;}
.pl-bars{display:flex;align-items:flex-end;gap:3px;height:14px;}
.pl-bars i{width:5px;border-radius:1px;background:var(--steel-2);}
.pl-d{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);text-align:right;line-height:1.35;white-space:nowrap;}
.pl-d.up{color:var(--lume-text);}
.pl-d.dn{color:var(--steel);}
.reel-sub2{font-size:var(--fs-value);}
.reel-sub2 .miniseal{width:16px;height:16px;vertical-align:-4px;margin-right:6px;}
.prog-now > span:first-child{display:flex;flex-direction:column;align-items:flex-start;gap:2px;}
.prog-now small{font-size:var(--fs-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--steel);}
/* Progress: finished weeks as Records-style cards */
.prog-card{margin-top:10px;}
.prog-card .rc-head{gap:6px;}
.prog-card .reel-sub2{margin-top:0;}
.prog-card .rc-body .bw-rows{margin-top:2px;}
.prog-card .rc-body .sw-strip{margin-top:2px;}
.prog-gap{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel);margin:14px 2px 0;}
#s-records .reel-month{margin:26px 0 0;}
.prog-goal{margin-left:auto;align-self:center;background:none;border:none;padding:4px 0;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--steel-2);cursor:pointer;white-space:nowrap;}
/* Today: spread spare height between the sections (capped, so a tall phone breathes without looking stretched) */
#s-brief .scroll{display:flex;flex-direction:column;}
#s-brief .scroll > *{flex-shrink:0;}
#s-brief .bgap{flex:1 1 0;min-height:0;}
#s-brief .bgap.b1{flex-grow:1;max-height:28px;}
#s-brief .bgap.b2{flex-grow:2;max-height:44px;}
.wk-streak{margin-top:2px;}
#s-brief .scroll > .dots{margin-left:0;align-self:stretch;}
/* the seal beside Today's main number carries more presence */
.prline.goalline .seal{width:100px;height:100px;}
.prline.goalline{margin-bottom:14px;}
#s-brief .weeknav.left{margin:16px 0 14px;}
.nobr{white-space:nowrap;}
/* Today's top block, evened out: a bit more air between the headline and the week, the rest balanced around it */
#s-brief .weeknav.left{margin:16px 0 16px;}
.prline.goalline{margin-bottom:24px;}
#s-brief .scroll > .dots{margin-bottom:12px;}
.prstat .goal-sub .nobr{display:inline;font:inherit;color:inherit;letter-spacing:inherit;margin:0;text-transform:none;}
/* Today: the week range and the Last line read at the lift-name size */
.weeknav .rng,.lr-btm{font-size:var(--fs-name);}
/* weight says what you act on, size says what you read: context at 16px, regular, softer */
.weeknav .rng,.lr-btm,.lr-btm .lr-lift{font-weight:400;color:var(--paper-dim);}
/* Edit routine: Blocks | Text, the live check, Ask your AI, and what a paste changed */
.redit-seg{margin:0 0 16px;}
.redit-text{display:block;width:100%;box-sizing:border-box;min-height:46vh;background:var(--panel);border:1px solid var(--hair);border-radius:14px;padding:14px 16px;color:var(--paper);font-family:var(--mono);font-size:var(--fs-value);line-height:1.7;resize:vertical;}
.redit-text:focus{outline:none;border-color:var(--steel);}
.redit-check{margin:14px 2px 0;}
.rc-line{font-family:var(--mono);font-size:var(--fs-value);line-height:1.5;color:var(--steel-2);margin:0 0 6px;}
.rc-line b{color:var(--paper);font-weight:600;}
.rc-line b.up{color:var(--lume-text);}
.rc-line.warn{color:var(--lume-text);}
.rc-line.dim{color:var(--steel);}
.rc-sg{color:var(--steel);}
.redit-tg{font-family:var(--mono);font-size:var(--fs-label);color:var(--steel);margin-left:6px;letter-spacing:.02em;}
.redit-pasted{border:1px dashed var(--lume);border-radius:14px;padding:12px 14px;margin:0 0 14px;background:rgba(var(--lume-rgb),.06);}
.rp-h{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);color:var(--lume-text);margin-bottom:6px;}
.rp-undo{background:none;border:none;padding:4px 0 0;font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);text-decoration:underline;cursor:pointer;}
.aisheet .ai-svc,.aisheet .ai-ask{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 12px;}
.ai-chip{background:none;border:1px solid var(--hair);border-radius:20px;padding:7px 12px;color:var(--steel-2);font-family:var(--mono);font-size:var(--fs-value);cursor:pointer;}
.ai-chip.on{background:var(--paper);border-color:var(--paper);color:var(--ink);}
.ai-chip.sm{padding:6px 10px;font-size:var(--fs-label);letter-spacing:.04em;}
.ai-chip:disabled{opacity:.35;}
.ai-f{display:grid;grid-template-columns:110px minmax(0,1fr);align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--hair-soft);font-family:var(--mono);font-size:var(--fs-value);color:var(--steel);}
.ai-f input{background:none;border:none;color:var(--paper);font-family:var(--mono);font-size:var(--fs-value);padding:2px 0;min-width:0;}
.ai-f input:focus{outline:none;}
.ai-prev{margin:12px 0 4px;}
.ai-prev summary{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);cursor:pointer;}
.ai-prev pre{white-space:pre-wrap;font-family:var(--mono);font-size:var(--fs-label);line-height:1.6;color:var(--steel-2);background:var(--panel);border-radius:10px;padding:10px 12px;max-height:180px;overflow:auto;margin:8px 0 0;}
.ai-note{font-family:var(--mono);font-size:var(--fs-label);color:var(--lume-text);margin:8px 0 0;min-height:0;}
.ai-note:empty{display:none;}
.ai-foot{text-align:center;margin-top:10px !important;}
.pb-alt{margin-top:12px;}
.pb-alt summary{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);cursor:pointer;}
.pb-ta{width:100%;box-sizing:border-box;margin:10px 0 8px;background:var(--panel);border:1px solid var(--hair);border-radius:10px;color:var(--paper);font-family:var(--mono);font-size:var(--fs-value);padding:10px;resize:vertical;}
.pb-out{margin-top:10px !important;}
.ob-ai{display:block;width:100%;margin:14px 0 10px;padding:14px;background:none;border:1px solid var(--hair);border-radius:14px;color:var(--paper);font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;cursor:pointer;}
#s-redit .scroll::after{content:"";display:block;height:32px;}
.redit-aibtn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin-top:18px;padding:17px;background:var(--paper);color:var(--ink);border:none;border-radius:15px;font-family:var(--mono);font-weight:700;font-size:var(--fs-data);letter-spacing:.06em;cursor:pointer;}
.redit-aibtn .sparkles{width:20px;height:20px;fill:currentColor;flex:none;}
.redit-aisub{text-align:center;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.04em;color:var(--steel);margin:10px 0 0;}
/* Edit routine: Cancel and Save above the title */
.redit-top{display:flex;justify-content:space-between;align-items:center;padding:var(--top) 0 2px;}
.redit-top button{background:none;border:none;padding:8px 0;font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.06em;cursor:pointer;}
.redit-cancel{color:var(--steel-2);}
.redit-save{color:var(--steel);opacity:.55;}
.redit-save.on{color:var(--lume-text);opacity:1;font-weight:700;}
.redit-top + .page-head{padding-top:2px;margin-top:0;}
.ai-row{display:grid;grid-template-columns:110px minmax(0,1fr);gap:10px;align-items:center;padding:4px 0 8px;font-family:var(--mono);font-size:var(--fs-value);color:var(--steel);}
.ai-row .ai-ask{margin:0;}
.redit-top button{min-height:44px;min-width:64px;}
.redit-top .redit-save{text-align:right;}
.redit-top .redit-cancel{text-align:left;}
/* Cancel and Save stay reachable while a long routine scrolls under them */
.redit-top{position:sticky;top:0;z-index:5;background:var(--ink);margin:0 -24px;padding-left:24px;padding-right:24px;}
.redit-top + .page-head{position:static;z-index:auto;}
/* Notes: a quiet line under the lift name on the logger, the notes sheet, and where notes resurface */
.lift-note{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;margin:-2px 0 10px;padding:4px 0;background:none;border:none;text-align:left;cursor:pointer;font-family:var(--mono);font-size:var(--fs-value);color:var(--paper-dim);}
.lift-note span{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lift-note b{font-weight:400;font-size:var(--fs-label);letter-spacing:var(--ls-label);color:var(--steel);margin-right:6px;}
.lift-note .ln-today{color:var(--paper);}
.lift-note .ln-prev{color:var(--steel-2);}
.lift-note.empty{color:var(--steel);}
.notesheet .ns-f{display:block;margin:6px 0 14px;}
.ns-l{display:block;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);color:var(--paper);}
.ns-d{display:block;font-family:var(--mono);font-size:var(--fs-label);color:var(--steel);margin:2px 0 8px;}
.notesheet textarea{width:100%;box-sizing:border-box;background:var(--panel);border:1px solid var(--hair);border-radius:12px;padding:11px 12px;color:var(--paper);font-family:var(--sans);font-size:var(--fs-body);line-height:1.45;resize:vertical;}
.notesheet textarea:focus{outline:none;border-color:var(--steel);}
.sd-note{font-family:var(--mono);font-size:var(--fs-value);color:var(--paper-dim);margin:-4px 0 10px;}
.d-setup{font-family:var(--mono);font-size:var(--fs-value);color:var(--paper-dim);margin:8px 0 0;}
.d-setup b{font-weight:400;font-size:var(--fs-label);letter-spacing:var(--ls-label);color:var(--steel);margin-right:6px;}
.sd-snote{margin:0 0 20px;padding:12px 14px;border:1px solid var(--hair-soft);border-radius:12px;background:rgba(var(--tint),.03);display:flex;flex-direction:column;gap:6px;}
.sd-snote-h{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);color:var(--steel-2);}
.sd-snote p{margin:0;font-family:var(--sans);font-size:var(--fs-body);line-height:1.45;color:var(--paper-dim);}
/* Week: records sit in their own row, a wax dot under the lift that set one */
.h2-recs{margin-top:8px;}
.h2-recs .twc{height:12px;}
.h2-recs .twc.h2-reccell{padding:0 3px;box-sizing:border-box;}
.h2-reccell svg{display:block;width:100%;height:100%;}
/* Session detail: each lift's usual, the baseline the week bars compare against */
.sd-usual{font-family:var(--mono);font-size:var(--fs-value);color:var(--paper-dim);margin:-4px 0 10px;}
.sd-usual + .sd-note{margin-top:-6px;}
/* Body: YOUR EXERCISES rows pick the charted lift; the charted one stays full strength */
.b-pick .cov-row{width:100%;background:none;border:0;padding:0;color:inherit;text-align:left;cursor:pointer;}
.b-pick .cov-row:not(.on) .cov-nm,.b-pick .cov-row:not(.on) .cov-pc{color:var(--paper-dim);}
.b-pick .cov-row:not(.on) .cov-bf{opacity:.35;}
/* Goal intro (one time, 2.1.7): three goal cards, the picked one outlined */
.goal-intro .gi-cards{display:flex;flex-direction:column;gap:8px;margin:14px 0 14px;}
.gi-card{display:flex;flex-direction:column;gap:4px;text-align:left;background:rgba(var(--tint),.04);border:1px solid var(--hair);border-radius:12px;padding:12px 14px;color:var(--paper);cursor:pointer;}
.gi-card b{font-family:var(--sans);font-size:var(--fs-name);font-weight:600;}
.gi-card span{font-family:var(--sans);font-size:var(--fs-value);line-height:1.4;color:var(--paper-dim);}
.gi-card.on{border-color:var(--paper);background:rgba(var(--tint),.08);}
.goal-intro .gi-foot{margin:12px 0 2px;text-align:center;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.04em;color:var(--steel-2);}
/* Progress chart key: what a dot and the line are */
.h2-key{display:flex;flex-wrap:nowrap;gap:16px;margin-top:10px;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.04em;color:var(--steel-2);}
.h2-key span{display:inline-flex;align-items:center;gap:6px;}
.h2-key .k-dot{width:5px;height:5px;border-radius:50%;background:var(--steel);}
.h2-key .k-line{width:14px;height:2px;border-radius:1px;background:var(--lume);}
.h2-trend + .h2-key{margin-top:-4px;}   /* the chart keeps 14px below it; the key sits 10px under */
.h2-key .k-plan{width:14px;height:0;border-top:1px dashed var(--steel);}
/* Progress > Muscles: one bar per body area (avg sets per muscle a week) against the 10 to 20 zone */
.mz-chart{display:flex;flex-direction:column;margin-top:4px;}
.mz-row{display:grid;grid-template-columns:88px minmax(0,1fr) 34px;align-items:center;}
.mz-nm{font-size:var(--fs-body);color:var(--paper);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:8px;}
.mz-tr{position:relative;display:block;height:34px;}
.mz-zone{display:none;}   /* the zone is marked by its wax line, not a panel */
.mz-ten{position:absolute;top:0;bottom:0;left:50%;border-left:1px dashed var(--lume-text);opacity:.4;}   /* quiet enough that a number crossing it stays legible */
.mz-bar{position:absolute;left:0;top:12px;height:10px;border-radius:3px;background:var(--paper-dim);}
.mz-area.in .mz-bar{background:var(--lume);}
.mz-v2{position:absolute;top:50%;transform:translateY(-50%);font-style:normal;font-family:var(--mono);font-size:var(--fs-value);color:var(--paper-dim);font-variant-numeric:tabular-nums;}
.mz-area.in .mz-v2{color:var(--lume-text);}
.mz-ax .mz-tr{height:18px;}
.mz-ax{margin-top:4px;}
.mz-ax i{position:absolute;transform:translateX(-50%);font-style:normal;font-family:var(--mono);font-size:var(--fs-label);color:var(--steel);}
.mz-ax i:first-child{transform:none;}
.mz-ax i:last-child{transform:translateX(-100%);}
.mz-key{margin:14px 0 28px;}
.mz-key .k-mbar{width:14px;height:8px;border-radius:2px;background:var(--paper-dim);}
.mz-key .k-mzone{width:0;height:12px;border-left:1px dashed var(--lume-text);}
.prog-card .rc-body .mz-chart{margin:4px 0 6px;}
.prog-card .rc-body .mz-tr{height:28px;}
.prog-card .rc-body .mz-bar{top:9px;}
.mz-key span{white-space:nowrap;}
/* Sets: the "how this is counted" link and its sheet */
.mz-how{display:block;margin:-18px 0 28px;padding:6px 0;background:none;border:0;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.04em;color:var(--steel-2);cursor:pointer;}
.mz-howsheet ul{margin:10px 0 12px;padding-left:18px;display:flex;flex-direction:column;gap:8px;}
.mz-howsheet li{font-size:var(--fs-body);line-height:1.45;color:var(--paper-dim);}
.mz-howsheet .std-d b{color:var(--paper);font-weight:600;}
/* Progress > Strength: bars either side of a zero line; wax when the area set a record */
.st-zero{position:absolute;top:0;bottom:0;left:50%;border-left:1px solid var(--steel);opacity:.6;}
.st-row.dn .mz-bar{background:var(--steel);}
.st-row.dn .mz-v2{text-align:right;}
.mz-key .k-mrec{width:14px;height:8px;border-radius:2px;background:var(--lume);}
.mz-row.rl{grid-template-columns:88px minmax(0,1fr) 56px;}
.mz-v3{font-family:var(--mono);font-size:var(--fs-value);color:var(--paper-dim);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;}
.mz-area.in .mz-v3{color:var(--lume-text);}
.mz-v2{white-space:nowrap;}
.hist-l7{margin-top:28px;}
/* Progress > Lifts: search with a compact sort toggle on the same line */
.pl-tools{display:flex;align-items:center;gap:12px;}
.pl-tools .lsearch{flex:1;min-width:0;}
.pl-sort{flex:none;background:none;border:0;padding:10px 0;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.06em;color:var(--steel-2);white-space:nowrap;cursor:pointer;}
.pl-tools{margin:18px 0 4px;}
.pl-tools .lsearch{margin:0;}
.pl-sort{align-self:stretch;display:flex;align-items:center;}
/* the sort toggle as a button in the search field's own container, so the row reads as one control */
.pl-tools{gap:8px;}
.pl-sort{background:var(--ink-2);border:1px solid var(--hair);border-radius:12px;padding:0 14px;color:var(--paper-dim);}
.pl-sort:active{background:var(--panel);}
/* rep-first goals anchor on last time's set: neutral, wax stays for records */
.beat .rec.last{color:var(--paper);}
.beat .rec.last .k{color:var(--steel-2);}
.beat .rec.last .x{color:var(--steel-2);}
/* Exercise illustrations: always on their own black ground (drawn for it), a dark tile in both themes */
.h1row .exic.illus{width:46px;height:46px;padding:0;border-radius:11px;overflow:hidden;background:var(--illus-tile);border:1px solid var(--hair);cursor:pointer;}
.h1row .exic.illus img,:root.theme-light .h1row .exic.illus img{width:100%;height:100%;filter:none;object-fit:cover;display:block;}
.illus-sheet .illus-full{display:block;width:100%;max-width:100%;aspect-ratio:1;border-radius:14px;background:var(--illus-tile);margin:6px 0 4px;}
/* Illustration thumbnails across lists: the black tile, no icon tint */
.lift .ic.illus{padding:0;overflow:hidden;background:var(--illus-tile);}
.lift .ic.illus img,:root.theme-light .lift .ic.illus img,:root.theme-light .lift.done .ic.illus img{width:100%;height:100%;filter:none;object-fit:cover;display:block;}
.pl-row{grid-template-columns:38px minmax(0,1fr) 46px 96px;}
.pl-ic{width:38px;height:38px;border-radius:10px;background:var(--panel);border:1px solid var(--hair);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.pl-ic img{width:22px;height:22px;filter:invert(78%) sepia(8%) saturate(280%) hue-rotate(169deg) brightness(102%);}
:root.theme-light .pl-ic img{filter:invert(42%) sepia(10%) saturate(360%) hue-rotate(169deg) brightness(90%);}
.pl-ic.illus{background:var(--illus-tile);}
.pl-ic.illus img,:root.theme-light .pl-ic.illus img{width:100%;height:100%;filter:none;object-fit:cover;}
.d-titlerow{display:flex;align-items:center;gap:14px;margin-top:6px;}
.d-titlerow .d-title{margin:0;min-width:0;}
.d-illus{flex:none;width:64px;height:64px;padding:0;border-radius:14px;overflow:hidden;background:var(--illus-tile);border:1px solid var(--hair);cursor:pointer;}
.d-illus img{width:100%;height:100%;display:block;}
/* Set screen with an illustration: a larger thumbnail on the left spanning the name and the note line */
.strike-ihead{display:flex;align-items:center;gap:14px;margin-bottom:11px;}
.exic-lg{flex:none;width:68px;height:68px;padding:0;border-radius:14px;overflow:hidden;background:var(--illus-tile);border:1px solid var(--hair);cursor:pointer;}
.exic-lg img{width:100%;height:100%;display:block;}
.ihead-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
.strike-ihead .h1row{margin-bottom:0;}
.strike-ihead .h1row h1{min-width:0;overflow:hidden;text-overflow:ellipsis;}
/* Set screen toggles: BW and W short, the rest timer at the end of the row at the toggles' height */
.segs{flex-wrap:nowrap;align-items:stretch;}
.segs .rest{margin-left:auto;align-self:stretch;border-radius:10px;padding:0 14px;gap:8px;}
.segs .rest .rest-tog,.segs .rest .rest-t{font-size:var(--fs-value);}
/* the toggle row spans the full width: every group grows, every option centred */
.segs > .seg{flex:1 1 0;display:flex;}
.segs > .seg:first-child{flex:2.4 1 0;}
.segs > .seg span{flex:1;display:flex;align-items:center;justify-content:center;padding-left:6px;padding-right:6px;}
.segs > .rest{flex:1.6 1 0;margin-left:0;justify-content:center;}
/* BOTH gets more room inside its group; the timer gives that room back */
.segs > .seg:first-child{flex:3 1 0;}
.segs > .seg:first-child span:first-child{flex:1.7;}
.segs > .rest{flex:1.25 1 0;}
/* hairline dividers between BOTH, L and R */
.segs > .seg:first-child span + span{border-left:1px solid var(--hair);}
/* Lifts rows: a larger tile spanning the name and its day / recency line; spark and numbers a step up */
.pl-row{grid-template-columns:52px minmax(0,1fr) 58px 104px;gap:12px;padding:12px 0;}
.pl-ic{width:52px;height:52px;border-radius:12px;}
.pl-ic img{width:28px;height:28px;}
.pl-nm{display:flex;flex-direction:column;gap:3px;}
.pl-nm small{margin-top:0;}
.pl-spark{width:58px;height:23px;}
.pl-bars{height:18px;gap:4px;}
.pl-bars i{width:6px;}
.pl-d{font-size:var(--fs-body);line-height:1.3;}
/* give the name the room: numbers size to their content, tighter gaps */
.pl-row{grid-template-columns:52px minmax(0,1fr) 54px auto;gap:10px;}
.pl-spark{width:54px;height:22px;}
.pl-row{grid-template-columns:52px minmax(0,1fr) 54px 84px;}   /* fixed numbers column so the sparks line up row to row */
/* Lifts rows, option 3: the sparkline sits under the numbers on the right, so the name keeps the middle */
.pl-row{grid-template-columns:52px minmax(0,1fr) auto;grid-template-areas:"ic nm d" "ic nm s";row-gap:4px;column-gap:12px;align-items:center;}
.pl-row > .pl-ic{grid-area:ic;}
.pl-row > .pl-nm{grid-area:nm;align-self:center;}
.pl-row > .pl-d{grid-area:d;align-self:end;line-height:1.25;}
.pl-row > .pl-spark,.pl-row > .pl-bars{grid-area:s;justify-self:end;align-self:start;}
.pl-row > .pl-spark{width:64px;height:16px;}
/* Lifts rows, try 4: a bigger illustration; name, day line, then now / was as a third line at the day line's size; spark on the right */
.pl-row{grid-template-columns:68px minmax(0,1fr) auto;grid-template-areas:"ic nm sp" "ic d sp";row-gap:3px;column-gap:14px;}
.pl-row > .pl-ic{width:68px;height:68px;border-radius:14px;}
.pl-row > .pl-ic img{width:34px;height:34px;}
.pl-row > .pl-ic.illus img{width:100%;height:100%;}
.pl-row > .pl-nm{align-self:end;}
.pl-row > .pl-d{grid-area:d;align-self:start;text-align:left;font-size:var(--fs-label);line-height:1.4;}
.pl-d .pl-b::before{content:" · ";color:var(--steel);}
.pl-row > .pl-spark,.pl-row > .pl-bars{grid-area:sp;align-self:center;}
.pl-row > .pl-spark{width:64px;height:24px;}
/* Lifts rows: the day line and the now / was line one step up */
.pl-row .pl-nm small,.pl-row > .pl-d{font-size:var(--fs-value);}
.pl-d .pl-b:empty::before{content:none;}
/* Lifts, airier (matches Overview): more room in each row, between its lines, and above each group */
.pl-tools{margin:20px 0 10px;}
.pl-grp{margin:30px 0 4px;}
.pl-row{padding:18px 0;column-gap:16px;row-gap:6px;}
.pl-row > .pl-nm{gap:5px;}
/* Lift page with an illustration: the picture leads (128px), the name steps down to the title size */
.d-illus{width:128px;height:128px;border-radius:20px;}
.d-titlerow:has(.d-illus){gap:16px;}
.d-titlerow:has(.d-illus) .d-title h1{font-size:var(--fs-title);line-height:1.2;}
/* Lift page with an illustration: name, day, then the three stats in the column beside the picture */
.d-titlerow:has(.d-illus){align-items:stretch;}
.d-titlerow:has(.d-illus) .d-title{flex:1;justify-content:center;gap:2px;}
.d-title .d-stats{width:100%;gap:10px;margin-top:14px;}
.d-title .d-stat .k{font-size:var(--fs-label);letter-spacing:.1em;margin-bottom:4px;}
.d-title .d-stat b{font-size:var(--fs-title);}
.d-title .d-stat .u{font-size:var(--fs-label);margin-left:2px;}
.d-illus{width:112px;height:112px;border-radius:18px;}   /* a touch smaller than 128 */
/* This week (building muscle) in the Sets style: the rest of the routine as a faint extension of each bar */
.mz-ghostseg{position:absolute;top:12px;height:10px;box-sizing:border-box;border-radius:0 3px 3px 0;border:1px solid var(--paper-dim);border-left:0;opacity:.4;}   /* rest of routine: an outline, so it never reads as a third fill */
.mz-key .k-mrest{width:14px;height:8px;box-sizing:border-box;border-radius:2px;border:1px solid var(--paper-dim);opacity:.5;}
.wk-sethd{margin-top:18px;}
/* "5.5 of 12": a fixed right column for the so-far-of-planned label; the bars give up the width */
.mz-row.ofc{grid-template-columns:84px minmax(0,1fr) 78px;}
.mz-row.ofc .mz-v3{white-space:nowrap;}
.mz-v3 .x{color:var(--steel);}
.mz-area.in .mz-v3 .x{color:var(--steel);}
.mz-row.ofc{grid-template-columns:80px minmax(0,1fr) 88px;}
.mz-key{flex-wrap:wrap;row-gap:6px;}   /* three items wrap rather than run past the gutter */
/* Workout list: lift tiles at the Progress > Lifts size (68px), icons scaled to match */
#s-routine .lift .ic{width:68px;height:68px;border-radius:14px;}
#s-routine .lift .ic img{width:34px;height:34px;}
#s-routine .lift .ic.illus img{width:100%;height:100%;}
#s-routine .lift{padding:12px 0;}
#s-routine .lift .ic{box-sizing:border-box;}
/* the taller row lets a long name wrap to two lines instead of cutting off */
#s-routine .lift .nm{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2;}
/* Workout list: the plan / last set / record moves under the area as a third line; the right keeps the chevron or check */
#s-routine .lift .body{flex:1;}
#s-routine .lift .sub2{margin-top:4px;line-height:1.2;}
#s-routine .lift .sub2 .tgt{font-size:var(--fs-value);letter-spacing:.03em;}
#s-routine .lift .sub2 .tgt .x{color:var(--steel);}
#s-routine .lift .sub2 .first{font-size:var(--fs-label);}
/* Workout list rows in the Progress > Lifts style: 68px tile, name, area line, sets line; a chevron (or a check) on the right */
#s-routine .lift{gap:14px;padding:12px 0;border-bottom:1px solid var(--hair-soft);}
#s-routine .lift .nm{font-family:var(--sans);font-size:var(--fs-name);font-weight:600;color:var(--paper);white-space:nowrap;display:block;-webkit-line-clamp:unset;overflow:hidden;text-overflow:ellipsis;}
#s-routine .lift .sub{font-family:var(--mono);font-size:var(--fs-value);letter-spacing:0;text-transform:none;color:var(--steel);margin-top:3px;}
#s-routine .lift .sub2{margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#s-routine .lift .sub2 .tgt{font-family:var(--mono);font-weight:400;font-size:var(--fs-value);letter-spacing:0;color:var(--steel-2);}
#s-routine .lift.done .sub2 .tgt{color:var(--lume-text);}
#s-routine .lift .right{margin-left:auto;align-self:center;}
#s-routine .lift .chev,#s-routine .lift .check{font-size:var(--fs-chev);color:var(--steel);}
#s-routine .lift.done .check{color:var(--lume-text);}

/* workout list: Routine / Last toggle, top right of the title (the Progress > Lifts sort button) */
#s-routine .r-head{justify-content:space-between;}
#s-routine .r-head .pl-sort{align-self:center;height:36px;}
#s-routine .lift .sub2 .tgt .pr.rec{color:var(--lume-text);margin:0 0 0 8px;}
/* strike: the muscles a lift trains, between the name and the note (rust = main, gray = also works) */
.lift-mus{display:flex;align-items:center;gap:12px;white-space:nowrap;overflow:hidden;font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);margin:0 0 4px;}
.lift-mus .lm{display:inline-flex;align-items:center;gap:6px;flex:none;}
.lift-mus .lm i{width:6px;height:6px;border-radius:50%;background:var(--steel);flex:none;}
.lift-mus .lm.pri{color:var(--paper-dim);}
.lift-mus .lm.pri i{background:var(--lume);}
.lift-mus .lm-more{flex:none;color:var(--steel);}
.exic-lg.icon{display:flex;align-items:center;justify-content:center;box-sizing:border-box;background:var(--panel);cursor:default;}
.exic-lg.icon img{width:34px;height:34px;filter:invert(78%) sepia(8%) saturate(280%) hue-rotate(169deg) brightness(102%);}
:root.theme-light .exic-lg.icon img{filter:invert(42%) sepia(10%) saturate(360%) hue-rotate(169deg) brightness(90%);}
/* +N on the set screen opens the illustration sheet, which lists every muscle */
.lift-mus .lm-more{background:none;border:0;padding:4px 2px;margin:-4px 0;font:inherit;color:var(--steel-2);cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px;}
.illus-mus{display:flex;flex-direction:column;gap:10px;margin:14px 0 6px;}
.illus-mus .im-list{display:flex;flex-wrap:wrap;gap:8px 16px;font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);}
.illus-mus .lm{display:inline-flex;align-items:center;gap:6px;}
.illus-mus .lm i{width:6px;height:6px;border-radius:50%;background:var(--steel);flex:none;}
.illus-mus .lm.pri{color:var(--paper-dim);}
.illus-mus .lm.pri i{background:var(--lume);}
/* the tile is as tall as the text beside it (name, muscles, note): the note's own bottom margin moves to the header */
.strike-ihead{margin-bottom:21px;}
.strike-ihead .lift-note{margin-bottom:0;}
.exic-lg{width:88px;height:88px;}
.exic-lg.icon img{width:44px;height:44px;}
/* Change picture sheet: generic icons, closest drawings, the whole archive with search */
.pic-sheet{max-height:88vh;display:flex;flex-direction:column;}
.pic-scroll{flex:1;min-height:0;overflow-y:auto;margin:4px -4px 10px;padding:0 4px;-webkit-overflow-scrolling:touch;}
.pic-sec{display:flex;flex-direction:column;gap:10px;margin:6px 0 16px;}
.pic-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.pic-tile{display:flex;flex-direction:column;gap:6px;padding:0;background:none;border:0;text-align:left;cursor:pointer;min-width:0;}
.pic-tile img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:12px;background:var(--illus-tile);border:1px solid var(--hair);display:block;box-sizing:border-box;}
.pic-tile span{font-family:var(--mono);font-size:var(--fs-label);color:var(--steel-2);line-height:1.25;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.pic-tile.gen i{display:flex;align-items:center;justify-content:center;aspect-ratio:1;border-radius:12px;background:var(--panel);border:1px solid var(--hair);}
.pic-tile.gen i img{width:40%;height:auto;aspect-ratio:auto;border:0;background:none;border-radius:0;filter:invert(78%) sepia(8%) saturate(280%) hue-rotate(169deg) brightness(102%);}
:root.theme-light .pic-tile.gen i img{filter:invert(42%) sepia(10%) saturate(360%) hue-rotate(169deg) brightness(90%);}
.pic-tile.on img,.pic-tile.gen.on i{outline:2px solid var(--lume);outline-offset:-2px;}
.pic-tile.on span{color:var(--paper);}
.pic-tile[hidden]{display:none;}
.pic-search{margin:0;}
.pic-none{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel);margin:4px 0;}
.pic-grid.four{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;}
.ip-gen{margin:0 0 14px;}
.sheet.picker .ip-auto{width:100%;}
.ip-top .pic-sec{margin:0 0 12px;}
.ip-lbl{display:block;margin:2px 0 10px;}
.al-icon.illus{padding:0;overflow:hidden;background:var(--illus-tile);}
.al-icon.illus img{width:42px;height:42px;filter:none;object-fit:cover;}
.d-illus.icon{display:flex;align-items:center;justify-content:center;box-sizing:border-box;background:var(--panel);cursor:default;}
.d-illus.icon img{width:44%;height:auto;filter:invert(78%) sepia(8%) saturate(280%) hue-rotate(169deg) brightness(102%);}
:root.theme-light .d-illus.icon img{filter:invert(42%) sepia(10%) saturate(360%) hue-rotate(169deg) brightness(90%);}
/* picture sheet: report a problem */
.illus-report{display:block;margin:2px auto 6px;padding:8px 4px;background:none;border:0;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.04em;color:var(--steel);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.ir-chips{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 14px;}
.ir-chip{padding:9px 12px;border-radius:999px;border:1px solid var(--hair);background:var(--panel);color:var(--paper-dim);font-family:var(--mono);font-size:var(--fs-value);cursor:pointer;}
.ir-chip.on{border-color:var(--lume);color:var(--paper);background:rgba(var(--lume-rgb),.12);}
.ir-swap{display:flex !important;align-items:center;gap:10px;width:100%;padding:6px 0 14px;background:none;border:0;text-align:left;color:var(--paper-dim);font-family:var(--sans);font-size:var(--fs-body);cursor:pointer;}
.ir-swap i{display:block;flex:none;width:20px;height:20px;border-radius:6px;border:1.5px solid var(--steel);box-sizing:border-box;}
.ir-swap.on i{background:var(--lume);border-color:var(--lume);box-shadow:inset 0 0 0 3px var(--ink-2);}
.ir-sheet .std-p[disabled]{opacity:.4;}
.ir-addr{color:var(--paper);user-select:text;-webkit-user-select:text;}
/* Add lift suggestions: your lifts, then the library, each with its picture; "Did you mean" on top */
.al-suggest{height:260px;}
.al-sug{justify-content:flex-start !important;}
.al-th{flex:none;width:40px;height:40px;border-radius:9px;overflow:hidden;background:var(--illus-tile);border:1px solid var(--hair);box-sizing:border-box;}
.al-th img{width:100%;height:100%;object-fit:cover;display:block;}
.al-sug .al-sug-nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.al-grp{padding:10px 14px 4px;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.1em;color:var(--steel);}
.al-dym{display:flex;align-items:center;gap:12px;width:100%;padding:10px 14px;background:rgba(var(--lume-rgb),.08);border:0;border-bottom:1px solid var(--hair);text-align:left;color:var(--paper-dim);font-family:var(--sans);font-size:var(--fs-body);cursor:pointer;}
.al-dym b{color:var(--paper);font-weight:600;}
/* Change picture: the default and the search stay pinned above the scrolling drawings */
.pp-def{display:flex;align-items:center;gap:12px;padding:10px 12px;margin:2px 0 10px;border:1px solid var(--hair);border-radius:14px;background:var(--panel);}
.pp-def-th{flex:none;width:52px;height:52px;border-radius:10px;overflow:hidden;background:var(--illus-tile);border:1px solid var(--hair);box-sizing:border-box;}
.pp-def-th img{width:100%;height:100%;object-fit:cover;display:block;}
.pp-def-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
.pp-def-t b{font-family:var(--sans);font-size:var(--fs-body);font-weight:600;color:var(--paper);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pp-def-b{flex:none;padding:8px 12px;border-radius:10px;border:1px solid var(--lume);background:none;color:var(--lume-text);font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.06em;cursor:pointer;}
.pp-def-in{flex:none;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.06em;color:var(--steel);}
.pic-sheet .pic-search{margin:0 0 6px;}
.pic-sec[hidden]{display:none;}
.sheet .illus-report{display:block;width:100%;margin:2px 0 6px;text-align:center !important;justify-content:center;font-weight:400 !important;}
/* getproof.now/try: a slim strip in the space above the app's own header (web has no status bar there) */
.try-bar{position:absolute;top:var(--sat,0px);left:0;right:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 16px;
  background:rgba(var(--lume-rgb),.14);border-bottom:1px solid rgba(var(--lume-rgb),.35);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);}
.try-what{background:none;border:0;padding:4px 0;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.08em;color:var(--paper-dim);cursor:pointer;}
.try-get{flex:none;padding:5px 10px;border-radius:999px;background:var(--lume-hero);color:var(--on-lume);font-family:var(--mono);font-size:var(--fs-label);font-weight:600;letter-spacing:.06em;text-decoration:none;}
.sheet.std > .try-store{text-decoration:none;}
/* the cue row: LAST never wraps; the cue takes the rest of the line, never wraps, and clips as a last-resort guard */
.beat .rec{white-space:nowrap;flex:none;}
.beat .live{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;letter-spacing:.04em;}
.beat .live.sug{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px;}
.ins-k.plain{color:var(--steel-2);}

/* Sets: help from other lifts, a lighter extension of the main-muscle bar */
.mz-helpseg{position:absolute;top:12px;height:10px;border-radius:0 3px 3px 0;background:var(--paper-dim);opacity:.38;}
.mz-helpseg.solo{border-radius:3px;}
.mz-area.in .mz-helpseg{background:var(--lume);opacity:.42;}
.prog-card .rc-body .mz-helpseg{top:9px;}
.mz-key .k-mhelp{width:14px;height:8px;border-radius:2px;background:var(--paper-dim);opacity:.38;}
.rec-how{margin:10px 0 0;}
.mz-row.ofc{grid-template-columns:78px minmax(0,1fr) 90px;}
.mz-row.ofc .mz-v3{text-align:right;}
/* a bar (or its planned rest) past the axis: a chevron just past the track, so the cut shows */
.mz-over{position:absolute;left:calc(100% + 2px);top:50%;transform:translateY(-55%);font:600 13px/1 var(--mono);font-style:normal;color:var(--steel-2);}
.mz-area.in .mz-over.solid{color:var(--lume-text);}
/* the growth range (10 to 20 sets a week) as a band behind the bars */
.mz-band{position:absolute;top:0;bottom:0;background:rgba(194,71,47,.10);border-left:1px dashed rgba(227,135,111,.45);border-right:1px dashed rgba(227,135,111,.45);}
.mz-key .k-mband{width:14px;height:10px;border-radius:2px;background:rgba(194,71,47,.18);border:1px dashed rgba(227,135,111,.55);box-sizing:border-box;}
.sd-rec.minor{color:var(--steel-2);}   /* a smaller record: plain, never wax */
.mz-sumnote{margin:10px 0 0;font-family:var(--mono);font-size:var(--fs-label);line-height:1.5;color:var(--steel-2);}

/* ---------------- The one-screen logger (pad) ----------------
   The list owns what a lift is; the pad docked under it owns the next set. */
:where(.pad-screen) button{background:none;border:0;padding:0;margin:0;color:inherit;font:inherit;cursor:pointer;-webkit-appearance:none;appearance:none;}
#s-routine.pad-screen .pad-list{padding:0 0 12px;height:100%;}
.pad-top-bar{flex:none;}
.pad-listwrap{flex:1;min-height:0;position:relative;border-top:1px solid rgba(var(--tint),.07);}
/* the selected lift, scrolled out of view: a slim tab at that edge brings it back */
.pad-jump{position:absolute;left:50%;transform:translateX(-50%);bottom:10px;z-index:3;max-width:calc(100% - 40px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  font-family:var(--mono);font-size:12px;letter-spacing:.02em;padding:8px 14px;border-radius:999px;background:var(--paper);color:var(--ink);box-shadow:0 6px 20px rgba(0,0,0,.45);}
.pad-jump.up{bottom:auto;top:10px;}
#s-routine.pad-screen .backnav{padding-left:20px;padding-right:20px;padding-bottom:14px;}
#s-routine.pad-screen .r-head{padding:2px 20px 12px;justify-content:space-between;}
.pad-file{font-family:var(--mono);font-size:12px;letter-spacing:.04em;padding:9px 12px;border-radius:10px;border:1px solid var(--hair);color:var(--paper);white-space:nowrap;}
.pad-file.ready{background:var(--lume);border-color:var(--lume);color:#fff4ef;}
.pad-file.off{opacity:.45;}
.pad-row{border-top:1px solid rgba(var(--tint),.07);padding:12px 20px;background:var(--ink);display:flex;gap:12px;align-items:flex-start;cursor:pointer;}
/* the selected lift sticks to whichever edge it would scroll past: the pad's lift is always named on screen */
.pad-row{position:relative;}
.pad-row:first-child{border-top:0;}
.pad-row:last-of-type{border-bottom:1px solid rgba(var(--tint),.07);}
.pad-row.sel{background:color-mix(in srgb,var(--panel) 72%,var(--ink));}   /* a step darker than the pad's − + buttons */
/* progress in the highlight: a line along the selected card's bottom that fills as you log */
.pad-prog{position:absolute;left:0;right:0;bottom:0;height:3px;}
.pad-prog i{display:block;height:100%;background:var(--lume);transition:width .3s ease;}
/* a fixed card: the picture sets the height, so logging sets never moves anything */
.pad-thumb{width:80px;height:80px;border-radius:14px;border:1px solid var(--hair);overflow:hidden;flex-shrink:0;display:grid;place-items:center;background:var(--ink-2);}
.pad-thumb img{width:34px;height:34px;}
.pad-thumb.illus{background:var(--illus-tile);}
.pad-thumb.illus img{width:100%;height:100%;object-fit:cover;}
.pad-hbody{flex:1;min-width:0;min-height:80px;display:flex;flex-direction:column;gap:8px;}
.pad-area{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.04em;color:var(--steel-2);margin-top:-6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pad-top{display:flex;align-items:flex-start;gap:8px;}
.pad-name{flex:1;min-width:0;font-size:18px;font-weight:600;letter-spacing:-.01em;color:var(--paper);line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.pad-sub{font-family:var(--mono);font-size:var(--fs-label);color:var(--steel-2);}
.pad-mark{font-family:var(--mono);font-size:16px;color:var(--paper);flex-shrink:0;line-height:1.25;}
/* exactly the name's line height, so selecting a card never pushes the muscle and sets down */
.pad-more{height:22px;line-height:16px;font-size:20px;color:var(--paper-dim);padding:0 2px 0 10px;margin:0;flex-shrink:0;overflow:hidden;}
.pad-mark{height:22px;}
/* the slot under the name: the target until the first set, then the chips, four to a line */
.pad-slot{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;align-content:start;}
.pad-slot .pad-chip.wide{grid-column:span 2;}
.pad-slot .pad-sub{grid-column:1 / -1;}
/* a logged set: a rounded rectangle; a warm-up is the same shape, dashed and dim; a record wears the seal */
.pad-chip{display:inline-flex;align-items:center;justify-content:center;gap:4px;font-family:var(--mono);font-size:12px;letter-spacing:-.02em;height:30px;padding:0 4px;border-radius:9px;min-width:0;overflow:hidden;border:1.5px solid var(--hair);color:var(--paper);background:rgba(var(--tint),.015);white-space:nowrap;}
.pad-chip.w{color:var(--steel-2);border-style:dashed;background:none;}
.pad-chip .pad-tag{font-size:12px;letter-spacing:0;opacity:.7;margin-right:-2px;}
.pad-chip.rec{color:var(--lume-text);border-color:var(--lume);}
/* a record wears the seal as a badge on the chip's corner, so it is as narrow as any other set */
.pad-chip.rec{position:relative;overflow:visible;}
.pad-seal{position:absolute;top:-6px;right:-6px;width:16px;height:16px;border-radius:50%;background:var(--ink);display:grid;place-items:center;}
.pad-row.sel .pad-seal{background:color-mix(in srgb,var(--panel) 72%,var(--ink));}
.pad-seal svg{width:14px;height:14px;}
.pad-dock{background:var(--ink);border-top:1px solid var(--hair);padding:10px 16px calc(14px + var(--sab));}
.pad-row1{display:flex;align-items:center;gap:8px;min-height:38px;}
.pad-sides{display:flex;border:1px solid var(--hair);border-radius:10px;overflow:hidden;flex-shrink:0;}
.pad-sides button{font-family:var(--mono);font-size:12px;width:32px;height:36px;color:var(--steel-2);}
.pad-sides button+button{border-left:1px solid var(--hair);}
.pad-sides button.on{background:var(--panel);color:var(--paper);}
.pad-cue{flex:1;min-width:0;text-align:left;font-family:var(--mono);font-size:13px;color:var(--paper-dim);padding:9px 10px;border-radius:10px;border:1px solid transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pad-cue.sug{border-color:var(--lume);color:var(--lume-text);}
.pad-cue.warm{color:var(--steel-2);}
/* the timer in a pill like the set screen's: the icon half switches it on / off, the time half sets its length */
.pad-rest{flex-shrink:0;display:flex;align-items:center;height:38px;border:1px solid var(--hair);border-radius:10px;font-family:var(--mono);font-size:14px;color:var(--steel);font-variant-numeric:tabular-nums;}
.pad-rest button{height:100%;display:flex;align-items:center;color:inherit;white-space:nowrap;}
.pad-rest .pr-ic{padding:0 6px 0 11px;font-size:15px;}
.pad-rest .pr-t{padding:0 11px 0 2px;}
.pad-rest.is-on{border-color:var(--lume-dim);color:var(--lume-hi);}
.pad-rest.is-running{border-color:var(--lume-text);background:rgba(var(--lume-rgb),.08);color:var(--lume-hi);}
.pad-next{font-family:var(--mono);font-size:12px;height:38px;padding:0 11px;min-width:84px;text-align:center;border-radius:10px;border:1px solid var(--hair);color:var(--steel-2);white-space:nowrap;flex-shrink:0;}
.pad-next.hot{background:var(--paper);color:var(--ink);border-color:var(--paper);}
.pad-nums{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin-top:10px;}
.pad-val{display:flex;align-items:baseline;justify-content:center;gap:6px;user-select:none;}
/* as on the set screen: the number, then its unit on the same baseline; the dotted underline says it's tappable */
.pad-val .num{font-family:var(--mono);font-weight:800;font-size:44px;line-height:1;letter-spacing:-.02em;color:var(--paper);touch-action:none;
  border-bottom:1.5px dotted var(--line-2);padding-bottom:2px;cursor:ns-resize;min-width:1.4em;text-align:center;}
.pad-val .pad-unit{font-family:var(--sans);font-size:16px;font-weight:600;color:var(--steel-2);}
.pad-val button.pad-unit{font-family:var(--mono);font-size:12px;font-weight:500;}
.pad-unit{font-family:var(--mono);font-size:11px;color:var(--steel-2);}
button.pad-unit{padding:3px 8px;border:1px solid var(--hair);border-radius:7px;}
button.pad-unit.on{color:var(--paper);border-color:var(--paper);}
.pad-check{width:74px;height:74px;border-radius:50%;background:var(--lume);display:flex;align-items:center;justify-content:center;transition:transform .12s;}
.pad-check:active{transform:scale(.93);}
.pad-check svg{width:32px;height:32px;stroke:#fff4ef;}
.pad-check.wu{background:transparent;border:2px dashed var(--steel-2);}
.pad-check.wu svg{stroke:var(--paper);}
.pad-check.win{box-shadow:0 0 0 3px rgba(var(--lume-rgb),.35);}
.pad-steps{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:12px;}
.pad-steps button{height:50px;border-radius:12px;background:var(--panel);font-size:22px;font-weight:500;color:var(--paper);}
.pad-steps button:disabled{opacity:.3;}
.pad-steps .pad-wt{background:none;border:1.5px dashed var(--hair);font-family:var(--mono);font-size:14px;color:var(--steel-2);}
.pad-steps .pad-wt.on{border-color:var(--paper);color:var(--paper);}
#s-routine.pad-screen .addlift{margin:0;width:100%;padding:18px 20px 6px;}
@keyframes pad-pop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.06);opacity:1}100%{transform:scale(1)}}
.pad-chip.pop{animation:pad-pop .28s ease-out;}
@media (prefers-reduced-motion:reduce){.pad-chip.pop{animation:none;}}
.pad-val.gold .num{color:var(--lume-text);border-bottom-color:rgba(var(--lume-rgb),.45);}
/* logging a set: the check draws, then the button lifts and drops (the weight hitting the floor), as on the set screen */
.pad-check.is-striking{pointer-events:none;}
.pad-check.is-striking svg path{stroke-dasharray:22;stroke-dashoffset:22;animation:strikeCheck .24s ease .12s forwards;}
.pad-check.is-dropping{animation:strikeDrop .26s cubic-bezier(.3,.9,.3,1) .4s both;}
@media (prefers-reduced-motion:reduce){.pad-check.is-dropping{animation:none;}.pad-check.is-striking svg path{animation:none;stroke-dashoffset:0;}}

/* ---------------- The lift picker (full screen) ---------------- */
.lp{position:absolute;inset:0;z-index:90;background:var(--ink);display:flex;flex-direction:column;transform:translateY(100%);transition:transform .26s cubic-bezier(.2,.8,.2,1);}
.lp.show{transform:none;}
:where(.lp) button{background:none;border:0;padding:0;margin:0;color:inherit;font:inherit;cursor:pointer;-webkit-appearance:none;appearance:none;}
.lp-top{flex:none;padding:calc(10px + var(--sat)) 16px 10px;border-bottom:1px solid rgba(var(--tint),.07);}
.lp-head{display:flex;align-items:center;gap:10px;height:40px;}
.lp-x{font-size:26px;line-height:1;color:var(--paper);width:32px;height:40px;}
.lp-title{font-size:18px;font-weight:600;color:var(--paper);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lp-search{width:100%;box-sizing:border-box;margin-top:8px;height:44px;border-radius:12px;border:1px solid var(--hair);background:var(--ink-2);color:var(--paper);padding:0 14px;font-family:var(--sans);font-size:16px;outline:none;}
.lp-search:focus{border-color:var(--steel);}
.lp-chips{display:flex;gap:8px;overflow-x:auto;margin:10px -16px 0;padding:0 16px 2px;scrollbar-width:none;}
.lp-chips::-webkit-scrollbar{display:none;}
.lp-chip{flex-shrink:0;height:34px;padding:0 13px;border-radius:999px;border:1px solid var(--hair);font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:var(--steel-2);white-space:nowrap;}
.lp-chip.on{background:var(--paper);border-color:var(--paper);color:var(--ink);}
.lp-results{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 16px 110px;}
.lp-h{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.12em;color:var(--steel);margin:20px 0 10px;}
.lp-sub{font-family:var(--mono);font-size:var(--fs-label);color:var(--steel);margin:16px 0 10px;}
.lp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.lp-grid:first-child{margin-top:12px;}
.lp-card{position:relative;display:flex;flex-direction:column;text-align:left;border:1.5px solid rgba(var(--tint),.08);border-radius:14px;overflow:hidden;background:var(--ink-2);}
.lp-card.on{border-color:var(--lume);}
.lp-pic{display:block;aspect-ratio:1;background:var(--illus-tile);}
.lp-pic img{width:100%;height:100%;object-fit:cover;display:block;}
.lp-nm{display:block;padding:9px 10px 11px;font-size:14px;font-weight:600;line-height:1.25;color:var(--paper);}
.lp-card.new .lp-nm{font-weight:400;color:var(--paper-dim);}
.lp-card.new .lp-nm b{color:var(--paper);font-weight:600;}
.lp-ck{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:14px;font-weight:700;background:rgba(10,10,11,.55);color:transparent;border:1.5px solid rgba(255,255,255,.5);}
.lp-card.on .lp-ck{background:var(--lume);border-color:var(--lume);color:#fff4ef;}
.lp-none{color:var(--steel-2);font-size:var(--fs-body);margin:24px 0;}
.lp-bar{position:absolute;left:0;right:0;bottom:0;padding:12px 16px calc(14px + var(--sab));background:linear-gradient(transparent,var(--ink) 30%);}
.lp-add{width:100%;height:52px;border-radius:14px;background:var(--lume);color:#fff4ef;font-family:var(--mono);font-size:15px;letter-spacing:.02em;}

/* ---- First setup v2 (2026-10-08): goal, where, week, plans, AI, review. Same frame and veil as before;
   each step scrolls above its own button dock. Theme tokens only, so light mode follows. */
#s-onboard .ob-content > .ob-scroll{flex:1;min-height:0;overflow-y:auto;}
#s-onboard .ob-content > .ob-scroll::after{content:"";display:block;height:12px;}
.ob2-dock{padding:12px 26px calc(18px + var(--sab));display:flex;flex-direction:column;gap:2px;}
.ob2-dock .cta[disabled]{opacity:.45;}
.ob2-dock .ob-skip{margin-top:6px;}
.ob-imp{margin-top:10px;color:var(--paper-dim);}
.ob2-note{font-family:var(--mono);font-size:var(--fs-value);color:var(--lume-text);margin:4px 0 0;line-height:1.45;}
.ob2-label{margin:24px 0 10px;}
.ob2-opts{display:flex;flex-direction:column;gap:10px;margin-top:18px;}
.ob2-opts.tight{margin-top:0;gap:8px;}
.ob2-opt{display:block;width:100%;text-align:left;background:var(--ink-2);border:1px solid var(--hair);border-radius:16px;padding:15px 16px;color:var(--paper);}
.ob2-opts.tight .ob2-opt{padding:12px 16px;}
.ob2-opt b{display:block;font-size:var(--fs-name);font-weight:600;}
.ob2-opt small{display:block;font-size:var(--fs-value);color:var(--steel-2);margin-top:3px;line-height:1.4;}
.ob2-opt.on{border-color:var(--lume);background:rgba(var(--lume-rgb),.1);}
.ob2-what{display:none;margin-top:12px;padding-top:10px;border-top:1px solid rgba(var(--lume-rgb),.3);}
.ob2-opt.on .ob2-what{display:block;}
.ob2-what > span{display:flex;justify-content:space-between;gap:12px;padding:3px 0;font-size:var(--fs-value);}
.ob2-what i{font-style:normal;color:var(--steel-2);}
.ob2-what em{font-style:normal;font-family:var(--mono);color:var(--paper);text-align:right;}
.ob2-places{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px;}
.ob2-places .ob2-opt{padding:13px 14px;}
.ob2-places .ob2-opt:last-child{grid-column:1 / -1;}
.ob2-chips{display:flex;flex-wrap:wrap;gap:8px;}
.ob2-chip{height:38px;padding:0 13px;border-radius:999px;border:1px solid var(--hair);background:none;font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);white-space:nowrap;}
.ob2-chip.on{background:var(--paper);border-color:var(--paper);color:var(--ink);}
.ob2-seg{display:flex;border:1px solid var(--hair);border-radius:12px;overflow:hidden;}
.ob2-seg button{flex:1;padding:12px 0;background:none;border:none;font-family:var(--mono);font-size:var(--fs-data);color:var(--steel-2);}
.ob2-seg button + button{border-left:1px solid var(--hair);}
.ob2-seg button.on{background:var(--paper);color:var(--ink);}
.ob2-plan{display:block;width:100%;text-align:left;background:var(--ink-2);border:1px solid var(--hair);border-radius:16px;padding:14px 16px;margin-top:12px;color:var(--paper);}
.ob2-plan.on{border-color:var(--lume);background:rgba(var(--lume-rgb),.1);}
.ob2-ph{display:flex;justify-content:space-between;align-items:baseline;gap:10px;}
.ob2-ph b{font-size:17px;font-weight:600;}
.ob2-tag{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.12em;color:var(--lume-text);white-space:nowrap;}
.ob2-meta{display:block;font-family:var(--mono);font-size:12px;color:var(--steel-2);margin-top:5px;}
.ob2-why{display:block;font-size:var(--fs-value);color:var(--steel-2);margin-top:8px;line-height:1.45;}
.ob2-pics{display:flex;gap:6px;margin-top:12px;}
.ob2-pic{width:44px;height:44px;border-radius:10px;background:var(--illus-tile);border:1px solid var(--hair);overflow:hidden;flex-shrink:0;display:grid;place-items:center;}
.ob2-pic img{width:100%;height:100%;object-fit:cover;display:block;}
.ob2-pic.q{background:none;border-style:dashed;border-color:var(--lume);color:var(--lume-text);font-family:var(--mono);font-size:18px;}
.ob2-ai{display:flex;gap:12px;align-items:center;width:100%;text-align:left;background:none;border:1px dashed var(--line-2);border-radius:16px;padding:14px 16px;margin-top:14px;color:var(--paper);}
.ob2-star{color:var(--lume-text);font-size:18px;}
.ob2-ai b{display:block;font-size:var(--fs-name);font-weight:600;}
.ob2-ai small{display:block;font-size:12px;color:var(--steel-2);margin-top:2px;}
.ob2-own{display:block;width:100%;background:none;border:none;color:var(--steel-2);font-size:var(--fs-value);padding:18px 0 4px;text-align:center;}
.ob2-own u{text-decoration-color:var(--steel);text-underline-offset:3px;color:var(--paper-dim);}
.ob2-facts{display:flex;flex-direction:column;gap:7px;}
.ob2-facts > span{display:flex;gap:10px;font-size:var(--fs-value);}
.ob2-facts i{font-style:normal;color:var(--steel-2);width:92px;flex-shrink:0;}
.ob2-facts b{font-weight:500;color:var(--paper);}
.ob2-extra{width:100%;min-height:84px;background:var(--ink-2);border:1px solid var(--hair);border-radius:12px;padding:12px;color:var(--paper);font-family:var(--sans);font-size:var(--fs-body);line-height:1.45;resize:none;}
.ob2-extra:focus{outline:none;border-color:var(--steel);}
.ob2-prev{margin-top:14px;}
.ob2-days{display:flex;gap:8px;overflow-x:auto;margin:6px -26px 12px;padding:0 26px;scrollbar-width:none;}
.ob2-days::-webkit-scrollbar{display:none;}
.ob2-days button{flex-shrink:0;height:34px;padding:0 14px;border-radius:999px;border:1px solid var(--hair);background:none;font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);}
.ob2-days button.on{background:var(--paper);border-color:var(--paper);color:var(--ink);}
.ob2-sum{display:flex;gap:16px;font-family:var(--mono);font-size:12px;color:var(--steel-2);margin:2px 0 8px;}
.ob2-sum b{color:var(--paper);font-weight:500;}
.ob2-lift{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--hair-soft);}
.ob2-lift .ob2-pic{width:60px;height:60px;border-radius:12px;}
.ob2-nm{flex:1;min-width:0;}
.ob2-nm b{display:block;font-size:var(--fs-name);font-weight:500;color:var(--paper);}
.ob2-nm small{display:block;font-size:12px;color:var(--steel-2);margin-top:2px;}
.ob2-lift.flag .ob2-nm small{color:var(--lume-text);}
.ob2-tg{display:block;font-family:var(--mono);font-size:12px;color:var(--paper-dim);margin-top:3px;}
.ob2-sw{font-family:var(--mono);font-size:12px;color:var(--steel-2);background:none;border:1px solid var(--hair);border-radius:10px;padding:7px 10px;white-space:nowrap;}
.ob2-lift.flag .ob2-sw{border-color:var(--lume);color:var(--lume-text);}
.ob2-addl{display:block;width:100%;background:none;border:1px dashed var(--hair);border-radius:12px;padding:12px;margin-top:10px;color:var(--steel-2);font-family:var(--mono);font-size:var(--fs-value);}
.lp-kit{display:inline-block;margin:10px 0 0;height:30px;padding:0 12px;border-radius:999px;border:1px solid var(--hair);background:none;font-family:var(--mono);font-size:12px;color:var(--steel-2);}
.lp-kit.on{border-color:var(--paper-dim);color:var(--paper);}
.plan-saved{font-size:var(--fs-body);color:var(--paper-dim);margin:22px 0 -6px;line-height:1.45;}
.kitsheet .ks-body{max-height:60vh;overflow-y:auto;margin:0 -4px 14px;padding:0 4px;}
.kitsheet .ob2-places{margin-top:6px;}

/* ---- First week (2026-10-08): this week and the plan before averages exist; what's coming in History ---- */
.fw-lead{font-size:var(--fs-body);line-height:1.45;color:var(--paper-dim);margin:2px 0 16px;}
.fw-lead b{color:var(--paper);font-weight:600;}
.fw-note{font-size:var(--fs-value);line-height:1.45;color:var(--steel-2);margin:14px 0 0;}
.fw-row.dim{opacity:.5;}
.fw-dots{display:flex;gap:4px;margin-left:auto;padding-left:10px;}
.fw-dots i{width:8px;height:8px;border-radius:50%;border:1.5px solid var(--steel);}
.fw-dots i.on{background:var(--paper);border-color:var(--paper);}
.fw-up{display:flex;flex-direction:column;}
.fw-upi{padding:11px 0;border-top:1px solid var(--hair-soft);}
.fw-upi:first-child{border-top:none;padding-top:4px;}
.fw-uph{display:flex;justify-content:space-between;align-items:baseline;gap:12px;}
.fw-uph b{font-size:var(--fs-name);font-weight:600;color:var(--paper);}
.fw-uph span{font-family:var(--mono);font-size:12px;color:var(--steel-2);white-space:nowrap;}
.fw-upi.done .fw-uph b::after{content:" ✓";color:var(--lume-text);}
.fw-upi p{margin:4px 0 0;font-size:var(--fs-value);color:var(--steel-2);line-height:1.4;}
.fw-bar{display:block;height:3px;border-radius:2px;background:var(--hair);margin-top:8px;overflow:hidden;}
.fw-bar > i{display:block;height:100%;background:var(--lume);}
.hs-plan{opacity:.5;pointer-events:none;}
.hs-plan .hs-body{padding-left:0;}
.hs-first{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.12em;color:var(--lume-text);margin-top:6px;}
.b-view{position:absolute;bottom:calc(84px + var(--sab));left:50%;transform:translateX(-50%);z-index:4;display:flex;gap:8px;white-space:nowrap;}
.b-cmp:not(:empty) + .b-view{bottom:calc(164px + var(--sab));}
#s-body:has(.b-view) .b-empty{bottom:calc(132px + var(--sab));}
.b-view button{font-family:var(--mono);font-size:12px;padding:6px 12px;border-radius:999px;border:1px solid #333942;background:rgba(10,10,11,.6);color:#9aa1a9;}
.b-view button.on{background:#e7e3da;border-color:#e7e3da;color:#0a0a0b;}
#s-body.zoom .b-view{opacity:0;pointer-events:none;}
#s-body.b-planmode .b-overlay{opacity:.3;pointer-events:none;}
.ob2-links{display:flex;flex-direction:column;align-items:center;gap:2px;margin-top:10px;}
.ob2-links .ob2-own{padding:10px 0;width:auto;}
/* lift picker: the A to Z tail as compact rows */
.lp-list{display:flex;flex-direction:column;}
.lp-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--hair-soft);text-align:left;}
.lp-row:first-child{border-top:none;}
.lp-rpic{width:44px;height:44px;border-radius:10px;overflow:hidden;background:var(--illus-tile);border:1px solid var(--hair);flex-shrink:0;}
.lp-rpic img{width:100%;height:100%;object-fit:cover;display:block;}
.lp-rnm{flex:1;min-width:0;font-size:var(--fs-name);font-weight:500;color:var(--paper);}
.lp-row .lp-ck{position:static;flex-shrink:0;}
.lp-row.on .lp-rnm{color:var(--lume-text);}
/* a weight not entered yet */
.num.blank{color:var(--steel);}
.pad-check.off{opacity:.45;}
.num.nudge{animation:numNudge .36s ease;}
@keyframes numNudge{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.lp-row.on .lp-ck{background:var(--lume);border-color:var(--lume);color:#fff4ef;}
.nowrap{white-space:nowrap;}
.ob2-aicard .ob2-star{font-size:16px;}

/* Lift insights v2: what your log shows (facts, with the sets behind them) */
.li-sec{display:flex;flex-direction:column;gap:12px;margin:22px 0 6px;}
.li-h{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);color:var(--steel-2);}
.li-h.li-also{margin-top:8px;}
.li-card{border:1px solid var(--hair-soft);border-radius:16px;padding:16px 18px;display:flex;flex-direction:column;gap:10px;}
.li-card.main{background:var(--ink-2);border-color:var(--hair);padding:18px;gap:12px;}
.li-card.none{border-style:dashed;}
.li-chip{align-self:flex-start;font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--paper-dim);border:1px solid var(--hair);border-radius:4px;padding:2px 6px;}
.li-chip.solid{color:var(--ink);background:var(--paper);border-color:var(--paper);}
.li-t{font-family:var(--sans);font-size:var(--fs-name);font-weight:600;line-height:1.25;color:var(--paper);}
.li-card.main .li-t{font-size:var(--fs-title);letter-spacing:-.01em;}
.li-b{margin:0;font-size:14px;line-height:1.5;color:var(--paper-dim);}
.li-ctx{margin:0;font-size:13px;line-height:1.5;color:var(--steel-2);border-top:1px solid var(--hair-soft);padding-top:10px;}
.li-bars{display:flex;align-items:flex-end;gap:8px;height:84px;}
.li-bar b{flex:none;}
.li-gap{flex:0 0 18px;height:64px;border-left:1.5px dashed var(--hair);display:flex;align-items:flex-start;justify-content:center;margin:0 -2px;}
.li-gap i{font-style:normal;font-family:var(--mono);font-size:9px;color:var(--steel);writing-mode:vertical-rl;transform:rotate(180deg);margin-top:2px;}
.li-bar{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px;}
.li-bar i{font-style:normal;font-family:var(--mono);font-size:11px;color:var(--steel-2);}
.li-bar b{display:block;width:100%;background:var(--hair);border-radius:4px;}
.li-bar.on i{color:var(--lume-text);}
.li-bar.on b{background:var(--lume);}
.li-axis{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;letter-spacing:.06em;color:var(--steel);}
.li-ev{align-self:flex-start;background:none;border:0;padding:6px 0 0;min-height:32px;font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--lume-text);cursor:pointer;}
.li-dots{display:flex;align-items:center;gap:6px;}
.li-dots span{width:10px;height:10px;border-radius:5px;border:1.5px solid var(--steel);box-sizing:border-box;}
.li-dots span.on{background:var(--paper);border-color:var(--paper);}
.li-dots em{font-style:normal;font-family:var(--mono);font-size:11px;color:var(--steel-2);margin-left:6px;}
.d-stat.d-next{display:flex;flex-direction:column;align-items:flex-start;text-align:left;background:none;border:0;padding:0;color:var(--paper);cursor:pointer;font:inherit;}
.d-next .dn-a{font-family:var(--mono);font-size:14px;line-height:1.25;color:var(--paper);}
.d-next .dn-b{font-family:var(--mono);font-size:12px;line-height:1.3;color:var(--steel-2);margin-top:2px;}
.sheet.lie{padding:18px 20px 28px;display:flex;flex-direction:column;gap:14px;}
.lie-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;}
.lie-t{font-family:var(--sans);font-size:var(--fs-title);font-weight:600;line-height:1.25;color:var(--paper);margin-top:6px;}
.lie-tbl{display:flex;flex-direction:column;border-top:1px solid var(--hair-soft);}
.lie-r{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:10px 0;border-bottom:1px solid var(--hair-soft);font-family:var(--mono);font-size:13px;color:var(--paper);}
.lie-r span:first-child{color:var(--steel-2);}
.lie-r.hd{font-size:10px;letter-spacing:.14em;color:var(--steel);padding:8px 0;}
.lie-r.hd span{color:var(--steel);}
.lie-r.on, .lie-r.on span:first-child{color:var(--lume-text);}
.lie-r .off{color:var(--steel);}
.lie-how{display:flex;flex-direction:column;gap:6px;background:rgba(var(--tint),.03);border-radius:12px;padding:12px 14px;}
.lie-how p{margin:0;font-size:13px;line-height:1.5;color:var(--paper-dim);}
.sheet .li-ev{display:block;width:auto;text-align:left;background:none;border:0;padding:8px 0 0;font-family:var(--mono);font-size:12px;font-weight:400;letter-spacing:.06em;color:var(--lume-text);}
.li-hrow{display:flex;justify-content:space-between;align-items:baseline;gap:12px;}
.li-h.li-hr{letter-spacing:.06em;text-transform:none;}
.li-card.li-chart{padding:18px 16px 14px;}
.li-card.li-chart .d-prog{height:110px;}
.li-card.li-recent{padding:2px 18px;gap:0;}
.li-card.li-recent .d-rec:first-child{border-top:0;}
.li-bars.pairs{gap:10px;}
.li-pair{flex:1;height:100%;display:flex;align-items:flex-end;gap:3px;}
.li-bar.sec b{background:none;border:1.5px solid var(--hair);box-sizing:border-box;}
.li-bar.sec i{color:var(--steel);}
.li-trend{display:block;overflow:visible;}
.li-card.li-chart{gap:10px;}
.li-ring{display:inline-block;width:8px;height:8px;border-radius:50%;border:1.5px solid var(--lume);vertical-align:-1px;font-style:normal;}
.li-cap{margin:0;font-size:12px;line-height:1.45;color:var(--steel-2);}
.li-read{font-family:var(--mono);font-size:13px;color:var(--paper);min-height:18px;}
.li-hit{cursor:pointer;}
.li-sel{pointer-events:none;transition:cx .18s ease,cy .18s ease;}
.li-bars.has-ghost{margin-bottom:14px;}
.li-bar{position:relative;}
.li-bar.ghost b{background:none;border:1.5px dashed var(--hair);box-sizing:border-box;}
.li-bar.ghost i{color:var(--steel);}
.li-bar u{position:absolute;bottom:-15px;left:0;right:0;text-align:center;text-decoration:none;font-family:var(--mono);font-size:9px;color:var(--steel);}
.li-pulse{pointer-events:none;transform-box:fill-box;transform-origin:center;animation:li-pulse 1.8s ease-out infinite;}
@keyframes li-pulse{0%{transform:scale(1);opacity:.7;}70%{transform:scale(2.1);opacity:0;}100%{transform:scale(2.1);opacity:0;}}
@media (prefers-reduced-motion:reduce){.li-pulse{animation:none;opacity:0;}}
/* Progress > Overview: the finding reads as the chart's caption, no card: a hairline under the legend,
   the window in the chart's label voice, the headline, one line of numbers, then How this is counted */
.ov-ins{display:flex;flex-direction:column;gap:6px;margin:-8px 0 22px;padding-top:16px;border-top:1px solid var(--hair-soft);}
.ov-k{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);color:var(--steel-2);}
.ov-t{font-family:var(--sans);font-size:var(--fs-name);font-weight:600;line-height:1.3;color:var(--paper);margin-top:2px;}
.ov-b{margin:0;font-size:14px;line-height:1.5;color:var(--paper-dim);}
.ov-ins .li-dots{margin-top:6px;}
.ov-ins + .mz-how{margin-top:-14px;}
/* ---------------- Olive skin (dark): deep olive page, cream text, copper for the seal, records and Start ----------------
   Tokens only, on the dark skin's rules; tan carries small copper text so it stays readable. */
:root.theme-olive{
  --ink:#2c3720; --stage:#222b18; --ink-2:#36432a; --panel:#3a482e; --panel-2:#435236;
  --hair:#56663f; --hair-soft:#4a5936; --steel:#a3aa86; --steel-2:#c9c8a8;
  --paper:#fbf8e2; --paper-dim:#dcd8bd;
  --lume:#b07135; --lume-hi:#d4a46b; --lume-dim:#636b40; --on-lume:#fbf8e2; --lume-text:#dca86c; --lume-hero:#c07b3a;
  --blue:#8b9a5e; --red:#c8743f;
  --lume-rgb:176,113,53; --lume-hi-rgb:212,164,107; --tint:255,255,255; --scrim:34,43,24;
  --line-2:#56663f; --faint2:#7c8a5c; --wb-empty:#36432a; --card:#26301b; --cell:#334027; --illus-tile:#1f2816;
}
:root.theme-olive #s-body{background:var(--ink);}
:root.theme-olive .b-stage svg path{fill:#33402a;}
:root.theme-olive .b-top{background:linear-gradient(to bottom,var(--ink) 42%,rgba(44,55,32,.5) 76%,transparent);}
:root.theme-olive .b-top h1{color:var(--paper);}
:root.theme-olive .b-seg{border-color:var(--hair-soft);}
:root.theme-olive .b-seg button{color:var(--steel);}
:root.theme-olive .b-overlay,:root.theme-olive .b-overlay .cv,:root.theme-olive .b-legend{color:var(--steel);}
:root.theme-olive .b-overlay b{color:var(--paper);}
:root.theme-olive .b-module{background:rgba(44,55,32,.88);border-color:var(--hair);}
:root.theme-olive .b-legend .bar{background:linear-gradient(to top,#5a5634,#6d5d35,#835f34,#9a6435,#b06c37,#c27d45,#d39358,#e2ad74);}
:root.theme-olive .b-legend.diff .bar{background:linear-gradient(to top,#3F6E96,#3E8E8A,#3c4a2e,#bdb99c,#fbf8e2);}
:root.theme-olive .b-view button{border-color:var(--hair);background:rgba(44,55,32,.6);color:var(--steel-2);}
:root.theme-olive .b-view button.on{background:var(--paper);border-color:var(--paper);color:var(--ink);}
/* ---------------- Gray skin (light): pale gray page, near-black text, no accent color ----------------
   Builds on the light skin (theme-light is on too); records and the seal go near-black. */
:root.theme-light.theme-gray{
  --ink:#f1f1f1; --stage:#e6e6e6; --ink-2:#fafafa; --panel:#fafafa; --panel-2:#ececec;
  --hair:#cdcdcd; --hair-soft:#dcdcdc; --steel:#6e6e6e; --steel-2:#5a5a5a;
  --paper:#1c1c1c; --paper-dim:#4a4a4a;
  --lume:#2e2e2e; --lume-hi:#1c1c1c; --lume-dim:#cdcdcd; --on-lume:#f1f1f1; --lume-text:#2e2e2e; --lume-hero:#3a3a3a;
  --blue:#7f7f7f; --red:#5a5a5a;
  --lume-rgb:46,46,46; --lume-hi-rgb:58,58,58; --tint:0,0,0; --scrim:236,236,236;
  --line-2:#cdcdcd; --faint2:#a5a5a5; --wb-empty:#dcdcdc; --card:#fafafa; --cell:#e4e4e4;
}
:root.theme-gray .lift .ic img,:root.theme-gray .h1row .exic img,:root.theme-gray .picktile img,:root.theme-gray .pl-ic img,
:root.theme-gray .exic-lg.icon img,:root.theme-gray .pic-tile.gen i img,:root.theme-gray .d-illus.icon img{filter:invert(42%) grayscale(1);}
:root.theme-gray .lift.done .ic img,:root.theme-gray .picktile.on img{filter:invert(12%) grayscale(1);}
:root.theme-gray #peernote.lcd{background:#ececec;box-shadow:0 8px 24px rgba(0,0,0,.1);}
:root.theme-gray .b-stage svg path{fill:#e2e2e2;}
:root.theme-gray .b-module{background:rgba(250,250,250,.78);}
:root.theme-gray .b-top{background:linear-gradient(to bottom,var(--ink) 42%,rgba(241,241,241,.5) 76%,transparent);}
:root.theme-gray .b-back{background:rgba(250,250,250,.86);}
:root.theme-gray .b-omenu{background:rgba(250,250,250,.95);}
:root.theme-gray .b-legend .bar{background:linear-gradient(to top,#c2c2c2,#ababab,#949494,#7d7d7d,#666666,#4f4f4f,#383838,#222222);}
:root.theme-gray .b-legend.diff .bar{background:linear-gradient(to top,#3F6E96,#3E8E8A,#d6d6d6,#6b6b6b,#262626);}
/* ---- Coverage (This week, Progress > Overview): the verdict word, a cell per muscle, one line; rings by area ---- */
.cv-meter{display:flex;flex-direction:column;gap:12px;margin:6px 0 20px;}
.cv-word{font-family:var(--sans);font-size:24px;font-weight:700;letter-spacing:-.015em;line-height:1.1;color:var(--paper);}   /* one step under a page title */
.cv-cells{display:grid;gap:4px;}
.cv-cells i{height:22px;border-radius:4px;background:var(--hair-soft);position:relative;overflow:hidden;}
.cv-cells i.on{background:var(--lume);}
.cv-cells i.half::after{content:"";position:absolute;inset:0 50% 0 0;background:var(--lume);}
.cv-cells i.pace{background:none;border:1.5px dashed var(--lume-text);box-sizing:border-box;}
.cv-line{margin:0;font-size:var(--fs-body);line-height:1.45;color:var(--paper-dim);}
.cv-line b{color:var(--paper);font-weight:600;}
.cv-body{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;margin:0 0 18px;padding:8px 14px;border:1px solid var(--hair);border-radius:999px;
  background:none;font-family:var(--mono);font-size:var(--fs-value);letter-spacing:.04em;color:var(--paper);cursor:pointer;}
.cv-body svg{width:15px;height:15px;fill:var(--steel-2);}
.cv-rows{display:flex;flex-direction:column;border-top:1px solid var(--hair-soft);margin-bottom:18px;}
.cv-row{display:grid;grid-template-columns:88px minmax(0,1fr);gap:8px;padding:12px 0;border-bottom:1px solid var(--hair-soft);align-items:start;}
.cv-an{display:flex;flex-direction:column;gap:3px;padding-top:6px;min-width:0;}
.cv-an b{font-family:var(--sans);font-size:var(--fs-body);font-weight:600;color:var(--paper);}
.cv-an span{font-family:var(--mono);font-size:var(--fs-label);color:var(--steel-2);}
.cv-rings{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;}   /* four columns at most (legs): rings spread across the width and line up row to row */
.cv-mu{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;}
.cv-mu i{font-style:normal;font-family:var(--sans);font-size:var(--fs-label);line-height:1.2;color:var(--paper-dim);text-align:center;}
.cv-ring{width:52px;height:52px;display:block;}
/* Rows of rings: the area name sits on its own line above, so the rings get the full width and draw at 76pt
   (the 52 viewBox scales up: stroke and number grow with it). Day strips and grids keep the side label. */
.cv-row:has(> .cv-rings){grid-template-columns:minmax(0,1fr);gap:10px;padding:14px 0 16px;}
.cv-row:has(> .cv-rings) .cv-an{flex-direction:row;align-items:baseline;gap:10px;padding-top:0;}
.cv-row > .cv-rings{gap:6px;}
.cv-row > .cv-rings .cv-mu{gap:6px;}
.cv-row > .cv-rings .cv-ring{width:76px;height:76px;}
.cv-ring circle{fill:none;}
.cv-ring .tr{stroke:var(--hair-soft);stroke-width:5;}
.cv-ring .pl{stroke:rgba(var(--lume-rgb),.32);stroke-width:5;}   /* planned: the same soft tint as the bar's planned cells, so the solid arc alone matches the number */
.cv-ring .fl{stroke:var(--lume);stroke-width:5;stroke-linecap:round;}   /* 5 in the 52 box, about 7pt at 76pt: more substantial */
.cv-ring text{font-family:var(--mono);font-size:11px;font-weight:500;fill:var(--steel-2);}
.cv-ring text.sm{font-size:9.5px;}
.cv-ring.done text{fill:var(--paper);}
.cv-find{display:flex;flex-direction:column;gap:6px;margin:0 0 14px;}
.cv-find b{font-family:var(--sans);font-size:17px;font-weight:600;color:var(--paper);}
.cv-find p{margin:0;font-size:14px;line-height:1.5;color:var(--paper-dim);}
.cv-how{margin:0 0 24px;}
.prog-card .rc-body .cv-rows{margin-bottom:6px;border-top:0;}
/* This week (and Building muscle): the title sits 18px under the back link like a day or lift page,
   not a full header's clearance below it */
#s-week .sd-head + .page-head,#s-goal .sd-head + .page-head{padding-top:12px;position:static;z-index:auto;}   /* scrolls with the page: tight under the back link, it would stick under the clock */
/* This week: the page name is a label, the verdict leads */
.cv-where{margin:14px 0 2px;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);color:var(--steel-2);}
#s-week .cv-meter{margin-top:6px;}
.cv-cells i.held{background:var(--lume-dim);}
.cv-cells i.down{background:none;border:1.5px solid var(--steel);box-sizing:border-box;}
.cv-ring.dn .fl{stroke:var(--steel-2);}
.cv-ring .pr{fill:var(--lume);stroke:var(--ink);stroke-width:1.5;}
.cv-ring text.xs{font-size:8.5px;}
.cv-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;padding-top:4px;}
.cv-days span{display:flex;flex-direction:column;align-items:center;gap:5px;font-family:var(--mono);font-size:10px;color:var(--steel);}
.cv-days i{width:16px;height:16px;border-radius:50%;background:var(--hair-soft);}
.cv-days i.on{background:var(--lume);}
.cv-grid4{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;padding-top:4px;}
.cv-grid4 i{height:9px;border-radius:2px;background:var(--hair-soft);}
.cv-grid4 i.on{background:var(--lume);}
/* ---------------- Gray dark skin: the Gray skin inverted. Black page, light text, no accent color:
   records, the seal and Start go near-white. A dark skin (no theme-light). ---------------- */
:root.theme-graydark{
  --ink:#0b0b0b; --stage:#050505; --ink-2:#1a1a1a; --panel:#1c1c1c; --panel-2:#242424;
  --hair:#333333; --hair-soft:#262626; --steel:#8a8a8a; --steel-2:#a8a8a8;
  --paper:#f1f1f1; --paper-dim:#c9c9c9;
  --lume:#e6e6e6; --lume-hi:#ffffff; --lume-dim:#3a3a3a; --on-lume:#111111; --lume-text:#ececec; --lume-hero:#f1f1f1;
  --blue:#a5a5a5; --red:#c9c9c9;
  --lume-rgb:230,230,230; --lume-hi-rgb:255,255,255; --tint:255,255,255; --scrim:15,15,15;
  --line-2:#333333; --faint2:#5a5a5a; --wb-empty:#1c1c1c; --card:#121212; --cell:#1e1e1e; --illus-tile:#000;
}
:root.theme-graydark .b-stage svg path{fill:#1b1b1b;}
:root.theme-graydark .b-legend .bar{background:linear-gradient(to top,#3d3d3d,#525252,#686868,#808080,#999999,#b3b3b3,#cecece,#ececec);}
:root.theme-graydark .b-legend.diff .bar{background:linear-gradient(to top,#3F6E96,#3E8E8A,#262626,#a9a9a9,#f1f1f1);}
:root.theme-graydark .lift .ic img,:root.theme-graydark .h1row .exic img,:root.theme-graydark .picktile img,:root.theme-graydark .pl-ic img,
:root.theme-graydark .exic-lg.icon img,:root.theme-graydark .pic-tile.gen i img,:root.theme-graydark .d-illus.icon img{filter:grayscale(1);}
/* Appearance: five skins in two rows (Dark, Light, Olive / Gray light, Gray dark) */
.set-seg.set-skins{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));}
.set-seg.set-skins span{grid-column:span 2;}
.set-seg.set-skins span:nth-child(n+4){grid-column:span 2;border-top:1px solid var(--hair);}   /* six skins: two rows of three */
.set-seg.set-skins span:nth-child(3){border-right:none;}
/* Gray dark: the accent is near-white, so what sits on it is dark */
:root.theme-graydark .pad-check svg{stroke:var(--on-lume);}
:root.theme-graydark .pad-file.ready,:root.theme-graydark .lp-card.on .lp-ck,:root.theme-graydark .lp-add,:root.theme-graydark .lp-row.on .lp-ck{color:var(--on-lume);}
/* Today's lift rows: sets and range in fixed columns (mono, so ch is exact) */
.tgt.tgt-cols{display:grid;grid-template-columns:7ch 3ch 2ch 1ch 2ch;align-items:baseline;white-space:nowrap;}
.tgt-cols .c-sets{text-align:right;}
.tgt-cols .x{text-align:center;}
.tgt-cols .c-lo{text-align:right;}
.tgt-cols .c-dash{text-align:center;color:var(--steel);}
.tgt-cols .c-hi{text-align:left;}
/* Today refresh (2026-10-11): Next up is the page's one card; Last is one row; a cell bar under the muscle count */
.nextup.nx-card{background:var(--card);border:1px solid var(--hair-soft);border-radius:20px;padding:16px 16px 6px;margin-top:18px;}
.nx-card .nx-lab{display:flex;justify-content:space-between;gap:10px;}
.nx-card .head{margin:6px 0 6px;}
.nx-card .nx-set:last-of-type{border-bottom:0;}
.nx-more{display:flex;justify-content:space-between;align-items:center;width:100%;background:none;border:0;border-top:1px solid var(--hair-soft);
  padding:12px 0 10px;font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);text-align:left;cursor:pointer;}
.nx-more span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
.cv-mini{display:grid;gap:3px;margin-top:9px;max-width:200px;}
.cv-mini i{height:7px;border-radius:2px;background:var(--hair-soft);}
.cv-mini i.on{background:var(--lume);}
.cv-mini i.pace{background:none;border:1px dashed var(--lume-text);box-sizing:border-box;}
.lr-top .lr-name{text-transform:none;letter-spacing:0;font-family:var(--sans);font-size:var(--fs-name);font-weight:600;color:var(--paper);}
.prstat .cv-mini{display:grid;height:auto;}
.prstat .cv-mini i{display:block;}
/* the card fits above the pinned Start on a standard phone: tighter rows, less air around it */
.nx-card .nx-set{padding-top:11px;padding-bottom:11px;}
#s-brief .nx-card{margin-top:12px;padding-top:13px;}
#s-brief .rule[style]{margin:18px 0 !important;}
#s-brief .prline.goalline{margin-bottom:14px;}
#s-brief .weeknav.left{margin:12px 0 20px;}
.nx-more{padding:10px 0 8px;}
.nx-card .head{margin:4px 0 4px;}
.nextup.nx-card{padding-bottom:2px;}
/* Today, matched to the wireframe: Start inside the card, a clearer card, smaller card rows, a small Last line */
.nextup.nx-card{border-color:var(--hair);padding:16px 16px 14px;}
.nx-card .nx-set .nm{font-size:14.5px;}
.nx-card .nx-set .tgt{font-size:13px;color:var(--paper-dim);}
.nx-card .nx-set .tgt .x{color:var(--steel);}
.nx-card .nx-cta{margin-top:14px;padding:16px;border-radius:16px;}
/* Next up, airier (matches Progress): more room inside the card, in each lift row, and above Start */
.nextup.nx-card{padding:20px 20px 20px;}
#s-brief .nx-card{margin-top:20px;padding-top:20px;}
.nx-card .head{margin:6px 0 10px;}
.nx-card .nx-set{padding-top:16px;padding-bottom:16px;}
.nx-card .nx-more{padding:14px 0 6px;}
.nx-card .nx-cta{margin-top:18px;}
#s-brief .lastrow .lr-btm,#s-brief .lastrow .lr-btm .lr-lift{font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);}
#s-brief .lastrow .lr-btm{margin-top:5px;}
/* the stand-in Start bar: hidden until the card's own button is off screen */
#s-brief .nx-float{position:absolute;left:0;right:0;bottom:var(--tabbar-h,84px);background:none;padding:0 14px 10px;transform:translateY(12px);opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease;z-index:6;}
#s-brief .nx-float.show{opacity:1;transform:none;pointer-events:auto;}
#s-brief .nx-float .cta{box-shadow:0 10px 26px rgba(0,0,0,.4);}
/* Today's Last: the LAST label on its own line, then the day name (with the chevron), then the summary */
#s-brief .lastrow .lr-top{flex-wrap:wrap;row-gap:6px;}
#s-brief .lastrow .lr-top .k{flex-basis:100%;}
/* the headline's chevron sits at the right edge, in line with Last's */
#s-brief .prline .prline-chev{margin-left:auto;align-self:center;margin-top:0;padding-left:8px;}
/* Logger ghost chips: last time's set, dashed; the set you're on is brighter; logging turns it solid in place */
.pad-chip.ghost{background:transparent;border:1.5px dashed var(--hair);color:var(--steel);box-shadow:none;}
.pad-chip.ghost.next{border-color:var(--steel-2);color:var(--paper-dim);}
.pad-chip.ghost:active{background:rgba(var(--tint),.06);}
/* a ghost chip or the target while its numbers are in the pad: tap again to undo */
.pad-chip.ghost.on{background:rgba(var(--tint),.12);border-color:var(--steel-2);color:var(--paper);}
.pad-cue.on{background:rgba(var(--tint),.10);}
/* Today's week, stepped by swipe or arrow: the block slides in from the side it came from */
@keyframes wkFromLeft{from{opacity:0;transform:translateX(-22px);}to{opacity:1;transform:none;}}
@keyframes wkFromRight{from{opacity:0;transform:translateX(22px);}to{opacity:1;transform:none;}}
#s-brief .wk-from-left{animation:wkFromLeft .24s var(--ease) backwards;}
#s-brief .wk-from-right{animation:wkFromRight .24s var(--ease) backwards;}
@media (prefers-reduced-motion:reduce){#s-brief .wk-from-left,#s-brief .wk-from-right{animation:none;}}
/* the week block is dragged sideways by the app; vertical pans stay the browser's */
#s-brief .weeknav,#s-brief .prline,#s-brief .dots,#s-brief .streak{touch-action:pan-y;}
/* "planned" cells: a soft fill of the accent instead of a dashed outline (dashes read as noise at this size) */
.cv-mini i.pace,.cv-cells i.pace{background:rgba(var(--lume-rgb),.32);border:0;}
/* Overview's direction marks beside a ring's number: up in the text color, down dimmer */
.cv-ring .tu{fill:var(--lume);}
.cv-ring .td{fill:var(--steel-2);}
.cv-ring .fl.gn{stroke:var(--gain,color-mix(in srgb,var(--lume) 55%,var(--paper)));}
/* light skins: lighter means toward the paper, not toward the text */
:root.theme-light{--gain:color-mix(in srgb,var(--lume) 45%,var(--ink));}
/* the gray skins stay grayscale: where it was is a mid gray, the part gained is the skin's full tone */
:root.theme-graydark{--gain:var(--lume);}
:root.theme-graydark .cv-ring .fl.was{stroke:#7a7a7a;}
:root.theme-light.theme-gray{--gain:var(--lume);}
:root.theme-light.theme-gray .cv-ring .fl.was{stroke:#a8a8a8;}   /* the part gained in the last 2 weeks: the same accent, lighter */
.cv-ring .lo{fill:none;stroke:var(--lume);stroke-width:3;opacity:.7;}   /* the part lost: dotted, from the arc's end back to where it was */
.cv-ring text.xs{font-size:9.5px;}

/* Get stronger: bars instead of rings. Name, an 8pt track, the value; one shared scale per screen */
.cv-bars{display:flex;flex-direction:column;gap:16px;}
.cv-br{display:grid;grid-template-columns:minmax(0,138px) minmax(0,1fr) 66px;align-items:center;gap:12px;}
.cv-br .nm{font-family:var(--sans);font-size:var(--fs-body);color:var(--paper-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cv-trk{position:relative;height:8px;border-radius:4px;background:var(--hair-soft);}
#s-week .cv-trk{border-radius:0 4px 4px 0;}   /* This week: the bar starts at the track's left edge, both square there */
.cv-trk .b{position:absolute;top:0;height:8px;border-radius:0 4px 4px 0;}
.cv-trk .b.neg{border-radius:4px 0 0 4px;}
.cv-trk .b.up{background:var(--lume);}
.cv-trk .b.near{background:var(--steel-2);}
.cv-trk .b.dn{background:var(--steel);}
.cv-trk .b.held{background:var(--steel-2);}
.cv-trk .zero,.cv-trk .best{position:absolute;z-index:2;top:-4px;bottom:-4px;width:1.5px;margin-left:-.75px;background:var(--steel);}
.cv-trk .best{background:var(--paper);opacity:.8;}
.cv-trk .pr{position:absolute;z-index:3;top:50%;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;border-radius:50%;background:var(--lume);box-shadow:0 0 0 2px var(--ink);}
.cv-br .v{font-family:var(--mono);font-size:var(--fs-value);text-align:right;white-space:nowrap;color:var(--steel-2);}
.cv-br .v.up{color:var(--lume-text);}
.cv-br .v.dn{color:var(--steel);}
.cv-row:has(> .cv-bars){grid-template-columns:minmax(0,1fr);gap:12px;padding:16px 0 18px;}
.cv-row:has(> .cv-bars) .cv-an{flex-direction:row;align-items:baseline;gap:10px;padding-top:0;}
/* This week: where the bar starts and where your best is, once above the rows (lines up with the tracks) */
.cv-scale{position:relative;height:14px;margin:8px 78px 4px 150px;font-family:var(--mono);font-size:10px;color:var(--steel);}
.cv-scale span{position:absolute;white-space:nowrap;transform:translateX(-50%);}
.cv-scale span:first-child{transform:none;}
/* Progress week cards (Get stronger's records list), airier: a hairline under the header, taller rows with
   dividers, names in the sans like the Lifts list, numbers stay mono */
#s-records .prog-card .rc-body:has(> .rc-row){margin-top:6px;padding-bottom:10px;}
#s-records .prog-card .rc-row:first-child{border-top:1px solid var(--hair-soft);}
#s-records .prog-card .rc-row{padding:13px 0;border-bottom:1px solid var(--hair-soft);align-items:center;}
#s-records .prog-card .rc-row:last-child{border-bottom:0;}
#s-records .prog-card .rc-row .bw-nm{font-family:var(--sans);font-size:var(--fs-body);color:var(--paper);}

/* Progress week lists, older than 12 weeks: folded by year, then month (progWeekList) */
.pw-earlier{margin:32px 0 6px;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);color:var(--steel);}
.pw-years{display:flex;flex-direction:column;border-bottom:1px solid var(--hair-soft);margin-bottom:8px;}
.pw-year{display:flex;justify-content:space-between;align-items:center;width:100%;padding:16px 2px;background:none;border:0;border-top:1px solid var(--hair-soft);color:inherit;text-align:left;cursor:pointer;}
.pw-year b{display:block;font-family:var(--sans);font-size:var(--fs-title);font-weight:700;letter-spacing:-.01em;color:var(--paper);}
.pw-year small,.pw-month small{display:block;margin-top:3px;font-family:var(--mono);font-size:var(--fs-value);color:var(--steel-2);}
.pw-year.open .rc-chev,.pw-month.open .rc-chev{transform:rotate(180deg);}
.pw-months{display:flex;flex-direction:column;padding:0 0 14px;}
.pw-month{display:grid;grid-template-columns:minmax(0,1fr) auto 18px;gap:12px;align-items:baseline;width:100%;padding:14px 2px 14px 14px;background:none;border:0;border-left:2px solid var(--hair-soft);color:inherit;text-align:left;cursor:pointer;}
.pw-month small{margin-top:0;}
.pw-mn{font-family:var(--sans);font-size:var(--fs-body);font-weight:600;color:var(--paper);}
.pw-month.open{border-left-color:var(--lume);}
.pw-weeks{display:flex;flex-direction:column;padding:0 0 12px 14px;border-left:2px solid var(--lume);}
.pw-weeks .prog-card:first-child{margin-top:4px;}

/* ============================================================
   Steel: a sixth skin (dark). Gray dark's steel grays with wax as the only color, and a tactile treatment on
   things you press only: raised plates and buttons, pressed tracks and slots. Text, lists, rings, bars stay flat.
   ============================================================ */
:root.theme-steel{
  --ink:#18191b; --stage:#0f1011; --ink-2:#1f2023; --panel:#26272a; --panel-2:#2c2d31;
  --hair:#34353a; --hair-soft:#2a2b2f; --steel:#86868a; --steel-2:#a6a6a8;
  --paper:#eeeeec; --paper-dim:#c4c4c0;
  --line-2:#3a3b40; --faint2:#5c5d62; --wb-empty:#202124; --card:#1f2023; --cell:#232427; --illus-tile:#111214; --scrim:15,16,18;
  --st-plate:linear-gradient(180deg,#2a2b2e 0%,#212225 100%);
  --st-raise:inset 0 1px 0 rgba(255,255,255,.075),0 1px 1px rgba(0,0,0,.5),0 8px 18px rgba(0,0,0,.42);
  --st-raise-sm:inset 0 1px 0 rgba(255,255,255,.07),0 1px 1px rgba(0,0,0,.5),0 4px 10px rgba(0,0,0,.38);
  --st-press:inset 0 2px 6px rgba(0,0,0,.6),inset 0 -1px 0 rgba(255,255,255,.04);
  --st-wax:linear-gradient(180deg,#d4583c 0%,#c2472f 55%,#a83a25 100%);
  --st-wax-raise:inset 0 1px 0 rgba(255,255,255,.22),0 1px 1px rgba(0,0,0,.5),0 10px 22px rgba(160,50,30,.32),0 4px 10px rgba(0,0,0,.4);
  --st-well:#121315; --st-dot:#26272b; --st-glow:rgba(160,50,30,.35);
  --st-edge:rgba(0,0,0,.4); --st-cell-in:rgba(0,0,0,.5); --st-line:rgba(255,255,255,.05); --st-bar-line:rgba(255,255,255,.06); --st-bar-shadow:0 -10px 24px rgba(0,0,0,.35);
  --st-dome:radial-gradient(circle at 50% 30%,#da5d41 0%,#c2472f 55%,#a83a25 100%);
}
/* Light Steel: the tactile treatment on cream: paper plates lit from above, deep wax buttons */
:root.theme-lightsteel{
  --st-plate:linear-gradient(180deg,#f7f3eb 0%,#ebe5da 100%);
  --st-raise:inset 0 1px 0 rgba(255,255,255,.9),0 1px 1px rgba(70,55,35,.14),0 8px 18px rgba(70,55,35,.14);
  --st-raise-sm:inset 0 1px 0 rgba(255,255,255,.9),0 1px 1px rgba(70,55,35,.14),0 4px 10px rgba(70,55,35,.12);
  --st-press:inset 0 2px 5px rgba(70,55,35,.2),inset 0 -1px 0 rgba(255,255,255,.75);
  --st-wax:linear-gradient(180deg,#a8392e 0%,#8e2b24 55%,#76221c 100%);
  --st-wax-raise:inset 0 1px 0 rgba(255,255,255,.25),0 1px 1px rgba(60,20,15,.25),0 10px 22px rgba(142,43,36,.25),0 4px 10px rgba(70,55,35,.18);
  --st-well:#dcd5c8; --st-dot:#d9d2c5; --st-glow:rgba(142,43,36,.28);
  --st-edge:transparent; --st-cell-in:rgba(70,55,35,.14); --st-line:rgba(70,55,35,.10); --st-bar-line:rgba(70,55,35,.14); --st-bar-shadow:0 -8px 22px rgba(70,55,35,.10);
  --st-dome:radial-gradient(circle at 50% 30%,#b04034 0%,#8e2b24 55%,#76221c 100%);
}
/* Olive Steel: the same tactile treatment in olive plates and copper */
:root.theme-olivesteel{
  --st-plate:linear-gradient(180deg,#3d4b2e 0%,#323f25 100%);
  --st-raise:inset 0 1px 0 rgba(255,250,220,.09),0 1px 1px rgba(0,0,0,.45),0 8px 18px rgba(10,14,5,.45);
  --st-raise-sm:inset 0 1px 0 rgba(255,250,220,.08),0 1px 1px rgba(0,0,0,.45),0 4px 10px rgba(10,14,5,.4);
  --st-press:inset 0 2px 6px rgba(8,12,4,.6),inset 0 -1px 0 rgba(255,250,220,.05);
  --st-wax:linear-gradient(180deg,#c98a4c 0%,#b07135 55%,#925b29 100%);
  --st-wax-raise:inset 0 1px 0 rgba(255,240,210,.25),0 1px 1px rgba(0,0,0,.45),0 10px 22px rgba(120,70,20,.35),0 4px 10px rgba(0,0,0,.35);
  --st-well:#222b18; --st-dot:#36432a; --st-glow:rgba(120,70,20,.38);
  --st-edge:rgba(10,14,5,.35); --st-cell-in:rgba(10,14,5,.45); --st-line:rgba(255,250,220,.06); --st-bar-line:rgba(255,250,220,.07); --st-bar-shadow:0 -10px 24px rgba(10,14,5,.35);
  --st-dome:radial-gradient(circle at 50% 30%,#d09455 0%,#b07135 55%,#925b29 100%);
}
:root.theme-steel body{background:#0f1011;}
:root.theme-steel .screen{background:var(--ink);}   /* flat: sticky headers and docks paint var(--ink), a gradient page showed them as boxes */
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .tabbar{position:relative;z-index:2;background:var(--ink);border-top:1px solid var(--st-bar-line);box-shadow:var(--st-bar-shadow);}   /* a lip above the tab bar so content reads as passing under it */
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .dock{background:linear-gradient(to top,var(--ink) 66%,transparent);}
/* wax buttons: Start, Finish, every primary */
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .cta:not(.off),:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .std-p{background:var(--st-wax);box-shadow:var(--st-wax-raise);color:var(--on-lume);border:0;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .nx-card .nx-cta{border-radius:999px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-check:not(.wu){background:var(--st-dome);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25),inset 0 -3px 6px rgba(0,0,0,.25),0 2px 2px rgba(0,0,0,.5),0 12px 24px var(--st-glow);}
/* raised steel: the Next up plate, pad keys, pad pills, logged set chips, small round buttons */
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .nextup.nx-card{background:var(--st-plate);box-shadow:var(--st-raise);border-color:rgba(255,255,255,.03);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-steps button:not(.pad-wt){background:var(--st-plate);box-shadow:var(--st-raise-sm);border:1px solid rgba(255,255,255,.03);border-radius:14px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-steps button:not(.pad-wt):active{box-shadow:var(--st-press);background:var(--st-well);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-steps .pad-wt{background:var(--st-well);box-shadow:var(--st-press);border:1px solid var(--st-edge);border-radius:14px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-steps .pad-wt.on{background:var(--st-plate);box-shadow:var(--st-raise-sm);border-color:rgba(255,255,255,.08);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-rest,:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-next:not(.hot),:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-file:not(.ready){background:var(--st-plate);box-shadow:var(--st-raise-sm);border-color:rgba(255,255,255,.03);border-radius:999px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-next.hot{border-radius:999px;box-shadow:var(--st-raise-sm);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-file.ready{background:var(--st-wax);box-shadow:var(--st-wax-raise);border-color:transparent;border-radius:999px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-chip:not(.ghost):not(.w){background:var(--st-plate);box-shadow:var(--st-raise-sm);border-color:rgba(255,255,255,.04);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .gear{width:38px;height:38px;border-radius:50%;display:inline-grid;place-items:center;padding:0;background:var(--st-plate);box-shadow:var(--st-raise-sm);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .arw:not(.off){width:30px;height:30px;border-radius:50%;display:inline-grid;place-items:center;padding:0;background:var(--st-plate);box-shadow:var(--st-raise-sm);}
/* segmented controls: a pressed track with the chosen piece raised */
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .seg{background:var(--st-well);box-shadow:var(--st-press);border-color:var(--st-edge);padding:3px;gap:3px;border-radius:14px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .seg span{border-radius:11px;border:0 !important;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .seg span.on{background:var(--st-plate);box-shadow:var(--st-raise-sm);color:var(--paper);}
/* pressed in: day dots, drawing slots, search */
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .day .dot{border:0;background:var(--st-dot);box-shadow:inset 0 2px 3px rgba(0,0,0,.55),0 1px 0 rgba(255,255,255,.07);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .day.done .dot{background:var(--st-dome);box-shadow:0 0 0 1px var(--st-edge),0 2px 5px rgba(0,0,0,.5);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .day.today .dot{box-shadow:var(--st-press),0 0 0 2px rgba(var(--lume-rgb),.55);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .day.fillable .dot{border:1px dashed var(--steel);box-shadow:none;background:none;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-thumb,:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pl-ic,:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .lift .ic{box-shadow:var(--st-press);border-color:var(--st-edge);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .lsearch{background:var(--st-well);box-shadow:var(--st-press);border-color:var(--st-edge);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .cv-cells i:not(.on):not(.half):not(.pace){box-shadow:inset 0 1px 1px var(--st-cell-in);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pl-sort{background:var(--st-plate);box-shadow:var(--st-raise-sm);border-color:transparent;}

/* Steel skins, Progress: tactile in the small parts only (lists stay open rows: plates around whole lists read
   boxy). Week cards are single plates; filled cells and bars are little wax pieces; tracks are pressed in. */
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .prog-card{background:var(--st-plate);box-shadow:var(--st-raise-sm);border-color:transparent;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .cv-cells i.on,:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .cv-cells i.half{background-image:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0) 55%,rgba(0,0,0,.12));}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .cv-trk{background:var(--st-well);box-shadow:inset 0 1px 2px var(--st-cell-in);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .cv-trk .b{background-image:linear-gradient(180deg,rgba(255,255,255,.2),rgba(255,255,255,0) 60%,rgba(0,0,0,.12));}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .cv-ring .tr{stroke:var(--st-well);}

/* Steel skins, lift page: the picture is set into the surface, each card is one quiet plate, the record tag a
   small wax piece, the ⋯ and "See the sets" small raised buttons */
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .d-illus{box-shadow:var(--st-press);border-color:var(--st-edge);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .li-card{background:var(--st-plate);box-shadow:var(--st-raise-sm);border-color:transparent;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .li-card.none{background:none;box-shadow:none;border-color:var(--hair);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .li-chip.solid{background:var(--st-wax);box-shadow:var(--st-wax-raise);border-color:transparent;color:var(--on-lume);border-radius:6px;padding:3px 8px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .sd-daymore{width:34px;height:34px;border-radius:50%;display:inline-grid;place-items:center;padding:0 0 4px;background:var(--st-plate);box-shadow:var(--st-raise-sm);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .li-ev{padding:8px 14px;margin-top:4px;border-radius:999px;background:var(--st-plate);box-shadow:var(--st-raise-sm);}
/* Steel skins, Body: Front / Back is a pressed track with a raised wax piece; the overlay switch a raised pill
   with a raised menu; Compare a plate whose toggle is a pressed track with a raised knob (wax when on); the
   muscle sheet a plate */
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .b-seg{background:var(--st-well);box-shadow:var(--st-press);border-color:var(--st-edge);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .b-seg button.on{background:var(--st-wax);box-shadow:var(--st-wax-raise);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .b-overlay{padding:7px 14px;border-radius:999px;background:var(--st-plate);box-shadow:var(--st-raise-sm);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .b-omenu{background:var(--st-plate);box-shadow:var(--st-raise),0 16px 40px rgba(0,0,0,.35);border-color:transparent;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .cmp2{background:var(--st-plate);box-shadow:var(--st-raise-sm);border-color:transparent;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .cmp2.on{box-shadow:var(--st-raise-sm),inset 0 0 0 1px rgba(var(--lume-rgb),.55);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .tgl{background:var(--st-well);box-shadow:var(--st-press);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .tgl.on{background:var(--st-wax);box-shadow:inset 0 2px 4px rgba(0,0,0,.3);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .tgl i{background:linear-gradient(180deg,#ffffff,#e4e4e2);box-shadow:inset 0 -1px 0 rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.45),0 3px 6px rgba(0,0,0,.25);}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .b-module{background:var(--st-plate);-webkit-backdrop-filter:none;backdrop-filter:none;border-color:transparent;box-shadow:var(--st-raise),0 22px 54px rgba(0,0,0,.45);}

/* Type trial: Modern (Settings > Type). One sans for everything, numbers still line up, no spaced-out caps;
   the logger pad's weight and reps keep the mono as the one deliberate signature. */
:root.type-modern{--sans:"Instrument Sans",-apple-system,system-ui,sans-serif;--mono:var(--sans);--ls-label:0;
  /* a sans reads about 10% smaller than the mono at the same size: the small steps go up one notch */
  --fs-label:14px;--fs-value:15px;--fs-body:17px;--fs-name:18px;--fs-data:18px;}
:root.type-modern body{font-variant-numeric:tabular-nums;}
:root.type-modern #device *{text-transform:none !important;}
:root.type-modern #device *:not(h1):not(h2):not(.word){letter-spacing:0 !important;}
:root.type-modern .pad-val .num{font-family:"JetBrains Mono",ui-monospace,monospace;}
:root.type-modern .cta,:root.type-modern .nx-cta{font-weight:600;}
/* ==== generated: modern type size floor ==== */
:root.type-modern .backfill-note{font-size:13.5px}
:root.type-modern .chip{font-size:12.5px}
:root.type-modern .prog .n{font-size:14px}
:root.type-modern .dcov .labels span{font-size:11.5px}
:root.type-modern .dcov .n{font-size:14px}
:root.type-modern .cov-note{font-size:13px}
:root.type-modern .lift-remove{font-size:14px}
:root.type-modern .lift .sub{font-size:12.5px}
:root.type-modern .lift .tgt .pr{font-size:13px}
:root.type-modern .lift .first{font-size:13.5px}
:root.type-modern .addlift{font-size:14px}
:root.type-modern .cov-h{font-size:12.5px}
:root.type-modern .cov-pc{font-size:14px}
:root.type-modern .cov-foot{font-size:12.5px}
:root.type-modern .cold-list span{font-size:15px}
:root.type-modern .exit-top{font-size:15px}
:root.type-modern .cmp-empty{font-size:14px}
:root.type-modern .beat .rec .k{font-size:13px}
:root.type-modern .beat .live{font-size:15px}
:root.type-modern .setrow .s{font-size:15px}
:root.type-modern .rest{font-size:14px}
:root.type-modern .rest .rest-tog,:root.type-modern .rest .rest-t{font-size:14px}
:root.type-modern .exit{font-size:14px}
:root.type-modern .cmp .lab{font-size:13px}
:root.type-modern .crow .si{font-size:14px}
:root.type-modern .crow-btn{font-size:13px}
:root.type-modern .sl-tag{font-size:12px}
:root.type-modern .se-k{font-size:12px}
:root.type-modern .se-u{font-size:14px}
:root.type-modern .hs-hint{font-size:15px}
:root.type-modern .m-kicker{font-size:15px}
:root.type-modern .m-meta{font-size:13px}
:root.type-modern .stub{font-size:15px}
:root.type-modern .np-lab{font-size:14px}
:root.type-modern .wlabel{font-size:12px}
:root.type-modern .prr-delta .d2{font-size:14px}
:root.type-modern .prr .jump,:root.type-modern .prr .streak,:root.type-modern .prr .kind{font-size:11px}
:root.type-modern .stale .k{font-size:12.5px}
:root.type-modern .stale .push{font-size:12.5px}
:root.type-modern .statline{font-size:14px}
:root.type-modern .cmp2-unlock{font-size:13px}
:root.type-modern .pg-win b{font-size:14px}
:root.type-modern .pg-win span{font-size:11px}
:root.type-modern .tw-key{font-size:13px}
:root.type-modern .mv{font-size:12px}
:root.type-modern .hist-feel span{font-size:14px}
:root.type-modern .hs-meta{font-size:14px}
:root.type-modern .hs-hi{font-size:14px}
:root.type-modern .sd-empty{font-size:14px}
:root.type-modern .rn-list .rn-n{font-size:13px}
:root.type-modern .set-about{font-size:13px}
:root.type-modern .lcd-tag{font-size:12px}
:root.type-modern .b-legend{font-size:12px}
:root.type-modern .b-legend .bu{font-size:11px}
:root.type-modern .b-pill{font-size:12.5px}
:root.type-modern .b-msub{font-size:13px}
:root.type-modern .b-stats b i{font-size:11.5px}
:root.type-modern .b-stats b i.b-delta{font-size:12px}
:root.type-modern .b-stats span{font-size:11.5px}
:root.type-modern .b-bal .lab{font-size:12px}
:root.type-modern .b-prs .k{font-size:12.5px}
:root.type-modern .b-clabel{font-size:13px}
:root.type-modern .b-cmeta{font-size:13px}
:root.type-modern .mus-sub{font-size:13px}
:root.type-modern .mus-chip{font-size:15px}
:root.type-modern .mus-auto{font-size:14px}
:root.type-modern .al-nomatch{font-size:15px}
:root.type-modern .al-edit{font-size:12px}
:root.type-modern .ls-tx span{font-size:13.5px}
:root.type-modern .mo-eyebrow{font-size:14px}
:root.type-modern .mo-also{font-size:13px}
:root.type-modern .mo-meta{font-size:13px}
:root.type-modern .mo-done{font-size:15px}
:root.type-modern .wr-w{font-size:15px}
:root.type-modern .wr-more{font-size:13px}
:root.type-modern .lr-ctx{font-size:15px}
:root.type-modern .sd-ctx-k{font-size:13px}
:root.type-modern .h2g-scale{font-size:11.5px}
:root.type-modern .nx-tag{font-size:13.5px}
:root.type-modern .reel-week{font-size:12.5px}
:root.type-modern .reel-gap{font-size:13px}
:root.type-modern .reel-sets{font-size:15px}
:root.type-modern .sw-day b{font-size:12px}
:root.type-modern .pad-jump{font-size:14px}
:root.type-modern .pad-file{font-size:14px}
:root.type-modern .pad-chip{font-size:14px}
:root.type-modern .pad-chip .pad-tag{font-size:13px}
:root.type-modern .pad-sides button{font-size:14px}
:root.type-modern .pad-cue{font-size:15px}
:root.type-modern .pad-next{font-size:14px}
:root.type-modern .pad-val button.pad-unit{font-size:14px}
:root.type-modern .pad-unit{font-size:13px}
:root.type-modern .lp-chip{font-size:14px}
:root.type-modern .ob2-meta{font-size:14px}
:root.type-modern .ob2-ai small{font-size:14px}
:root.type-modern .ob2-sum{font-size:14px}
:root.type-modern .ob2-nm small{font-size:14px}
:root.type-modern .ob2-tg{font-size:14px}
:root.type-modern .ob2-sw{font-size:14px}
:root.type-modern .lp-kit{font-size:14px}
:root.type-modern .fw-uph span{font-size:14px}
:root.type-modern .b-view button{font-size:14px}
:root.type-modern .li-chip{font-size:12px}
:root.type-modern .li-ctx{font-size:15px}
:root.type-modern .li-gap i{font-size:11px}
:root.type-modern .li-bar i{font-size:13px}
:root.type-modern .li-axis{font-size:12px}
:root.type-modern .li-ev{font-size:14px}
:root.type-modern .li-dots em{font-size:13px}
:root.type-modern .d-next .dn-b{font-size:14px}
:root.type-modern .lie-r{font-size:15px}
:root.type-modern .lie-r.hd{font-size:12px}
:root.type-modern .lie-how p{font-size:15px}
:root.type-modern .sheet .li-ev{font-size:14px}
:root.type-modern .li-cap{font-size:14px}
:root.type-modern .li-read{font-size:15px}
:root.type-modern .li-bar u{font-size:11px}
:root.type-modern .cv-ring text{font-size:13px}
:root.type-modern .cv-ring text.sm{font-size:11.5px}
:root.type-modern .cv-days span{font-size:12px}
:root.type-modern .nx-card .nx-set .tgt{font-size:15px}
:root.type-modern .cv-ring text.xs{font-size:11.5px}
:root.type-modern .cv-scale{font-size:12px}

/* Flat Dark: warm charcoal (2026-10-14). Oxblood lifted one step for dark; deeper oxblood for filled progress; a flat
   deep Start button like Light steel's. Dark steel keeps its own cooler steel. */
:root.theme-dark{
  --ink:#1C1917; --stage:#141210; --ink-2:#262220; --panel:#262220; --panel-2:#2d2926; --card:#262220;
  --hair:#3A3530; --hair-soft:#322d29; --line-2:#3A3530; --cell:#2a2623; --wb-empty:#2a2623; --faint2:#6f6860;
  --paper:#F3EFE4; --paper-dim:#D9D2C6; --steel:#A8A097; --steel-2:#C4BCB0;
  --lume:#C9584A; --lume-hero:#C9584A; --lume-hi:#D66A5B; --lume-text:#D66A5B; --lume-dim:#8A4036; --on-lume:#F3EFE4;
  --lume-rgb:201,88,74; --lume-hi-rgb:214,106,91; --scrim:28,25,23; --illus-tile:#221e1c;
}
:root.theme-dark body{background:#141210;}
:root.theme-dark .cv-cells i.on,:root.theme-dark .cv-mini i.on{background:#8A4036;}
:root.theme-dark .cta:not(.off),:root.theme-dark .std-p{background:#9E2A22;color:#F3EFE4;box-shadow:none;}
:root.theme-dark .b-stage svg path{fill:#2a2623;}
:root.theme-dark #s-body{background:var(--ink);}
/* Flat Dark, Body page: panels, menus and labels on the warm charcoal instead of the old cool grays */
:root.theme-dark .b-top h1{color:var(--paper);}
:root.theme-dark .b-seg{border-color:var(--hair-soft);background:rgba(243,239,228,.04);}
:root.theme-dark .b-seg button{color:var(--steel);}
:root.theme-dark .b-overlay,:root.theme-dark .b-overlay .cv,:root.theme-dark .b-legend{color:var(--steel);}
:root.theme-dark .b-overlay b{color:var(--paper);}
:root.theme-dark .b-module{background:rgba(38,34,32,.94);border-color:var(--hair);}
:root.theme-dark .b-msub,:root.theme-dark .b-stats b i,:root.theme-dark .b-stats span,:root.theme-dark .b-bal .lab,:root.theme-dark .b-prs.top .k,:root.theme-dark .b-cmeta{color:var(--steel);}
:root.theme-dark .b-prs li{color:var(--paper-dim);}
:root.theme-dark .b-omenu{background:var(--panel);border-color:var(--hair);}
:root.theme-dark .b-omenu button{color:var(--paper-dim);}
:root.theme-dark .b-view button{border-color:var(--hair);background:rgba(28,25,23,.7);color:var(--steel-2);}
:root.theme-dark .b-view button.on{background:var(--paper);border-color:var(--paper);color:var(--ink);}
:root.theme-dark .cmp2{background:var(--card);border-color:var(--hair);}
:root.theme-dark .b-seg button.on{color:var(--on-lume);}
:root.theme-dark .b-back{background:rgba(38,34,32,.9);border-color:var(--hair);color:var(--paper);}

/* ============================================================
   Steel v2, machined (2026-10-14): crisp edge light instead of soft shadows, faint brushed grain on raised parts,
   tighter corners, and buttons in an anodized finish (grain over a nearly flat color, no midline, no glow).
   Shared rules below; each steel skin supplies its own colors.
   ============================================================ */
:root.theme-steel{
  --ink:#15171a;--stage:#0e0f11;--ink-2:#1c1f23;--panel:#202327;--panel-2:#262a2f;--card:#1c1f23;--hair:#2c3036;--hair-soft:#24282d;--line-2:#363b42;--cell:#1f2226;--wb-empty:#1f2226;
  --paper:#eef1f4;--paper-dim:#c7ccd2;--steel:#8a919a;--steel-2:#b3b9c1;--illus-tile:#101215;--scrim:14,15,17;
  --st-grain:repeating-linear-gradient(90deg,rgba(255,255,255,.022) 0 1px,rgba(0,0,0,.02) 1px 2px,transparent 2px 4px);
  --st-plate:var(--st-grain),linear-gradient(180deg,#2d3136 0%,#262a2e 100%);
  --st-raise:inset 0 1px 0 rgba(255,255,255,.16),inset 0 -1px 0 rgba(0,0,0,.55),0 1px 0 rgba(0,0,0,.65),0 3px 6px rgba(0,0,0,.35);
  --st-raise-sm:inset 0 1px 0 rgba(255,255,255,.15),inset 0 -1px 0 rgba(0,0,0,.5),0 1px 0 rgba(0,0,0,.6),0 2px 3px rgba(0,0,0,.3);
  --st-press:inset 0 1px 3px rgba(0,0,0,.75),inset 0 0 0 1px rgba(0,0,0,.45),0 1px 0 rgba(255,255,255,.07);
  --st-btn-grain:repeating-linear-gradient(90deg,rgba(255,255,255,.035) 0 1px,rgba(0,0,0,.035) 1px 2px,transparent 2px 4px);
  --st-wax:var(--st-btn-grain),linear-gradient(180deg,#b9472f,#a83b29);
  --st-dome:var(--st-btn-grain),radial-gradient(circle at 50% 35%,#bd4a31,#a43927);
  --st-wax-raise:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.25),0 1px 0 rgba(0,0,0,.6),0 2px 4px rgba(0,0,0,.3);
  --st-well:#0f1113;--st-dot:#22262b;--st-glow:transparent;--st-edge:rgba(0,0,0,.45);--st-line:rgba(255,255,255,.05);
  --st-bar-line:rgba(255,255,255,.05);--st-bar-shadow:0 -6px 14px rgba(0,0,0,.35);
}
:root.theme-lightsteel{
  --st-grain:repeating-linear-gradient(90deg,rgba(0,0,0,.022) 0 1px,rgba(255,255,255,.25) 1px 2px,transparent 2px 4px);
  --st-plate:var(--st-grain),linear-gradient(180deg,#f8f4ec 0%,#eee8dd 100%);
  --st-raise:inset 0 1px 0 rgba(255,255,255,.95),inset 0 -1px 0 rgba(70,55,35,.16),0 1px 0 rgba(70,55,35,.18),0 3px 6px rgba(70,55,35,.12);
  --st-raise-sm:inset 0 1px 0 rgba(255,255,255,.95),inset 0 -1px 0 rgba(70,55,35,.15),0 1px 0 rgba(70,55,35,.18),0 2px 3px rgba(70,55,35,.1);
  --st-press:inset 0 1px 3px rgba(70,55,35,.26),inset 0 0 0 1px rgba(70,55,35,.1),0 1px 0 rgba(255,255,255,.8);
  --st-btn-grain:repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 1px,rgba(0,0,0,.04) 1px 2px,transparent 2px 4px);
  --st-wax:var(--st-btn-grain),linear-gradient(180deg,#9a3128,#8a2a22);
  --st-dome:var(--st-btn-grain),radial-gradient(circle at 50% 35%,#9e342a,#86281f);
  --st-wax-raise:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -1px 0 rgba(0,0,0,.2),0 1px 0 rgba(60,20,15,.3),0 2px 4px rgba(70,55,35,.18);
  --st-glow:transparent;
}
:root.theme-olivesteel{
  --st-grain:repeating-linear-gradient(90deg,rgba(255,250,220,.025) 0 1px,rgba(0,0,0,.025) 1px 2px,transparent 2px 4px);
  --st-plate:var(--st-grain),linear-gradient(180deg,#3e4c30 0%,#354228 100%);
  --st-raise:inset 0 1px 0 rgba(255,250,220,.14),inset 0 -1px 0 rgba(8,12,4,.5),0 1px 0 rgba(8,12,4,.6),0 3px 6px rgba(8,12,4,.35);
  --st-raise-sm:inset 0 1px 0 rgba(255,250,220,.13),inset 0 -1px 0 rgba(8,12,4,.45),0 1px 0 rgba(8,12,4,.55),0 2px 3px rgba(8,12,4,.3);
  --st-press:inset 0 1px 3px rgba(8,12,4,.65),inset 0 0 0 1px rgba(8,12,4,.35),0 1px 0 rgba(255,250,220,.07);
  --st-btn-grain:repeating-linear-gradient(90deg,rgba(255,240,210,.04) 0 1px,rgba(0,0,0,.04) 1px 2px,transparent 2px 4px);
  --st-wax:var(--st-btn-grain),linear-gradient(180deg,#b97b3f,#a5692f);
  --st-dome:var(--st-btn-grain),radial-gradient(circle at 50% 35%,#bd7f42,#9f652d);
  --st-wax-raise:inset 0 1px 0 rgba(255,240,210,.25),inset 0 -1px 0 rgba(0,0,0,.25),0 1px 0 rgba(8,12,4,.6),0 2px 4px rgba(8,12,4,.3);
  --st-glow:transparent;
}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .cta:not(.off),:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .std-p,:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .nx-card .nx-cta{border-radius:12px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .nextup.nx-card,:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .prog-card,:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .li-card,:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .cmp2{border-radius:14px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-steps button,:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-steps .pad-wt{border-radius:9px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .seg{border-radius:10px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .seg span{border-radius:7px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-rest,:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-next:not(.hot),:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-next.hot,:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-file{border-radius:9px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .gear,:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .arw:not(.off),:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .sd-daymore{border-radius:9px;}
:root:is(.theme-steel,.theme-olivesteel,.theme-lightsteel) .pad-check:not(.wu){box-shadow:var(--st-wax-raise),0 3px 6px rgba(0,0,0,.2);}
:root.theme-steel .li-bar:not(.on) b{background:#3d434b;}   /* the comparison bar shows on the brushed plate */

/* ============================================================
   Midnight brass (2026-10-14): deep navy, brass accent (gold = earned), rounded borderless cards and a floating
   pill tab bar. A dark skin; replaces Light steel in Settings (Light steel still renders if a store has it).
   ============================================================ */
:root.theme-brass{
  --ink:#0f1626;--stage:#0a0f1b;--ink-2:#18213a;--panel:#18213a;--panel-2:#1e2844;--card:#18213a;--hair:#28334f;--hair-soft:#212b45;--line-2:#2e3a58;--cell:#1e2844;--wb-empty:#1e2844;--faint2:#5f6a85;
  --paper:#f1ede2;--paper-dim:#c9c6bb;--steel:#8d93a6;--steel-2:#adb2c2;
  --lume:#d1a74f;--lume-hero:#d1a74f;--lume-text:#e2bd6b;--lume-hi:#e2bd6b;--lume-dim:#4a3d1f;--lume-rgb:209,167,79;--lume-hi-rgb:226,189,107;--on-lume:#14110a;
  --illus-tile:#18213a;--scrim:15,22,38;--gain:color-mix(in srgb,#d1a74f 55%,#f1ede2);
}
:root.theme-brass body,:root.theme-brass #s-body{background:var(--ink);}
:root.theme-brass .cta:not(.off),:root.theme-brass .std-p{background:var(--lume);color:var(--on-lume);box-shadow:none;border-radius:16px;}
:root.theme-brass .pad-check:not(.wu) svg{stroke:var(--on-lume);}
:root.theme-brass .pad-file.ready{color:var(--on-lume);}
:root.theme-brass .nextup.nx-card,:root.theme-brass .li-card,:root.theme-brass .prog-card,:root.theme-brass .cmp2{border-radius:22px;border-color:transparent;background:var(--card);}
:root.theme-brass .li-card.none{border:1px dashed var(--hair);background:none;}
:root.theme-brass .seg{border-color:transparent;background:var(--card);border-radius:14px;padding:3px;}
:root.theme-brass .seg span{border-radius:11px;}
:root.theme-brass .seg span.on{background:var(--panel-2);color:var(--paper);}
:root.theme-brass .pad-steps button{border-radius:14px;background:var(--card);}
:root.theme-brass .b-stage svg path{fill:#1e2844;}
:root.theme-brass .b-module{background:rgba(24,33,58,.94);border-color:var(--hair);}
:root.theme-brass .b-seg{border-color:var(--hair-soft);background:var(--card);}
:root.theme-brass .b-seg button{color:var(--steel);} :root.theme-brass .b-seg button.on{color:var(--on-lume);}
:root.theme-brass .b-overlay,:root.theme-brass .b-overlay .cv,:root.theme-brass .b-legend,:root.theme-brass .b-msub,:root.theme-brass .b-stats span,:root.theme-brass .b-stats b i,:root.theme-brass .b-bal .lab,:root.theme-brass .b-cmeta{color:var(--steel);}
:root.theme-brass .b-overlay b,:root.theme-brass .b-top h1{color:var(--paper);}
:root.theme-brass .b-omenu{background:var(--panel);border-color:var(--hair);}
:root.theme-brass .b-back{background:rgba(24,33,58,.9);border-color:var(--hair);color:var(--paper);}
:root.theme-brass .b-legend .bar{background:linear-gradient(to top,#4f4733,#6a5a35,#86703a,#a3863f,#bf9c47,#d6b35a,#ead07e);}
/* standard bottom tab bar, in the navy */
:root.theme-brass .tabbar{background:var(--ink);border-top-color:var(--hair-soft);}

/* ============================================================
   Mono (2026-10-14): black and white, no accent color; short headings and big numbers in heavy wide caps
   (Archivo Expanded Black, bundled). Mono dark = white on black, Mono light = black on white.
   ============================================================ */
:root.theme-monodark{
  --ink:#000;--stage:#000;--ink-2:#111;--panel:#111;--panel-2:#1a1a1a;--card:#0f0f0f;--hair:#262626;--hair-soft:#1c1c1c;--line-2:#333;--cell:#1f1f1f;--wb-empty:#1f1f1f;--faint2:#666;
  --paper:#fff;--paper-dim:#cfcfcf;--steel:#8a8a8a;--steel-2:#b5b5b5;
  --lume:#fff;--lume-hero:#fff;--lume-text:#fff;--lume-hi:#fff;--lume-dim:#3a3a3a;--lume-rgb:255,255,255;--lume-hi-rgb:255,255,255;--on-lume:#000;--illus-tile:#0f0f0f;--scrim:0,0,0;--gain:#9a9a9a;
}
:root.theme-light.theme-monolight{
  --ink:#fff;--stage:#fff;--ink-2:#f4f4f4;--panel:#f4f4f4;--panel-2:#ececec;--card:#f6f6f6;--hair:#e2e2e2;--hair-soft:#ececec;--line-2:#cfcfcf;--cell:#e6e6e6;--wb-empty:#e6e6e6;--faint2:#9a9a9a;
  --paper:#000;--paper-dim:#333;--steel:#6e6e6e;--steel-2:#4a4a4a;
  --lume:#000;--lume-hero:#000;--lume-text:#000;--lume-hi:#000;--lume-dim:#d6d6d6;--lume-rgb:0,0,0;--lume-hi-rgb:0,0,0;--on-lume:#fff;--illus-tile:#000;--scrim:255,255,255;--tint:0,0,0;--gain:#8a8a8a;
}
:root.theme-mono #device .prstat > b,:root.theme-mono #device .nextup .head h2,:root.theme-mono #device .cv-word,:root.theme-mono #device .r-head h1,:root.theme-mono #device .pad-val .num,:root.theme-mono #device .page-head h1,:root.theme-mono #device .b-top h1,:root.theme-mono #device .d-title h1,:root.theme-mono #device .d-stat b,:root.theme-mono #device .rc-title h2{font-family:"Archivo Expanded","Archivo",var(--sans) !important;font-weight:900 !important;text-transform:uppercase !important;letter-spacing:-.01em !important;line-height:1.02 !important;}
:root.theme-mono #device .prstat > b{font-size:34px;}
:root.theme-mono #device .page-head h1,:root.theme-mono #device .b-top h1{font-size:30px;}
:root.theme-mono #device .cv-word{font-size:26px;}
:root.theme-mono #device .nextup .head h2,:root.theme-mono #device .d-title h1,:root.theme-mono #device .rc-title h2{font-size:22px;}
:root.theme-mono #device .r-head h1{font-size:24px;}
:root.theme-mono #device .pad-val .num{letter-spacing:-.03em !important;}
:root.theme-mono body,:root.theme-mono #s-body{background:var(--ink);}
:root.theme-mono .cv-cells i.on,:root.theme-mono .cv-mini i.on,:root.theme-mono .cv-cells i.half{background:var(--lume);}
:root.theme-mono .cta:not(.off),:root.theme-mono .std-p{background:var(--lume);color:var(--on-lume);box-shadow:none;border-radius:999px;}
:root.theme-mono #device .cta:not(.off),:root.theme-mono #device .nx-cta{font-family:"Archivo Expanded",var(--sans) !important;font-weight:900 !important;text-transform:uppercase !important;letter-spacing:0 !important;font-size:15px;}
:root.theme-mono .pad-check:not(.wu){background:var(--lume);}
:root.theme-mono .pad-check:not(.wu) svg{stroke:var(--on-lume);}
:root.theme-mono .pad-file.ready{color:var(--on-lume);}
:root.theme-mono .nextup.nx-card,:root.theme-mono .li-card,:root.theme-mono .prog-card{border-radius:0;border:0;border-top:1px solid var(--hair);background:transparent;padding-left:0;padding-right:0;}
:root.theme-mono .li-card.li-chart,:root.theme-mono .li-card.li-recent{border-top:1px solid var(--hair);}
:root.theme-mono .seg{border:1px solid var(--line-2);background:transparent;border-radius:999px;padding:3px;}
:root.theme-mono .seg span{border-radius:999px;border:0 !important;}
:root.theme-mono .seg span.on{background:var(--lume);color:var(--on-lume);}
:root.theme-mono .pad-steps button{border-radius:999px;background:var(--panel);}
:root.theme-mono .tabbar{background:var(--ink);border-top-color:var(--hair-soft);}
:root.theme-mono .b-seg{border-color:var(--line-2);background:transparent;}
:root.theme-mono .b-seg button{color:var(--steel);} :root.theme-mono .b-seg button.on{background:var(--lume);color:var(--on-lume);}
:root.theme-mono .b-module{background:var(--ink-2);border-color:var(--hair);}
:root.theme-mono .b-top h1,:root.theme-mono .b-overlay b{color:var(--paper);}
:root.theme-mono .b-overlay,:root.theme-mono .b-overlay .cv,:root.theme-mono .b-legend,:root.theme-mono .b-msub,:root.theme-mono .b-stats span,:root.theme-mono .b-stats b i,:root.theme-mono .b-cmeta{color:var(--steel);}
:root.theme-mono .b-back{background:var(--ink-2);border-color:var(--hair);color:var(--paper);}
:root.theme-monodark .b-stage svg path{fill:#1a1a1a;}
:root.theme-monolight .b-stage svg path{fill:#ececec;}
:root.theme-monodark .b-legend .bar{background:linear-gradient(to top,#3d3d3d,#686868,#999,#cecece,#fff);}
:root.theme-monolight .b-legend .bar{background:linear-gradient(to top,#c2c2c2,#949494,#666,#383838,#000);}
/* Settings: eight skins, rows of three (the last row two, wider) */
.set-seg.set-skins span:nth-child(n+4){grid-column:span 2;}   /* six skins: Dark / Light / Olive, then Midnight brass / Mono dark / Mono light */
:root.theme-mono .seg.set-skins{border-radius:12px;}
:root.theme-mono .seg.set-skins span{border-radius:9px;}

/* Blue steel (2026-10-14): Dark steel's accent is a bright steel blue (#4A94D8) instead of oxblood, so it's no longer a
   second oxblood dark; dark text on the blue buttons and check */
:root.theme-steel{--lume:#4a94d8;--lume-hero:#4a94d8;--lume-text:#6aa9e3;--lume-hi:#6aa9e3;--lume-dim:#22364d;--lume-rgb:74,148,216;--lume-hi-rgb:106,169,227;--on-lume:#0b1220;
  --st-wax:var(--st-btn-grain),linear-gradient(180deg,#4a94d8,#3a80c2);--st-dome:var(--st-btn-grain),radial-gradient(circle at 50% 35%,#6aa9e3,#3a80c2);--gain:color-mix(in srgb,#4a94d8 55%,#eef1f4);}
:root.theme-steel .cta:not(.off),:root.theme-steel .std-p,:root.theme-steel .pad-file.ready{color:#0b1220;}
:root.theme-steel .pad-check:not(.wu) svg{stroke:#0b1220;}
:root.theme-steel .b-legend .bar{background:linear-gradient(to top,#2f4258,#3a6088,#4a85bd,#62a0d6,#8cc0ea);}

/* ============================================================
   Mono v2 (2026-10-15): bold sentence-case headings in San Francisco (no wide caps), black and white everywhere,
   color only in the data: green = progress, a pink-to-violet glow = records, blue = the strength line.
   Rounded gray cards, pill buttons. Mono light's drawings sit on the card gray instead of black.
   ============================================================ */
:root.theme-mono #device .prstat > b,:root.theme-mono #device .nextup .head h2,:root.theme-mono #device .cv-word,:root.theme-mono #device .r-head h1,:root.theme-mono #device .pad-val .num,:root.theme-mono #device .page-head h1,:root.theme-mono #device .b-top h1,:root.theme-mono #device .d-title h1,:root.theme-mono #device .d-stat b,:root.theme-mono #device .rc-title h2{font-family:-apple-system,"SF Pro Display",system-ui,sans-serif !important;text-transform:none !important;font-weight:800 !important;letter-spacing:-.025em !important;line-height:1.05 !important;}
:root.theme-mono #device .prstat > b{font-size:44px;}
:root.theme-mono #device .page-head h1,:root.theme-mono #device .b-top h1{font-size:34px;}
:root.theme-mono #device .cv-word{font-size:30px;}
:root.theme-mono #device .nextup .head h2,:root.theme-mono #device .d-title h1,:root.theme-mono #device .rc-title h2{font-size:22px;}
:root.theme-mono #device .cta:not(.off),:root.theme-mono #device .nx-cta{font-family:-apple-system,system-ui,sans-serif !important;text-transform:none !important;font-weight:700 !important;letter-spacing:-.01em !important;font-size:17px;}
:root.theme-monodark{--lume:#30d158;--lume-hero:#30d158;--lume-text:#30d158;--lume-hi:#30d158;--lume-rgb:48,209,88;--lume-hi-rgb:48,209,88;--lume-dim:#1d4a2a;--on-lume:#00230b;--card:#1c1c1e;--panel:#1c1c1e;--illus-tile:#1c1c1e;--gain:#8de0a3;}
:root.theme-light.theme-monolight{--lume:#30d158;--lume-hero:#30d158;--lume-text:#1a9e3f;--lume-hi:#1a9e3f;--lume-rgb:48,209,88;--lume-hi-rgb:26,158,63;--lume-dim:#c6efd2;--on-lume:#00230b;--card:#f2f2f4;--panel:#f2f2f4;--illus-tile:#f2f2f4;--gain:#9be0ad;}
:root.theme-mono .prstat > b{color:var(--paper);}
:root.theme-mono .cta:not(.off),:root.theme-mono .std-p{background:var(--paper);color:var(--ink);}
:root.theme-mono .cv-cells i.on,:root.theme-mono .cv-mini i.on{background:var(--lume);border-radius:3px;}
:root.theme-mono .li-bar.on b{background:linear-gradient(90deg,#ff5fa2,#b45cff);box-shadow:0 0 18px rgba(200,90,255,.45);}
:root.theme-mono .li-chip.solid{background:linear-gradient(90deg,#ff5fa2,#b45cff);color:#fff;border:0;}
:root.theme-mono .li-trend path[stroke]{stroke:#0a84ff;stroke-opacity:1;}
:root.theme-mono .nextup.nx-card,:root.theme-mono .li-card,:root.theme-mono .prog-card{background:var(--card);border:0;border-top:0;border-radius:26px;padding-left:18px;padding-right:18px;}
:root.theme-mono .li-card.none{background:none;border:1px dashed var(--hair);}
:root.theme-mono .seg{border:0;background:var(--card);border-radius:999px;}
:root.theme-monodark .seg span.on{background:#3a3a3c;color:#fff;}
:root.theme-monolight .seg span.on{background:#fff;color:#000;box-shadow:0 1px 3px rgba(0,0,0,.12);}
:root.theme-mono .seg.set-skins{border-radius:14px;}
:root.theme-mono .pad-steps button{background:var(--card);}
:root.theme-mono .pad-thumb,:root.theme-mono .pl-ic,:root.theme-mono .lift .ic,:root.theme-mono .d-illus{border-color:transparent;}
:root.theme-mono .b-seg button.on{background:var(--paper);color:var(--ink);}
:root.theme-monodark .b-legend .bar{background:linear-gradient(to top,#1d4a2a,#22783f,#2aa651,#30d158,#8de0a3);}
:root.theme-monolight .b-legend .bar{background:linear-gradient(to top,#c6efd2,#8de0a3,#30d158,#1f9a43,#0f6b2b);}

/* Progress: the goal picker in the header (tap the goal, pick one) */
#s-records .page-head{position:sticky;}
.prog-goal{display:inline-flex;align-items:center;gap:4px;}
.prog-goal .pg-chev{font-size:12px;opacity:.8;}
.goal-menu{position:absolute;right:0;top:calc(100% - 4px);z-index:30;width:260px;display:flex;flex-direction:column;padding:6px;border-radius:16px;
  background:var(--panel);border:1px solid var(--hair);box-shadow:0 18px 40px rgba(0,0,0,.35);animation:goalIn .16s ease-out;}
@keyframes goalIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.goal-menu button{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;width:100%;padding:11px 36px 11px 12px;border:0;border-radius:11px;background:none;color:var(--paper);cursor:pointer;}
.goal-menu button span{font-family:var(--sans);font-size:var(--fs-name);font-weight:600;}
.goal-menu button small{font-family:var(--sans);font-size:var(--fs-label);color:var(--steel);}
.goal-menu button.on{background:rgba(var(--tint),.06);}
.goal-menu button i{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-style:normal;color:var(--lume-text);font-weight:700;}
/* Mono, onboarding: a white (or black) page over the photo, and choices picked in black and white (green stays for data) */
:root.theme-monolight #s-onboard .ob-veil{background:linear-gradient(to bottom,rgba(255,255,255,.95) 0%,rgba(255,255,255,.95) 45%,rgba(255,255,255,.98) 100%);}
:root.theme-monolight #s-onboard[data-obstep="welcome"] .ob-veil{background:linear-gradient(to bottom,rgba(255,255,255,.04) 0%,rgba(255,255,255,.1) 52%,rgba(255,255,255,.6) 66%,rgba(255,255,255,.92) 82%,#fff 100%);}
:root.theme-monolight .ob-themetoggle{background:rgba(255,255,255,.85);border-color:rgba(0,0,0,.08);color:#000;}
:root.theme-mono .ob2-opt,:root.theme-mono .ob2-plan{background:var(--card);border-color:transparent;border-radius:18px;}
:root.theme-mono .ob2-opt.on,:root.theme-mono .ob2-plan.on{background:var(--card);border-color:var(--paper);box-shadow:inset 0 0 0 1px var(--paper);}
:root.theme-mono .ob2-tag{color:var(--paper);}
:root.theme-mono .ob2-chip{border-radius:999px;}
:root.theme-mono .ob2-seg button{border-radius:10px;}
:root.theme-mono #device #s-onboard h1,:root.theme-mono #device #s-onboard .ob2-h,:root.theme-mono #device #s-onboard .ob-h1{font-family:-apple-system,"SF Pro Display",system-ui,sans-serif !important;font-weight:800 !important;letter-spacing:-.025em !important;}
:root.theme-monolight #s-onboard .ob2-dock,:root.theme-monolight #s-onboard .dock{background:#fff;}
:root.theme-monolight #s-onboard .ob2-opt,:root.theme-monolight #s-onboard .ob2-plan{background:#f2f2f4;border-color:#e4e4e8;}
:root.theme-monolight #s-onboard .ob2-opt.on,:root.theme-monolight #s-onboard .ob2-plan.on{border-color:#000;box-shadow:inset 0 0 0 1px #000;}
:root.theme-monolight #s-onboard textarea,:root.theme-monolight #s-onboard input{background:#f2f2f4;border-color:#e4e4e8;color:#000;}
:root.theme-monodark #s-onboard textarea,:root.theme-monodark #s-onboard input{background:#1c1c1e;border-color:#2c2c2e;}
:root.theme-monolight #s-onboard[data-obstep="welcome"] .ob2-dock,:root.theme-monolight #s-onboard[data-obstep="welcome"] .dock{background:none;}
:root.theme-mono .ob2-pics i,:root.theme-mono .ob2-pics span,:root.theme-mono .ob2-pics img{background:var(--illus-tile) !important;border-color:transparent !important;}

/* Mono: drawings are left exactly as drawn, smaller, in a black circle with room around them (no background
   editing, so nothing inside the figure is ever touched). Tap opens the full, uncropped picture. */
:root.theme-monodark,:root.theme-light.theme-monolight{--illus-tile:#000;}
:root.theme-mono .pad-thumb.illus,:root.theme-mono .pl-ic.illus,:root.theme-mono .lift .ic.illus,:root.theme-mono .h1row .exic.illus,:root.theme-mono .d-illus:not(.icon),:root.theme-mono .exic-lg:not(.icon),:root.theme-mono .ob2-pic:not(.q){border-radius:50% !important;background:#000 !important;border:0 !important;display:grid !important;place-items:center !important;overflow:hidden;}
:root.theme-mono .pad-thumb.illus img,:root.theme-mono .pl-ic.illus img,:root.theme-mono .lift .ic.illus img,:root.theme-mono .h1row .exic.illus img,:root.theme-mono .d-illus:not(.icon) img,:root.theme-mono .exic-lg:not(.icon) img,:root.theme-mono .ob2-pic:not(.q) img{width:72% !important;height:72% !important;object-fit:contain !important;margin:0 !important;}
:root.theme-mono .illus-sheet .illus-full{border-radius:20px;background:#000;}
:root.theme-monodark .pad-thumb.illus,:root.theme-monodark .pl-ic.illus,:root.theme-monodark .lift .ic.illus,:root.theme-monodark .h1row .exic.illus,:root.theme-monodark .d-illus:not(.icon),:root.theme-monodark .exic-lg:not(.icon),:root.theme-monodark .ob2-pic:not(.q){box-shadow:0 0 0 1px #2c2c2e,0 0 0 4px #121212 !important;}

/* Mono: one inverted block per screen, on the thing that matters most there: Today's Next up card, the logger's pad,
   the lift page's headline finding. Black with white text on Mono light, white with black text on Mono dark; each
   block redefines the colors locally so everything inside follows. */
:root.theme-monolight #device .nextup.nx-card,:root.theme-monolight #device .pad-dock,:root.theme-monolight #device .li-card.main{--ink:#000;--ink-2:#111;--panel:#1c1c1e;--panel-2:#2c2c2e;--card:#000;--hair:#2c2c2e;--hair-soft:#1f1f1f;--line-2:#3a3a3c;--paper:#fff;--paper-dim:#d1d1d6;--steel:#8e8e93;--steel-2:#aeaeb2;--lume-text:#30d158;--tint:255,255,255;--cell:#2c2c2e;--wb-empty:#2c2c2e;background:#000 !important;color:#fff;border-color:transparent !important;}
:root.theme-monodark #device .nextup.nx-card.inv-off,:root.theme-monodark #device .pad-dock,:root.theme-monodark #device .li-card.main{--ink:#fff;--ink-2:#f2f2f4;--panel:#f2f2f4;--panel-2:#e5e5ea;--card:#fff;--hair:#e5e5ea;--hair-soft:#ececef;--line-2:#d1d1d6;--paper:#000;--paper-dim:#3a3a3c;--steel:#6e6e73;--steel-2:#48484a;--lume-text:#1a9e3f;--tint:0,0,0;--cell:#e5e5ea;--wb-empty:#e5e5ea;background:#fff !important;color:#000;border-color:transparent !important;}
:root.theme-mono #device .pad-dock .pad-steps button{background:var(--panel) !important;}
:root.theme-mono #device .pad-dock{border-top:0;border-radius:26px 26px 0 0;}
:root.theme-mono #device .nextup.nx-card .nx-set{border-color:var(--hair-soft);}
:root.theme-monodark #device .li-card.main .li-bar:not(.on) b{background:#e5e5ea;}
:root.theme-monolight #device .li-card.main .li-bar:not(.on) b{background:#2c2c2e;}

/* Mono, Today (trial 2026-10-15): the inverted block is the top of the page, header through "weeks in a row", instead
   of the Next up card */
:root.theme-monolight #device .brief-hero{--ink:#000;--ink-2:#111;--panel:#1c1c1e;--panel-2:#2c2c2e;--card:#000;--hair:#2c2c2e;--hair-soft:#1f1f1f;--line-2:#3a3a3c;--paper:#fff;--paper-dim:#d1d1d6;--steel:#8e8e93;--steel-2:#aeaeb2;--lume-text:#30d158;--tint:255,255,255;--cell:#2c2c2e;--wb-empty:#2c2c2e;background:#000;color:#fff;}
:root.theme-monodark #device .brief-hero{--ink:#fff;--ink-2:#f2f2f4;--panel:#f2f2f4;--panel-2:#e5e5ea;--card:#fff;--hair:#e5e5ea;--hair-soft:#ececef;--line-2:#d1d1d6;--paper:#000;--paper-dim:#3a3a3c;--steel:#6e6e73;--steel-2:#48484a;--lume-text:#1a9e3f;--tint:0,0,0;--cell:#e5e5ea;--wb-empty:#e5e5ea;background:#fff;color:#000;}
:root.theme-mono #device .brief-hero{margin:0 -24px;padding:0 24px 26px;border-radius:0;}
:root.theme-mono #device .brief-hero .topbar{background:transparent;position:static;}
:root.theme-mono #device #s-brief .hero-rule{visibility:hidden;}

/* Mono light, Body: the map sits on a black stage (the page's one inverted area); the Front / Back toggle is a white
   pill so it stands out; the tab bar stays white */
:root.theme-monolight #device #s-body{--ink:#000;--ink-2:#111;--panel:#1c1c1e;--panel-2:#2c2c2e;--card:#1c1c1e;--hair:#2c2c2e;--hair-soft:#1f1f1f;--line-2:#3a3a3c;--paper:#fff;--paper-dim:#d1d1d6;--steel:#8e8e93;--steel-2:#aeaeb2;--lume-text:#30d158;--tint:255,255,255;--cell:#2c2c2e;--wb-empty:#2c2c2e;background:#000;}
:root.theme-monolight #device #s-body .tabbar{--ink:#fff;--ink-2:#f4f4f4;--panel:#f4f4f4;--card:#f2f2f4;--hair:#e2e2e2;--hair-soft:#ececec;--paper:#000;--paper-dim:#333;--steel:#6e6e6e;--steel-2:#4a4a4a;--tint:0,0,0;background:#fff;border-top-color:#ececec;color:#000;}
:root.theme-monolight #device #s-body .b-stage svg path{fill:#1c1c1e;}
:root.theme-monolight #device #s-body .b-top{background:linear-gradient(to bottom,#000 42%,rgba(0,0,0,.5) 76%,rgba(0,0,0,0));}
:root.theme-monolight #device #s-body .b-top h1{color:#fff;}
:root.theme-monolight #device #s-body .b-seg{background:#1c1c1e;border:0;padding:3px;}
:root.theme-monolight #device #s-body .b-seg button{color:#aeaeb2;font-weight:600;}
:root.theme-monolight #device #s-body .b-seg button.on{background:#fff;color:#000;}
:root.theme-monolight #device #s-body .b-module,:root.theme-monolight #device #s-body .cmp2{background:#1c1c1e;border-color:#2c2c2e;}
:root.theme-monolight #device #s-body .b-legend .bar{background:linear-gradient(to top,#1d4a2a,#22783f,#2aa651,#30d158,#8de0a3);}

/* Mono light, Progress Overview: the verdict stays on white; everything under its line (finding, rings, week cards)
   sits on black, running to the bottom of the page */
:root.theme-monolight #device .ov-below{--ink:#000;--ink-2:#111;--panel:#1c1c1e;--panel-2:#2c2c2e;--card:#1c1c1e;--hair:#2c2c2e;--hair-soft:#1f1f1f;--line-2:#3a3a3c;--paper:#fff;--paper-dim:#d1d1d6;--steel:#8e8e93;--steel-2:#aeaeb2;--lume-text:#30d158;--tint:255,255,255;--cell:#2c2c2e;--wb-empty:#2c2c2e;background:#000;color:#fff;margin:22px -24px 0;padding:22px 24px 120px;min-height:60vh;}
:root.theme-monolight #device .ov-below .cv-ring .tr{stroke:#2c2c2e;}
:root.theme-monolight #device .ov-below .cv-trk{background:#2c2c2e;}
:root.theme-monolight #device .ov-below .rec-card,:root.theme-monolight #device .ov-below .prog-card{background:#1c1c1e;}
:root.theme-monolight #device .ov-below .reel-month{color:#30d158;}
:root.theme-monolight #s-records .scroll:has(.ov-below){padding-bottom:0;}
:root.theme-monolight #device #s-records .page-head{margin-left:-24px;margin-right:-24px;padding-left:24px;padding-right:24px;}
/* Mono light, Progress Overview: the tab bar follows the black section it sits on (same layout, inverted colors) */

:root.theme-monolight #device .tabbar{transition:background-color .2s ease,color .2s ease;}

/* Mono light, Progress Overview, flipped (2026-10-15): black on top (title, picker, verdict), white below the verdict
   line, white tab bar */
:root.theme-monolight #device #s-records:has(.ov-below){--ink:#000;--ink-2:#111;--panel:#1c1c1e;--panel-2:#2c2c2e;--card:#1c1c1e;--hair:#2c2c2e;--hair-soft:#1f1f1f;--line-2:#3a3a3c;--paper:#fff;--paper-dim:#d1d1d6;--steel:#8e8e93;--steel-2:#aeaeb2;--lume-text:#30d158;--tint:255,255,255;--cell:#2c2c2e;--wb-empty:#2c2c2e;background:#000;}
:root.theme-monolight #device #s-records:has(.ov-below) .scroll{background:#000;}
:root.theme-monolight #device #s-records .ov-below{--ink:#fff;--ink-2:#f4f4f4;--panel:#f2f2f4;--panel-2:#ececec;--card:#f2f2f4;--hair:#e2e2e2;--hair-soft:#ececec;--line-2:#cfcfcf;--paper:#000;--paper-dim:#333;--steel:#6e6e6e;--steel-2:#4a4a4a;--lume-text:#1a9e3f;--tint:0,0,0;--cell:#e6e6e6;--wb-empty:#e6e6e6;background:#fff !important;color:#000;}
:root.theme-monolight #device #s-records .ov-below .cv-ring .tr{stroke:#e5e5ea;}
:root.theme-monolight #device #s-records .ov-below .cv-trk{background:#e5e5ea;}
:root.theme-monolight #device #s-records .ov-below .rec-card,:root.theme-monolight #device #s-records .ov-below .prog-card{background:#f2f2f4;}
:root.theme-monolight #device #s-records .ov-below .reel-month{color:#1a9e3f;}
:root.theme-monolight #device #s-records:has(.ov-below) .seg span.on{background:#3a3a3c;color:#fff;box-shadow:none;}
:root.theme-monolight #device #s-records:has(.ov-below) .cv-cells i:not(.on){background:#2c2c2e;}
:root.theme-monolight #device #s-records:has(.ov-below) .tabbar{--ink:#fff;--ink-2:#f4f4f4;--panel:#f2f2f4;--panel-2:#ececec;--card:#f2f2f4;--hair:#e2e2e2;--hair-soft:#ececec;--line-2:#cfcfcf;--paper:#000;--paper-dim:#333;--steel:#6e6e6e;--steel-2:#4a4a4a;--lume-text:#1a9e3f;--tint:0,0,0;--cell:#e6e6e6;--wb-empty:#e6e6e6;background:#fff;border-top-color:#ececec;}
:root.theme-monolight #device #s-records:has(.ov-below){color:#fff;}
:root.theme-monolight #device #s-records:has(.ov-below) .page-head h1{color:#fff;}

/* Mono light, History > Patterns: the title, toggle and rhythm chart on black; the findings on white below, with
   more room between them */
:root.theme-monolight #device #s-history:has(.hist-below){--ink:#000;--ink-2:#111;--panel:#1c1c1e;--panel-2:#2c2c2e;--card:#1c1c1e;--hair:#2c2c2e;--hair-soft:#1f1f1f;--line-2:#3a3a3c;--paper:#fff;--paper-dim:#d1d1d6;--steel:#8e8e93;--steel-2:#aeaeb2;--lume-text:#30d158;--tint:255,255,255;--cell:#2c2c2e;--wb-empty:#2c2c2e;background:#000;color:#fff;}
:root.theme-monolight #device #s-history:has(.hist-below) .scroll{background:#000;padding-bottom:0;}
:root.theme-monolight #device #s-history:has(.hist-below) .page-head{margin-left:-24px;margin-right:-24px;padding-left:24px;padding-right:24px;}
:root.theme-monolight #device #s-history:has(.hist-below) .page-head h1{color:#fff;}
:root.theme-monolight #device #s-history:has(.hist-below) .seg span.on{background:#3a3a3c;color:#fff;box-shadow:none;}
:root.theme-monolight #device #s-history .hist-below{--ink:#fff;--ink-2:#f4f4f4;--panel:#f2f2f4;--panel-2:#ececec;--card:#f2f2f4;--hair:#e2e2e2;--hair-soft:#ececec;--line-2:#cfcfcf;--paper:#000;--paper-dim:#333;--steel:#6e6e6e;--steel-2:#4a4a4a;--lume-text:#1a9e3f;--tint:0,0,0;--cell:#e6e6e6;--wb-empty:#e6e6e6;background:#fff;color:#000;margin:34px -24px 0;padding:30px 24px 120px;min-height:50vh;}
:root.theme-monolight #device #s-history:has(.hist-below) .tabbar{--ink:#fff;--ink-2:#f4f4f4;--panel:#f2f2f4;--panel-2:#ececec;--card:#f2f2f4;--hair:#e2e2e2;--hair-soft:#ececec;--line-2:#cfcfcf;--paper:#000;--paper-dim:#333;--steel:#6e6e6e;--steel-2:#4a4a4a;--lume-text:#1a9e3f;--tint:0,0,0;--cell:#e6e6e6;--wb-empty:#e6e6e6;background:#fff;border-top-color:#ececec;}

/* Mono light, Lifts and Sessions: title, toggle and the search/sort tools on black; the list on white */
:root.theme-monolight #device .screen:has(.list-below){--ink:#000;--ink-2:#111;--panel:#1c1c1e;--panel-2:#2c2c2e;--card:#1c1c1e;--hair:#2c2c2e;--hair-soft:#1f1f1f;--line-2:#3a3a3c;--paper:#fff;--paper-dim:#d1d1d6;--steel:#8e8e93;--steel-2:#aeaeb2;--lume-text:#30d158;--tint:255,255,255;--cell:#2c2c2e;--wb-empty:#2c2c2e;background:#000;color:#fff;}
:root.theme-monolight #device .screen:has(.list-below) .scroll{background:#000;padding-bottom:0;}
:root.theme-monolight #device .screen:has(.list-below) .page-head{margin-left:-24px;margin-right:-24px;padding-left:24px;padding-right:24px;}
:root.theme-monolight #device .screen:has(.list-below) .page-head h1{color:#fff;}
:root.theme-monolight #device .screen:has(.list-below) .seg span.on{background:#3a3a3c;color:#fff;box-shadow:none;}
:root.theme-monolight #device .screen:has(.list-below) .lsearch{background:#1c1c1e;border-color:#2c2c2e;}
:root.theme-monolight #device .screen:has(.list-below) .pl-sort{background:#1c1c1e;border-color:#2c2c2e;color:#fff;}
:root.theme-monolight #device .list-below{--ink:#fff;--ink-2:#f4f4f4;--panel:#f2f2f4;--panel-2:#ececec;--card:#f2f2f4;--hair:#e2e2e2;--hair-soft:#ececec;--line-2:#cfcfcf;--paper:#000;--paper-dim:#333;--steel:#6e6e6e;--steel-2:#4a4a4a;--lume-text:#1a9e3f;--tint:0,0,0;--cell:#e6e6e6;--wb-empty:#e6e6e6;background:#fff;color:#000;margin:18px -24px 0;padding:8px 24px 120px;min-height:60vh;}
:root.theme-monolight #device .screen:has(.list-below) .tabbar{--ink:#fff;--ink-2:#f4f4f4;--panel:#f2f2f4;--panel-2:#ececec;--card:#f2f2f4;--hair:#e2e2e2;--hair-soft:#ececec;--line-2:#cfcfcf;--paper:#000;--paper-dim:#333;--steel:#6e6e6e;--steel-2:#4a4a4a;--lume-text:#1a9e3f;--tint:0,0,0;--cell:#e6e6e6;--wb-empty:#e6e6e6;background:#fff;border-top-color:#ececec;}
/* Mono light, every black/white split (audited 2026-10-15): the same 28px above the edge and 28px below it, and no
   divider line at the top of the white part */
:root.theme-monolight #device .ov-below,:root.theme-monolight #device #s-history .hist-below,:root.theme-monolight #device .list-below{margin-top:28px;padding-top:28px;}
:root.theme-monolight #device .ov-below > :first-child,:root.theme-monolight #device .hist-below > :first-child,:root.theme-monolight #device .list-below > :first-child,
:root.theme-monolight #device .ov-below > :first-child > :first-child,:root.theme-monolight #device .hist-below > :first-child > :first-child{margin-top:0 !important;padding-top:0 !important;border-top:0 !important;}
:root.theme-monolight #device .ov-below .ov-ins,:root.theme-monolight #device .ov-below .cv-find{border-top:0;}
:root.theme-monolight #device .list-below .reel-month + .hs,:root.theme-monolight #device .list-below .reel-month + .h2-row{border-top:0;}
:root.theme-monolight #device .brief-hero{padding-bottom:28px;}
:root.theme-monolight #device #s-brief .hero-rule{display:none;}
:root.theme-monolight #device #s-brief .brief-hero + .bgap{flex:none;height:28px;}
:root.theme-monolight #device .ov-below{margin-top:25px;}
:root.theme-monolight #device #s-history .hist-below{padding-top:26px;}
:root.theme-monolight #device #s-history .list-below{margin-top:28px;}
/* Mono: Lifts rows match the Sessions list rhythm (rows were airier than every other list) */
:root.theme-mono #device .pl-row{padding:13px 0;column-gap:14px;row-gap:4px;}
:root.theme-mono #device .pl-row > .pl-ic{width:58px;height:58px;}
:root.theme-mono #device .pl-row > .pl-nm{gap:3px;}
:root.theme-mono #device .pl-grp{margin-bottom:0;}
/* Mono sheets: one shell, SF titles, controls in ink not green (green stays for data), iOS red for delete */
:root.theme-mono #device .sheet{border-radius:28px 28px 0 0;border-top:0;--red:#ff3b30;}
:root.theme-light.theme-monolight #device .sheet{background:#fff;}
:root.theme-monodark #device .sheet{background:#1c1c1e;--red:#ff453a;}
:root.theme-monodark #device .sheet .ob2-opt,:root.theme-monodark #device .sheet .day-opt.on{background:#2c2c2e;}
:root.theme-mono #device .sheet .co-q,:root.theme-mono #device .sheet .ls-tx b,:root.theme-mono #device .sheet .ob2-opt b{font-family:-apple-system,"SF Pro Display",system-ui,sans-serif !important;font-weight:700 !important;letter-spacing:-.02em !important;}
:root.theme-mono #device .sheet .co-q{font-size:22px;line-height:1.15;}
:root.theme-mono #device .sheet .std-p,:root.theme-mono #device .sheet .cta{font-family:-apple-system,system-ui,sans-serif !important;font-weight:700 !important;letter-spacing:-.01em !important;}
:root.theme-mono #device .sheet > .std-p.del{background:var(--red);color:#fff;}
:root.theme-mono #device .sheet > button.danger{color:var(--red);}
:root.theme-mono #device .sheet .day-opt.on{background:rgba(var(--tint),.06);box-shadow:inset 0 0 0 1.5px var(--paper);}
:root.theme-mono #device .sheet .day-opt.on .do-nm,:root.theme-mono #device .sheet .day-opt .do-check,:root.theme-mono #device .sheet .picker-edit{color:var(--paper);}
:root.theme-mono #device .sheet .ob2-opt.on{box-shadow:inset 0 0 0 1.5px var(--paper) !important;border-color:transparent !important;}
:root.theme-mono #device .sheet input:focus,:root.theme-mono #device .sheet textarea:focus{border-color:var(--paper) !important;box-shadow:none !important;outline:none;}
:root.theme-mono #device .sheet input[type=checkbox]{accent-color:var(--paper);}
/* Mono: picks and checks are ink (black on light, white on dark); green is kept for data and the iOS-style toggle */
:root.theme-mono #device :is(.picktile,.cmp2,.ob-split,.ob2-opt,.ob2-plan,.lp-card).on{border-color:var(--paper) !important;background:rgba(var(--tint),.05) !important;}
:root.theme-mono #device :is(.ir-chip,.mus-chip).on{background:var(--paper) !important;color:var(--ink) !important;border-color:var(--paper) !important;}
:root.theme-mono #device :is(.imp-sched.on .imp-chk,.ir-swap.on i,.lp-card.on .lp-ck,.lp-row.on .lp-ck){background:var(--paper) !important;border-color:var(--paper) !important;color:var(--ink) !important;}
:root.theme-mono #device .ir-swap.on i{box-shadow:inset 0 0 0 3px var(--ink-2);}
:root.theme-light.theme-monolight #device .sheet .ir-swap.on i{box-shadow:inset 0 0 0 3px #fff;}
:root.theme-mono #device :is(.lp-row.on .lp-rnm,.redit-save.on,.b-omenu button.on){color:var(--paper) !important;}
:root.theme-mono #device .b-omenu button.on{background:rgba(var(--tint),.08) !important;}
:root.theme-mono #device :is(.pic-tile.on img,.pic-tile.gen.on i){outline-color:var(--paper) !important;}
:root.theme-mono #device .mus-save{background:var(--paper);color:var(--ink);border-radius:999px;font-family:-apple-system,system-ui,sans-serif;}
:root.theme-mono #device .ls-card{background:var(--card);border:0;border-radius:20px;}
:root.theme-mono #device .ls-card svg{stroke:var(--paper);}
/* Record bar: drops in from the top when a set breaks a record (replaces the full-screen flash) */
:root{--rec-a:var(--lume);--rec-b:var(--lume);}
:root.theme-mono{--rec-a:#ff5fa2;--rec-b:#b45cff;}
.pr-bar{position:absolute;left:10px;right:10px;top:calc(var(--sat) + 8px);z-index:95;display:flex;align-items:center;gap:12px;
  padding:12px 16px 12px 12px;border-radius:28px;background:var(--ink-2);color:var(--paper);border:1px solid var(--hair);
  box-shadow:0 14px 36px rgba(0,0,0,.32);transform:translateY(calc(-100% - var(--sat) - 20px));opacity:0;
  transition:transform .42s cubic-bezier(.2,.9,.25,1.12),opacity .25s ease;cursor:pointer;}
.pr-bar.show{transform:translateY(0);opacity:1;}
.pr-bar .pb-seal{width:44px;height:44px;flex:none;}
.pr-bar.show .pb-seal{animation:pbSeal .6s .15s cubic-bezier(.2,.9,.25,1.3) both;}
@keyframes pbSeal{from{transform:scale(.5) rotate(-25deg);}to{transform:none;}}
.pr-bar .pb-tx{flex:1;min-width:0;line-height:1.2;}
.pr-bar .pb-ey,.pr-bar .pb-dl{background:linear-gradient(90deg,var(--rec-a),var(--rec-b));-webkit-background-clip:text;background-clip:text;color:transparent;}
.pr-bar .pb-ey{font-size:13px;font-weight:700;}
.pr-bar .pb-nm{font-size:17px;font-weight:800;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pr-bar .pb-nm span{color:var(--steel);font-weight:600;}
.pr-bar .pb-dl{flex:none;font-size:20px;font-weight:800;letter-spacing:-.03em;white-space:nowrap;}
:root.theme-mono .pr-bar{font-family:-apple-system,system-ui,sans-serif;}
:root.theme-light.theme-monolight .pr-bar{background:#000;color:#fff;border-color:#000;}
:root.theme-light.theme-monolight .pr-bar .pb-nm span{color:#9a9a9f;}
:root.theme-monodark .pr-bar{background:#1c1c1e;border-color:#2c2c2e;}
@media (prefers-reduced-motion:reduce){.pr-bar{transition:opacity .2s;transform:none;}.pr-bar.show .pb-seal{animation:none;}}
/* End-of-session record: a small card centered over the dimmed workout (was full screen) */
#device .moment-backdrop,:root.theme-light #device .moment-backdrop{position:absolute;background:rgba(0,0,0,.42);padding:24px;}
#device .moment{width:100%;max-width:320px;padding:26px 22px 14px;border-radius:32px;background:var(--ink-2);color:var(--paper);
  border:1px solid var(--hair);box-shadow:0 24px 60px rgba(0,0,0,.35);transform:scale(.92);opacity:0;
  transition:transform .4s cubic-bezier(.2,.9,.25,1.15),opacity .25s ease;}
#device .moment-backdrop.show .moment{transform:none;opacity:1;}
#device .moment .mo-sealwrap{margin-bottom:10px;}
#device .moment .mo-flash{width:72px;height:72px;background:radial-gradient(circle,var(--rec-b),transparent 68%);opacity:.5;}
#device .moment-backdrop .mo-seal .seal-line{stroke:url(#mo-g);}
#device .moment-backdrop .mo-seal .seal-fill{fill:url(#mo-g);}
#device .moment .mo-eyebrow{font-family:var(--sans);letter-spacing:0;font-size:14px;font-weight:700;margin-bottom:6px;
  background:linear-gradient(90deg,var(--rec-a),var(--rec-b));-webkit-background-clip:text;background-clip:text;color:transparent;}
#device .moment .mo-big{font-size:56px;line-height:1;color:var(--paper);}
#device .moment .mo-unit,#device .moment .mo-biglabel{font-size:22px;color:var(--paper);margin-left:4px;}
#device .moment .mo-name{font-size:20px;margin-top:8px;color:var(--paper);}
#device .moment .mo-line{font-family:var(--sans);letter-spacing:0;font-size:15px;color:var(--steel);margin-top:4px;}
#device .moment .mo-dry{font-size:15px;color:var(--steel);margin-top:12px;}
#device .moment .mo-meta{font-family:var(--sans);letter-spacing:0;text-transform:none;font-size:13px;color:var(--steel);margin-top:6px;}
#device .moment .mo-foot{margin-top:18px;gap:2px;}
#device .moment .mo-done{font-family:var(--sans);letter-spacing:0;font-size:15px;font-weight:600;color:var(--steel);padding:10px;}
:root.theme-mono #device .moment{font-family:-apple-system,system-ui,sans-serif;border:0;}
:root.theme-mono #device .moment :is(.mo-big,.mo-name,.mo-line,.mo-meta,.mo-done,.mo-eyebrow){font-family:-apple-system,"SF Pro Display",system-ui,sans-serif;}
:root.theme-light.theme-monolight #device .moment{background:#fff;}
:root.theme-monodark #device .moment{background:#1c1c1e;}
:root.theme-mono #device .moment .mo-share{background:var(--paper) !important;color:var(--ink) !important;}
#device .moment .mo-sealwrap{order:-1;}
/* Mono Body overlay menu: the stage is black on both Mono skins, so the menu is the Mono card gray */
:root.theme-mono #device .b-omenu{background:#1c1c1e !important;border:1px solid #2c2c2e !important;box-shadow:0 14px 34px rgba(0,0,0,.5);border-radius:16px;backdrop-filter:none;}
:root.theme-mono #device .b-omenu button{color:rgba(255,255,255,.72) !important;font-family:-apple-system,system-ui,sans-serif;}
:root.theme-mono #device .b-omenu button.on{color:#fff !important;background:#2c2c2e !important;font-weight:700;}
/* Start → logger morph stand-ins (startMorph in app.js) */
.morph-layer{position:absolute;inset:0;z-index:40;pointer-events:none;}
.morph-shape,.morph-pill{position:absolute;box-sizing:border-box;will-change:left,top,width,height;}
.morph-pill{display:grid;place-items:center;overflow:hidden;}
.morph-pill > span{grid-area:1/1;display:flex;align-items:center;justify-content:center;white-space:nowrap;}
.morph-pill .mp-chk{opacity:0;}
.morph-pill .mp-chk svg{fill:none;}
/* Mono light: the black Next up card breathes a little more */
:root.theme-light.theme-monolight #device #s-brief .nextup.nx-card{padding:26px 24px 24px;}
/* ...paid for inside the card, so the card's height doesn't change and Today still fits on smaller phones */
:root.theme-light.theme-monolight #device #s-brief .nextup.nx-card .nx-set{padding-top:12px;padding-bottom:12px;}
:root.theme-light.theme-monolight #device #s-brief .nextup.nx-card .nx-more{padding:12px 0 4px;}
/* concentric with its Start pill: card radius = pill radius (26) + the padding around it (24) */
:root.theme-light.theme-monolight #device #s-brief .nextup.nx-card{border-radius:50px;}
/* a warm-up chip too long for its slot drops the W tag (the dashed outline marks it) instead of taking two slots */
/* every chip: squeeze first (tighter type, tag closer), then hide a W tag (the dashed outline says warm-up), then take two slots. D / L / R stay (padFitChip) */
.pad-chip.tight{letter-spacing:-.04em;gap:2px;padding:0 2px;}
.pad-chip.notag .pad-tag{display:none;}

/* Mono light Body (2026-10-15, option A): the figure on the black stage, then one white section, Compare joined to the
   tab bar. The stage ends where the white begins, so the figure is fitted (smaller) above it. */
:root.theme-monolight #device #s-body .b-cmp{left:0;right:0;bottom:0;padding:10px 10px calc(67px + var(--sab));background:#fff;
  --ink:#fff;--ink-2:#f2f2f4;--panel:#fff;--card:#fff;--hair:#e5e5ea;--hair-soft:#ececef;--paper:#000;--paper-dim:#3a3a3c;--steel:#6e6e73;--steel-2:#48484a;--tint:0,0,0;--lume-text:#1a9e3f;}
:root.theme-monolight #device #s-body .b-cmp .cmp2{background:#fff;border:0;border-radius:0;box-shadow:none;}
:root.theme-monolight #device #s-body .b-cmp .cmp2 .cmp2-title{color:#000;}
:root.theme-monolight #device #s-body .b-cmp .tgl:not(.on){background:#e5e5ea;}
:root.theme-monolight #device #s-body .tabbar{border-top:0;}
:root.theme-monolight #device #s-body .b-cmp:not(:empty) + .b-view{bottom:calc(67px + var(--sab) + 84px);}
:root.theme-monolight #device #s-body .b-cmp:has([aria-pressed="true"]) + .b-view{bottom:calc(67px + var(--sab) + 152px);}
/* the legend's bar stays put whatever its labels say (16+ / 1, More / Less): a fixed-width column, centered */
#device .b-legend{width:40px;align-items:center;right:8px;}
#device .b-legend > span:not(.bar){width:40px;text-align:center;white-space:nowrap;}
/* Mono light Body, option B (2026-10-15): one white bar of chips over the tab bar; Front/Back and the old top Overlay
   control are gone from the top (the Front/Back buttons stay in the page, hidden, as the source of truth) */
:root.theme-monolight #device #s-body .b-seg{display:none;}
:root.theme-monolight #device #s-body .b-ctl{position:absolute;left:0;right:0;bottom:calc(67px + var(--sab));z-index:5;background:#fff;display:flex;gap:8px;padding:10px 16px;}
:root.theme-monolight #device #s-body .b-chip{position:static;transform:none;display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border-radius:999px;border:0;background:#f2f2f4;color:#000;font-family:-apple-system,system-ui,sans-serif;font-size:15px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;cursor:pointer;}
:root.theme-monolight #device #s-body .b-chip b{font-weight:600;color:#000;}
:root.theme-monolight #device #s-body .b-chip i{font-style:normal;font-size:12px;opacity:.55;}
:root.theme-monolight #device #s-body .b-chip.on{background:#000;color:#fff;}
:root.theme-monolight #device #s-body .b-sidechip{background:#000;color:#fff;}
:root.theme-monolight #device #s-body .b-sidechip i{opacity:.7;}
/* Compare: the chip is the switch; the white section above the bar only holds the date pager while it's on */
:root.theme-monolight #device #s-body .b-cmp{bottom:calc(67px + var(--sab) + 58px);padding:2px 16px 0;}
:root.theme-monolight #device #s-body .b-cmp .cmp2-row{display:none;}
:root.theme-monolight #device #s-body .b-cmp:not(:has(.cmp2-pager)){display:none;}
:root.theme-monolight #device #s-body .b-cmp .cmp2-pager{margin:0;border-radius:14px;}
:root.theme-monolight #device #s-body .b-cmp:not(:empty) + .b-view{bottom:calc(67px + var(--sab) + 70px);}
/* the overlay menu opens up from its chip */
:root.theme-monolight #device #s-body .b-omenu{top:auto;bottom:calc(67px + var(--sab) + 62px);left:16px;transform:none;}
#s-body.zoom .b-ctl{opacity:0;pointer-events:none;}
:root.theme-monolight #device #s-body .tabbar{border-top:0 !important;box-shadow:none !important;}
/* the three chips share the bar's width equally */
:root.theme-monolight #device #s-body .b-ctl .b-chip{flex:1 1 0;min-width:0;justify-content:center;}
/* the chip bar meets the tab bar with no gap (the black stage showed through a 1px seam); a very light hairline */
:root.theme-monolight #device #s-body .b-ctl{bottom:calc(66px + var(--sab));padding-bottom:11px;}
:root.theme-monolight #device #s-body .tabbar{border-top:1px solid #f0f0f2 !important;}
/* Front/Back looks like the other chips (light gray); only its swap icon sets it apart */
:root.theme-monolight #device #s-body .b-sidechip{background:#f2f2f4;color:#000;}
:root.theme-monolight #device #s-body .b-sidechip i{opacity:.55;}
/* tapping a muscle: the white bottom (chips, compare dates, tab bar) slides down out of view, and back up on return */
:root.theme-monolight #device #s-body .b-ctl,:root.theme-monolight #device #s-body .b-cmp,:root.theme-monolight #device #s-body .tabbar{transition:transform .42s cubic-bezier(.32,.72,0,1);}
:root.theme-monolight #device #s-body.zoom .b-ctl,:root.theme-monolight #device #s-body.zoom .b-cmp{opacity:1;transform:translateY(calc(100% + 80px + var(--sab) + 60px));}
:root.theme-monolight #device #s-body.zoom .tabbar{opacity:1;transform:translateY(100%);}
/* set-by-set chart: a divider between sets, so each last-time / this-time pair reads as one set */
.li-bars.pairs.sets{gap:0;}
.li-bars.pairs.sets .li-pair{position:relative;padding:0 8px;}
.li-bars.pairs.sets .li-pair:first-child{padding-left:0;}
.li-bars.pairs.sets .li-pair:last-child{padding-right:0;}
.li-bars.pairs.sets .li-pair + .li-pair::before{content:"";position:absolute;left:-3px;top:4px;bottom:0;width:6px;border-radius:3px;background:var(--hair-soft);}
:root.theme-mono #device .li-card.main .li-bars.pairs.sets .li-pair + .li-pair::before{background:rgba(var(--tint),.09);}
/* one rhythm: bar to bar = bar to divider = 6px, divider 6px wide */
.li-bars.pairs.sets .li-pair{gap:6px;padding:0 9px;}
.li-bars.pairs.sets .li-pair:first-child{padding-left:0;}
.li-bars.pairs.sets .li-pair:last-child{padding-right:0;}
/* Set type window (2026-10-17): working / warm-up / drop, a recessed well like a watch's date window. It turns
   sideways: a vertical swipe this low on the screen set off iOS Reachability */
.pad-steps .pad-win { position: relative; height: 50px; container-type: inline-size; border-radius: 14px; overflow: hidden; cursor: grab; touch-action: none; outline: none;
  background: linear-gradient(to bottom, #050506 0%, #121214 55%, #18181a 100%);
  box-shadow: inset 0 5px 8px rgba(0,0,0,1), inset 0 1px 1px rgba(0,0,0,1), inset 1px 0 2px rgba(0,0,0,.8), inset -1px 0 2px rgba(0,0,0,.8), 0 0 0 2px #232325, 0 -1px 0 2px #0e0e0f, 0 1.5px 0 2px #4a4a4e; }
.pad-win .st-strip { position: absolute; left: 0; top: 0; bottom: 0; display: flex; flex-direction: row; transform: translateX(calc(var(--i) * -100cqw)); transition: transform .3s cubic-bezier(.3,1.25,.5,1); will-change: transform; }
.pad-win .st-item { width: 100cqw; height: 50px; flex: none; display: grid; place-items: center; color: #5a5a5e; }
.pad-win .st-item.lit { color: #fff; }
.pad-win .st-item svg { width: 28px; height: 28px; }
.pad-win .st-w { font-size: 20px; font-weight: 800; font-family: -apple-system, system-ui, sans-serif; }
.pad-win::before { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; background: linear-gradient(to right, rgba(5,5,6,.9) 0%, rgba(5,5,6,0) 28%, rgba(5,5,6,0) 72%, rgba(5,5,6,.9) 100%); }
.pad-win::after { content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none; background: linear-gradient(160deg, rgba(255,255,255,.09) 0%, rgba(255,255,255,0) 40%); }
.pad-win.nudge .st-strip { animation: stNudge 1.1s cubic-bezier(.3,.8,.3,1) .6s 1; }
@keyframes stNudge { 0%, 100% { transform: translateX(calc(var(--i) * -100cqw)); } 35% { transform: translateX(calc(var(--i) * -100cqw - 20px)); } }
/* drop mode: no rest pill. A drop chip is a standard set chip with a D in front (the convention: W warm-up, D drop) */
.pad-rest.is-hidden { opacity: 0; pointer-events: none; transform: scale(.9); transition: opacity .25s, transform .25s; }


/* Drop mode on the check button (2026-10-17): it drains. A pale well, and the full green button clipped to --lvl,
   the share of the chain's working weight on the bar now. Warm-up is dashed; a drop is drained. */
#app .pad-check.dr{position:relative;overflow:hidden;background:rgba(var(--lume-rgb),.2)!important;box-shadow:none!important;border:0;}
#app .pad-check.dr > svg{stroke:var(--paper)!important;}
#app .pad-check.dr .pc-fill{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--lume);
  clip-path:inset(calc(100% - var(--lvl, 100%)) 0 0 0);transition:clip-path .52s cubic-bezier(.3,.9,.3,1);}
#app .pad-check.dr .pc-fill svg{width:32px;height:32px;stroke:var(--on-lume);}
@media (prefers-reduced-motion:reduce){#app .pad-check.dr .pc-fill{transition:none;}}

/* Milestones (2026-10-17): badges in one ink (badges.js). Not earned: the same drawing as a gray line. */
@font-face{font-family:"Instrument Sans Narrow";font-style:normal;font-weight:400 700;font-stretch:75% 100%;font-display:swap;src:url("../prototype/fonts/InstrumentSans-wdth-latin.woff2") format("woff2");}
.pbg{display:block;overflow:visible;}
.pb-off .pbg .k,.pb-off .pbg .v,.pb-off .pbg .au{fill:none;stroke:#c7c7cc;stroke-width:1.5;}
.pb-off .pbg .w,.pb-off .pbg .gs{stroke:#c7c7cc;}
.pb-off .pbg .wf,.pb-off .pbg .t,.pb-off .pbg .tk{fill:#c7c7cc;}
.pb-off .pbg .art{color:#c7c7cc;}
.pb-off .pbg .er{stroke:var(--pb-bg,#fff);}
.ms-hero{padding:6px 0 18px;}
.ms-next{display:flex;align-items:center;gap:16px;}
.ms-nb{flex:none;--pb-bg:var(--ink);}
.ms-nb .pbg{width:72px;height:72px;}
.ms-hero .pb-off .pbg .k,.ms-hero .pb-off .pbg .au{stroke:var(--line-2);}
.ms-hero .pb-off .pbg .w,.ms-hero .pb-off .pbg .gs{stroke:var(--line-2);}
.ms-hero .pb-off .pbg .wf,.ms-hero .pb-off .pbg .t,.ms-hero .pb-off .pbg .tk{fill:var(--steel);}
.ms-next small{display:block;font-size:13px;color:var(--steel);}
.ms-next b{display:block;font-size:22px;font-weight:700;letter-spacing:-.02em;margin:2px 0;color:var(--paper);}
.ms-ticks{display:grid;gap:2px;margin-top:16px;}
.ms-ticks i{height:9px;border-radius:1.5px;background:var(--panel-2,#2c2c2e);display:block;}
.ms-ticks i.f{background:var(--paper);}
.ms-ticks i.t{background:#30d158;}
.ms-runs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px;}
.ms-runs>div{background:var(--panel);border-radius:14px;padding:11px 14px;}
.ms-runs small{display:block;font-size:12px;color:var(--steel);}
.ms-runs b{font-size:21px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--paper);}
.ms-runs b em{font-style:normal;font-size:13px;color:var(--steel);font-weight:500;margin-left:4px;}
.ms-shelf{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 6px;margin:6px 0 18px;}
.ms-b{display:flex;flex-direction:column;align-items:center;gap:6px;background:none;border:0;padding:0;color:var(--paper);font:inherit;text-align:center;cursor:pointer;--pb-bg:var(--ink);}
.ms-b.pb-off{cursor:default;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none;}
.ms-b .pbg{width:84px;height:84px;}
.ms-b b{font-size:13px;font-weight:600;letter-spacing:-.01em;line-height:1.2;}
.ms-b small{font-size:12px;color:var(--steel);margin-top:-3px;font-variant-numeric:tabular-nums;}
.ms-b:active:not([disabled]) .pbg{transform:scale(.95);}
/* dark grounds: the black stamps print in white instead (green and gold keep their hue) */
:root:not(.theme-light) .ms-b:not(.pb-off) .pbg{filter:invert(1) hue-rotate(180deg);}
:root.theme-light.theme-monolight #device .ms-hero .ms-b:not(.pb-off) .pbg{filter:none;}
/* the card: always white so the ink reads; the line first, then the ink pours in from the bottom */
#device .moment.ms-card{background:#fff;color:#000;text-align:center;}
.ms-card .ms-ey{font-size:14px;font-weight:600;color:#6e6e73;}
.ms-big{position:relative;width:150px;height:150px;margin:10px auto 6px;}
.ms-big>span{position:absolute;inset:0;--pb-bg:#fff;}
.ms-big .pbg{width:150px;height:150px;}
/* the stamp: too big and tilted, it falls (accelerating) and lands; then it squashes on the hit and settles */
.ms-big .ms-ink{opacity:0;}
.go .ms-big .ms-ink{opacity:1;animation:msDrop .24s cubic-bezier(.55,0,1,.45) backwards,msSquash .34s cubic-bezier(.2,.9,.3,1) .24s;}
@keyframes msDrop{0%{transform:scale(2.6) rotate(-12deg);opacity:0;filter:blur(3px);}45%{opacity:1;filter:blur(0);}100%{transform:scale(1) rotate(0);opacity:1;}}
@keyframes msSquash{0%{transform:scale(1.1,.86);}40%{transform:scale(.96,1.04);}70%{transform:scale(1.015,.99);}100%{transform:none;}}
/* the hit: the card takes the blow, jolts down, shakes and settles */
#device .moment.ms-card{will-change:transform;}
.hit .moment.ms-card{animation:msShake .5s cubic-bezier(.3,.7,.4,1);}
@keyframes msShake{0%{transform:translateY(0) scale(1);}8%{transform:translate(0,7px) scale(.97);}20%{transform:translate(-7px,2px) rotate(-1.1deg);}34%{transform:translate(6px,-1px) rotate(.9deg);}48%{transform:translate(-4px,1px) rotate(-.5deg);}62%{transform:translate(3px,0) rotate(.3deg);}78%{transform:translate(-1px,0);}100%{transform:none;}}
.hit.moment-backdrop{animation:msThud .5s ease-out;}
@keyframes msThud{0%{background-color:rgba(0,0,0,.62);}100%{}}
/* ink flecks: twelve short ticks thrown out from under the stamp */
.ms-burst{display:block;pointer-events:none;}
.ms-burst i{position:absolute;left:50%;top:50%;width:3px;height:11px;margin:-5.5px 0 0 -1.5px;border-radius:2px;background:#000;opacity:0;}
.ms-burst i:nth-child(1){--a:0deg}.ms-burst i:nth-child(2){--a:30deg}.ms-burst i:nth-child(3){--a:60deg}.ms-burst i:nth-child(4){--a:90deg}.ms-burst i:nth-child(5){--a:120deg}.ms-burst i:nth-child(6){--a:150deg}
.ms-burst i:nth-child(7){--a:180deg}.ms-burst i:nth-child(8){--a:210deg}.ms-burst i:nth-child(9){--a:240deg}.ms-burst i:nth-child(10){--a:270deg}.ms-burst i:nth-child(11){--a:300deg}.ms-burst i:nth-child(12){--a:330deg}
.hit .ms-burst i{animation:msFleck .46s cubic-bezier(.2,.8,.3,1) both;}
.ms-burst i:nth-child(even){height:7px;}
@keyframes msFleck{0%{opacity:1;transform:rotate(var(--a)) translateY(-70px) scaleY(.4);}35%{opacity:1;}100%{opacity:0;transform:rotate(var(--a)) translateY(-88px) scaleY(1);}}
/* the coin (every hundred): one element turning in perspective, no 3D subtree (keeps iOS memory flat) */
.coin.go .ms-big .ms-ink{animation:msCoin 1.15s cubic-bezier(.3,.55,.45,1) backwards;}
@keyframes msCoin{0%{transform:perspective(520px) translateY(40px) rotateY(0) scale(.35);opacity:0;}10%{opacity:1;}100%{transform:perspective(520px) translateY(0) rotateY(1080deg) scale(1);opacity:1;}}
.coin.hit .moment.ms-card{animation:msBump .42s cubic-bezier(.3,.7,.4,1);}
@keyframes msBump{0%{transform:none;}18%{transform:translateY(5px) scale(.975);}55%{transform:translateY(-2px) scale(1.005);}100%{transform:none;}}
.coin .ms-burst i{background:#d9a514;}
@media (prefers-reduced-motion:reduce){.coin.go .ms-big .ms-ink{animation:none;}}
@media (prefers-reduced-motion:reduce){.go .ms-big .ms-ink{animation:none;}.hit .moment.ms-card,.hit .ms-burst i{animation:none;}}
.ms-card h3{margin:4px 0 0;font-size:26px;font-weight:700;letter-spacing:-.02em;color:#000;}
.ms-card p{margin:6px 0 0;font-size:15px;line-height:1.4;color:#6e6e73;}
.ms-also{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:7px 12px;border-radius:12px;background:#f2f2f4;font-size:14px;font-weight:600;color:#000;}
.ms-also i{width:8px;height:8px;border-radius:50%;background:#30d158;}
.ms-more{margin-top:10px;font-size:13px;color:#6e6e73;}
#device .ms-card .cta{background:#000;color:#fff;}
#device .ms-card .mo-done{color:#6e6e73;}
/* Milestones shelf (2026-10-17): Next up (10 soonest at your pace) + the ?, then Earned */
.ms-b small.soon{color:#1a9e3f;font-weight:600;}
:root:not(.theme-light) .ms-b small.soon{color:#30d158;}
.pb-off .pbg .gsf{fill:#c7c7cc;}
.ms-hero .pb-off .pbg .gsf{fill:var(--steel);}
.ms-q .pbg .mq{stroke:var(--paper);}
.ms-q .pbg .mqt{fill:var(--paper);}
.ms-q b{color:var(--paper);}
.ms-qcard .ms-qbig{width:120px;height:120px;}
.ms-qcard .ms-qbig .pbg{width:120px;height:120px;}
.ms-qcard .ms-also{font-weight:600;}
.moment-backdrop .ms-qcard .mo-foot{animation-delay:.15s;}
/* Milestones header (2026-10-17): the next badge beside its name and "when", What's ahead at the top right */
.ms-hero{padding:10px 0 18px;}
.ms-hero .ms-next{position:relative;align-items:center;}
.ms-nb{background:none;border:0;padding:0;flex:none;--pb-bg:var(--ink);-webkit-touch-callout:none;user-select:none;-webkit-user-select:none;}
.ms-nb .pbg{width:76px;height:76px;}
.ms-lt{flex:1;min-width:0;}
.ms-lt small{display:block;font-size:13px;color:var(--steel);}
.ms-lt b{display:block;font-size:22px;font-weight:700;letter-spacing:-.02em;margin:2px 0;color:var(--paper);}
.ms-lt span{font-size:14px;color:var(--steel);}
.ms-lt span.soon{color:var(--steel);}
.ms-ahead{position:absolute;top:0;right:0;background:none;border:0;padding:4px 0 4px 8px;color:var(--paper);font:inherit;font-size:14px;font-weight:600;}
.ms-ahead span{margin-left:2px;color:var(--steel);}
.ms-hero .ms-ticks{margin-top:14px;}
.ms-hero .ms-runs{margin-top:16px;}
/* the trophy case header */
.ms-proud{display:flex;align-items:flex-end;gap:10px;margin:18px 4px 16px;}
.ms-proud b{font-size:44px;font-weight:700;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums;color:var(--paper);}
.ms-proud span{display:flex;flex-direction:column;font-size:17px;font-weight:600;color:var(--paper);line-height:1.15;}
.ms-proud small{font-size:13px;font-weight:500;color:var(--steel);}
/* What's ahead: pushes in from the right */
/* a slide-over is a screen: the same header (page-head + sd-top) and the same side padding as the session page */
#device .ms-page{position:absolute;inset:0;z-index:60;background:var(--ink);color:var(--paper);transform:translateX(100%);transition:transform .38s cubic-bezier(.32,.72,0,1);display:flex;flex-direction:column;box-shadow:-12px 0 30px rgba(0,0,0,.12);}
#device .ms-page .scroll{padding:0 24px 40px;}
#device .ms-page .sd-top{margin-bottom:18px;}
#device .ms-page.in{transform:none;}
.ms-pagehd{padding:calc(var(--sat,44px) + 10px) 20px 10px;}
.ms-pagehd h1{font-size:var(--fs-page,28px);font-weight:700;letter-spacing:-.02em;margin:14px 0 2px;}
.ms-pagehd p{margin:0;font-size:14px;color:var(--steel);}
.ms-pagebody{flex:1;overflow-y:auto;padding:14px 16px calc(var(--sab,20px) + 24px);}
.ms-page .ms-q .pbg .mq{stroke:var(--paper);} .ms-page .ms-q .pbg .mqt{fill:var(--paper);} .ms-page .ms-q b{color:var(--paper);}
.ms-page .ms-b small.soon{color:#1a9e3f;}
:root:not(.theme-light) .ms-page .ms-b small.soon{color:#30d158;}
/* the black/white division: 24 above it (under Weeks in a row / Total lifted) and 24 below it (to "19 badges") */
#device .ms-hero{padding-bottom:0;}
:root #device #s-history .hist-below.ms-below{margin-top:24px !important;padding-top:24px !important;}
#device .ms-proud{margin-top:0;align-items:center;}
/* logger top row: back to Today */
.pad-navrow{display:flex;align-items:stretch;justify-content:space-between;}
.pad-chip.wonly{font-weight:600;letter-spacing:.02em;}
/* the chip row wraps instead of a fixed grid: number chips keep a quarter of the row each (two quarters when wide),
   and a warm-up's "W" is only as wide as its letter, with the same padding a number has around it */
.pad-slot{display:flex;flex-wrap:wrap;gap:5px;align-content:flex-start;}
.pad-slot>.pad-chip{flex:none;width:calc((100% - 15px) / 4);}
.pad-slot>.pad-chip.wide{width:calc((100% - 15px) / 2 + 5px);}
.pad-slot>.pad-chip.wonly{width:auto;padding:0 12px;}
.pad-slot>.pad-sub{width:100%;}
/* the day's name opens the routine on this day; the pencil rides on the last word */
.pad-dayname{cursor:pointer;-webkit-tap-highlight-color:transparent;}
.pad-dayname:active{opacity:.6;}
.pad-nw{white-space:nowrap;}
.pad-pen{width:.62em;height:.62em;margin-left:.3em;vertical-align:.04em;color:var(--steel);}
/* Session insights (2026-10-17). Overview: the latest workout's story, one card in view, swipe for the four before */
.ss-wrap{margin:14px 0 22px;}
.ss-wrap .rb-head{margin-bottom:8px;}
.ss-all{background:none;border:0;padding:0;color:var(--paper);font:inherit;font-size:13px;font-weight:600;}
.ss-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -24px;padding:0 24px;scroll-padding:0 24px;gap:10px;scrollbar-width:none;}
.ss-track::-webkit-scrollbar{display:none;}
.ss-card{flex:none;width:100%;scroll-snap-align:start;background:var(--panel);border-radius:18px;padding:16px 18px 14px;}
.ss-when{font-size:13px;color:var(--steel);}
.ss-card h3,.sd-story h3{font-family:var(--sans);font-size:22px;font-weight:700;letter-spacing:-.015em;line-height:1.15;margin:6px 0 0;color:var(--paper);}
.ss-card p,.sd-story p{font-size:15px;line-height:1.45;color:var(--steel-2);margin:8px 0 0;}
.ss-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;}
.ss-chips span{font-size:13px;font-weight:600;padding:5px 10px;border-radius:10px;background:rgba(var(--tint),.08);color:var(--paper);}
.ss-open{display:block;margin-top:12px;background:none;border:0;padding:0;color:var(--paper);font:inherit;font-size:15px;font-weight:600;}
.ss-open span{color:var(--steel);}
/* the page control, as iOS draws it: 7pt dots, 9pt apart, the current one solid, the rest the same color at 30% */
.ss-dots{display:flex;justify-content:center;gap:9px;margin-top:12px;padding:6px 0;}
.ss-dots i{width:7px;height:7px;border-radius:50%;background:var(--paper);opacity:.3;display:block;transition:opacity .2s;}
.ss-dots i.on{opacity:1;}
/* the session page: the full story */
.sd-story{margin:-8px 0 22px;padding:14px 16px 16px;border:1px solid var(--hair);border-radius:14px;}
.sd-story h3{font-size:20px;}
.sd-story p{font-size:14px;}
.ss-lifts{margin-top:14px;border-top:1px solid var(--hair-soft);}
.ss-lift{display:flex;gap:12px;align-items:flex-start;width:100%;padding:10px 28px 10px 0;border:0;border-bottom:1px solid var(--hair-soft);position:relative;background:none;color:var(--paper);font:inherit;text-align:left;}
.ss-lift::after{content:"›";position:absolute;right:2px;top:50%;transform:translateY(-50%);font-size:22px;line-height:1;color:var(--steel);}   /* (2026-10-20) a chevron only, no box (user call): these rows open the lift */
.ss-st{flex:none;width:66px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel);padding-top:3px;}
.ss-st.improved{color:var(--lume-text);}
.ss-lf{flex:1;font-size:14px;line-height:1.4;color:var(--steel-2);}
.ss-lf b{display:block;color:var(--paper);font-weight:600;}
.ss-next{margin-top:14px;}
.ss-next b{display:block;font-size:15px;color:var(--paper);margin:2px 0 3px;}
.ss-next small{display:block;font-size:13px;line-height:1.4;color:var(--steel);}
/* the story card takes Today's Next up shape: the same black rounded rectangle, same radius and padding, one white pill */
:root.theme-mono .ss-card{border-radius:26px;padding:20px 18px 18px;}
:root.theme-monolight #device .ss-card{background:#f2f2f4;color:#000;border-radius:50px;padding:26px 24px 24px;}
:root.theme-monolight #device .ss-card .ss-when{color:#6e6e73;}
:root.theme-monolight #device .ss-card h3{color:#000;}
:root.theme-monolight #device .ss-card p{color:#48484a;}
:root.theme-monolight #device .ss-card .ss-tile{background:#fff;}
:root.theme-monolight #device .ss-card .ss-tile b{color:#000;}
:root.theme-monolight #device .ss-card .ss-tile b i{color:#8e8e93;}
:root.theme-monolight #device .ss-card .ss-tile.up b i{color:#1a9e3f;}
:root.theme-monolight #device .ss-card .ss-tile span,:root.theme-monolight #device .ss-card .ss-tile span small{color:#6e6e73;}
:root.theme-monolight #device .ss-card .ss-open{display:flex;align-items:center;justify-content:center;width:100%;height:52px;margin-top:18px;border-radius:26px;background:#000;color:#fff;font-size:17px;font-weight:700;}
:root.theme-monolight #device .ss-card .ss-open span{color:#fff;margin-left:4px;}
:root.theme-monolight #device .ss-card .ss-open:active{opacity:.85;}
/* the story card, built on aggregates: question, big number, short answer, the day type's arc */
.ss-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;}
.ss-ill{flex:none;width:56px;height:56px;border-radius:50%;overflow:hidden;background:var(--panel-2);margin:-6px -4px 0 0;}
.ss-ill img{width:100%;height:100%;display:block;}
.ss-q{font-size:15px;font-weight:600;color:var(--steel);margin-top:6px;}
.ss-big{display:flex;align-items:flex-end;gap:10px;margin-top:4px;}
.ss-big b{font-size:60px;font-weight:700;letter-spacing:-.04em;line-height:.92;font-variant-numeric:tabular-nums;color:var(--paper);}
.ss-big span{display:flex;flex-direction:column;font-size:16px;font-weight:600;line-height:1.2;padding-bottom:4px;color:var(--paper);}
.ss-big span small{font-size:13px;font-weight:500;color:var(--steel);}
.ss-big.sm b{font-size:40px;}
.ss-big.sm span{font-size:14px;}
.ss-card h3{margin-top:12px;}
.ss-arc{margin-top:14px;}
.ss-arcbars{display:flex;align-items:flex-end;gap:6px;height:44px;}
.ss-arcbars i{flex:1;max-width:64px;border-radius:5px 5px 2px 2px;background:var(--line-2);position:relative;display:block;}
.ss-arcbars i.now{background:var(--paper);}
.ss-arcbars i span{position:absolute;top:100%;left:0;right:0;margin-top:4px;text-align:center;font-size:10px;color:var(--steel);white-space:nowrap;}
.ss-arc small{display:block;margin-top:20px;font-size:12px;color:var(--steel);}
/* three stat tiles, fixed per goal: the same slots every day, the numbers do the changing */
.ss-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px;}
.ss-tile{background:rgba(var(--tint),.07);border-radius:14px;padding:12px 10px 10px;text-align:center;min-width:0;}
.ss-tile b{display:block;font-size:19px;font-weight:700;letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums;color:var(--paper);white-space:nowrap;}
.ss-tile b i{font-style:normal;font-size:15px;margin-right:2px;color:var(--steel);}
.ss-tile.up b i{color:#30d158;}
.ss-tile span{display:block;margin-top:6px;font-size:11px;color:var(--steel);line-height:1.2;}
.ss-tile span small{display:block;font-size:10px;color:var(--steel);opacity:.8;}
.sd-story .ss-tiles{margin-top:12px;}
.sd-story .ss-arc{margin-top:16px;}
/* the session page: each lift's reading sits on the sets list; the sequence read folds into the insights block */
.sd-ins{display:flex;gap:10px;align-items:baseline;margin:2px 0 6px;font-size:13.5px;line-height:1.4;color:var(--steel-2);}
.sd-ins .ss-st{width:auto;padding-top:0;}
.sd-seq{font-size:14px;line-height:1.45;color:var(--steel);margin:8px 0 0;}
/* Session insights page (pushes in over Progress); the session page itself stays the log */
.ins-h{font-family:var(--sans);font-size:24px;font-weight:700;letter-spacing:-.015em;line-height:1.15;margin:4px 0 0;color:var(--paper);}
.ins-p{font-size:15px;line-height:1.45;color:var(--steel-2);margin:8px 0 0;}
.ins-page .ss-tiles{margin-top:16px;}
.ins-page .ss-tile{background:var(--panel);}
.ins-page .ss-arc{margin-top:18px;}
.ins-page .ss-lifts{margin-top:18px;}
.ins-page .ss-next{margin-top:18px;}
.ins-log{display:block;width:100%;margin-top:22px;height:48px;border-radius:24px;border:1.5px solid var(--line-2);background:none;color:var(--paper);font:inherit;font-size:15px;font-weight:600;}
.ins-log span{color:var(--steel);margin-left:2px;}
/* the next milestone, given room: a bigger badge and name, nothing under them (the ticks say how close it is) */
#device .ms-hero{padding-top:18px;}
#device .ms-hero .ms-next{gap:18px;}
#device .ms-nb .pbg{width:88px;height:88px;}
#device .ms-lt small{font-size:14px;}
#device .ms-lt b{font-size:28px;letter-spacing:-.025em;margin:4px 0 0;line-height:1.1;}
#device .ms-hero .ms-ticks{margin-top:20px;}
#device .ms-hero .ms-runs{margin-top:20px;}
/* the next milestone catches the light: a white copy of the badge over the gray one, shown through a band of mask that
   sweeps across in a second, then rests three (a compositor animation; iOS freezes SMIL on shared gradients) */
.ms-nb{position:relative;}
.ms-nb .ms-shine{position:absolute;inset:0;display:block;pointer-events:none;
  -webkit-mask-image:linear-gradient(105deg,transparent 38%,#000 50%,transparent 62%);mask-image:linear-gradient(105deg,transparent 38%,#000 50%,transparent 62%);
  -webkit-mask-size:300% 100%;mask-size:300% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  animation:msShine 4s linear infinite;}
.ms-nb .ms-shine .pbg{width:88px;height:88px;}
.ms-nb .ms-shine .pbg .k,.ms-nb .ms-shine .pbg .au,.ms-nb .ms-shine .pbg .w,.ms-nb .ms-shine .pbg .gs,.ms-nb .ms-shine .pbg .v{fill:none;stroke:#fff;stroke-width:1.5;}
.ms-nb .ms-shine .pbg .wf,.ms-nb .ms-shine .pbg .t,.ms-nb .ms-shine .pbg .tk,.ms-nb .ms-shine .pbg .gsf{fill:#fff;}
.ms-nb .ms-shine .pbg .art{color:#fff;}
.ms-nb .ms-shine .pbg .er{stroke:#000;}
@keyframes msShine{0%{-webkit-mask-position:120% 0;mask-position:120% 0;}30%{-webkit-mask-position:-20% 0;mask-position:-20% 0;}100%{-webkit-mask-position:-20% 0;mask-position:-20% 0;}}
@media (prefers-reduced-motion:reduce){.ms-nb .ms-shine{display:none;}}
/* the week recap bar (the record bar's pattern): tap for the reel, swipe up to put it away */
.pr-bar.wk-bar{touch-action:pan-x;}
.pr-bar.wk-bar.up{transform:translateY(calc(-100% - var(--sat) - 20px)) !important;}
.pr-bar.wk-bar .pb-ey,.pr-bar.wk-bar .wb-cta{background:none;-webkit-background-clip:border-box;color:var(--steel);}
.pr-bar.wk-bar .pb-ey{font-size:13px;font-weight:600;}
.pr-bar.wk-bar .wb-cta{flex:none;font-size:22px;font-weight:600;color:var(--steel);padding-right:2px;}
.pr-bar.wk-bar .wb-cta span{color:var(--steel);}
.pr-bar.wk-bar .wb-badge{flex:none;width:44px;height:44px;display:block;}
.pr-bar.wk-bar .wb-badge .pbg{width:44px;height:44px;filter:invert(1) hue-rotate(180deg);}
:root.theme-light.theme-monolight .pr-bar.wk-bar .pb-ey,:root.theme-light.theme-monolight .pr-bar.wk-bar .wb-cta span{color:#9a9a9f;}
:root.theme-light.theme-monolight .pr-bar.wk-bar .wb-cta{color:#fff;}
/* the reel's badges beat */
.wr-badges{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 8px;width:100%;margin-top:14px;}
.wr-badge{display:flex;flex-direction:column;align-items:center;gap:6px;animation:moRise .6s ease-out both;}
.wr-badge .pbg{width:84px;height:84px;}
:root:not(.theme-light) .wr-badge .pbg{filter:invert(1) hue-rotate(180deg);}   /* the reel is dark there: the stamps print white */
.wr-badge span{font-size:13px;font-weight:600;color:var(--paper);line-height:1.2;}
/* five skins (2026-10-17): Default / Dark / Light on top, Olive / Midnight brass filling the row below */
#device .set-seg.set-skins span:nth-child(n+4){grid-column:span 3;}

/* Body on every skin (2026-10-17): the Default skin's Body structure (chip bar, swipe to flip, full-height stage, the bar
   sliding away on a tap) for the other skins too, in each skin's own colors */
:root:not(.theme-monolight) #device #s-body .b-cmp{left:0;right:0;bottom:0;padding:10px 10px calc(67px + var(--sab));background:var(--ink);}
:root:not(.theme-monolight) #device #s-body .b-cmp .cmp2{background:var(--ink);border:0;border-radius:0;box-shadow:none;}
:root:not(.theme-monolight) #device #s-body .b-cmp .cmp2 .cmp2-title{color:var(--paper);}
:root:not(.theme-monolight) #device #s-body .b-cmp .tgl:not(.on){background:var(--panel);}
:root:not(.theme-monolight) #device #s-body .tabbar{border-top:0;}
:root:not(.theme-monolight) #device #s-body .b-cmp:not(:empty) + .b-view{bottom:calc(67px + var(--sab) + 84px);}
:root:not(.theme-monolight) #device #s-body .b-cmp:has([aria-pressed="true"]) + .b-view{bottom:calc(67px + var(--sab) + 152px);}
:root:not(.theme-monolight) #device #s-body .b-seg{display:none;}
:root:not(.theme-monolight) #device #s-body .b-ctl{position:absolute;left:0;right:0;bottom:calc(67px + var(--sab));z-index:5;background:var(--ink);display:flex;gap:8px;padding:10px 16px;}
:root:not(.theme-monolight) #device #s-body .b-chip{position:static;transform:none;display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border-radius:999px;border:0;background:var(--panel);color:var(--paper);font-family:-apple-system,system-ui,sans-serif;font-size:15px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;cursor:pointer;}
:root:not(.theme-monolight) #device #s-body .b-chip b{font-weight:600;color:var(--paper);}
:root:not(.theme-monolight) #device #s-body .b-chip i{font-style:normal;font-size:12px;opacity:.55;}
:root:not(.theme-monolight) #device #s-body .b-chip.on{background:var(--paper);color:var(--ink);}
:root:not(.theme-monolight) #device #s-body .b-sidechip{background:var(--panel);color:var(--paper);}
:root:not(.theme-monolight) #device #s-body .b-sidechip i{opacity:.7;}
:root:not(.theme-monolight) #device #s-body .b-cmp{bottom:calc(67px + var(--sab) + 58px);padding:2px 16px 0;}
:root:not(.theme-monolight) #device #s-body .b-cmp .cmp2-row{display:none;}
:root:not(.theme-monolight) #device #s-body .b-cmp:not(:has(.cmp2-pager)){display:none;}
:root:not(.theme-monolight) #device #s-body .b-cmp .cmp2-pager{margin:0;border-radius:14px;}
:root:not(.theme-monolight) #device #s-body .b-cmp:not(:empty) + .b-view{bottom:calc(67px + var(--sab) + 70px);}
:root:not(.theme-monolight) #device #s-body .b-omenu{top:auto;bottom:calc(67px + var(--sab) + 62px);left:16px;transform:none;}
:root:not(.theme-monolight) #device #s-body .tabbar{border-top:0 !important;box-shadow:none !important;}
:root:not(.theme-monolight) #device #s-body .b-ctl .b-chip{flex:1 1 0;min-width:0;justify-content:center;}
:root:not(.theme-monolight) #device #s-body .b-ctl{bottom:calc(66px + var(--sab));padding-bottom:11px;}
:root:not(.theme-monolight) #device #s-body .tabbar{border-top:1px solid var(--hair-soft) !important;}
:root:not(.theme-monolight) #device #s-body .b-sidechip{background:var(--panel);color:var(--paper);}
:root:not(.theme-monolight) #device #s-body .b-sidechip i{opacity:.55;}
:root:not(.theme-monolight) #device #s-body .b-ctl,:root:not(.theme-monolight) #device #s-body .b-cmp,:root:not(.theme-monolight) #device #s-body .tabbar{transition:transform .42s cubic-bezier(.32,.72,0,1);}
:root:not(.theme-monolight) #device #s-body.zoom .b-ctl,:root:not(.theme-monolight) #device #s-body.zoom .b-cmp{opacity:1;transform:translateY(calc(100% + 80px + var(--sab) + 60px));}
:root:not(.theme-monolight) #device #s-body.zoom .tabbar{opacity:1;transform:translateY(100%);}
/* Body (2026-10-17): the chip bar keeps the tab bar's color; the stage behind the figure (.b-stage, full screen under the
   controls) is darker than both, which is what separates the figure from the controls. Default: true black. */
:root.theme-monolight #device #s-body .b-stage{background:#000;}
:root:not(.theme-monolight) #device #s-body .b-stage{background:rgba(0,0,0,.32);}
:root.theme-light:not(.theme-monolight) #device #s-body .b-stage{background:rgba(0,0,0,.16);}
/* first days (2026-10-17): Body's caption sits under the title, never on the figure; the plan toggle is retired under the
   chip bar (Body opens on the plan's coverage by itself until the first workout) */
#device #s-body .b-empty{top:calc(var(--top) + 52px);bottom:auto;padding:0 24px;font-size:14px;line-height:1.4;color:var(--steel-2);}
:root.theme-monolight #device #s-body .b-empty{color:#aeaeb2;}
#device #s-body .b-view{display:none;}
/* Patterns before the first workout: the chart as a faded sample */
.tw-sample{opacity:.45;pointer-events:none;}

/* ---------------- First run (2026-10-19): one question a screen, five steps, black and white ---------------- */
.ob-steps{display:flex;gap:5px;margin:0 0 12px;}
.ob-steps i{flex:1;height:4px;border-radius:2px;background:var(--hair);display:block;}
.ob-steps i.on{background:var(--paper);}
.ob-stepk{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.08em;color:var(--steel);margin-bottom:14px;}
.ob2-opt{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.ob2-ot{display:block;min-width:0;}
.ob2-ck{flex:none;width:24px;height:24px;border-radius:50%;border:1.5px solid var(--paper);position:relative;}
.ob2-opt.on .ob2-ck{background:var(--paper);border-color:var(--paper);}
.ob2-opt.on .ob2-ck::after{content:"";position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/13px 13px no-repeat;}
.ob2-nums{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:18px;}
.ob2-nums button{aspect-ratio:1;border:1.5px solid var(--paper);border-radius:18px;background:none;color:var(--paper);font-size:24px;font-weight:700;font-family:var(--sans);}
.ob2-nums button.on{background:var(--paper);color:var(--ink);}
.ob2-kitlink{margin-top:14px;}
/* Mono: steps 1 to 4 are a white page; the picked card is solid black with a check, the rest an outline; Continue waits gray */
:root.theme-monolight #s-onboard .ob-veil{background:#fff;}
:root.theme-monolight #s-onboard .ob2-opt,:root.theme-monolight #s-onboard .ob2-plan{background:#fff;border:1.5px solid #000;box-shadow:none;border-radius:22px;color:#000;}
:root.theme-monolight #device #s-onboard .ob2-opt.on,:root.theme-monolight #device #s-onboard .ob2-plan.on{background:#000 !important;color:#fff;border-color:#000 !important;box-shadow:none !important;}
:root.theme-monolight #device #s-onboard .ob2-opt.on b,:root.theme-monolight #device #s-onboard .ob2-plan.on b{color:#fff;}
:root.theme-monolight #s-onboard .ob2-opt small{color:#6e6e73;}
:root.theme-monolight #s-onboard .ob2-opt.on small,:root.theme-monolight #s-onboard .ob2-plan.on .ob2-meta,:root.theme-monolight #s-onboard .ob2-plan.on .ob2-why{color:#aeaeb2;}
:root.theme-monolight #s-onboard .ob2-opt .ob2-ck{border-color:#000;}
:root.theme-monolight #s-onboard .ob2-opt.on .ob2-ck{background:#fff;border-color:#fff;}

:root.theme-monolight #s-onboard .ob2-plan .ob2-tag{color:#1a9e3f;} :root.theme-monolight #s-onboard .ob2-plan.on .ob2-tag{color:#30d158;}
:root.theme-monolight #s-onboard .ob2-nums button{border-color:#000;color:#000;} :root.theme-monolight #s-onboard .ob2-nums button.on{background:#000;color:#fff;}
:root.theme-monolight #s-onboard .ob-steps i{background:#e5e5ea;} :root.theme-monolight #s-onboard .ob-steps i.on{background:#000;}
:root.theme-monolight #s-onboard .ob2-dock .cta[disabled]{background:#e5e5ea;color:#8e8e93;opacity:1;}
:root.theme-monolight #s-onboard .ob2-aicard{border-style:dashed;}
/* the welcome and the finish are black, with the video under them (full on the welcome, dimmed on the finish) */
:root.theme-monolight #s-onboard[data-obstep="welcome"],:root.theme-monolight #s-onboard[data-obstep="review"]{--ink:#000;--ink-2:#111;--panel:#1c1c1e;--panel-2:#2c2c2e;--card:#000;--hair:#2c2c2e;--hair-soft:#1f1f1f;--line-2:#3a3a3c;--paper:#fff;--paper-dim:#d1d1d6;--steel:#8e8e93;--steel-2:#aeaeb2;--lume-text:#30d158;--tint:255,255,255;color:#fff;}
:root.theme-monolight #s-onboard[data-obstep="welcome"] .ob-veil{background:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgba(0,0,0,.06) 38%,rgba(0,0,0,.66) 62%,rgba(0,0,0,.9) 78%,#000 100%);}
:root.theme-monolight #s-onboard[data-obstep="review"] .ob-veil{background:linear-gradient(to bottom,rgba(0,0,0,.62) 0%,rgba(0,0,0,.86) 40%,#000 70%);}
:root.theme-monolight #s-onboard[data-obstep="review"] .ob2-dock,:root.theme-monolight #s-onboard[data-obstep="review"] .dock{background:transparent;}
:root.theme-monolight #s-onboard[data-obstep="review"] .ob-steps i{background:#2c2c2e;} :root.theme-monolight #s-onboard[data-obstep="review"] .ob-steps i.on{background:#fff;}
:root.theme-monolight #s-onboard[data-obstep="review"] .ob-h2,:root.theme-monolight #s-onboard[data-obstep="review"] .ob2-lift b{color:#fff;}
:root.theme-monolight #s-onboard[data-obstep="review"] .ob2-days button.on{background:#fff;border-color:#fff;color:#000;}
:root.theme-monolight #s-onboard[data-obstep="review"] .cta{background:#fff;color:#000;}
:root.theme-monolight #s-onboard[data-obstep="welcome"] .ob-title,:root.theme-monolight #s-onboard[data-obstep="welcome"] .ob-lede,:root.theme-monolight #s-onboard[data-obstep="welcome"] .ob-foot,:root.theme-monolight #s-onboard[data-obstep="welcome"] .ob-skip{color:#fff;}
:root.theme-monolight #s-onboard[data-obstep="welcome"] .ob-lede,:root.theme-monolight #s-onboard[data-obstep="welcome"] .ob-skip{color:#d1d1d6;}
:root.theme-monolight #s-onboard[data-obstep="welcome"] .ob-foot{color:#8e8e93;}
:root.theme-monolight #s-onboard[data-obstep="welcome"] .cta{background:#fff;color:#000;}
:root.theme-monolight #s-onboard .ob-backrail{color:#8e8e93;}

/* ---- Today, day zero: the plan on the calendar, and the pick-a-day card ---- */
.d0screen .day small{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.08em;color:var(--steel);height:12px;line-height:12px;margin-top:-4px;}
.d0screen .day.today small{color:var(--lume-text);}
.d0screen .day.plan .dot{border-style:dashed;border-color:var(--steel);}
.d0screen .nextup.nx-card{margin-top:28px;}
.nx-pick .nx-days{margin-top:4px;}
.nx-day{display:flex;align-items:center;gap:12px;width:100%;background:none;border:0;border-top:1px solid var(--hair-soft);padding:14px 0;color:var(--paper);font:inherit;text-align:left;cursor:pointer;}
.nx-day b{font-size:var(--fs-name);font-weight:700;white-space:nowrap;}
.nx-day small{margin-left:auto;font-size:var(--fs-value);color:var(--steel-2);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
.nx-radio{flex:none;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--steel);position:relative;}
.nx-day.on .nx-radio{background:var(--paper);border-color:var(--paper);}
.nx-day.on .nx-radio::after{content:"";position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/12px 12px no-repeat;}
.nx-open{padding:0 0 8px 34px;}
.nx-open .nx-set{padding:7px 0;border-top:0;}
.nx-open .nx-set .nm{font-size:var(--fs-value);}
.nx-pick .nx-cta.nx-wait{opacity:1;background:var(--panel-2);color:var(--steel);}
.nx-pick .nx-hook{margin:14px 0 2px;color:var(--steel-2);font-size:var(--fs-value);line-height:1.4;}
:root.theme-monolight #device .nx-pick .nx-cta.nx-wait{background:#2c2c2e;color:#8e8e93;}

/* ---- Tabs that open as the log earns them: a padlock while locked, a green dot once open, a pop the first time ---- */
.tab{position:relative;}
.tab.lock{color:var(--line-2);}
.tab.lock svg:not(.tab-lock){opacity:.5;}
.tab .tab-lock{display:none;}
.tab.lock .tab-lock{display:block;position:absolute;width:11px;height:11px;top:4px;left:calc(50% + 8px);stroke:var(--steel);fill:none;opacity:1;}
.tab.new::after{content:"";position:absolute;top:5px;left:calc(50% + 9px);width:8px;height:8px;border-radius:50%;background:var(--lume-text);}
.tab.lit{animation:tabLit .62s cubic-bezier(.2,.9,.3,1.35);}
@keyframes tabLit{0%{transform:scale(.82);}55%{transform:scale(1.16);}100%{transform:none;}}

/* ---- Milestones: the First steps row up top until all six are in ---- */
.ms-steps{padding:2px 0 16px;}
.ms-sh{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px;}
.ms-sh b{font-size:17px;font-weight:700;letter-spacing:-.01em;color:var(--paper);}
.ms-sh span{font-size:13px;color:var(--steel);}
.ms-srow{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;}
.ms-sb{display:flex;flex-direction:column;align-items:center;gap:5px;background:none;border:0;padding:0;font:inherit;color:var(--paper);cursor:pointer;--pb-bg:var(--ink);}
.ms-sb .pbg{width:46px;height:46px;display:block;}
.ms-sb small{font-size:10px;line-height:1.15;text-align:center;color:var(--paper);}
.ms-sb.pb-off small{color:var(--steel);}
#device .moment.ms-card .mo-link{background:none;border:0;color:#1a9e3f;font-weight:600;font-size:15px;padding:8px 0 0;font-family:inherit;cursor:pointer;}
/* the deck: cards slide through one modal; stamps after the first land lighter */
#device .moment-backdrop.deck .moment.deck-out{transform:translateX(-44px) !important;opacity:0 !important;transition:transform .2s ease-in,opacity .18s ease-in;}
#device .moment-backdrop.deck .moment.deck-in{transform:translateX(44px) !important;opacity:0 !important;transition:none;}
#device .moment-backdrop.deck.show .moment{transition:transform .26s cubic-bezier(.2,.8,.3,1),opacity .2s ease;}
.soft.go .ms-big .ms-ink{animation:msDrop .18s cubic-bezier(.55,0,1,.45) backwards,msSquash .26s cubic-bezier(.2,.9,.3,1) .18s;}
.soft.hit .moment.ms-card{animation:msBump .36s cubic-bezier(.3,.7,.4,1);}
.deck .mo-foot .cta.mo-next{min-width:0;}

/* ---- Close-out effort (2026-10-19): 1 to 5, the number big, the word, the reps-left anchor ---- */
.co-effort{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;width:100%;margin-bottom:14px;}
.co-eb{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 2px 8px;border-radius:14px;border:1px solid var(--hair);background:var(--ink-2);color:var(--paper);font-family:var(--sans);cursor:pointer;}
.co-eb b{font-size:22px;font-weight:700;line-height:1;letter-spacing:-.02em;}
.co-eb span{font-size:11px;font-weight:600;margin-top:4px;white-space:nowrap;}
.co-eb small{font-size:9.5px;color:var(--steel);line-height:1.1;text-align:center;}
.co-eb.on{background:var(--paper);color:var(--ink);border-color:var(--paper);}
.co-eb.on small{color:var(--ink);opacity:.6;}
:root.theme-monolight #device .co-eb{background:#f2f2f4;border-color:#e4e4e8;}
:root.theme-monolight #device .co-eb.on{background:#000;color:#fff;border-color:#000;}
:root.theme-monolight #device .co-eb.on small{color:#fff;}
/* (2026-10-20) the goal cards: the measure under the name, the how opens inside the picked card */
.ob2-opt small .ob2-m{display:block;font-weight:600;color:var(--paper);}
.ob2-opt small .ob2-how{display:block;margin-top:6px;color:var(--steel-2);}
:root.theme-monolight #s-onboard .ob2-opt small .ob2-m{color:#000;}
:root.theme-monolight #device #s-onboard .ob2-opt.on small .ob2-m{color:#fff;}
:root.theme-monolight #device #s-onboard .ob2-opt.on small .ob2-how{color:#aeaeb2;}
/* (2026-10-20) plans step: the best fit is the full card, other plans and the two routes are short rows */
.ob2-plan.ob2-row{padding:12px 16px;margin-top:8px;}
.ob2-plan.ob2-row .ob2-ph b{font-size:var(--fs-name);}
.ob2-plan.ob2-row .ob2-meta{margin-top:3px;}
.ob2-arrow{color:var(--steel);font-size:18px;line-height:1;}
.ob2-route{margin-top:8px;}
.ob2-plan.ob2-row + .ob2-route{margin-top:16px;}
:root.theme-monolight #s-onboard .ob2-plan.ob2-route{border-style:dashed;border-color:#8e8e93;}
/* (2026-10-20) the welcome's three doors, and a step rail fixed in the frame so it never moves between steps */
.ob-q{font-size:15px;font-weight:600;color:#8e8e93;margin:18px 0 10px;text-align:left;}
.ob-doors{display:flex;flex-direction:column;gap:9px;text-align:left;}
#s-onboard[data-obstep="welcome"] .ob-wc{text-align:left;padding-bottom:0;}
#s-onboard[data-obstep="welcome"] .ob-title{text-align:left;}
:root.theme-monolight #device #s-onboard .ob-door{background:transparent;border:1.5px solid rgba(255,255,255,.62);color:#fff;border-radius:20px;padding:13px 16px;}
:root.theme-monolight #device #s-onboard .ob-door b{color:#fff;font-size:18px;} :root.theme-monolight #device #s-onboard .ob-door small{color:#aeaeb2;}
:root.theme-monolight #device #s-onboard .ob-door .ob2-ck{border-color:#fff;width:24px;height:24px;}
:root.theme-monolight #device #s-onboard .ob-door.on{background:#fff !important;border-color:#fff !important;color:#000;}
:root.theme-monolight #device #s-onboard .ob-door.on b{color:#000;} :root.theme-monolight #device #s-onboard .ob-door.on small{color:#6e6e73;}
:root.theme-monolight #device #s-onboard .ob-door.on .ob2-ck{background:#000;border-color:#000;}
:root.theme-monolight #device #s-onboard .ob-door.on .ob2-ck::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E");}
:root.theme-monolight #s-onboard[data-obstep="welcome"] .dock .cta[disabled]{background:#2c2c2e;color:#8e8e93;opacity:1;}
/* the video shows more of the lifter: the dark starts lower, the headline sits lower */
:root.theme-monolight #s-onboard[data-obstep="welcome"] .ob-veil{background:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgba(0,0,0,.04) 44%,rgba(0,0,0,.72) 60%,rgba(0,0,0,.92) 74%,#000 100%);}
.ob-bgvid{object-position:50% 18%;}
/* the step rail: fixed under the back rail, hidden on the welcome; the content starts below it */
.ob-steprail{position:absolute;top:calc(var(--top) + 40px);left:26px;right:26px;z-index:3;transition:opacity .3s ease;}
.ob-steprail .ob-steps{margin-bottom:10px;} .ob-steprail .ob-stepk{margin-bottom:0;}
#s-onboard[data-obstep="welcome"] .ob-steprail{opacity:0;pointer-events:none;}
#s-onboard .ob-panel{padding-top:calc(var(--top) + 96px);}
/* (2026-10-20) the fixed header's backing: the page color, with a short fade at its foot, so scrolled content passes
   behind the back link and the step rail instead of showing through them */
.ob-headbg{position:absolute;left:0;right:0;top:0;height:calc(var(--top) + 100px);z-index:2;pointer-events:none;--obbg:#0a0a0b;
  background:linear-gradient(to bottom,var(--obbg) 0%,var(--obbg) 84%,transparent 100%);}
:root.theme-light #s-onboard .ob-headbg{--obbg:#e7e2d8;}
:root.theme-monolight #s-onboard .ob-headbg{--obbg:#fff;}
:root.theme-monolight #s-onboard[data-obstep="review"] .ob-headbg{--obbg:#000;}
#s-onboard[data-obstep="welcome"] .ob-headbg{display:none;}
/* (2026-10-20) day zero: the pick-a-day card fills the space under the hero; the day list scrolls inside the black and
   the white Start pill stays pinned at the card's foot, so nothing on the page scrolls */
#s-brief.d0screen .scroll{overflow:hidden;}
#s-brief.d0screen .bgap{display:none;}
#s-brief.d0screen .nextup.nx-pick{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;margin-bottom:0;}
#s-brief.d0screen .nx-pick .nx-lab,#s-brief.d0screen .nx-pick .head,#s-brief.d0screen .nx-pick .nx-hook,#s-brief.d0screen .nx-pick .nx-cta{flex:none;}
#s-brief.d0screen .nx-pick .nx-days{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
#s-brief.d0screen .nx-pick .nx-days::after{content:"";display:block;height:6px;}
#s-brief.d0screen .nx-pick .nx-cta{margin-top:10px;}
/* (2026-10-20) a note on a lift in the logger: a small icon by the name, a popover on tap */
.pad-noteic{flex:none;width:22px;height:22px;display:inline-grid;place-items:center;background:none;border:0;padding:0;margin-left:-2px;color:var(--steel-2);cursor:pointer;}
.pad-row.sel .pad-noteic{color:var(--paper-dim);}
.pop-backdrop{position:absolute;inset:0;z-index:62;display:flex;align-items:center;justify-content:center;padding:28px;background:rgba(0,0,0,.28);opacity:0;transition:opacity .18s ease;}
.pop-backdrop.show{opacity:1;}
.pop-backdrop .pop{width:100%;max-width:320px;background:var(--card,#fff);color:var(--paper);border-radius:22px;padding:18px 18px 10px;box-shadow:0 18px 48px rgba(0,0,0,.35);transform:translateY(6px) scale(.98);transition:transform .18s ease;}
.pop-backdrop.show .pop{transform:none;}
.pop-h{font-size:17px;font-weight:700;letter-spacing:-.01em;margin-bottom:10px;}
.pop-row{padding:8px 0;border-top:1px solid var(--hair-soft);}
.pop-k{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--steel);margin-bottom:3px;font-weight:600;}
.pop-row p{margin:0;font-size:16px;line-height:1.4;color:var(--paper);}
.pop-edit{display:block;width:100%;margin-top:6px;padding:12px 0 6px;background:none;border:0;border-top:1px solid var(--hair-soft);color:var(--lume-text);font:inherit;font-weight:600;font-size:15px;cursor:pointer;}
:root.theme-monolight #device .pop-backdrop .pop{background:#fff;color:#000;}
:root.theme-monolight #device .pop-row p{color:#000;} :root.theme-monolight #device .pop-edit{color:#1a9e3f;}

/* (2026-10-20) Today's Next up card, the day-zero shape: the card fills the room down to the tab bar, the lift list scrolls
   inside it, the Start pill stays pinned at the card's bottom edge. No floating Start bar. The list keeps two rows of room
   at least, so a very short screen scrolls the page instead of crushing the card. */
#s-brief:not(.d0screen) .nextup.nx-card{flex:1 1 auto;min-height:222px;display:flex;flex-direction:column;margin-bottom:0;}
#s-brief:not(.d0screen) .nx-card .nx-lab,#s-brief:not(.d0screen) .nx-card .head,#s-brief:not(.d0screen) .nx-card .hook,#s-brief:not(.d0screen) .nx-card .nx-cta{flex:none;}
#s-brief:not(.d0screen) .nx-card .nx-list{flex:1 1 auto;min-height:48px;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
#s-brief:not(.d0screen) .nx-card .nx-list::after{content:"";display:block;height:6px;}
#s-brief:not(.d0screen) .nx-card .nx-cta{margin-top:10px;}
#s-brief .nx-float{display:none;}
#device .screen.over-ins{z-index:61 !important;}   /* (2026-10-20) the lift page opened from Session insights: above that page (z 60) going in and coming back */
/* (2026-10-21) the set-pair chart with six or more sets: tighter bars and smaller labels so seven pairs fit the card
   (no overflow rule: the weight labels hang below the bar row and any overflow setting clips them) */
.li-bar{min-width:0;}
.li-bars.pairs.sets.dense .li-pair{gap:6px;padding:0 4px;}
.li-bars.pairs.sets.dense .li-pair + .li-pair::before{left:-2px;width:4px;}
.li-bars.dense .li-bar i{font-size:9px;letter-spacing:-.04em;}
:root.type-modern .li-bars.dense .li-bar i{font-size:9px;}
.li-bars.dense .li-bar b{width:100%;}

/* ===== Balance (2026-10-21): Progress > Balance. A week grid under the verdict word (steps, active minutes, sleep,
   lifting), chips for today, a dashed ask while a row has no source, then the cards on the white part (.ov-below).
   Row colors: steps green, active blue, sleep lavender; lifting up green, held gray, under wax, a record day the record
   gradient. Misses dim at their fill level, days ahead dashed, a row or night with no source dashed too. */
.bal-meter{margin-bottom:16px;}
.bal-grid{display:grid;grid-template-columns:56px repeat(7,minmax(0,1fr));gap:6px 5px;align-items:center;}
.bal-rl{font-size:13px;color:var(--steel);}
.bal-rl.dim{color:var(--steel);opacity:.55;}
.bal-cell{height:30px;border-radius:7px;background:rgba(var(--tint),.08);position:relative;overflow:hidden;}
.bal-cell i{position:absolute;left:0;right:0;bottom:0;border-radius:7px;background:var(--bal-c);}
.bal-cell.miss i{opacity:.38;}
.bal-cell.today i{opacity:.7;}
.bal-cell.future,.bal-cell.nodata{background:transparent;border:1px dashed rgba(var(--tint),.22);}
.bal-cell.steps{--bal-c:#30d158;}.bal-cell.active{--bal-c:#0a84ff;}.bal-cell.sleep{--bal-c:#9a9ee8;}
.bal-lift{height:30px;border-radius:7px;background:rgba(var(--tint),.08);display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:700;color:var(--paper);}
.bal-lift.up{background:#30d158;color:#000;}
.bal-lift.held{background:rgba(var(--tint),.22);color:var(--paper);}
.bal-lift.down{background:#c2472f;color:#fff;}
.bal-lift.rec{background:linear-gradient(135deg,var(--rec-a,#ff5ea8),var(--rec-b,#8a5cff));color:#fff;}
.bal-lift.off{background:transparent;}
.bal-lift.future{background:transparent;border:1px dashed rgba(var(--tint),.22);}
.bal-lift.todaycell{background:rgba(var(--tint),.08);}
.bal-lift.sets{flex-direction:column;gap:2px;font-size:13px;line-height:1;}
.bal-lift.sets small{font-size:9px;font-weight:600;opacity:.75;}
@media (max-width:389px){.bal-lift.sets small{display:none;}.bal-lift.sets{font-size:14px;}}
.bal-days{display:grid;grid-template-columns:56px repeat(7,minmax(0,1fr));gap:5px;margin-top:4px;}
.bal-days span{text-align:center;font-family:var(--mono);font-size:11px;color:var(--steel);}
.bal-days span.today{color:#30d158;font-weight:700;}
.bal-chips{display:flex;gap:8px;margin-top:22px;flex-wrap:wrap;}
.bal-chip{background:rgba(var(--tint),.08);border-radius:999px;padding:8px 13px;font-size:14px;color:var(--paper-dim);}
.bal-chip b{color:var(--paper);font-weight:600;}
.bal-chip.warn{background:rgba(194,71,47,.18);color:#f0a08c;}
.bal-chip.warn b{color:#f0a08c;}
.bal-promo{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;padding:12px 14px;border:1px dashed rgba(var(--tint),.25);border-radius:14px;}
.bal-promo span{font-size:14px;color:var(--steel);line-height:1.35;}
.bal-on{font:inherit;font-size:14px;font-weight:600;color:var(--paper);white-space:nowrap;background:rgba(var(--tint),.1);border:0;border-radius:999px;padding:8px 13px;}
.bal-card{margin-bottom:12px;}
.bal-card .ss-when{display:flex;align-items:center;gap:6px;flex-wrap:wrap;letter-spacing:.02em;}
.bal-tag{font-size:11px;letter-spacing:.04em;color:var(--steel);border:1px solid var(--line-2);border-radius:999px;padding:3px 9px;}
.bal-ev{display:flex;gap:10px;margin-top:12px;}
.bal-ev div{flex:1;background:rgba(var(--tint),.07);border-radius:14px;padding:10px 12px;min-width:0;}
.bal-ev b{display:block;font-size:20px;font-weight:800;letter-spacing:-.02em;color:var(--paper);font-variant-numeric:tabular-nums;}
.bal-ev b.g{color:#1a9e3f;}
.bal-ev span{font-size:11px;color:var(--steel);line-height:1.2;display:block;margin-top:3px;}
.ov-below .bal-card + .ss-card,.ov-below .ss-card + .ss-card{margin-top:12px;}
.ov-below > .ss-card{width:auto;}
/* the line Overview borrows (Stay in shape): the word, a 7-day strip, a chevron; tapping opens the tab */
.bal-line{display:flex;justify-content:space-between;align-items:center;width:100%;margin:-6px 0 20px;padding:14px 16px;background:rgba(var(--tint),.07);border:0;border-radius:16px;color:var(--paper);font:inherit;text-align:left;}
.bal-line > span{display:flex;flex-direction:column;gap:3px;}
.bal-line .label{font-size:11px;}
.bal-line b{font-family:var(--sans);font-size:17px;font-weight:700;letter-spacing:-.01em;}
.bal-line em{font-style:normal;color:var(--steel);font-size:20px;}
.bal-mini{display:flex;gap:3px;margin-top:3px;}
.bal-mini i{width:12px;height:12px;border-radius:3px;background:#30d158;}
.bal-mini i.off{background:rgba(var(--tint),.14);}
.bal-mini i.warn{background:#c2472f;}
/* Mono light: the grid sits on the black top; the cards on white keep their own tiles */
:root.theme-monolight #device #s-records .ov-below .bal-ev div{background:#fff;}
:root.theme-monolight #device #s-records .ov-below .bal-tag{border-color:#d1d1d6;color:#6e6e73;}
:root.theme-monolight #device #s-records .ov-below .bal-card{background:#f2f2f4;color:#000;}
:root.theme-monolight #device #s-records .ov-below .bal-card h3{color:#000;}
:root.theme-monolight #device #s-records .ov-below .bal-card p{color:#1c1c1e;}
.ov-below.bal-below{margin-top:22px;}
/* Balance: this week's sessions as lines, not story cards */
.bal-sessl{display:flex;flex-direction:column;margin-top:8px;}
.bal-sess{display:flex;align-items:center;gap:12px;width:100%;padding:11px 0;border:0;border-bottom:1px solid var(--hair-soft);background:none;color:var(--paper);font:inherit;text-align:left;}
.bal-sess:last-child{border-bottom:0;}
.bal-sd{flex:none;width:34px;font-size:13px;color:var(--steel);}
.bal-sn{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.bal-sn b{font-size:15px;font-weight:600;}
.bal-sn small{font-size:13px;color:var(--steel);}
.bal-sc{color:var(--steel);font-size:18px;}
:root.theme-monolight #device #s-records .ov-below .bal-sess{border-color:#e2e2e2;}
/* text-only Balance cards: room for the 50px corners on Mono light */
:root.theme-monolight #device #s-records .ov-below .bal-card{padding:30px 32px 30px;}
:root.theme-monolight #device #s-records .ov-below .bal-card .bal-sess{padding-left:0;padding-right:0;}
/* Balance on Mono light: the first card keeps its top padding (the first-child rule above is for the Overview's heading),
   and the white part ends a normal distance under the How link, not a full tab bar's worth */
:root.theme-monolight #device #s-records .ov-below.bal-below > .bal-card:first-child{padding-top:30px !important;}
:root.theme-monolight #device #s-records .ov-below.bal-below{padding-bottom:12px;}
/* Balance: the white part fills whatever is left under the grid, no more (Overview's 60vh floor overshoots here since
   the black part is taller) */
:root.theme-monolight #device #s-records .scroll:has(.bal-below){display:flex;flex-direction:column;}
:root.theme-monolight #device #s-records .scroll:has(.bal-below) > *{flex:none;}
:root.theme-monolight #device #s-records .ov-below.bal-below{min-height:0;flex:1 0 auto;}
/* Body compare on the Mono skins: green = more, blue = less, the silhouette = no change (the plain legend's green ramp
   had been winning over the compare ramp here) */
:root.theme-monolight #device #s-body .b-legend.diff .bar,:root.theme-monodark #device #s-body .b-legend.diff .bar{background:linear-gradient(to top,#3F6E96,#3E8E8A,#2a2a2c,#26904a,#30d158);}
/* Try (getproof.now/try): the record and recap banners drop under the sample-data strip instead of covering it */
body.try .pr-bar{top:calc(var(--sat) + 48px);}
/* Deload (2026-10-22): the close-out question in place of effort, the Balance cell, the session tag */
.co-deload{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;width:100%;margin-bottom:14px;}
.co-deload .co-eb{padding:14px 6px;justify-content:center;min-height:52px;}
.co-deload .co-eb span{white-space:normal;text-align:center;line-height:1.2;margin-top:0;font-size:12px;}
.bal-lift.deload{background:rgba(var(--tint),.22);color:var(--paper);font-size:13px;font-weight:700;}
.sd-tag{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:999px;border:1px solid var(--line-2);font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:none;color:var(--paper-dim);vertical-align:middle;}
.ss-st.deload{color:var(--steel-2);}
/* Try (2026-10-22): the strip is chrome, not an overlay. It takes a fixed 44px under the status bar and every screen's
   head clears it (the top inset grows by the same 44px), so nothing is ever covered. */
.try-bar{height:44px;box-sizing:border-box;}
body.try{--top:110px;}
.try-sheet a.std-p{display:flex;align-items:center;justify-content:center;text-decoration:none;}
@media (max-width:440px){body.try{--top:96px;}}   /* a phone browser has no status bar of its own under the strip */

/* ===== The week deck (2026-10-22): five kinds of page, swiped, each a poster in the app's grammar. Black hero over a
   white panel; the Earned page is the white stamp card; the verdict is white. Every page shares as itself. */
.wd{position:fixed;inset:0;z-index:1000;background:#000;color:#fff;opacity:0;transition:opacity .38s ease;overflow:hidden;touch-action:pan-y;}
.wd.show{opacity:1;}
.wd.on-white{background:#fff;}
.wd-x{position:absolute;top:calc(var(--sat) + 14px);left:16px;z-index:5;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.12);color:#fff;font-size:24px;line-height:40px;}
.wd-sharebtn{position:absolute;top:calc(var(--sat) + 14px);right:16px;z-index:5;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.12);color:#fff;display:grid;place-items:center;}
.wd-sharebtn svg{width:18px;height:18px;}
.wd.on-white .wd-x,.wd.on-white .wd-sharebtn{background:#f2f2f4;color:#000;}
.wd-track{display:flex;height:100%;transition:transform .42s cubic-bezier(.2,.8,.2,1);}
.wd-page{flex:none;width:100%;height:100%;background:#000;color:#fff;position:relative;}
.wd-page.white{background:#fff;color:#000;}
.wd-scroll{height:100%;overflow-y:auto;display:flex;flex-direction:column;}
.wd-top{padding:calc(var(--sat) + 66px) 24px 26px;position:relative;}
.wd-ey{font-size:15px;color:#8e8e93;}
.wd-ey.g{color:#30d158;}
.wd-word{font-family:var(--sans);font-size:42px;line-height:1.04;font-weight:700;letter-spacing:-.025em;margin:8px 0 0;}
.wd-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:24px;}
.wd-days div{display:flex;flex-direction:column;align-items:center;gap:7px;font-size:11px;color:#8e8e93;}
.wd-days i{width:36px;height:36px;border-radius:50%;background:#1c1c1e;display:grid;place-items:center;font-style:normal;font-size:13px;font-weight:700;color:#8e8e93;}
.wd-days i.on{background:#30d158;color:#000;}
.wd-days i.rec{box-shadow:0 0 0 3px #000,0 0 0 5px #30d158;}
.wd-line{font-size:17px;line-height:1.4;color:#d1d1d6;margin:22px 0 0;}
.wd-panel{margin-top:auto;background:#fff;color:#000;padding:22px 24px 120px;flex:none;}
.wd-panel .wd-ey{color:#6e6e73;}
.wd-tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;}
.wd-tiles.three{grid-template-columns:repeat(3,1fr);}
.wd-tile{background:#f2f2f4;border-radius:22px;padding:16px 16px 14px;min-width:0;}
.wd-tile b{display:block;font-size:32px;font-weight:700;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap;}
.wd-tiles.three .wd-tile b{font-size:28px;}
.wd-tile span{display:block;margin-top:6px;font-size:13px;color:#6e6e73;}
.wd-tile em{display:block;font-style:normal;font-size:13px;color:#1a9e3f;margin-top:3px;font-weight:600;}
.wd-rows{margin-top:12px;display:flex;flex-direction:column;}
.wd-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #ececef;font-size:16px;}
.wd-row:last-child{border-bottom:0;}
.wd-row b{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:600;}
.wd-row i{width:24px;height:24px;border-radius:50%;background:#000;color:#fff;display:grid;place-items:center;font-style:normal;font-size:11px;font-weight:700;flex:none;}
/* the lifts page: the drawing bleeds behind the number, the fade starts low so the lifter stays whole */
.wd-lift{padding-top:0;}
.wd-hero{height:440px;margin:0 -24px;display:grid;place-items:center;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 42%,#1c1c1e 0,#000 72%);}
.wd-hero img{width:380px;height:380px;object-fit:cover;border-radius:50%;margin-top:40px;}
.wd-hero:after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,0) 72%,#000 100%);}
.wd-big{position:relative;z-index:1;font-family:var(--sans);font-size:92px;line-height:.92;font-weight:700;letter-spacing:-.05em;margin-top:4px;font-variant-numeric:tabular-nums;}
.wd-big small{font-size:26px;letter-spacing:0;margin-left:8px;color:#8e8e93;font-weight:500;}
.wd-nm{font-size:20px;font-weight:700;margin-top:4px;}
.wd-nm span{color:#8e8e93;font-weight:500;}
.wd-chips{display:flex;gap:6px;margin-top:12px;background:#000;border-radius:22px;padding:12px;}
.wd-chips span{flex:1;min-width:0;background:#1c1c1e;color:#fff;border-radius:12px;padding:10px 0;text-align:center;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;}
.wd-chips span.top{background:linear-gradient(135deg,var(--rec-a,#ff5ea8),var(--rec-b,#8a5cff));color:#fff;}
/* earned: the stamp card look, white page */
.wd-badge{width:240px;height:240px;margin:18px auto 0;}
.wd-badge svg{width:100%;height:100%;}
.wd-bt{font-family:var(--sans);font-size:32px;font-weight:700;letter-spacing:-.025em;line-height:1.05;text-align:center;margin-top:24px;}
.wd-bs{text-align:center;color:#8e8e93;font-size:16px;margin-top:8px;}
.wd-shelf{display:flex;gap:10px;margin-top:12px;}
.wd-shelf span{height:56px;display:block;}
.wd-shelf svg{height:56px;width:auto;}
/* the body: front and back */
.wd-body{display:flex;justify-content:center;height:420px;margin-top:8px;}
.wd-body svg{height:420px;width:auto;}
/* the verdict */
.wd-white{display:flex;flex-direction:column;min-height:100%;padding-bottom:40px;color:#000;}
.wd-white .wd-ey{color:#6e6e73;}
.wd-seal{width:230px;height:230px;margin:24px auto 0;transform:rotate(-8deg);}
.wd-seal svg{width:100%;height:100%;}
.wd-vt{font-family:var(--sans);font-size:40px;font-weight:700;letter-spacing:-.03em;line-height:1;text-align:center;margin-top:30px;}
.wd-vl{text-align:center;font-size:17px;color:#6e6e73;margin-top:10px;}
.wd-run{display:flex;gap:5px;justify-content:center;margin-top:24px;flex-wrap:wrap;}
.wd-run i{width:22px;height:22px;border-radius:50%;background:#000;display:grid;place-items:center;}
.wd-run i:after{content:"";width:8px;height:8px;border-radius:50%;background:#30d158;}
.wd-run i.now{box-shadow:0 0 0 3px #fff,0 0 0 5px #000;}
.wd-white .cta{margin-top:auto;background:#000;color:#fff;border-radius:999px;height:56px;font-size:17px;font-weight:700;border:0;}
.wd-done{background:none;border:0;color:#6e6e73;font:inherit;font-size:15px;margin:14px 0 18px;}
.wd-white{padding-bottom:calc(var(--sab) + 70px);}
.wd-mark{margin-top:28px;font-weight:700;font-size:15px;letter-spacing:-.02em;color:#000;}
.wd-white .wd-mark{margin:0 0 0 0;padding-left:0;}
.wd-dots{position:absolute;left:0;right:0;bottom:calc(var(--sab) + 18px);display:flex;justify-content:center;gap:6px;z-index:4;}
.wd-dots i{display:block;width:6px;height:6px;border-radius:50%;background:#3a3a3c;}
.wd-dots i.on{background:#fff;}
.wd.on-white .wd-dots i{background:#d1d1d6;}.wd.on-white .wd-dots i.on{background:#000;}
/* the deck's choreography: pre = not yet played (pieces hidden), go = the drop, hit = the jolt, panel = the slab is up */
.wd-page.pre .wd-word,.wd-page.pre .wd-big,.wd-page.pre .wd-nm,.wd-page.pre .wd-badge .ms-ink,.wd-page.pre .wd-seal,.wd-page.pre .wd-bt,.wd-page.pre .wd-bs,.wd-page.pre .wd-line,.wd-page.pre .wd-ey{opacity:0;}
.wd-page.play .wd-word,.wd-page.play .wd-big,.wd-page.play .wd-badge .ms-ink,.wd-page.play .wd-seal{opacity:0;}
.wd-page.play .wd-nm,.wd-page.play .wd-bt,.wd-page.play .wd-bs,.wd-page.play .wd-line{opacity:0;transition:opacity .4s ease .1s;}
.wd-page.play .wd-ey{opacity:1;transition:opacity .3s;}
.wd-page.go .wd-nm,.wd-page.go .wd-bt,.wd-page.go .wd-bs,.wd-page.go .wd-line{opacity:1;}
.wd-page.pre .wd-panel,.wd-page.play .wd-panel{transform:translateY(48px);opacity:0;}
.wd-page.panel .wd-panel{transform:none;opacity:1;transition:transform .5s cubic-bezier(.2,.8,.2,1),opacity .35s ease;}
.wd-page.done .wd-panel{transform:none;opacity:1;}
/* the word and the number drop in like the stamp; the page takes the blow */
.wd-page.go .wd-word{opacity:1;transform-origin:0 50%;animation:msDrop .24s cubic-bezier(.55,0,1,.45) backwards,msSquash .34s cubic-bezier(.2,.9,.3,1) .24s;}
.wd-page.go .wd-big{opacity:1;animation:wdLand .3s cubic-bezier(.3,.7,.3,1.35) backwards;}
@keyframes wdLand{0%{opacity:0;transform:translateY(-44px) scale(1.08);}60%{opacity:1;}100%{opacity:1;transform:none;}}
.wd-page.hit .wd-scroll{animation:msShake .5s cubic-bezier(.3,.7,.4,1);}
.wd-page.play .wd-hero img{opacity:.5;transition:opacity .25s ease;}
.wd-page.hit .wd-hero img,.wd-page.done .wd-hero img{opacity:1;}
/* days fill left to right; a record day gets its ring last */
.wd-days i{transition:background .22s ease,color .22s ease,box-shadow .22s ease;}
/* the set chips arrive one by one; the record set lands with flecks */
.wd-page.play .wd-chips span{opacity:0;transform:translateY(10px);transition:opacity .25s ease,transform .3s cubic-bezier(.2,.8,.2,1);}
.wd-page .wd-chips span.in{opacity:1;transform:none;}
.wd-chips span{position:relative;}
.wd-chips .ms-burst{position:absolute;inset:0;display:block;pointer-events:none;}
.wd-chips .ms-burst b{position:absolute;left:50%;top:50%;width:3px;height:9px;margin:-4.5px 0 0 -1.5px;border-radius:2px;background:#fff;opacity:0;}
.wd-chips .ms-burst b:nth-child(1){--a:0deg}.wd-chips .ms-burst b:nth-child(2){--a:30deg}.wd-chips .ms-burst b:nth-child(3){--a:60deg}.wd-chips .ms-burst b:nth-child(4){--a:90deg}.wd-chips .ms-burst b:nth-child(5){--a:120deg}.wd-chips .ms-burst b:nth-child(6){--a:150deg}.wd-chips .ms-burst b:nth-child(7){--a:180deg}.wd-chips .ms-burst b:nth-child(8){--a:210deg}.wd-chips .ms-burst b:nth-child(9){--a:240deg}.wd-chips .ms-burst b:nth-child(10){--a:270deg}.wd-chips .ms-burst b:nth-child(11){--a:300deg}.wd-chips .ms-burst b:nth-child(12){--a:330deg}
.wd-chips span.land{animation:msSquash .34s cubic-bezier(.2,.9,.3,1);}
.wd-chips span.land .ms-burst b{animation:wdFleck .46s cubic-bezier(.2,.8,.3,1) both;}
@keyframes wdFleck{0%{opacity:1;transform:rotate(var(--a)) translateY(-26px) scaleY(.4);}35%{opacity:1;}100%{opacity:0;transform:rotate(var(--a)) translateY(-44px) scaleY(1);}}
.wd-page.play .wd-rows{opacity:0;transform:translateY(10px);transition:opacity .35s ease,transform .4s cubic-bezier(.2,.8,.2,1);}
.wd-page.rows .wd-rows,.wd-page.done .wd-rows{opacity:1;transform:none;}
/* the badge: the stamp drop, the flecks, the coin for a hundred (the milestone card's own moves) */
.wd-badge{position:relative;}
.wd-badge .ms-ink{position:absolute;inset:0;display:block;}
.wd-badge .ms-burst i{background:#fff;}
.wd-page.go .wd-badge .ms-ink{opacity:1;animation:msDrop .24s cubic-bezier(.55,0,1,.45) backwards,msSquash .34s cubic-bezier(.2,.9,.3,1) .24s;}
.wd-page.coin.go .wd-badge .ms-ink{animation:msCoin 1.15s cubic-bezier(.3,.55,.45,1) backwards;}
.wd-page.hit .wd-badge .ms-burst i{animation:msFleck .46s cubic-bezier(.2,.8,.3,1) both;}
.wd-page.coin .wd-badge .ms-burst i{background:#d9a514;}
.wd-page.play .wd-shelf,.wd-page.play .wd-panel .wd-rows{transition:opacity .4s ease .2s;}
/* the body fills in the order the week trained it */
.wd-body path{transition:fill .35s ease;}
/* the seal presses on, then the run stamps, then the button */
.wd-page.go .wd-seal{opacity:1;animation:wdSeal .3s cubic-bezier(.55,0,1,.45) backwards,wdSealSettle .36s cubic-bezier(.2,.9,.3,1) .3s;}
@keyframes wdSeal{0%{opacity:0;transform:scale(1.6) rotate(-18deg);filter:blur(3px);}50%{opacity:1;filter:blur(0);}100%{opacity:1;transform:scale(1) rotate(-8deg);}}
@keyframes wdSealSettle{0%{transform:scale(1.08,.9) rotate(-8deg);}45%{transform:scale(.97,1.03) rotate(-8deg);}100%{transform:scale(1) rotate(-8deg);}}
.wd-page.play .wd-run i{opacity:0;transform:scale(.4);transition:opacity .18s ease,transform .22s cubic-bezier(.2,.8,.2,1.4);}
.wd-page .wd-run i.in,.wd-page.done .wd-run i{opacity:1;transform:none;}
.wd-page.play .wd-white .cta,.wd-page.play .wd-done{opacity:0;transition:opacity .4s ease;}
.wd-page.cta-in .wd-white .cta,.wd-page.cta-in .wd-done,.wd-page.done .wd-white .cta,.wd-page.done .wd-done{opacity:1;}
@media (prefers-reduced-motion:reduce){.wd-page.go .wd-word,.wd-page.go .wd-big,.wd-page.go .wd-badge .ms-ink,.wd-page.go .wd-seal,.wd-page.hit .wd-scroll{animation:none;}}
.wk-play{display:block;width:100%;background:none;border:0;padding:0;margin:0;font:inherit;letter-spacing:inherit;line-height:inherit;color:#30d158;cursor:pointer;}
/* deck tweaks (2026-10-22): black tiles, the final page inverted, a nav bar instead of dots and side taps, the seal as the mark */
.wd-tile{background:#000;color:#fff;}
.wd-tile span{color:#a1a1a6;}
.wd-tile em{color:#30d158;}
.wd-tiles.three .wd-tile{padding:22px 18px 18px;}
.wd-tiles.three .wd-tile b{font-size:44px;}
.wd-tiles.three .wd-tile span{font-size:14px;margin-top:8px;}
.wd-panel{padding-bottom:150px;}
.wd-page.final{background:#000;color:#fff;}
.wd-final{display:flex;flex-direction:column;min-height:100%;color:#fff;padding-bottom:140px;justify-content:center;}
.wd-final .wd-ey{color:#8e8e93;position:absolute;top:calc(var(--sat) + 66px);left:24px;}
.wd-seal svg{filter:invert(1) hue-rotate(180deg);}
.wd-vl{color:#8e8e93;}
.wd-run i{background:#fff;}
.wd-run i.now{box-shadow:0 0 0 3px #000,0 0 0 5px #fff;}
.wd-logo{position:absolute;top:calc(var(--sat) + 19px);left:50%;width:30px;height:30px;margin-left:-15px;z-index:5;pointer-events:none;}
.wd-logo svg{width:30px;height:30px;}
.wd-nav{position:absolute;left:0;right:0;bottom:calc(var(--sab) + 14px);z-index:6;display:flex;align-items:center;justify-content:space-between;padding:0 18px;gap:12px;}
.wd-prev,.wd-next{width:56px;height:56px;border-radius:50%;border:0;background:rgba(255,255,255,.12);color:#fff;font-size:30px;line-height:56px;font-weight:600;flex:none;}
.wd-prev.off{opacity:.25;pointer-events:none;}
.wd-next.last{background:#30d158;color:#000;font-size:24px;}
.wd-shareall{flex:1;height:56px;border-radius:999px;border:0;background:#fff;color:#000;font:inherit;font-size:17px;font-weight:700;}
.wd-page.final .wd-shareall{background:#fff;}
.wd-x{background:rgba(255,255,255,.12);color:#fff;}
/* the nav is its own black band under every page (the pages end above it), so arrows and the share pill always read */
.wd-track{height:calc(100% - 92px - var(--sab));}
.wd-nav{bottom:0;height:calc(92px + var(--sab));background:#000;padding:18px 18px 0;box-sizing:border-box;align-items:flex-start;}
.wd-panel{padding-bottom:36px;}
.wd-final{padding-bottom:40px;}
/* the row under Today's dots is one fixed line on every week */
.wk-streak{display:block;height:18px;line-height:18px;}
/* the nav is white with a hairline under the pages that end white; it turns black under the sealed page */
.wd-nav{background:#fff;border-top:1px solid #ececef;transition:background .35s ease,border-color .35s ease;}
.wd-prev,.wd-next{background:#f2f2f4;color:#000;transition:background .35s ease,color .35s ease;}
.wd-shareall{background:#000;color:#fff;transition:background .35s ease,color .35s ease;}
.wd-next.last{background:#30d158;color:#000;}
.wd.on-final .wd-nav{background:#000;border-top-color:#000;}
.wd.on-final .wd-prev,.wd.on-final .wd-next{background:rgba(255,255,255,.12);color:#fff;}
.wd.on-final .wd-shareall{background:#fff;color:#000;}
.wd.on-final .wd-next.last{background:#30d158;color:#000;}
/* the pad's rest timer: a drawn clock, one step up in size, centred on the digits (the ◷ glyph sat low) */
.pad-rest .pr-ic{padding:0 5px 0 11px;line-height:0;}
.pad-rest .pr-ic svg{display:block;}
