/* Swiss: the app's only look (app/lib/style.js sets it; Current, the pixel
   style, was retired 2026-10-25 and has no switch).
   Ported from the design sandbox's 2026-10-swiss: off-white page, black type,
   one red accent, hairline rules, no shadows. Light and dark.

   Every rule here is scoped to :root[data-style="swiss"] and layers over
   app.css, which stays as the base.
   It restyles the real pages: same controls, same data, same Save.

   Its palette lives here, not in app.css's palette blocks (tools/theme.py
   and the theme lab own those, and they are Current's). Dark comes twice,
   once for the system setting and once for the data-theme toggle, like
   app.css; tests/test_swiss_css.py keeps the two copies identical.

   Sprites: smaller and quieter, and only where they mean something (the
   loading ball, the Log birds, Review's duck and its cleared GIF, the Home
   stage). The header pictures and the Home tile icons are hidden. */

/* -- palette: app.css's own colour tokens, re-set -- */
:root[data-style="swiss"]{
  color-scheme:light;
  --paper:#F7F6F2; --panel:#F7F6F2; --panel2:#FFFFFF;
  --ink:#111111; --ink2:#6B6862; --rule:#CFCCC4; --rule2:#E2DFD8;
  --shade:transparent;
  --steel:#C8281E; --moss:#2F6B3A; --ochre:#A35F00; --signal:#C8281E;
  --accent:#C8281E; --swiss-mute:#9C988F;
  --swiss-btn:#C8281E; --swiss-on-btn:#FFFFFF; --swiss-sheet:#FFFFFF;
  --swiss-effort:#8F6400; --swiss-danger:#8E1B14;
}
@media (prefers-color-scheme:dark){
  :root[data-style="swiss"]:not([data-theme="light"]){
    color-scheme:dark;
    --paper:#141413; --panel:#141413; --panel2:#1E1E1C;
    --ink:#EDEBE6; --ink2:#A29E96; --rule:#3A3935; --rule2:#2A2927;
    --shade:transparent;
    --steel:#F2554A; --moss:#7DB487; --ochre:#E0A050; --signal:#F2554A;
    --accent:#F2554A; --swiss-mute:#77736C;
    --swiss-btn:#C8281E; --swiss-on-btn:#FFFFFF; --swiss-sheet:#1E1E1C;
    --swiss-effort:#D9A23A; --swiss-danger:#D9483D;
  }
}
:root[data-style="swiss"][data-theme="dark"]{
    color-scheme:dark;
    --paper:#141413; --panel:#141413; --panel2:#1E1E1C;
    --ink:#EDEBE6; --ink2:#A29E96; --rule:#3A3935; --rule2:#2A2927;
    --shade:transparent;
    --steel:#F2554A; --moss:#7DB487; --ochre:#E0A050; --signal:#F2554A;
    --accent:#F2554A; --swiss-mute:#77736C;
    --swiss-btn:#C8281E; --swiss-on-btn:#FFFFFF; --swiss-sheet:#1E1E1C;
    --swiss-effort:#D9A23A; --swiss-danger:#D9483D;
}

/* -- type and outlines: app.css's style tokens, re-set -- */
:root[data-style="swiss"]{
  /* Helvetica Neue is on every iPhone and Mac; Arial stands in elsewhere.
     No web font: nothing new to load, license or cache. */
  --disp:"Helvetica Neue",Helvetica,Arial,sans-serif;
  --body:"Helvetica Neue",Helvetica,Arial,sans-serif;
  /* Numbers read in the same face, tabular. Real monospace is kept for the
     few blocks whose columns are spaces (--swiss-code). */
  --mono:"Helvetica Neue",Helvetica,Arial,sans-serif;
  --swiss-code:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  --fw-disp:700; --fw-strong:600;
  --tt-title:none; --tt-btn:none; --tt-label:none;
  --ls-flat:-.035em; --ls-head:-.02em; --ls-pick:0; --ls-btn:0; --ls-xs:0; --ls-s:0;
  --ls-progress:0; --ls-m:0; --ls-label:0; --ls-l:0;
  --lh-title:.92;
  --fs-micro:11px; --fs-tiny:11px; --fs-label:12px; --fs-data-s:12px; --fs-data:13px;
  --fs-ui:14px; --fs-h-tile:22px; --fs-h-card:22px; --fs-stat:34px; --fs-count:34px;
  --fs-h1-min:36px; --fs-h1-max:56px; --fs-page-max:48px;

  --bw:1px; --bw-mid:2px; --bw-thick:2px; --bw-accent:2px; --bw-wk:1px;
  --shadow:0px; --shadow-press:0px; --shadow-wk:0px;
  --sp-card-x:12px; --sp-wk-x:0px; --sp-wk-stack:24px;
  /* Today's Workout: the smallest text (the recent-day dates' size), the
     section headings, and the set boxes. */
  --swiss-fs-floor:13px; --swiss-fs-section:20px;
  --swiss-bw-set:2px; --swiss-bw-set-gap:4px;
  --swiss-ico-trash:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18M8 6V3h8v3M6 6l1 15h10l1-15M10 10v7M14 10v7'/%3E%3C/svg%3E");
}

/* Swiss tokens: every size, gap, weight and box in the rules below, by name,
   so the theme lab can change them without touching a rule. One value each,
   the same in light and dark (box colours name a palette colour, so they
   follow the mode). One token per line, each with its scope ("global" or
   "screen: <page>") and where it shows up. Names never reuse one of
   app.css's style tokens (tests/test_swiss_css.py checks), since the block
   above re-sets those.

   Set on <body>, not :root, so a box colour reads the palette where a page
   override of a colour lands.

   Boxes: --box-<group>-<thing> is the border width per side, top right
   bottom left (0 on a side = no line there; all four = a full box), and
   --boxc-<group>-<thing> is its colour. Groups: lines (header and footer
   rules, list hairlines), cards, inputs, buttons, toggles, sets.

   Left as plain values on purpose: focus rings, the select arrow, the
   loading ball's sprite maths, the Style switch's own sizes, and anything
   structural (display, grid, scrolling). No nested braces in this block. */
:root[data-style="swiss"] body{
  /* -- type -- */
  --fs-sw-label:12px;      /* global: small grey labels: back link, field labels, footer, card and question kinds, stat labels, Home tile numbers, Review section heads and h3, verdict sublabels, cue dates, onboarding count and "or", Workout mini labels and exercise-head tags */
  --fs-sw-back:16px;       /* global: the back link at the top of every page (Home, then the page title once scrolled) */
  --fs-sw-tag:11px;        /* global: tiny tags: pending tile link (Home), facts labels (Review), cue tags, onboarding gym tags */
  --fs-sw-note:13px;       /* global: secondary copy: header sub, hints, notes, chip dates, Review progress, facts, "show more", text links, Workout exercise sub-line */
  --fs-sw-copy:14px;       /* global: short copy: Home tile blurbs, the Log birds' speech */
  --fs-sw-code:12px;       /* global: monospace blocks: Log output, card evidence (Review) */
  --fs-sw-raw:12px;        /* screen: workout -- the raw set line under each set */
  --fs-sw-input:17px;      /* global: text, date and email inputs, selects (Workout's too) */
  --fs-sw-otp:22px;        /* global: the sign-in code input (onboarding) */
  --fs-sw-textarea:14px;   /* global: textareas (Log, Workout notes) */
  --fs-sw-seg:15px;        /* global: segmented pickers (gym, lb/kg-style choices) */
  --fs-sw-seg-big:17px;    /* global: big segmented pickers */
  --fs-sw-unit:12px;       /* global: the lb | kg switch */
  --fs-sw-act:18px;        /* global: the red main-action button */
  --fs-sw-addsearch:18px;  /* global: the "+ Add an exercise" search box (Workout picker, Exercises page) */
  --fs-sw-ghost:16px;      /* global: secondary action buttons (underlined) */
  --fs-sw-row:15px;        /* global: list rows: search results, recognised lines, pending items */
  --fs-sw-chip:16px;       /* global: recent-day chips (Workout, Log) */
  --fs-sw-tile:22px;       /* screen: home -- tile headings */
  --fs-sw-tile-first:26px; /* screen: home -- the first tile's heading */
  --fs-sw-qhead:24px;      /* screen: review -- question card heading */
  --fs-sw-qbtn:14px;       /* screen: review -- Back/Next, Accept, Clear */
  --fs-sw-ob-back:13px;    /* global: onboarding's back button */
  --fs-sw-ob-h3:18px;      /* global: onboarding custom/import headings */
  --fs-sw-ex:24px;         /* screen: workout -- exercise name, open */
  --fs-sw-ex-folded:20px;  /* screen: workout -- exercise name, folded */
  --fs-sw-ctx:13px;        /* screen: workout -- the Last / PR / Target / Cues block */
  --fs-sw-num:22px;        /* screen: workout -- weight and reps boxes */
  --fs-sw-step:22px;       /* screen: workout -- the minus and plus marks */
  --fs-sw-setlabel:13px;   /* screen: workout -- Set N / Warm / Ramp label */
  --fs-sw-wktag:13px;      /* screen: workout -- set options, effort, pain parts, remove */
  --fs-sw-wknote:16px;     /* screen: workout -- the per-set note input */
  --fs-sw-fold:15px;       /* screen: workout -- Setup, Cue, Other, Pain, Notes headings */
  --fs-sw-sev:14px;        /* screen: workout -- pain severity 1 2 3 */
  --fs-sw-wkunit:12px;     /* screen: workout -- lb/kg inside the weight box */
  --fs-sw-variant:15px;    /* screen: workout -- the (variant) after the exercise name */
  --fs-sw-subresult:14px;  /* screen: workout -- a parent's variants under a search result */
  --sz-sw-setlabel:2px;    /* screen: workout -- WARM / SET 1 box border, thicker than the effort toggles */
  --sz-sw-check:26px;      /* screen: workout -- the One sided checkbox square */
  --fs-sw-exgroup:20px;    /* screen: exercises -- muscle group heading */
  --fs-sw-exparent:17px;   /* screen: exercises -- an exercise name in the list */
  --fs-sw-exvariant:15px;  /* screen: exercises -- a variant's name */
  --fs-sw-exbtn:15px;      /* screen: exercises -- Hide, Edit, Retire, Restore, Undo */
  --sp-sw-exrow:10px;      /* screen: exercises -- list rows, above and below */
  --sp-sw-exgap:16px;      /* screen: exercises -- between action buttons */
  --fs-sw-exjump:15px;     /* screen: exercises -- the muscle group links at the top */
  --sp-sw-exjump-y:8px;    /* screen: exercises -- muscle group links, between rows */
  --sp-sw-exadd:24px;      /* screen: exercises -- the Add new form, space above and below */

  /* -- weights, line height, letter spacing -- */
  --fw-sw-head:700;        /* global: bold heads: Workout exercise name, chip names, Home tile numbers, Reorder names, highlighted words */
  --fw-sw-act:700;         /* global: the red main-action button */
  --fw-sw-addsearch:700;   /* global: the "+ Add an exercise" search box */
  --fw-sw-ghost:500;       /* global: secondary action buttons */
  --fw-sw-num:500;         /* global: big numbers: Home stats, Review progress count, Workout weight and reps */
  --fw-sw-sub:600;         /* global: semibold: Review h3, cue dates, Workout context labels, pain part names */
  --fw-sw-seg-on:500;      /* global: the picked segment */
  --fw-sw-picked:700;      /* screen: workout -- picked set option and effort, the Set N label */
  --fw-sw-verdict-on:600;  /* screen: review -- the picked verdict */
  --lh-sw-note:1.6;        /* global: header sub, notes */
  --lh-sw-hint:1.5;        /* global: hints */
  --lh-sw-foot:1.7;        /* global: footer */
  --lh-sw-qhead:1.1;       /* screen: review -- question card heading */
  --lh-sw-ex:1.05;         /* screen: workout -- exercise name */
  --ls-sw-num:-.03em;      /* global: big numbers: Home stats, Review progress count */
  --ls-sw-ex:-.02em;       /* screen: workout -- exercise name */
  --ls-sw-otp:.4em;        /* global: the sign-in code input (onboarding) */

  /* -- spacing -- */
  --sp-sw-back:8px;        /* global: space under the back link, above its rule */
  --sp-sw-ob-back:6px;     /* global: onboarding back button, above and below */
  --sp-sw-field:18px;      /* global: space above each field */
  --sp-sw-label:2px;       /* global: space under a field label */
  --sp-sw-input-y:8px;     /* global: inputs and selects, above and below the text */
  --sp-sw-textarea:10px;   /* global: textarea padding */
  --sp-sw-seg-gap:6px;     /* global: between segmented picker boxes */
  --sp-sw-seg-y:12px;      /* global: segmented picker box, above and below */
  --sp-sw-seg-x:8px;       /* global: segmented picker box, sides */
  --sp-sw-seg-big-y:18px;  /* global: big segmented picker box, above and below */
  --sp-sw-gym-x:16px;      /* screen: workout -- gym boxes, sides */
  --sp-sw-unit-gap:4px;    /* global: between lb and kg */
  --sp-sw-unit-y:5px;      /* global: lb | kg box, above and below */
  --sp-sw-unit-x:10px;     /* global: lb | kg box, sides */
  --sp-sw-act:16px;        /* global: main-action button padding */
  --sp-sw-addsearch:16px;  /* global: the "+ Add an exercise" search box, padding */
  --sp-sw-act-gap:12px;    /* global: main-action button, label to arrow */
  --sp-sw-card-y:4px;      /* global: messages, cards, cue and group blocks, above and below */
  --sp-sw-card-x:12px;     /* global: messages, cards, cue and group blocks, rule to text */
  --sp-sw-row:10px;        /* global: list rows, template rows, onboarding gym rows, above and below */
  --sp-sw-chip-gap:20px;   /* global: between recent-day chips */
  --sp-sw-chip:8px;        /* global: recent-day chip, above and below */
  --sp-sw-words:14px;      /* global: space under the page title block */
  --sp-sw-stats-gap:16px;  /* screen: home -- between stat columns */
  --sp-sw-stat:10px;       /* screen: home -- stat, above and below */
  --sp-sw-nav:8px;         /* screen: home -- space above the tile list */
  --sp-sw-tile:14px;       /* screen: home -- tile row, above and below */
  --sp-sw-tile-index:44px; /* screen: home -- the tile number column */
  --sp-sw-qcard:12px;      /* screen: review -- question card, above and below */
  --sp-sw-facts-gap:16px;  /* screen: review -- between fact columns */
  --sp-sw-fact:6px;        /* screen: review -- fact, above and below */
  --sp-sw-section:10px;    /* screen: review -- question card section, above and below */
  --sp-sw-verdict-gap:6px; /* screen: review -- between verdict buttons */
  --sp-sw-ex-top:12px;     /* screen: workout -- exercise, space under its top rule */
  --sp-sw-ex-bottom:8px;   /* screen: workout -- exercise, space at the bottom */
  --sp-sw-ex-gap:10px;     /* screen: workout -- between parts of an exercise */
  --sp-sw-ex-head-y:8px;   /* screen: workout -- exercise heading band, space above and below the name */
  --sp-sw-ex-head-x:10px;  /* screen: workout -- exercise heading band, space after its left bar */
  --sz-sw-rail:10px;       /* screen: workout -- the red line down each exercise, its width; tapping it folds the card */
  --sp-sw-rail-gap:2px;    /* screen: workout -- the red line's gap from the card's left edge */
  --sp-sw-exlist-top:12px; /* screen: workout -- the exercise box, space above it */
  --sp-sw-exlist-x:8px;    /* screen: workout -- the exercise box, inside space left and right of the cards */
  --sp-sw-ctx-y:2px;       /* screen: workout -- context block, above and below */
  --sp-sw-ctx-x:10px;      /* screen: workout -- context block, rule to text */
  --sp-sw-set:10px;        /* screen: workout -- set row, above and below */
  --sp-sw-set-gap:8px;     /* screen: workout -- between parts of a set row */
  --sp-sw-num:6px;         /* screen: workout -- weight and reps boxes, above and below */
  --sp-sw-wktag-y:8px;     /* screen: workout -- set option, effort and severity boxes, above and below; Set N label */
  --sp-sw-wktag-x:8px;     /* screen: workout -- set option boxes, sides */
  --sp-sw-effort-x:9px;    /* screen: workout -- effort boxes, sides */
  --sp-sw-sev-x:6px;       /* screen: workout -- severity boxes, sides */
  --sp-sw-opt-narrow-x:3px; /* screen: workout -- set option sides on phones under 400pt */
  --sp-sw-opt-gap:4px;     /* screen: workout -- between set options and effort boxes */
  --sp-sw-grip-rail:4px;   /* screen: workout -- the left move handle, gap above the red line */
  --sp-sw-grip-gap:18px;   /* screen: workout -- folded exercise, gap between the right move handle and the trash can */

  /* -- tap sizes and sprites -- */
  --sz-sw-tap:44px;        /* global: least height of pickers, secondary buttons, the Add button */
  --sz-sw-calcell:52px;    /* screen: calendar -- least height of a day cell */
  --sz-sw-caldot:6px;      /* screen: calendar -- the workout-day dot */
  --sz-sw-act:56px;        /* global: least height of the main-action button */
  --sz-sw-addsearch:56px;  /* global: least height of the "+ Add an exercise" search box */
  --sz-sw-wktag:38px;      /* screen: workout -- least height of set options, effort and severity; icon button width */
  --sz-sw-grip:28px;       /* screen: workout -- move handle (three lines), its height */
  --sz-sw-calbtn:76px;     /* global: the calendar button's height, about two lines of a page title */
  --sz-sw-wordmark-s:252px; /* screen: home -- Shredimentary wordmark width on phones (2 px per art px) */
  --sz-sw-wordmark-m:378px; /* screen: home -- wordmark width from 517px wide (3 px per art px) */
  --sz-sw-wordmark-l:504px; /* screen: home -- wordmark width from 643px wide (4 px per art px) */
  --sz-sw-wkico-narrow:32px; /* screen: workout -- icon button width on phones under 400pt */
  --zoom-sw-sprite:.6;     /* global: the Home stage and header sprite box, scale */
  --zoom-sw-birds:.75;     /* screen: log -- the birds' floor, scale */

  /* -- boxes: lines -- */
  --box-lines-header:0 0 2px 0;        /* global: rule under the page header */
  --boxc-lines-header:var(--ink);      /* global: rule under the page header */
  --box-lines-back:0 0 2px 0;          /* global: rule under the back link */
  --boxc-lines-back:var(--ink);        /* global: rule under the back link */
  --box-lines-footer:1px 0 0 0;        /* global: rule over the footer */
  --boxc-lines-footer:var(--rule);     /* global: rule over the footer */
  --box-lines-list:1px 0 0 0;          /* global: rule over a list (results, recognised lines, pending) */
  --boxc-lines-list:var(--rule);       /* global: rule over a list */
  --box-lines-row:0 0 1px 0;           /* global: rule under each list row */
  --boxc-lines-row:var(--rule);        /* global: rule under each list row */
  --box-lines-chip:1px 0 0 0;          /* global: rule over each recent-day chip */
  --boxc-lines-chip:var(--rule);       /* global: rule over each recent-day chip */
  --box-lines-mine:1px 0 0 0;          /* screen: workout -- rule over "Start from my template" */
  --boxc-lines-mine:var(--rule);       /* screen: workout -- rule over "Start from my template" */
  --box-lines-mine-row:0 0 1px 0;      /* screen: workout -- rule under each template row */
  --boxc-lines-mine-row:var(--rule);   /* screen: workout -- rule under each template row */
  --box-lines-tile:0 0 1px 0;          /* screen: home -- rule under each tile */
  --boxc-lines-tile:var(--rule);       /* screen: home -- rule under each tile */
  --box-lines-facts:1px 0 0 0;         /* screen: review -- rule over the facts */
  --boxc-lines-facts:var(--rule);      /* screen: review -- rule over the facts */
  --box-lines-section:1px 0 0 0;       /* screen: review -- rule over each question card section */
  --boxc-lines-section:var(--rule);    /* screen: review -- rule over each question card section */
  --box-lines-cuelog:0 0 0 1px;        /* screen: cues -- the timeline rule */
  --boxc-lines-cuelog:var(--rule);     /* screen: cues -- the timeline rule */
  --box-lines-gyms:1px 0 0 0;          /* global: rule over onboarding's gym list */
  --boxc-lines-gyms:var(--rule);       /* global: rule over onboarding's gym list */
  --box-lines-gym-row:0 0 1px 0;       /* global: rule under each onboarding gym */
  --boxc-lines-gym-row:var(--rule);    /* global: rule under each onboarding gym */
  --box-lines-ob-group:1px 0 0 0;      /* global: rule over each onboarding group */
  --boxc-lines-ob-group:var(--rule);   /* global: rule over each onboarding group */
  --box-lines-fold:1px 0 0 0;          /* screen: workout -- rule over Setup, Cue, Other, Pain, Notes */
  --boxc-lines-fold:var(--rule);       /* screen: workout -- rule over Setup, Cue, Other, Pain, Notes */

  /* -- boxes: cards -- */
  --box-cards-card:0 0 0 2px;          /* global: messages and cards (left rule; its colour changes with the kind) */
  --boxc-cards-card:var(--ink2);       /* global: messages and cards, plain */
  --box-cards-stat:2px 0 0 0;          /* screen: home -- rule over each stat */
  --boxc-cards-stat:var(--ink);        /* screen: home -- rule over each stat */
  --box-cards-qcard:2px 0 0 0;         /* screen: review -- rule over the question card */
  --boxc-cards-qcard:var(--ink);       /* screen: review -- rule over the question card (red when urgent) */
  --box-cards-claude:0 0 0 2px;        /* screen: review -- Claude's note */
  --boxc-cards-claude:var(--ink);      /* screen: review -- Claude's note */
  --box-cards-group:0 0 0 2px;         /* screen: review -- grouped rows block */
  --boxc-cards-group:var(--ochre);     /* screen: review -- grouped rows block */
  --box-cards-ev:1px 1px 1px 1px;      /* screen: review -- card evidence block */
  --boxc-cards-ev:var(--rule2);        /* screen: review -- card evidence block */
  --box-cards-cue:0 0 0 2px;           /* screen: cues -- each cue (colour changes with the kind) */
  --boxc-cards-cue:var(--rule);        /* screen: cues -- each cue, plain */
  --box-cards-out:1px 1px 1px 1px;     /* screen: log -- the output block */
  --boxc-cards-out:var(--rule);        /* screen: log -- the output block */
  --box-cards-birds:1px 1px 1px 1px;   /* screen: log -- the birds' stage */
  --boxc-cards-birds:var(--rule);      /* screen: log -- the birds' stage */
  --box-cards-ex:2px 0 0 0;            /* screen: workout -- rule over each exercise */
  --boxc-cards-ex:var(--ink);          /* screen: workout -- rule over each exercise */
  --box-cards-exhead:0 0 0 0;          /* screen: workout -- exercise heading band; its bar is now the card's red line */
  --boxc-cards-exhead:var(--accent);   /* screen: workout -- exercise heading band, its left bar */
  --box-cards-exlist:1px 1px 1px 1px;  /* screen: workout -- the box around all the exercises */
  --boxc-cards-exlist:var(--rule);     /* screen: workout -- the box around all the exercises */
  --box-cards-exdiv:1px 0 0 0;         /* screen: workout -- thin rule between exercises inside the box */
  --boxc-cards-exdiv:var(--rule);      /* screen: workout -- thin rule between exercises inside the box */
  --box-cards-ctx:0 0 0 2px;           /* screen: workout -- the Last / PR / Target / Cues block */
  --boxc-cards-ctx:var(--rule);        /* screen: workout -- the Last / PR / Target / Cues block */

  /* -- boxes: inputs -- */
  --box-inputs-text:0 0 1px 0;         /* global: text, date and email inputs, selects (an underline) */
  --boxc-inputs-text:var(--ink);       /* global: text, date and email inputs, selects */
  --box-inputs-textarea:1px 1px 1px 1px; /* global: textareas */
  --boxc-inputs-textarea:var(--rule);  /* global: textareas */
  --box-inputs-num:0 0 1px 0;          /* screen: workout -- weight and reps boxes */
  --boxc-inputs-num:var(--ink);        /* screen: workout -- weight and reps boxes */
  --boxc-inputs-note:var(--rule);      /* screen: workout -- the per-set note's underline */
  --box-inputs-addsearch:4px 4px 4px 4px; /* global: the "+ Add an exercise" search box */
  --boxc-inputs-addsearch:var(--accent); /* global: the "+ Add an exercise" search box */

  /* -- boxes: buttons -- */
  --box-buttons-act:1px 1px 1px 1px;   /* global: the red main-action button */
  --boxc-buttons-act:var(--swiss-btn); /* global: the red main-action button */
  --box-buttons-qnav:1px 1px 1px 1px;  /* screen: review -- Back and Next (Next fills red) */
  --boxc-buttons-qnav:var(--ink);      /* screen: review -- Back */
  --box-buttons-accept:1px 1px 1px 1px; /* screen: review -- Accept */
  --boxc-buttons-accept:var(--accent); /* screen: review -- Accept */
  --box-buttons-clear:1px 1px 1px 1px; /* screen: review -- Clear */
  --boxc-buttons-clear:var(--rule);    /* screen: review -- Clear */
  --box-buttons-go:1px 1px 1px 1px;    /* screen: home -- the pending tile's link */
  --boxc-buttons-go:var(--rule);       /* screen: home -- the pending tile's link */

  /* -- boxes: toggles -- */
  --box-toggles-seg:1px 1px 1px 1px;   /* global: segmented picker boxes */
  --boxc-toggles-seg:var(--ink);       /* global: segmented picker boxes */
  --box-toggles-unit:1px 1px 1px 1px;  /* global: lb | kg boxes */
  --boxc-toggles-unit:var(--ink);      /* global: lb | kg boxes */
  --box-toggles-verdict:1px 1px 1px 1px; /* screen: review -- verdict buttons */
  --boxc-toggles-verdict:var(--rule);  /* screen: review -- verdict buttons */
  --box-toggles-slice:1px 1px 1px 1px; /* screen: review -- slice tags */
  --boxc-toggles-slice:var(--rule);    /* screen: review -- slice tags */
  --box-toggles-wktag:1px 1px 1px 1px; /* screen: workout -- set options, pain parts, remove */
  --boxc-toggles-wktag:var(--rule);    /* screen: workout -- set options, pain parts, remove */
  --box-toggles-effort:1px 1px 1px 1px; /* screen: workout -- effort boxes */
  --boxc-toggles-effort:var(--rule);   /* screen: workout -- effort boxes */

  /* -- boxes: sets -- */
  --box-sets-list:1px 0 0 0;           /* screen: workout -- rule over the set rows */
  --boxc-sets-list:var(--ink);         /* screen: workout -- rule over the set rows */
  --box-sets-row:0 0 1px 0;            /* screen: workout -- rule under each set (dashed for a warm-up) */
  --boxc-sets-row:var(--rule);         /* screen: workout -- rule under each set */
}
:root[data-style="swiss"] body{background:var(--paper);color:var(--ink);font-variant-numeric:tabular-nums}
:root[data-style="swiss"] :is(pre.out,pre.wk-ctx,textarea,.card .ev,code){font-family:var(--swiss-code)}

/* -- page furniture -- */
:root[data-style="swiss"] header{border-style:solid;border-width:var(--box-lines-header);border-color:var(--boxc-lines-header)}
:root[data-style="swiss"] h1{font-weight:var(--fw-disp);letter-spacing:var(--ls-flat);line-height:var(--lh-title)}
:root[data-style="swiss"] .back{display:block;font-size:var(--fs-sw-back);color:var(--ink2);
  position:sticky;top:0;z-index:20;background:var(--paper);margin-top:0;padding-top:16px;
  border-style:solid;border-width:var(--box-lines-back);border-color:var(--boxc-lines-back);padding-bottom:var(--sp-sw-back)}
:root[data-style="swiss"] .back:hover{color:var(--accent)}
/* Onboarding's back is a button inside a row of its own. */
:root[data-style="swiss"] .ob-top .back{position:static;border:0;padding:var(--sp-sw-ob-back) 0;font-size:var(--fs-sw-ob-back)}
:root[data-style="swiss"] .sub{font-size:var(--fs-sw-note);line-height:var(--lh-sw-note)}
:root[data-style="swiss"] .field label,:root[data-style="swiss"] .field .lbl{font-size:var(--fs-sw-label);color:var(--ink2);margin-bottom:var(--sp-sw-label)}
:root[data-style="swiss"] .field{margin-top:var(--sp-sw-field)}
:root[data-style="swiss"] .hint{font-size:var(--fs-sw-note);line-height:var(--lh-sw-hint)}
:root[data-style="swiss"] a{color:var(--accent)}
:root[data-style="swiss"] .signin-link{font-size:var(--fs-sw-note);font-weight:var(--fw-sw-head);text-decoration:underline;text-underline-offset:3px}
:root[data-style="swiss"] footer{border-style:solid;border-width:var(--box-lines-footer);border-color:var(--boxc-lines-footer);
  font-size:var(--fs-sw-label);line-height:var(--lh-sw-foot)}
:root[data-style="swiss"] :is(a,button,input,textarea,select,summary,.tile,.stage):focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* Inputs: an underline, no box. */
:root[data-style="swiss"] :is(input[type=text],input[type=date],input[type=email],input:not([type]),select){
  background:transparent;border-style:solid;border-width:var(--box-inputs-text);border-color:var(--boxc-inputs-text);border-radius:0;
  padding:var(--sp-sw-input-y) 0;font-family:var(--body);font-size:var(--fs-sw-input);color:var(--ink);box-shadow:none}
:root[data-style="swiss"] select{padding-right:20px;-webkit-appearance:none;appearance:none;
  background:linear-gradient(45deg,transparent 50%,var(--ink2) 50%) right 8px center/6px 6px no-repeat,
             linear-gradient(-45deg,transparent 50%,var(--ink2) 50%) right 3px center/6px 6px no-repeat}
:root[data-style="swiss"] input.code{font-size:var(--fs-sw-otp);letter-spacing:var(--ls-sw-otp);text-align:center}
:root[data-style="swiss"] textarea{background:var(--swiss-sheet);border-style:solid;border-width:var(--box-inputs-textarea);
  border-color:var(--boxc-inputs-textarea);border-radius:0;
  padding:var(--sp-sw-textarea);font-size:var(--fs-sw-textarea);color:var(--ink);box-shadow:none}
:root[data-style="swiss"] :is(input,textarea)::placeholder{color:var(--swiss-mute)}
/* The search box that is also the Add button: a red outline, never solid (solid red is Save). */
:root[data-style="swiss"] input.add-search{border-style:solid;border-width:var(--box-inputs-addsearch);border-color:var(--boxc-inputs-addsearch);
  padding:var(--sp-sw-addsearch);min-height:var(--sz-sw-addsearch);font-weight:var(--fw-sw-addsearch);font-size:var(--fs-sw-addsearch)}
:root[data-style="swiss"] input.add-search::placeholder{color:var(--ink);opacity:1}
:root[data-style="swiss"] input[type=checkbox]{accent-color:var(--accent)}

/* Segmented pickers: separate boxes, the picked one filled with ink. */
:root[data-style="swiss"] .seg{background:none;border:0;gap:var(--sp-sw-seg-gap);box-shadow:none}
:root[data-style="swiss"] .seg button{background:transparent;color:var(--ink);
  border-style:solid;border-width:var(--box-toggles-seg);border-color:var(--boxc-toggles-seg);
  font-family:var(--body);font-size:var(--fs-sw-seg);padding:var(--sp-sw-seg-y) var(--sp-sw-seg-x);min-height:var(--sz-sw-tap);box-shadow:none}
:root[data-style="swiss"] .seg button[aria-pressed=true]{background:var(--ink);color:var(--paper);font-weight:var(--fw-sw-seg-on)}
:root[data-style="swiss"] .seg.big button{padding:var(--sp-sw-seg-big-y) var(--sp-sw-seg-x);font-size:var(--fs-sw-seg-big)}
/* Gym: one row that scrolls sideways, like the recent days. */
:root[data-style="swiss"] #gym{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}
:root[data-style="swiss"] #gym::-webkit-scrollbar{display:none}
:root[data-style="swiss"] #gym button{flex:0 0 auto;min-width:112px;padding:var(--sp-sw-seg-y) var(--sp-sw-gym-x)}
/* lb | kg */
:root[data-style="swiss"] .unit-switch{background:none;border:0;gap:var(--sp-sw-unit-gap)}
:root[data-style="swiss"] .unit-switch button{background:transparent;
  border-style:solid;border-width:var(--box-toggles-unit);border-color:var(--boxc-toggles-unit);color:var(--ink);
  font-family:var(--body);font-size:var(--fs-sw-unit);padding:var(--sp-sw-unit-y) var(--sp-sw-unit-x)}
:root[data-style="swiss"] .unit-switch button[aria-pressed=true]{background:var(--ink);color:var(--paper)}
/* The foot-of-page switch box (.style-switch): the Auto/Light/Dark theme
   button (app/lib/style.js). The retired Style switch used the same box. */
:root[data-style="swiss"] .style-switch{margin-top:32px;padding-top:12px;border-top:1px solid var(--rule)}
:root[data-style="swiss"] .units-switch{margin-top:32px}
:root[data-style="swiss"] .units-switch + .style-switch{margin-top:0;padding-top:0;border-top:0}
:root[data-style="swiss"] .style-switch + .style-switch{margin-top:0;padding-top:0;border-top:0}
:root[data-style="swiss"] .style-switch .seg{max-width:260px}
:root[data-style="swiss"] .style-switch .seg button{padding:6px 8px;min-height:36px;font-size:13px}
:root[data-style="swiss"] .theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  background:transparent;border:1px solid var(--ink);color:var(--ink);font-family:var(--body)}
:root[data-style="swiss"] .theme-toggle svg{flex:none;width:18px;height:18px}

/* Buttons: the main action is the one red block; the rest read as underlined links. */
:root[data-style="swiss"] button.act{background:var(--swiss-btn);
  border-style:solid;border-width:var(--box-buttons-act);border-color:var(--boxc-buttons-act);color:var(--swiss-on-btn);
  font-family:var(--body);font-weight:var(--fw-sw-act);font-size:var(--fs-sw-act);text-align:left;padding:var(--sp-sw-act);min-height:var(--sz-sw-act);
  display:flex;justify-content:space-between;align-items:center;gap:var(--sp-sw-act-gap);box-shadow:none}
:root[data-style="swiss"] button.act:not(.ghost)::after{content:"\2192"}
:root[data-style="swiss"] button.act.ghost{background:none;border:0;color:var(--ink);padding:0;min-height:var(--sz-sw-tap);
  width:auto;font-weight:var(--fw-sw-ghost);font-size:var(--fs-sw-ghost);text-decoration:underline;text-underline-offset:3px;display:inline-flex}
:root[data-style="swiss"] button.act.ghost::after{content:none}
:root[data-style="swiss"] button.act:active:not(:disabled){transform:none;box-shadow:none;opacity:.8}
:root[data-style="swiss"] button.act:disabled{opacity:.35}
:root[data-style="swiss"] button.act[aria-current=true]{outline:2px solid var(--ink);outline-offset:2px}
:root[data-style="swiss"] .row{flex-wrap:wrap;align-items:center}
:root[data-style="swiss"] .row .add{width:auto;min-height:var(--sz-sw-tap);padding:0 16px}
:root[data-style="swiss"] button.link{color:var(--accent);font-family:var(--body);font-size:var(--fs-sw-note);text-underline-offset:3px}

/* Messages and cards: a rule on the left, no box. */
:root[data-style="swiss"] :is(.status,.card){background:none;
  border-style:solid;border-width:var(--box-cards-card);border-color:var(--boxc-cards-card);
  box-shadow:none;padding:var(--sp-sw-card-y) 0 var(--sp-sw-card-y) var(--sp-sw-card-x);font-family:var(--body)}
:root[data-style="swiss"] .status.ok{border-color:var(--moss)}
:root[data-style="swiss"] .status.ok-plain{border-color:var(--ink)}
:root[data-style="swiss"] :is(.status.bad,.card.high,.card.changed){border-color:var(--accent)}
:root[data-style="swiss"] .card.low{border-color:var(--ochre)}
:root[data-style="swiss"] .card.info{border-color:var(--ink)}
:root[data-style="swiss"] .card.answered{border-color:var(--moss)}
:root[data-style="swiss"] .card .kind{font-size:var(--fs-sw-label);color:var(--ink2)}
:root[data-style="swiss"] .card .ev{background:var(--swiss-sheet);border-style:solid;border-width:var(--box-cards-ev);
  border-color:var(--boxc-cards-ev);font-size:var(--fs-sw-code)}
:root[data-style="swiss"] .status.ok::before{display:none}
:root[data-style="swiss"] .copied{color:var(--moss)}
:root[data-style="swiss"] .note{font-size:var(--fs-sw-note);line-height:var(--lh-sw-note)}

/* Lists: hairlines between rows, no boxes. */
:root[data-style="swiss"] :is(.recog,.results,.pending){background:none;
  border-style:solid;border-width:var(--box-lines-list);border-color:var(--boxc-lines-list);gap:0}
:root[data-style="swiss"] :is(.recog div,.results button,.pending button){background:none;
  border-style:solid;border-width:var(--box-lines-row);border-color:var(--boxc-lines-row);
  padding:var(--sp-sw-row) 0;font-family:var(--body);font-size:var(--fs-sw-row)}
:root[data-style="swiss"] :is(.results button,.pending button):is(:hover,:focus-visible){background:var(--panel2);outline:0}
:root[data-style="swiss"] pre.out{background:var(--swiss-sheet);border-style:solid;border-width:var(--box-cards-out);
  border-color:var(--boxc-cards-out);font-size:var(--fs-sw-code)}

/* Recent days: no boxes, a rule on top, scrolls sideways. */
:root[data-style="swiss"] .chips{gap:var(--sp-sw-chip-gap)}
:root[data-style="swiss"] .chip{background:none;border-style:solid;border-width:var(--box-lines-chip);border-color:var(--boxc-lines-chip);
  box-shadow:none;padding:var(--sp-sw-chip) 0;font-family:var(--body);font-size:var(--fs-sw-chip)}
:root[data-style="swiss"] .chip:is(:hover,:focus-visible){border-color:var(--accent)}
:root[data-style="swiss"] .chip b{font-weight:var(--fw-sw-head)}
:root[data-style="swiss"] .chip span{font-size:var(--fs-sw-note);color:var(--ink2)}
/* Start from my template */
:root[data-style="swiss"] .wk-mine{background:none;border-style:solid;border-width:var(--box-lines-mine);border-color:var(--boxc-lines-mine)}
:root[data-style="swiss"] .wk-mine label{border-style:solid;border-width:var(--box-lines-mine-row);border-color:var(--boxc-lines-mine-row);
  padding:var(--sp-sw-row) 0;font-family:var(--body)}
:root[data-style="swiss"] .wk-mine input{accent-color:var(--accent)}

/* -- sprites: smaller and quieter, only where they mean something -- */
/* Header pictures are decoration: gone in Swiss. Review keeps its duck,
   which asks while there are cards and relaxes when the queue is clear. */
:root[data-style="swiss"] header img.scene{display:none}
:root[data-style="swiss"] .scenebox{zoom:var(--zoom-sw-sprite);margin-bottom:6px}
/* Home: the owner on the treadmill and the duck, at 60%; still a button
   (tap to drop a dumbbell). */
:root[data-style="swiss"] .stage{zoom:var(--zoom-sw-sprite);margin-bottom:6px}
:root[data-style="swiss"] header .words{padding-bottom:var(--sp-sw-words)}
/* Home: the Shredimentary wordmark is pixel art, shown at a whole number of
   px per art px (2x, 3x, 4x) like every header sprite, never fluid. Each
   step starts where it still fits beside the stage (header up to 624px, the
   stage 95px, a 12px gap). */
:root[data-style="swiss"] h1.wordmark img{display:block;width:var(--sz-sw-wordmark-s);max-width:none;height:auto;image-rendering:pixelated}
@media (min-width:517px){:root[data-style="swiss"] h1.wordmark img{width:var(--sz-sw-wordmark-m)}}
@media (min-width:643px){:root[data-style="swiss"] h1.wordmark img{width:var(--sz-sw-wordmark-l)}}
/* The calendar button sits top right, as tall as the title's two lines. */
:root[data-style="swiss"] .cal-btn{margin-bottom:var(--sp-sw-words)}
:root[data-style="swiss"] .cal-btn svg{height:var(--sz-sw-calbtn);width:auto}
/* Loading: the bouncing ball at 3/4 size, no court line. */
:root[data-style="swiss"] .spin{width:48px;height:36px;border-bottom:0;
  background-position:-240px 0;background-size:624px 36px}
@media (prefers-reduced-motion:no-preference){
  :root[data-style="swiss"] .spin{animation:swiss-bounce .91s steps(13) infinite}
  @keyframes swiss-bounce{from{background-position:0 0}to{background-position:-624px 0}}
}
/* Log: the birds' stage stays white (the crow is black), on a hairline,
   with the birds and Jimmy at 3/4 size. */
:root[data-style="swiss"] .birds{border-style:solid;border-width:var(--box-cards-birds);border-color:var(--boxc-cards-birds);box-shadow:none}
:root[data-style="swiss"] .birds .said p{font-family:var(--body);font-size:var(--fs-sw-copy)}
:root[data-style="swiss"] .birds .floor{zoom:var(--zoom-sw-birds);border-bottom-width:3px}
/* Review, queue cleared: the GIF, smaller and without a frame. */
:root[data-style="swiss"] .boys{border:0;box-shadow:none;max-width:260px;background:#FFFFFF}

/* -- Home -- */
:root[data-style="swiss"] .stats{background:none;border:0;box-shadow:none;gap:0 var(--sp-sw-stats-gap)}
:root[data-style="swiss"] .stat{background:none;border-style:solid;border-width:var(--box-cards-stat);border-color:var(--boxc-cards-stat);
  padding:var(--sp-sw-stat) 0}
:root[data-style="swiss"] .stat b{font-weight:var(--fw-sw-num);letter-spacing:var(--ls-sw-num)}
:root[data-style="swiss"] .stat span{font-size:var(--fs-sw-label);color:var(--ink2)}
:root[data-style="swiss"] .stat.flagged b{color:var(--accent)}
/* The tiles: a numbered list under a heavy rule. The number takes the
   icon's column. */
:root[data-style="swiss"] nav{gap:0;margin-top:var(--sp-sw-nav);counter-reset:tile}
:root[data-style="swiss"] .tile{background:none;border-style:solid;border-width:var(--box-lines-tile);border-color:var(--boxc-lines-tile);box-shadow:none;
  padding:var(--sp-sw-tile) 0;grid-template-columns:var(--sp-sw-tile-index) 1fr auto;align-items:baseline;counter-increment:tile;color:var(--ink)}
:root[data-style="swiss"] .tile::before{content:counter(tile,decimal-leading-zero);font-size:var(--fs-sw-label);font-weight:var(--fw-sw-head);color:var(--ink2)}
:root[data-style="swiss"] .tile:first-child::before{color:var(--accent)}
:root[data-style="swiss"] .tile .sprite{display:none}
:root[data-style="swiss"] .tile h2{font-size:var(--fs-sw-tile)}
:root[data-style="swiss"] .tile:first-child h2{font-size:var(--fs-sw-tile-first)}
:root[data-style="swiss"] .tile p{font-size:var(--fs-sw-copy)}
:root[data-style="swiss"] .tile .go{font-family:var(--body);color:var(--accent)}
:root[data-style="swiss"] a.tile:active{background:none;transform:none;box-shadow:none;opacity:.7}
:root[data-style="swiss"] .tile.pending .go{font-family:var(--body);font-size:var(--fs-sw-tag);
  border-style:solid;border-width:var(--box-buttons-go);border-color:var(--boxc-buttons-go)}

/* -- Review -- */
:root[data-style="swiss"] .progress{font-size:var(--fs-sw-note)}
:root[data-style="swiss"] .progress b{font-weight:var(--fw-sw-num);letter-spacing:var(--ls-sw-num)}
:root[data-style="swiss"] .bar{height:4px;background:var(--rule2);border:0}
:root[data-style="swiss"] .bar i{background:var(--accent)}
:root[data-style="swiss"] .qcard{background:none;border-style:solid;border-width:var(--box-cards-qcard);border-color:var(--boxc-cards-qcard);
  box-shadow:none;padding:var(--sp-sw-qcard) 0}
:root[data-style="swiss"] .qcard.p1{border-color:var(--accent)}
:root[data-style="swiss"] .qcard .kind{font-size:var(--fs-sw-label)}
:root[data-style="swiss"] .qcard h2{font-size:var(--fs-sw-qhead);line-height:var(--lh-sw-qhead)}
:root[data-style="swiss"] .facts{background:none;border-style:solid;border-width:var(--box-lines-facts);border-color:var(--boxc-lines-facts);
  gap:0 var(--sp-sw-facts-gap)}
:root[data-style="swiss"] .facts div{background:none;padding:var(--sp-sw-fact) 0;font-size:var(--fs-sw-note)}
:root[data-style="swiss"] .facts span{font-size:var(--fs-sw-tag)}
:root[data-style="swiss"] .qcard summary{color:var(--accent);font-size:var(--fs-sw-note)}
:root[data-style="swiss"] .slice span{background:none;border-style:solid;border-width:var(--box-toggles-slice);border-color:var(--boxc-toggles-slice)}
:root[data-style="swiss"] .qcard section{background:none;border-style:solid;border-width:var(--box-lines-section);border-color:var(--boxc-lines-section);
  padding:var(--sp-sw-section) 0}
:root[data-style="swiss"] .shead{font-size:var(--fs-sw-label)}
:root[data-style="swiss"] .qcard h3{font-size:var(--fs-sw-label);font-weight:var(--fw-sw-sub)}
:root[data-style="swiss"] .claude{border-style:solid!important;border-width:var(--box-cards-claude)!important;
  border-color:var(--boxc-cards-claude)!important;padding-left:var(--sp-sw-card-x)!important}
:root[data-style="swiss"] .claude .shead span{color:var(--ink)}
:root[data-style="swiss"] .meter{height:4px;background:var(--rule2);border:0}
:root[data-style="swiss"] .verdicts{gap:var(--sp-sw-verdict-gap)}
:root[data-style="swiss"] .verdicts button{background:none;border-style:solid;border-width:var(--box-toggles-verdict);
  border-color:var(--boxc-toggles-verdict);font-family:var(--body)}
:root[data-style="swiss"] .verdicts button:is(:hover,:focus-visible){border-color:var(--ink)}
:root[data-style="swiss"] .verdicts button.picked{border-color:var(--accent);color:var(--accent);font-weight:var(--fw-sw-verdict-on)}
:root[data-style="swiss"] .verdicts button small{color:var(--ink2);font-size:var(--fs-sw-label)}
:root[data-style="swiss"] .qnav button{border-style:solid;border-width:var(--box-buttons-qnav);border-color:var(--boxc-buttons-qnav);
  color:var(--ink);font-family:var(--body);font-size:var(--fs-sw-qbtn)}
:root[data-style="swiss"] .qnav button:last-child:not(:disabled){background:var(--swiss-btn);border-color:var(--swiss-btn);color:var(--swiss-on-btn)}
:root[data-style="swiss"] :is(.accept,.clear){font-family:var(--body);font-size:var(--fs-sw-qbtn)}
:root[data-style="swiss"] .accept{border-style:solid;border-width:var(--box-buttons-accept);border-color:var(--boxc-buttons-accept)}
:root[data-style="swiss"] .clear{border-style:solid;border-width:var(--box-buttons-clear);border-color:var(--boxc-buttons-clear)}
:root[data-style="swiss"] .group{background:none;border-style:solid;border-width:var(--box-cards-group);border-color:var(--boxc-cards-group);
  padding:var(--sp-sw-card-y) 0 var(--sp-sw-card-y) var(--sp-sw-card-x)}
:root[data-style="swiss"] .rows td{border-top-color:var(--rule2)}
:root[data-style="swiss"] .rows tr.this td{background:var(--panel2)}
:root[data-style="swiss"] mark{background:none;color:var(--accent);font-weight:var(--fw-sw-head);text-decoration:underline}

/* -- Cues -- */
:root[data-style="swiss"] .cuelog{border-style:solid;border-width:var(--box-lines-cuelog);border-color:var(--boxc-lines-cuelog)}
:root[data-style="swiss"] .cuelog li::before{left:-4px;width:7px;height:7px;background:var(--ink);border:0}
:root[data-style="swiss"] .cuelog .when{font-size:var(--fs-sw-label);font-weight:var(--fw-sw-sub);color:var(--ink)}
:root[data-style="swiss"] .cue{background:none;border-style:solid;border-width:var(--box-cards-cue);border-color:var(--boxc-cards-cue);
  padding:var(--sp-sw-card-y) 0 var(--sp-sw-card-y) var(--sp-sw-card-x)}
:root[data-style="swiss"] .cue.setup{border-color:var(--ink)}
:root[data-style="swiss"] .cue.template{border-color:var(--ochre)}
:root[data-style="swiss"] .cue.changed{border-color:var(--accent)}
:root[data-style="swiss"] .cue .tag{font-size:var(--fs-sw-tag)}

/* -- Onboarding (its own page styles live in each page's <style>) -- */
:root[data-style="swiss"] .ob-page .bar{margin-top:8px}
:root[data-style="swiss"] .ob-top .count{font-size:var(--fs-sw-label)}
:root[data-style="swiss"] .or{font-size:var(--fs-sw-label)}
:root[data-style="swiss"] .ob-page .gyms{background:none;border-style:solid;border-width:var(--box-lines-gyms);border-color:var(--boxc-lines-gyms);gap:0}
:root[data-style="swiss"] .ob-page .gyms li{background:none;padding:var(--sp-sw-row) 0;
  border-style:solid;border-width:var(--box-lines-gym-row);border-color:var(--boxc-lines-gym-row)}
:root[data-style="swiss"] .ob-page .gyms .tag{font-size:var(--fs-sw-tag)}
:root[data-style="swiss"] :is(.ob-custom,.ob-import) :is(h3){font-size:var(--fs-sw-ob-h3)}
:root[data-style="swiss"] :is(.ob-custom,.ob-import) :is(select,input[type=date],input:not([type])){
  border-style:solid;border-width:var(--box-inputs-text);border-color:var(--boxc-inputs-text)}
:root[data-style="swiss"] .ob-group{border-style:solid;border-width:var(--box-lines-ob-group);border-color:var(--boxc-lines-ob-group)}

/* -- Today's Workout -- */
:root[data-style="swiss"] :is(.wk-num,.sub,.wk-raw,.wk-ex-sub,.chip span,.results em,.recog span,.copied,.hint){
  font-family:var(--body);font-variant-numeric:tabular-nums}
:root[data-style="swiss"] .wk-ex select{padding:var(--sp-sw-input-y) 20px var(--sp-sw-input-y) 0;font-size:var(--fs-sw-input)}
:root[data-style="swiss"] .wk-ex input[type=text]{padding:var(--sp-sw-input-y) 0;font-size:var(--fs-sw-input)}

/* -- the exercise: a heavy rule on top, no card -- */
:root[data-style="swiss"] .wk-ex{background:none;border-style:solid;border-width:var(--box-cards-ex);border-color:var(--boxc-cards-ex);box-shadow:none;
  padding:var(--sp-sw-ex-top) 0 var(--sp-sw-ex-bottom);gap:var(--sp-sw-ex-gap)}
:root[data-style="swiss"] .wk-ex h2{font-family:var(--body);font-weight:var(--fw-sw-head);font-size:var(--fs-sw-ex);
  letter-spacing:var(--ls-sw-ex);line-height:var(--lh-sw-ex)}
/* The heading band: tinted, red bar on the left, so each exercise starts
   visibly (owner, 2026-10-22). Red text stays meaning "pressed". */
:root[data-style="swiss"] .wk-ex-head{background:var(--panel2);border-style:solid;border-width:var(--box-cards-exhead);
  border-color:var(--boxc-cards-exhead);padding:var(--sp-sw-ex-head-y) var(--sp-sw-ex-head-x)
  var(--sp-sw-ex-head-y) calc(var(--sp-sw-ex-head-x) + var(--sz-sw-rail))}
/* One red line down the whole exercise, in the page margin, so each set
   visibly belongs to it and nothing inside gets narrower (owner, 2026-10-24).
   It is a button: tapping it folds or opens the card (owner, 2026-10-29); the
   tap area reaches left into the box's padding, never over the card. */
:root[data-style="swiss"] .wk-page .wk-ex{position:relative}
:root[data-style="swiss"] .wk-page .wk-rail{display:block;position:absolute;
  left:calc(-1 * (var(--sz-sw-rail) + var(--sp-sw-rail-gap)));width:var(--sz-sw-rail);
  top:calc(var(--sp-sw-ex-top) + var(--sz-sw-grip) + var(--sp-sw-grip-rail));bottom:var(--sp-sw-ex-bottom);background:var(--boxc-cards-exhead);
  border:0;padding:0;margin:0;min-height:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
:root[data-style="swiss"] .wk-page .wk-rail::after{content:"";position:absolute;top:0;bottom:0;right:0;
  left:calc(-1 * var(--sp-sw-exlist-x))}
:root[data-style="swiss"] .wk-page .wk-rail:active{opacity:.7}
/* All the exercises in one box in the card colour, apart from the rest of
   the page; a thin rule between cards instead of the heavy one (owner,
   2026-10-29). The red line sits inside the box's left padding. */
:root[data-style="swiss"] #exercises:has(> .wk-ex){background:var(--panel2);border-style:solid;
  border-width:var(--box-cards-exlist);border-color:var(--boxc-cards-exlist);
  margin-top:var(--sp-sw-exlist-top);
  padding:0 var(--sp-sw-exlist-x) 0 calc(var(--sp-sw-exlist-x) + var(--sz-sw-rail) + var(--sp-sw-rail-gap))}
:root[data-style="swiss"] #exercises > .wk-ex{border-width:var(--box-cards-exdiv);border-color:var(--boxc-cards-exdiv)}
:root[data-style="swiss"] #exercises > .wk-ex:first-child{border-top-width:0}
:root[data-style="swiss"] button.wk-title::before{color:var(--swiss-mute);font-family:var(--body);font-weight:400}
:root[data-style="swiss"] .wk-ex.folded h2{font-size:var(--fs-sw-ex-folded)}
:root[data-style="swiss"] .wk-ex-sub{font-size:var(--fs-sw-note);color:var(--ink2)}
:root[data-style="swiss"] .wk-mini{font-family:var(--body);font-size:var(--fs-sw-label);color:var(--ink2);letter-spacing:0}
/* Last / PR / Target / Cues */
:root[data-style="swiss"] pre.wk-ctx{background:none;border-style:solid;border-width:var(--box-cards-ctx);border-color:var(--boxc-cards-ctx);
  padding:var(--sp-sw-ctx-y) 0 var(--sp-sw-ctx-y) var(--sp-sw-ctx-x);color:var(--ink2);font-size:var(--fs-sw-ctx)}
:root[data-style="swiss"] pre.wk-ctx b{color:var(--ink);font-weight:var(--fw-sw-sub)}

/* Set rows: a hairline under each, no boxes. */
:root[data-style="swiss"] .wk-sets{gap:0;border-style:solid;border-width:var(--box-sets-list);border-color:var(--boxc-sets-list)}
:root[data-style="swiss"] .wk-set{background:none;border-style:solid;border-width:var(--box-sets-row);border-color:var(--boxc-sets-row);
  padding:var(--sp-sw-set) 0;gap:var(--sp-sw-set-gap)}
:root[data-style="swiss"] .wk-set.warm{border-style:solid;border-bottom-style:dashed}
:root[data-style="swiss"] .wk-num{background:transparent;border-style:solid;border-width:var(--box-inputs-num);border-color:var(--boxc-inputs-num);
  font-family:var(--body);font-size:var(--fs-sw-num);font-weight:var(--fw-sw-num);padding:var(--sp-sw-num) 0;box-shadow:none}
/* Typed WARM and RAMP numbers match a working set's; the dashed box and grey
   label mark them as warm-ups (owner, 2026-10-24). */
:root[data-style="swiss"] .wk-num::placeholder{color:var(--swiss-mute);font-weight:400}
:root[data-style="swiss"] .wk-x{color:var(--swiss-mute);font-family:var(--body)}
/* − and +: plain marks, no box. */
:root[data-style="swiss"] .wk-step{background:none;border:0;box-shadow:none;color:var(--ink2);font-family:var(--body);font-size:var(--fs-sw-step)}
/* The set label (Set N / Warm / Ramp): red text for a working set, grey for a
   warm-up. Still a button: tap it to cycle. */
:root[data-style="swiss"] .wk-setline .wk-tag:first-child{background:none;border:0;box-shadow:none;transform:none;
  text-align:left;padding:var(--sp-sw-wktag-y) 0;min-width:3.6em;font-family:var(--body);font-size:var(--fs-sw-setlabel);
  font-weight:var(--fw-sw-picked);color:var(--accent)}
:root[data-style="swiss"] .wk-set.warm .wk-setline .wk-tag:first-child{color:var(--ink2);font-weight:400}

/* Set options (effort, L/R wt, L/R, copy, delete), pain parts, remove:
   each in a thin box; the picked one in red, not filled. */
:root[data-style="swiss"] .wk-tag{background:transparent;border-style:solid;border-width:var(--box-toggles-wktag);
  border-color:var(--boxc-toggles-wktag);color:var(--ink2);
  box-shadow:none;font-family:var(--body);font-size:var(--fs-sw-wktag);letter-spacing:0;
  padding:var(--sp-sw-wktag-y) var(--sp-sw-wktag-x);min-height:var(--sz-sw-wktag)}
:root[data-style="swiss"] .wk-tag[aria-pressed=true]{background:transparent;color:var(--accent);border-color:var(--accent);
  font-weight:var(--fw-sw-picked);transform:none}
:root[data-style="swiss"] .wk-tag:active:not(:disabled){transform:none;opacity:.7}
:root[data-style="swiss"] .wk-ico{width:var(--sz-sw-wktag);padding:0}
:root[data-style="swiss"] .wk-trash{color:var(--accent);margin-left:0}
:root[data-style="swiss"] .wk-ex-head .wk-tag{border:0;font-size:var(--fs-sw-label);color:var(--ink2)}
/* Effort: three separate boxes, picked one red. */
:root[data-style="swiss"] .wk-effort{gap:var(--sp-sw-opt-gap)}
:root[data-style="swiss"] .wk-effort button{flex:0 0 auto;border-style:solid;border-width:var(--box-toggles-effort);
  border-color:var(--boxc-toggles-effort);color:var(--ink2);
  background:transparent;font-size:var(--fs-sw-wktag);padding:var(--sp-sw-wktag-y) var(--sp-sw-effort-x);min-height:var(--sz-sw-wktag)}
:root[data-style="swiss"] .wk-effort button[aria-pressed=true]{background:transparent;color:var(--accent);
  border-color:var(--accent);font-weight:var(--fw-sw-picked)}
/* One line on a phone: effort, L/R, L/R wt, copy, then note and delete at the far end. */
:root[data-style="swiss"] .wk-setopts{display:flex;flex-wrap:wrap;gap:var(--sp-sw-opt-gap)}
:root[data-style="swiss"] .wk-setopts .wk-effort{flex:0 0 auto}
:root[data-style="swiss"] .wk-setopts [data-act=copy-set]{margin-left:0}
:root[data-style="swiss"] .wk-setopts .wk-notebtn{margin-left:auto}
:root[data-style="swiss"] .wk-setopts .wk-trash{margin-left:0}
:root[data-style="swiss"] .wk-note{border-bottom-color:var(--boxc-inputs-note)!important;font-size:var(--fs-sw-wknote)!important}
:root[data-style="swiss"] .wk-raw{font-size:var(--fs-sw-raw);color:var(--swiss-mute)}
:root[data-style="swiss"] .card.wk-q{padding:var(--sp-sw-card-y) 0 var(--sp-sw-card-y) var(--sp-sw-card-x)}
:root[data-style="swiss"] .wk-page :is(button.act.wk-add,button.act.wk-boxbtn){display:block;width:100%;margin:var(--swiss-bw-set-gap) 0 0;
  background:var(--panel2);border:var(--swiss-bw-set) solid var(--ink2);border-radius:0;box-shadow:none;
  color:var(--ink);font-family:var(--body);font-size:var(--fs-sw-fold);font-weight:var(--fw-sw-sub);
  text-decoration:none;text-align:center;padding:var(--sp-sw-row) 0}

/* Fold-outs: Setup, Cue, Other, Pain, Notes preview. */
:root[data-style="swiss"] :is(.wk-pain,.wk-fold,.wk-notes){border-style:solid;border-width:var(--box-lines-fold);border-color:var(--boxc-lines-fold)}
:root[data-style="swiss"] :is(.wk-pain,.wk-fold,.wk-notes) summary{font-family:var(--body);font-size:var(--fs-sw-fold);letter-spacing:0}
:root[data-style="swiss"] .wk-pain-part{font-family:var(--body);font-weight:var(--fw-sw-sub)}
:root[data-style="swiss"] .wk-sev button{padding:var(--sp-sw-wktag-y) var(--sp-sw-sev-x);min-height:var(--sz-sw-wktag);font-size:var(--fs-sw-sev)}

/* Moving a card: two handles until the owner keeps one (owner, 2026-10-30).
   Left: over the red line, in the box's left padding. Right: top of the
   heading band. Hold one and every card folds; the held one lifts. */
:root[data-style="swiss"] .wk-handle{color:var(--swiss-mute)}
:root[data-style="swiss"] .wk-page .wk-grip{display:flex;align-items:center;justify-content:center;background:none;border:0;
  box-shadow:none;padding:0;margin:0;min-height:0;height:var(--sz-sw-grip);color:var(--ink2);-webkit-touch-callout:none}
:root[data-style="swiss"] .wk-page .wk-grip-left{position:absolute;top:var(--sp-sw-ex-top);
  left:calc(-1 * (var(--sz-sw-rail) + var(--sp-sw-rail-gap) + var(--sp-sw-exlist-x)));
  width:calc(var(--sz-sw-rail) + var(--sp-sw-rail-gap) + var(--sp-sw-exlist-x))}
:root[data-style="swiss"] .wk-page .wk-grip-right{width:var(--sz-sw-wktag)}
:root[data-style="swiss"] .wk-page .wk-ex-head{align-items:flex-start}
:root[data-style="swiss"] .wk-page .wk-ex-right{display:flex;flex-direction:column;align-items:flex-end;gap:var(--sp-sw-grip-gap)}
:root[data-style="swiss"] .wk-page .wk-ex-foot{display:flex;justify-content:flex-end}
:root[data-style="swiss"] .wk-page .wk-exdel{color:var(--accent);border:0}
:root[data-style="swiss"] .wk-page #exercises.wk-dragging > .wk-ex{transition:transform .15s}
:root[data-style="swiss"] .wk-page #exercises > .wk-ex.dragging{z-index:2;transition:none;background:var(--panel2);
  box-shadow:0 6px 16px rgba(0,0,0,.18)}
:root[data-style="swiss"] .wk-page .wk-ex.dragging .wk-grip{color:var(--accent);cursor:grabbing}

/* -- Today's Workout, the owner's first round of notes (2026-10-21) --
   Scoped to body.wk-page: the other screens keep the rules above. */
/* Nothing smaller than the recent-day dates. */
:root[data-style="swiss"] .wk-page :is(.back,.wk-mini,.wk-raw,.wk-tag,.wk-effort button,pre.wk-ctx,
  .unit-switch button,.style-switch .seg button,.style-switch .lbl,.card .kind,footer){font-size:var(--swiss-fs-floor)}
/* Section headings (Session name, Date, Gym, Add an exercise...): larger
   than anything else in their row, REORDER included. */
:root[data-style="swiss"] .wk-page .field:not(.style-switch) > :is(label,.lbl){font-size:var(--swiss-fs-section);
  font-weight:700;color:var(--ink);letter-spacing:var(--ls-head);margin-bottom:6px}
/* Effort (clean / barely / failed): amber when picked, not red. */
:root[data-style="swiss"] .wk-page .wk-effort button[aria-pressed=true]{color:var(--swiss-effort);border-color:var(--swiss-effort)}
/* Each set in its own box; a heavier rule where one set meets the next. */
:root[data-style="swiss"] .wk-page .wk-sets{border-top:0}
:root[data-style="swiss"] .wk-page .wk-set{border:var(--swiss-bw-set) solid var(--ink2);padding:10px 6px}
/* Inside the box the option row still fits one line on a phone. */
:root[data-style="swiss"] .wk-page .wk-setopts :is(.wk-tag:not(.wk-ico),.wk-effort button){padding:8px 6px}
/* Narrow phones (375pt): tighter sides so note and delete stay on the line. */
@media (max-width:400px){
  :root[data-style="swiss"] .wk-page .wk-setopts :is(.wk-tag:not(.wk-ico),.wk-effort button){padding:8px var(--sp-sw-opt-narrow-x)}
  :root[data-style="swiss"] .wk-page .wk-setopts .wk-ico{width:var(--sz-sw-wkico-narrow)}
}
:root[data-style="swiss"] .wk-page .wk-set.warm{border-style:dashed}
:root[data-style="swiss"] .wk-page .wk-set + .wk-set{border-top:var(--swiss-bw-set-gap) solid var(--ink)}

/* Today's Workout redesign (owner, 2026-10-22). */
:root[data-style="swiss"] .wk-page .wk-hero{display:flex;align-items:flex-end;gap:4px;flex:0 0 auto;margin-left:auto}
:root[data-style="swiss"] .wk-page .wk-hero img{display:block;image-rendering:pixelated}
:root[data-style="swiss"] .wk-variant{font-size:var(--fs-sw-variant);color:var(--ink2);font-weight:400}
:root[data-style="swiss"] .wk-variant-line{margin-top:2px;padding-left:1.1em}
:root[data-style="swiss"] .wk-head{margin-top:var(--sp-sw-row);padding-top:var(--sp-sw-row);border-top:1px solid var(--rule)}
:root[data-style="swiss"] .wk-recent{border-style:solid;border-width:var(--box-lines-fold);border-color:var(--boxc-lines-fold)}
:root[data-style="swiss"] .wk-recent > summary{font-family:var(--body);font-size:var(--fs-sw-fold);color:var(--ink);padding:var(--sp-sw-row) 0}
:root[data-style="swiss"] .wk-recent > summary::marker{color:var(--moss)}
:root[data-style="swiss"] .wk-page button.act.wk-boxbtn{display:flex;justify-content:center;align-items:center;gap:8px}
:root[data-style="swiss"] .wk-page button.act.wk-danger{margin-top:var(--sp-sw-row);color:#fff;background:var(--swiss-danger);border-color:var(--swiss-danger)}
:root[data-style="swiss"] .wk-warn{background:var(--panel2);border:var(--swiss-bw-set) solid var(--swiss-danger);color:var(--ink);
  font-family:var(--body);font-size:var(--fs-sw-fold);padding:var(--sp-sw-row) var(--sp-sw-card-x)}
/* Setup / Cue / Other / Pain: one row, one box open (owner, 2026-10-23). */
:root[data-style="swiss"] .wk-page .wk-tabs .wk-tab{font-size:var(--fs-sw-fold);color:var(--ink);padding:8px 2px}
:root[data-style="swiss"] .wk-page .wk-tabs .wk-tab[aria-expanded=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
:root[data-style="swiss"] .wk-dot{color:var(--accent)}
:root[data-style="swiss"] .wk-tablines{font-family:var(--body);font-size:var(--fs-sw-note);color:var(--ink2)}
:root[data-style="swiss"] .wk-recent[open] > summary .wk-peek{display:none}
:root[data-style="swiss"] div.wk-ctx{background:none;border-style:solid;border-width:var(--box-cards-ctx);border-color:var(--boxc-cards-ctx);
  font-family:var(--swiss-code);font-size:var(--fs-sw-ctx);color:var(--ink2);padding:6px 0 6px 12px}
:root[data-style="swiss"] .wk-ctx b{color:var(--ink);font-weight:var(--fw-sw-sub)}
:root[data-style="swiss"] :is(.wk-page,.ex-page) span.wk-date{font-family:ui-monospace,"SF Mono","IBM Plex Mono",monospace;font-size:.9em}
:root[data-style="swiss"] .wk-unit{font-family:var(--body);font-size:var(--fs-sw-wkunit);color:var(--swiss-mute)}
:root[data-style="swiss"] .wk-setline .wk-tag.wk-setlabel{border:var(--sz-sw-setlabel) solid var(--ink2);
  padding:var(--sp-sw-wktag-y) 6px;min-width:4.6em;text-align:center;letter-spacing:.04em;text-transform:uppercase}
:root[data-style="swiss"] .wk-set.warm .wk-setline .wk-tag.wk-setlabel{border-style:dashed}
:root[data-style="swiss"] .wk-raw b{color:var(--ink2);font-weight:var(--fw-sw-sub)}
:root[data-style="swiss"] .wk-notelbl{font-family:var(--body);font-size:var(--fs-sw-label);color:var(--ink2)}
/* The past-numbers block, folded to one line per section (owner, 2026-10-22). */
:root[data-style="swiss"] .wk-hist{border-style:solid;border-width:var(--box-lines-fold);border-color:var(--boxc-lines-fold)}
:root[data-style="swiss"] .wk-hist > summary{font-family:var(--body);font-size:var(--fs-sw-fold);color:var(--ink);padding:var(--sp-sw-row) 0}
:root[data-style="swiss"] .wk-hist > summary .wk-peek{font-family:var(--swiss-code);font-size:var(--fs-sw-ctx)}
:root[data-style="swiss"] .wk-hist > summary::marker,:root[data-style="swiss"] .wk-sec > summary::marker{color:var(--moss)}
:root[data-style="swiss"] .wk-sec > summary{padding:2px 0}
:root[data-style="swiss"] .wk-single{font-family:var(--body);font-size:var(--fs-sw-fold);color:var(--ink);gap:10px}
:root[data-style="swiss"] .wk-single input[type=checkbox]{-webkit-appearance:none;appearance:none;flex:0 0 auto;
  width:var(--sz-sw-check);height:var(--sz-sw-check);margin:0;border:var(--sz-sw-setlabel) solid var(--ink);border-radius:0;
  background:transparent center/70% no-repeat;cursor:pointer}
:root[data-style="swiss"] .wk-single input[type=checkbox]:checked{background-color:var(--accent);border-color:var(--accent);
  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='4' stroke-linecap='square'%3E%3Cpath d='M4 12l5 5L20 6'/%3E%3C/svg%3E")}
:root[data-style="swiss"] .wk-single input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
:root[data-style="swiss"] .wk-subresult{font-size:var(--fs-sw-subresult)}
:root[data-style="swiss"] :is(.wk-page,.ex-page) .wk-ctx span.wk-date{font-size:.95em}
:root[data-style="swiss"] .wk-summary summary{font-family:var(--body);font-size:var(--swiss-fs-section);font-weight:var(--fw-sw-head);
  color:var(--ink);cursor:pointer;padding:var(--sp-sw-row) 0}
:root[data-style="swiss"] .wk-summary summary::marker{color:var(--moss)}
/* SUMMARY and Session notes: section headings; Simple / Full beside SUMMARY. */
:root[data-style="swiss"] .wk-page .wk-sessnotes > summary{font-size:var(--swiss-fs-section);font-weight:var(--fw-sw-head);
  color:var(--ink);padding:var(--sp-sw-row) 0}
:root[data-style="swiss"] .wk-page .wk-sessnotes > summary .wk-peek{font-size:var(--fs-sw-note);font-weight:400;color:var(--ink2)}
:root[data-style="swiss"] .wk-page .wk-summary > summary > span:first-child{margin-right:12px}
:root[data-style="swiss"] .wk-page .wk-sumseg{display:inline-flex;vertical-align:middle}
:root[data-style="swiss"] .wk-page .wk-sumseg button{flex:0 0 auto;font-size:var(--fs-sw-fold);
  border:var(--swiss-bw-set) solid var(--ink2);padding:6px 12px;min-height:0}
/* Delete an exercise? A box over the page (owner, 2026-10-30). */
:root[data-style="swiss"] .wk-confirm{background:rgba(0,0,0,.45)}
:root[data-style="swiss"] .wk-confirm-box{background:var(--paper);border:var(--sz-sw-setlabel) solid var(--swiss-danger);
  padding:var(--sp-sw-row) var(--sp-sw-card-x)}
:root[data-style="swiss"] .wk-confirm-box h2{font-family:var(--body);font-weight:var(--fw-sw-head);font-size:var(--fs-sw-ex-folded);margin:0 0 8px}
:root[data-style="swiss"] .wk-confirm-box p{font-family:var(--body);font-size:var(--fs-sw-fold);color:var(--ink);margin:0}
:root[data-style="swiss"] .wk-page .wk-confirm-bar .act.wk-danger{margin-top:0;color:#fff;background:var(--swiss-danger);border-color:var(--swiss-danger)}
:root[data-style="swiss"] .wk-summary summary::-webkit-details-marker{color:var(--moss)}
:root[data-style="swiss"] .wk-review{background:var(--paper)}
:root[data-style="swiss"] .wk-review-bar{border-bottom:var(--sz-sw-setlabel) solid var(--ink);
  padding:calc(env(safe-area-inset-top) + 10px) 16px 10px}
:root[data-style="swiss"] .wk-review-bar .act.ghost{text-align:center;justify-content:center}
:root[data-style="swiss"] .wk-review-body h2{font-family:var(--body);font-weight:var(--fw-sw-head);font-size:var(--fs-sw-ex-folded);margin:0 0 8px}
/* Exercises page (owner, 2026-10-22): rows on rules, no boxes; actions as text links. */
:root[data-style="swiss"] .ex-jump{font-family:var(--body);font-size:var(--fs-sw-exjump);gap:var(--sp-sw-exjump-y) var(--sp-sw-exgap);
  padding-bottom:var(--sp-sw-exrow);border-bottom:var(--bw) solid var(--rule)}
:root[data-style="swiss"] .ex-jump a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
:root[data-style="swiss"] .ex-group{margin-top:var(--sp-wk-stack)}
:root[data-style="swiss"] .ex-group-head{font-family:var(--body);font-size:var(--fs-sw-exgroup);font-weight:var(--fw-sw-head);
  border-bottom:var(--bw-mid) solid var(--ink);padding-bottom:var(--sp-sw-label);margin:0}
:root[data-style="swiss"] .ex-parent{border:0;border-bottom:var(--bw) solid var(--rule);background:none;margin:0}
:root[data-style="swiss"] .ex-parent > summary{font-family:var(--body);font-size:var(--fs-sw-exparent);padding:var(--sp-sw-exrow) 0}
:root[data-style="swiss"] .ex-name{font-weight:var(--fw-sw-head)}
:root[data-style="swiss"] .ex-meta{font-family:var(--body);font-size:var(--fs-sw-note);color:var(--ink2)}
:root[data-style="swiss"] .ex-variant{border-top:var(--bw) solid var(--rule2);padding:var(--sp-sw-exrow) 0 var(--sp-sw-exrow) var(--sp-sw-ctx-x)}
:root[data-style="swiss"] .ex-vhead b{font-size:var(--fs-sw-exvariant);font-weight:var(--fw-sw-sub)}
:root[data-style="swiss"] .ex-tag{font-family:var(--body);font-size:var(--fs-sw-tag);border:0;padding:0;color:var(--moss)}
:root[data-style="swiss"] :is(.ex-facts,.ex-pending){font-family:var(--body);font-size:var(--fs-sw-note)}
:root[data-style="swiss"] .ex-actions{gap:var(--sp-sw-exgap)}
:root[data-style="swiss"] :is(.ex-actions,.ex-hidden-row) button{font-family:var(--body);font-size:var(--fs-sw-exbtn);
  border:0;background:none;color:var(--ink);text-decoration:underline;text-underline-offset:3px;padding:var(--sp-sw-unit-y) 0}
:root[data-style="swiss"] :is([data-retire],[data-delete]){color:var(--accent)}
:root[data-style="swiss"] .ex-edit label{font-family:var(--body);font-size:var(--fs-sw-label)}
:root[data-style="swiss"] .ex-fold{border:0;border-top:var(--bw-mid) solid var(--ink);background:none;padding:var(--sp-sw-exrow) 0}
:root[data-style="swiss"] .ex-fold summary{font-family:var(--body);font-size:var(--fs-sw-fold);font-weight:var(--fw-sw-head)}
:root[data-style="swiss"] .ex-hidden-row{border-top:var(--bw) solid var(--rule2);padding:var(--sp-sw-exrow) 0}
:root[data-style="swiss"] .ex-more-cues summary{font-family:var(--body);font-size:var(--fs-sw-ctx);color:var(--ink2);padding:var(--sp-sw-ctx-y) 0 var(--sp-sw-ctx-y) var(--sp-sw-ctx-x)}
:root[data-style="swiss"] .ex-add{margin:var(--sp-sw-exadd) 0;padding-bottom:var(--sp-sw-exadd);border-bottom:var(--bw-mid) solid var(--ink)}
:root[data-style="swiss"] .ex-seg button{flex:1 0 22%;padding:var(--sp-sw-seg-y) var(--sp-sw-seg-x)}
:root[data-style="swiss"] #add-name{margin-top:var(--sp-sw-seg-gap)}
:root[data-style="swiss"] a.ext{color:var(--ink);text-underline-offset:2px}

:root[data-style="swiss"] .wk-page button.act.wk-save{display:flex;justify-content:center;align-items:center;gap:8px}

:root[data-style="swiss"] .term-tip{font-family:var(--body);font-size:var(--fs-sw-note);border-left:var(--bw-mid) solid var(--accent)}

/* 7.8 sign-in and admin */
:root[data-style="swiss"] .signin-support{margin-top:var(--sp-sw-exadd)}
:root[data-style="swiss"] .admin-block{margin-top:var(--sp-wk-stack);border-top:var(--bw-mid) solid var(--ink);padding-top:var(--sp-sw-exrow)}
:root[data-style="swiss"] .admin-once{border-left:var(--bw-mid) solid var(--accent);padding-left:var(--sp-sw-ctx-x);margin:var(--sp-sw-exrow) 0}
:root[data-style="swiss"] .admin-code{font-family:var(--mono);font-size:var(--fs-sw-exgroup);letter-spacing:.08em;margin:0}
:root[data-style="swiss"] .admin-table{width:100%;border-collapse:collapse;margin-top:var(--sp-sw-exrow);font-family:var(--body);font-size:var(--fs-sw-note)}
:root[data-style="swiss"] .admin-table :is(th,td){text-align:left;padding:var(--sp-sw-unit-y) var(--sp-sw-unit-y) var(--sp-sw-unit-y) 0;border-bottom:var(--bw) solid var(--rule);vertical-align:top;overflow-wrap:anywhere}
:root[data-style="swiss"] .admin-table th{font-weight:var(--fw-sw-head)}
:root[data-style="swiss"] .admin-table tr[data-status="used"] td{color:var(--ink2)}
/* 7.1 feedback */
:root[data-style="swiss"] .fb form { display:flex; flex-direction:column; gap:var(--sp-sw-input-y); }
:root[data-style="swiss"] .fb-kind { border:0; padding:0; margin:0 0 8px; display:flex; flex-direction:column; gap:6px; }
:root[data-style="swiss"] .fb-kind label { min-height:var(--sz-sw-tap); display:flex; align-items:center; gap:8px; }
:root[data-style="swiss"] .fb-label { font-weight:700; margin-top:8px; }
:root[data-style="swiss"] .fb textarea { width:100%; box-sizing:border-box; }
:root[data-style="swiss"] .fb-count { text-align:right; }
:root[data-style="swiss"] .fb-preview img, :root[data-style="swiss"] .rp-image { max-width:100%; height:auto; display:block; border:1px solid var(--rule); margin:6px 0; }
:root[data-style="swiss"] .fb-meta dl { display:grid; grid-template-columns:auto 1fr; gap:2px 12px; margin:6px 0; }
:root[data-style="swiss"] .fb-meta dd { margin:0; overflow-wrap:anywhere; }
:root[data-style="swiss"] .rp-list { list-style:none; padding:0; margin:12px 0; }
:root[data-style="swiss"] .rp-item { border-top:1px solid var(--rule); padding:12px 0; }
:root[data-style="swiss"] .rp-head { font-weight:700; }
:root[data-style="swiss"] .rp-body { white-space:pre-wrap; overflow-wrap:anywhere; }
:root[data-style="swiss"] .rp-actions { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:8px; }
:root[data-style="swiss"] .rp-email { overflow-wrap:anywhere; }
:root[data-style="swiss"] .rp-fixed .rp-head, :root[data-style="swiss"] .rp-wont_fix .rp-head { opacity:.6; }
/* 7.4 settings, 7.6 about and jobs */
:root[data-style="swiss"] .set-email{margin:0;font-family:var(--body);font-size:var(--fs-sw-input);color:var(--ink)}
:root[data-style="swiss"] #set-textsize{width:100%;accent-color:var(--accent)}
:root[data-style="swiss"] label[for="set-textsize"]{display:flex;justify-content:space-between}
:root[data-style="swiss"] #set-textsize-val{font-variant-numeric:tabular-nums;color:var(--ink)}
:root[data-style="swiss"] .set-report{margin-top:var(--sp-sw-field)}
:root[data-style="swiss"] .about h2{font-family:var(--body);font-weight:var(--fw-sw-head);font-size:var(--fs-sw-input);margin:var(--sp-sw-field) 0 0}
:root[data-style="swiss"] .about p{font-family:var(--body);font-size:var(--fs-sw-copy);color:var(--ink2)}
:root[data-style="swiss"] .draft-tag{font-family:var(--body);font-size:var(--fs-sw-note);color:var(--accent);text-transform:uppercase}
/* the crow is black, so its stage stays white in both themes, like Log's */
:root[data-style="swiss"] .jobs-stage{display:flex;justify-content:center;background:#FFFFFF;border:1px solid var(--rule);padding:var(--sp-sw-field) 0}
:root[data-style="swiss"] .jobs-crow{zoom:3}
:root[data-style="swiss"] .jobs-line{font-family:var(--body);font-size:var(--fs-sw-input);color:var(--ink);text-align:center}
:root[data-style="swiss"] .jobs .hint{text-align:center}
/* 7.3 tips */
:root[data-style="swiss"] .tip-pop{font-family:var(--body);font-size:var(--fs-sw-note);border:0;border-top:var(--bw-mid) solid var(--accent);box-shadow:0 -2px 12px rgba(0,0,0,.18)}
:root[data-style="swiss"] .tip-pop-title{font-weight:var(--fw-sw-head)}
:root[data-style="swiss"] .tip-pop-actions :is(a,button){font-family:var(--body);font-size:var(--fs-sw-exbtn);text-underline-offset:3px}
:root[data-style="swiss"] .tip-pop-actions > :first-child{font-weight:var(--fw-sw-head)}
/* 7.2 help */
:root[data-style="swiss"] .help-item{border-bottom:var(--bw-hair) solid var(--rule);padding:var(--sp-sw-row) 0}
:root[data-style="swiss"] .help-item summary{font-family:var(--body);color:var(--ink);cursor:pointer}
:root[data-style="swiss"] .help-draft{font-size:var(--fs-sw-label);color:var(--accent);text-transform:uppercase;letter-spacing:.08em}
:root[data-style="swiss"] .help-terms{list-style:none;padding:0;font-size:var(--fs-sw-note)}
/* 7.7 calendar */
:root[data-style="swiss"] .cal-nav{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-sw-row)}
:root[data-style="swiss"] .cal-month{font-family:var(--body);font-size:var(--fs-sw-fold);font-weight:var(--fw-sw-head);margin:0}
:root[data-style="swiss"] .cal-arrow{min-width:var(--sz-sw-tap);min-height:var(--sz-sw-tap);border:0;background:none;color:var(--ink);font-size:var(--fs-sw-fold);cursor:pointer}
:root[data-style="swiss"] .cal-grid{width:100%;border-collapse:collapse;table-layout:fixed;margin-top:var(--sp-sw-row)}
:root[data-style="swiss"] .cal-grid th{font-family:var(--body);font-size:var(--fs-sw-label);font-weight:var(--fw-sw-sub);color:var(--ink2);padding-bottom:var(--sp-sw-label)}
:root[data-style="swiss"] .cal-grid td{padding:0;border-top:var(--bw) solid var(--rule2);vertical-align:top}
:root[data-style="swiss"] .cal-day{display:flex;flex-direction:column;align-items:center;width:100%;min-height:var(--sz-sw-calcell);
  border:0;background:none;color:var(--ink);font-family:var(--body);padding:var(--sp-sw-label) 0;cursor:pointer;overflow:hidden}
:root[data-style="swiss"] .cal-num{font-size:var(--fs-sw-note);line-height:1;padding:var(--sp-sw-label);border:var(--bw-mid) solid transparent;border-radius:50%;
  min-width:var(--fs-sw-ctx);text-align:center}
:root[data-style="swiss"] .cal-day.today .cal-num{border-color:var(--accent)}
:root[data-style="swiss"] .cal-day.picked{background:var(--panel2);outline:var(--bw) solid var(--ink)}
:root[data-style="swiss"] .cal-dot{width:var(--sz-sw-caldot);height:var(--sz-sw-caldot);border-radius:50%;background:var(--ink);margin-top:var(--sp-sw-label)}
:root[data-style="swiss"] .cal-label{font-size:var(--fs-sw-tag);color:var(--ink2);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root[data-style="swiss"] .cal-link{border:0;background:none;color:var(--ink);font-family:var(--body);font-size:var(--fs-sw-note);
  text-decoration:underline;text-underline-offset:3px;padding:var(--sp-sw-row) 0;cursor:pointer}
:root[data-style="swiss"] .cal-summary{border-top:var(--bw-mid) solid var(--ink);padding-top:var(--sp-sw-row)}
:root[data-style="swiss"] .cal-day-date{font-family:var(--body);font-size:var(--fs-sw-fold);font-weight:var(--fw-sw-head);margin:0}
:root[data-style="swiss"] .cal-session h3{font-family:var(--body);font-size:var(--fs-sw-note);font-weight:var(--fw-sw-head);margin:var(--sp-sw-row) 0 0}
:root[data-style="swiss"] .cal-ex{list-style:none;margin:0;padding:0}
:root[data-style="swiss"] .cal-ex li{display:flex;justify-content:space-between;gap:var(--sp-sw-row);font-family:var(--body);font-size:var(--fs-sw-note);
  padding:var(--sp-sw-label) 0;border-bottom:var(--bw) solid var(--rule2)}
:root[data-style="swiss"] .cal-top{font-family:var(--mono);color:var(--ink2);white-space:nowrap}
:root[data-style="swiss"] .cal-act{color:var(--accent);font-family:var(--body);font-size:var(--fs-sw-note);text-underline-offset:3px}
/* 7.9 dashboard summary (/my-dashboard.html) */
:root[data-style="swiss"] .my-dash h2{margin:22px 0 8px}
:root[data-style="swiss"] .my-dash .stats{margin-top:12px;border-top:2px solid var(--ink)}
:root[data-style="swiss"] .sumtabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 28px;margin-top:18px;align-items:start}
:root[data-style="swiss"] .sumtabs th:last-child{text-align:right}
:root[data-style="swiss"] .sumtabs table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}
:root[data-style="swiss"] .sumtabs th{text-align:left;font-weight:500;font-size:var(--fs-sw-label);color:var(--ink2);
  border-bottom:1px solid var(--ink);padding:5px 0}
:root[data-style="swiss"] .sumtabs td{border-bottom:1px solid var(--rule);padding:5px 0}
:root[data-style="swiss"] .sumtabs td.w{text-align:right;font-weight:500}
:root[data-style="swiss"] .sumtabs .muted{color:var(--ink2)}
