/* Annie design tokens: the ONE file every Annie screen uses. build-review.mjs puts it first in /review/app.css, which every
   Annie page links (the workspace, Team, My profile, Email delivery, Safety reports, Website questions, Password).
   The look is the studio website's (origin/work/launch-candidate-20260927 public/styles.css, brand-colors.css and fonts.css) and
   the Weekly email's Website theme (src/email-themes.mjs): warm white paper, charcoal #404041 text, Spotlight maroon #7f1623,
   Midtown red #a00826 over the gold #e7bd65 rule, Playfair Display headings over DM Sans, 3 px buttons, uppercase section labels.
   Every text pair below is checked for WCAG AA contrast by test/navigation-view.test.mjs. Annie has no dark mode (it had none
   before the sidebar), so these are light-mode values only.
   Fonts: the website's own files, bundled in review/fonts and served by this Worker (/review/fonts/*), never a third-party host.
   font-display: optional with a preload means a page never re-flows when a font arrives: the first paint's font is the font. */
@font-face{font-family:'DM Sans';font-style:normal;font-weight:400 600;font-display:optional;src:url(/review/fonts/dm-sans-400-600.woff2) format('woff2')}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:700;font-display:optional;src:url(/review/fonts/dm-sans-700.woff2) format('woff2')}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:500;font-display:optional;src:url(/review/fonts/playfair-display-500.woff2) format('woff2')}
:root{
  color-scheme:light;
  /* type */
  --serif:'Playfair Display',Georgia,'Times New Roman',serif;
  --sans:'DM Sans',Arial,'Helvetica Neue',Helvetica,sans-serif;
  --text-xs:11px;--text-sm:12px;--text-md:14px;--text-lg:16px;
  /* surfaces and text */
  --ink:#404041;           /* charcoal: body text (website brand ink) */
  --muted:#5c5b5e;         /* secondary text: 6.4:1 on paper, 5.8:1 on page */
  --paper:#fffefa;         /* cards, panels, the sidebar */
  --page:#f5f3f1;          /* the app background */
  --soft:#f3f1f1;          /* quiet panels, message bubbles (website --light) */
  --hover:#f1ecec;
  --line:#ddd9da;          /* dividers (decorative) */
  --field-line:#8a8586;    /* form fields and outline buttons: 3.6:1 against paper (WCAG 1.4.11) */
  /* brand */
  --accent:#7f1623;        /* Spotlight maroon: primary buttons, links, active navigation */
  --accent-hover:#63101b;
  --on-accent:#ffffff;
  --accent-soft:#f6ecee;   /* the active navigation item and selected rows */
  --mts:#a00826;           /* Midtown red */
  --gold:#e7bd65;          /* the rule between the stacked names; decoration only, never text on white */
  --selected:#f6ecee;
  --selected-line:#c99aa2;
  --focus:#9a415b;         /* the website's brand focus ring colour */
  /* states */
  --ok:#1d5c2e;--ok-bg:#e6f0e8;
  --warn:#6f4419;--warn-bg:#fff0d5;--warn-line:#e5c98f;
  --danger:#8a1c1c;--danger-bg:#fbe6e1;--danger-line:#e2b0a6;
  --backdrop:#2a2a2b99;
  /* shape and layout */
  --radius:3px;--radius-card:6px;
  --sidebar-w:252px;--topbar-h:56px;--bottombar-h:62px;
  --shadow:0 4px 18px #2a2a2b1f;
}
/* The sub-screen tab bar (review/subnav.js, AnnieSubnav): directly under a page's title, the same look on every screen. The website's
   underline tabs: the current tab in maroon over a gold rule, with aria-current="page". Phones: one row that scrolls sideways, or a
   labelled select when a bar has more tabs than fit (.subnav-many). */
.subnav{margin:-4px 0 18px;border-bottom:1px solid var(--line)}
.subnav-tabs{list-style:none;margin:0;padding:0 2px;display:flex;gap:4px 22px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.subnav-tabs li{flex-shrink:0}
.subnav-tab{display:inline-flex;align-items:center;min-height:44px;padding:8px 2px 7px;border-bottom:3px solid transparent;color:var(--muted);font:600 var(--text-md)/1.3 var(--sans);text-decoration:none;white-space:nowrap}
.subnav-tab:hover{color:var(--ink);border-bottom-color:var(--line)}
.subnav-tab[aria-current="page"]{color:var(--accent);border-bottom-color:var(--gold)}
.subnav-tab:focus-visible{outline-offset:-3px}
.subnav-select-wrap{display:none}
@media(max-width:860px){
  .subnav{margin:0 0 14px}
  .subnav-tabs{gap:4px 18px;scroll-snap-type:x proximity}
  .subnav-tabs li{scroll-snap-align:start}
  .subnav-many{border-bottom:0}
  .subnav-many .subnav-tabs{display:none}
  .subnav-many .subnav-select-wrap{display:block}
  .subnav-select{font-weight:600;min-height:44px}
}

/* Annie base styles. Colours, type and sizes come from tokens.css. The shell is
   in nav.css; workspace working-surface patterns are in workspaces.css. */
*{box-sizing:border-box}
html{background:var(--page)}
body{margin:0;background:var(--page);color:var(--ink);font:var(--text-md)/1.5 var(--sans);font-synthesis:none;-webkit-text-size-adjust:100%}
a{color:var(--accent);text-underline-offset:3px}
a:hover{color:var(--accent-hover)}
h1,h2,h3{color:var(--ink);margin:0}
h1{font:500 clamp(26px,2.4vw,32px)/1.15 var(--serif);letter-spacing:-.01em;margin:0 0 6px}
h2{font:600 16px/1.3 var(--sans)}
h3{font:600 14px/1.35 var(--sans)}
.page-heading h1+p,.page-heading p{margin:0}
.eyebrow{display:block;font:700 var(--text-xs)/1.4 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0 0 6px}
.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px 24px;margin:0 0 18px;flex-wrap:wrap}
.page-heading>div:first-child{min-width:0}
/* A workspace is operational: one clear title and one selected scope. Existing
   specialist forms keep their own typography until their workflow is composed. */
.workspace-page>.page-heading h1{font:650 clamp(27px,2.4vw,33px)/1.2 var(--sans);letter-spacing:-.025em}
.workspace-page>.page-heading{align-items:flex-start;margin-bottom:24px}
.workspace-page>.page-heading .eyebrow{color:var(--muted);letter-spacing:.08em}
.workspace-page button,.workspace-page .button{min-height:44px}
.workspace-page input,.workspace-page select{min-height:44px}
.facebook-link{font-size:13px;font-weight:600}
.notice{background:var(--soft);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:var(--radius-card);padding:10px 14px;display:flex;gap:10px;font-size:var(--text-sm);line-height:1.55;margin:0 0 16px}
.notice span:not(.dot){display:block;color:var(--muted)}
.dot{display:none}
.desk{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);display:grid;grid-template-columns:320px minmax(0,1fr);overflow:hidden;min-height:540px}
aside{padding:14px;border-right:1px solid var(--line);background:var(--paper)}
.list-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:6px}
.list-heading h2{font-size:var(--text-md)}
.list-heading>span{font-size:var(--text-sm);color:var(--muted);margin-right:auto;font-variant-numeric:tabular-nums}
/* buttons: the website's 3 px buttons. Primary is Spotlight maroon; the rest are outlined. */
button,.button{font:600 13px/1.3 var(--sans);border:1px solid var(--field-line);background:var(--paper);color:var(--ink);padding:8px 14px;min-height:36px;border-radius:var(--radius);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-align:center}
button:hover,.button:hover{background:var(--hover);color:var(--ink)}
button:disabled{cursor:not-allowed;opacity:.6}
.primary,.button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.primary:hover,.button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--on-accent)}
.quiet{border-color:transparent;background:transparent;padding:6px 8px;min-height:32px;font-weight:600;font-size:var(--text-sm);color:var(--accent)}
.quiet:hover{background:var(--hover);color:var(--accent-hover)}
input,select,textarea{font:var(--text-md)/1.45 var(--sans);display:block;width:100%;border:1px solid var(--field-line);background:var(--paper);color:var(--ink);border-radius:var(--radius);padding:8px 10px;min-height:36px}
::placeholder{color:var(--muted);opacity:1}
/* One visible focus ring everywhere (the website's), for mouse-free use. */
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:1px}
aside input{font-size:13px;margin-bottom:8px}
aside select{font-size:13px;margin-bottom:10px;padding:6px 8px}
.thread{display:block;width:100%;text-align:left;padding:10px;margin:0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;font-weight:400;min-height:0}
.thread:hover{background:var(--hover)}
.thread.selected{background:var(--selected);box-shadow:inset 3px 0 0 var(--accent)}
.thread strong{font-size:13px;display:block;margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.thread .snippet{font-size:var(--text-sm);color:var(--muted);display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-bottom:4px}
.thread .meta{font-size:var(--text-xs);color:var(--muted);display:flex;justify-content:space-between;gap:6px;flex-wrap:wrap}
.scope-note{font-size:var(--text-xs);line-height:1.6;color:var(--muted);margin-top:14px}
.conversation-panel{min-width:0}
.conversation-heading{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.status{display:inline-block;font-size:var(--text-sm);color:var(--muted);margin-top:4px}
.history{padding:14px 18px;max-height:340px;overflow:auto;display:flex;flex-direction:column;gap:10px}
.bubble{max-width:85%;align-self:flex-start}
.bubble.outbound{align-self:flex-end}
.bubble p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--soft);padding:9px 12px;border-radius:var(--radius-card);font-size:13px;line-height:1.55}
.bubble.outbound p{background:var(--selected)}
.bubble small{font-size:var(--text-xs);color:var(--muted);display:block;margin:4px 2px}
.draft-area{padding:14px 18px;border-top:1px solid var(--line)}
.draft-heading{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px}
.draft-heading span{font-size:var(--text-sm);color:var(--muted)}
textarea{resize:vertical}
#draft-text{font-size:var(--text-md);line-height:1.6}
.actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.hint{color:var(--muted);font-size:var(--text-sm);line-height:1.55}#send-hint{overflow-wrap:anywhere}
details{margin-top:16px;padding-top:10px;border-top:1px solid var(--line);font-size:13px}
summary{cursor:pointer;font-size:13px;font-weight:600;margin-bottom:8px}
label{display:block;font-size:13px;font-weight:600;margin:12px 0 5px}
.warning{margin:10px 18px;padding:10px 12px;background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-line);border-radius:var(--radius);font-size:13px}
.empty{text-align:center;max-width:380px;margin:80px auto;padding:20px;color:var(--muted)}
.large-a{display:none}
.empty h2{font:500 22px/1.2 var(--serif);color:var(--ink);margin-bottom:8px}
.empty p{font-size:13px;line-height:1.6}
.login-card{max-width:440px;padding:28px;margin:24px auto 48px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card)}
.login-card h1{font-size:30px;margin-bottom:12px}
.intro{font-size:var(--text-md);line-height:1.7;color:var(--muted)}
.login-card button{width:100%;margin-top:14px}
#message{position:sticky;bottom:16px;margin:12px auto 0;max-width:650px;text-align:center;font-size:13px;line-height:1.5;z-index:40}
#message:not(:empty){padding:11px 18px;background:var(--ink);color:var(--paper);border-radius:var(--radius-card);box-shadow:var(--shadow)}
footer.app-footer{padding:14px 24px 24px;font-size:var(--text-sm);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;color:var(--muted)}
footer.app-footer a{color:var(--muted)}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* Tab rows inside a screen (Settings sections, the People profile's parts): the website's underline style. */
.app-tabs{display:flex;gap:4px 18px;margin:0 0 16px;border-bottom:1px solid var(--line);overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap}
.app-tabs button{border:0;border-bottom:3px solid transparent;border-radius:0;background:transparent;padding:8px 2px;min-height:40px;color:var(--muted);font-size:13px;flex-shrink:0}
.app-tabs button:hover{background:transparent;color:var(--ink)}
.app-tabs button[aria-selected="true"]{border-bottom-color:var(--gold);color:var(--accent)}
.settings-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:18px 20px;margin-bottom:14px}
.settings-card>h2{font:500 20px/1.25 var(--serif);margin-bottom:6px}
.settings-card>button{margin-top:12px}
.connection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}
.connection-card{padding:12px 14px;background:var(--soft);border-radius:var(--radius-card)}
.connection-card p{font-size:var(--text-sm);line-height:1.55;margin:4px 0}
.connection-card .eyebrow{margin:0 0 4px}
.checkbox{display:flex;gap:8px;align-items:center;font-weight:400}
.checkbox input{width:auto;min-height:0}
.settings-card input[type=date]{max-width:220px}
#conversation-list .thread:last-child{border-bottom:0}
#send-confirmation{max-width:min(560px,calc(100% - 32px));padding:22px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);color:var(--ink)}
#send-confirmation::backdrop{background:var(--backdrop)}
#confirm-destination{font-size:13px;line-height:1.6;color:var(--muted)}
#confirm-reply{margin:14px 0;padding:14px;background:var(--soft);border-radius:var(--radius-card);white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--text-md);line-height:1.65;max-height:45vh;overflow:auto}
#send-confirmation .actions{justify-content:flex-end}
@media(max-width:860px){
  .page-heading{align-items:flex-start;flex-direction:column;gap:8px}
  .desk{grid-template-columns:1fr}
  aside{border-right:0;border-bottom:1px solid var(--line)}
  .conversation-heading,.draft-area,.history{padding:14px}
  .empty{margin:30px auto}
  .login-card{padding:22px 18px}
  .actions>*{flex-grow:1}
  .connection-grid{grid-template-columns:1fr}
  .settings-card{padding:16px}
}
/* Shared staff questions, the People schedule switch and the Business report picker (moved onto the tokens). */
/* Shared staff questions */
.question-discard{border:1px solid var(--field-line);border-radius:7px;padding:14px;margin-top:14px;background:var(--soft)}.question-discard p{font-size:14px;line-height:1.6;margin:0 0 12px}
.question-tools{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px}.question-tools>button{margin-left:auto}.question-filters{display:grid;grid-template-columns:1fr 1fr 1.6fr;gap:14px;width:100%}.question-filters label{margin-top:4px}.question-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:24px;margin-bottom:14px}.question-card-heading{display:flex;align-items:center;justify-content:space-between;gap:18px}.question-card-heading h2{font-size:17px;line-height:1.4}.question-meta{color:var(--muted);font-size:11px;line-height:1.6;margin:0 0 6px;overflow-wrap:anywhere}.question-body{font-size:14px;line-height:1.7;max-width:850px;margin:14px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.question-answer{flex-shrink:0;color:var(--accent);border-color:var(--field-line);min-width:80px}.question-preview{border-left:3px solid var(--gold);padding:10px 14px;background:var(--soft);margin:15px 0 8px;font-size:14px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.question-editor{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.question-answers{max-height:360px;overflow:auto}.question-entry{padding:14px;background:var(--hover);border-radius:7px;margin-bottom:10px}.question-entry-body{margin:0;font-size:14px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.question-save-status,#questions-status,#question-new-status{font-size:13px;line-height:1.6;overflow-wrap:anywhere}.question-empty{padding:30px;background:var(--paper);border:1px solid var(--line);border-radius:10px;font-size:14px;line-height:1.6}.question-editor textarea{font-size:15px;min-height:115px}@media(max-width:620px){.question-filters{grid-template-columns:1fr 1fr}.question-filters>div:last-child{grid-column:1/-1}.question-card{padding:18px}.question-card-heading{align-items:flex-start;gap:12px}.question-card-heading h2{font-size:16px}.question-answer{max-width:110px;min-width:72px;padding:9px}.question-card .actions>*{flex-grow:0}.question-body{font-size:14px}}
/* Customers > Schedule: Upcoming on the left, Past visits on the right, one window that slides between them. */
.sched-switch{position:relative;display:inline-grid;grid-template-columns:1fr 1fr;margin:4px 0 14px;padding:3px;border:1px solid var(--field-line);border-radius:999px;background:var(--paper);isolation:isolate}
.sched-switch::before{content:"";position:absolute;z-index:-1;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:999px;background:var(--accent);transition:transform .35s cubic-bezier(.4,0,.2,1)}
.sched-switch[data-view="past"]::before{transform:translateX(100%)}
.sched-switch button{border:0;background:transparent;border-radius:999px;padding:8px 22px;font-size:14px;color:var(--muted);transition:color .25s;min-width:120px}
.sched-switch button[aria-pressed="true"]{color:#fff;font-weight:600}
.sched-window{overflow:hidden;touch-action:pan-y;transition:height .45s cubic-bezier(.4,0,.2,1)}
.sched-track{display:flex;width:200%;align-items:flex-start;transition:transform .45s cubic-bezier(.4,0,.2,1)}
.sched-track[data-view="past"]{transform:translateX(-50%)}
.sched-pane{flex:0 0 50%;box-sizing:border-box;padding:0 2px;transition:opacity .45s}
.sched-pane[inert]{opacity:0}
@media (prefers-reduced-motion:reduce){.sched-switch::before,.sched-window,.sched-track,.sched-pane{transition:none}}
/* Reports: a row of report buttons, one report at a time, summaries side by side. */
.report-picker{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.report-picker button{border:1px solid var(--field-line);border-radius:999px;background:var(--paper);color:var(--ink);padding:8px 16px;font-size:14px;transition:background .2s,color .2s,border-color .2s}
.report-picker button[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.report-card{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));column-gap:28px;align-items:start}
.report-card>*{grid-column:1/-1}
.report-card>.report-block{grid-column:auto;min-width:0}
.report-card>.report-block--wide{grid-column:1/-1}
.report-card[hidden]{display:none}
.report-block .studio-table{width:100%}
.report-enter{animation:report-in-right .32s cubic-bezier(.4,0,.2,1)}
.report-enter[data-from="left"]{animation-name:report-in-left}
@keyframes report-in-right{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:none}}
@keyframes report-in-left{from{opacity:0;transform:translateX(-28px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.report-enter{animation:none}.report-picker button{transition:none}}

.form-error{color:#8b2a1a;background:#fbeee9;border:1px solid #e6c2b6;border-radius:6px;padding:10px 12px;font-size:14px;line-height:1.5;margin:14px 0}
.autopay-controls{margin-block:1.25rem;max-width:42rem}.autopay-controls input,.autopay-controls select,.autopay-controls textarea{display:block;box-sizing:border-box;max-width:100%;width:100%;min-height:44px;margin-block:.35rem .75rem}.autopay-controls button{min-height:44px;margin:.35rem .5rem .35rem 0}.autopay-controls p{overflow-wrap:anywhere}.autopay-controls [hidden]{display:none!important}
/* D04: the Arrived tap on a private lesson in Today (today.js lessonDoor). */
.t-actions .t-arrive{min-height:44px;min-width:44px;padding:0 14px}
.t-arrived{font-weight:600;color:var(--ok);align-self:center}
.t-note{font-size:13px;color:var(--muted);align-self:center}

/* Task work starts with filters and the existing actions; source details stay available below the list. */
#tasks-filters>.task-filter-actions{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap}#tasks-filters>.task-filter-actions>button{flex:1 1 auto;min-height:44px}#tasks-panel .task-source-info{margin-top:14px}#tasks-panel #tasks-status:empty{display:none}
@media(min-width:851px){#tasks-filters>.task-filter-actions{grid-column:auto}}

@media(max-width:850px){#today-ask-card .tq-form textarea{font-size:16px}}

/* Customer photos (Ron, 2026-10-31; app.js customerAvatar): a Facebook or Instagram customer's photo, or their initials, beside the
   conversation in the list and in the conversation heading. The photo covers the initials. */
.cust-av{position:relative;overflow:hidden;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--soft);border:1px solid var(--line);color:var(--ink);font:700 12px/1 var(--sans);flex:none}
.cust-av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.thread.has-av{display:grid;grid-template-columns:32px minmax(0,1fr);column-gap:10px;align-items:start}
.thread.has-av>:not(.cust-av){grid-column:2}
.thread.has-av>.cust-av{grid-column:1;grid-row:1/span 4}
.contact-avatar:empty{display:none}
.contact-avatar .cust-av{width:40px;height:40px;font-size:14px}
.conversation-heading .contact-heading{flex:1;min-width:0}

.meta-attachment-media { max-width:100%; max-height:240px; }

.receipt-options{display:flex;flex-wrap:wrap;gap:4px 16px;min-width:0;margin:8px 0;padding:6px 10px;border:1px solid var(--line,#ccc);border-radius:6px;width:100%;box-sizing:border-box}.receipt-options legend{font-weight:600}.receipt-options label{display:inline-flex;align-items:center;gap:8px;min-height:44px;cursor:pointer}.receipt-options input{width:20px;height:20px;flex:none}.receipt-options .hint{flex-basis:100%;margin:0;font-size:.85rem}.receipt-detail{overflow-wrap:anywhere}.receipt-actions{display:flex;flex-wrap:wrap;gap:8px}.receipt-actions button,.receipt-actions a{min-height:44px;display:inline-flex;align-items:center;padding:8px 12px;box-sizing:border-box}.receipt-total{font-weight:600}.receipt-channel,.receipt-job{margin:6px 0}

.am-summary,.am-list{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr))}
.am-list{margin-top:1rem}.am-row{min-width:0;overflow-wrap:anywhere}.am-facts{display:grid;grid-template-columns:minmax(7rem,1fr) minmax(0,1fr);gap:.5rem}
.am-facts dt{font-weight:600}.am-facts dd{margin:0}.am-select{display:flex;align-items:center;gap:.5rem}.am-select input{width:auto}
.am-confirm textarea{display:block;width:100%;box-sizing:border-box}.am-confirm button{margin:.5rem .5rem 0 0}
.am-review{max-width:100%;background:var(--page);color:var(--ink);padding:1rem;border-radius:var(--radius-card);color-scheme:light}
.am-review[data-theme="dark"]{color-scheme:dark;--page:#141b1e;--paper:#1d282d;--ink:#f1f4f5;--muted:#c4cdd1;--soft:#29373e;--line:#53636b;--field-line:#91a1aa;--hover:#34434c;--accent:#f2bdc6;--accent-hover:#ffdae0;--on-accent:#28151a;--danger:#ffd0ca;--danger-bg:#442828;--danger-line:#a96b65}
.am-review select,.am-review input,.am-review textarea{background:var(--paper);color:var(--ink);border:1px solid var(--field-line)}
.am-review button{min-height:44px}.am-review .am-select{min-height:44px}
.am-review select,.am-review input{max-width:100%;box-sizing:border-box}.am-review input{display:block;margin:.5rem 0}.am-review label{display:block;margin-top:.5rem}

/* Annie's money screens (2026-10-16): refunds and voids, membership tools, the money reports and the desk card page. Tokens from tokens.css. */
.money-rules { margin: 0 0 .75rem; padding-left: 1.1rem; color: var(--muted, #555); font-size: .92rem; }
.money-rules li { margin: .15rem 0; }
.money-payment { margin: .25rem 0 .25rem 1rem; display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.money-status { margin: .3rem 0; font-weight: 600; }
.money-status-pending { color: var(--warning-text, #7a4b00); }
.money-status-failed, .money-status-no_longer_due, .money-status-declined { color: var(--danger-text, #a11); }
.money-status-executed, .money-status-done { color: var(--success-text, #15692f); }
.money-membership { border-top: 1px solid var(--line, #ddd); padding: .6rem 0; }
.money-membership:first-child { border-top: 0; }
.money-billing h4 { margin: .5rem 0 .2rem; font-size: .95rem; }
.money-billing ul { margin: 0 0 .3rem; padding-left: 1.1rem; }
.money-preview { padding: .5rem .7rem; border-radius: 6px; background: var(--surface-2, #f4f4f2); font-weight: 600; }
.money-disputes { width: 100%; border-collapse: collapse; }
.money-disputes th, .money-disputes td { text-align: left; padding: .35rem .5rem; border-bottom: 1px solid var(--line, #ddd); vertical-align: top; }
.money-disputes tr.money-overdue td { background: var(--danger-bg, #fdecec); }
.money-card .studio-actions button[aria-pressed="true"] { font-weight: 700; text-decoration: underline; }
@media (max-width: 640px) { .money-disputes thead { display: none; } .money-disputes td { display: block; border: 0; padding: .1rem 0; } .money-disputes tr { display: block; border-bottom: 1px solid var(--line, #ddd); padding: .4rem 0; } }
.desk-card{max-width:960px;margin:0 auto;padding:16px}
.desk-card .studio-banner{position:static}
.desk-card #dc-element{display:block;width:100%;max-width:560px;margin:8px 0}
.desk-card label{display:block;margin-top:8px}
/* Pay links and save-card links on the desk card page (2026-10-19): the send buttons wrap on a phone, each link is one row with its state and
   one-tap Resend and Cancel, the QR code is big enough to scan from across the desk, and nothing scrolls sideways at 390 px. */
.desk-card .dc-link-buttons{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.desk-card .dc-link-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}
.desk-card .dc-link-list li{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 10px;border:1px solid var(--line,#ddd);border-radius:8px;overflow-wrap:anywhere}
.desk-card .dc-link-result{display:grid;gap:8px;margin-top:8px}
.desk-card .dc-link-url{overflow-wrap:anywhere;word-break:break-word;margin:0}
.desk-card .dc-qr{display:block;width:220px;max-width:100%;height:auto;background:#fff;padding:8px;border:1px solid var(--line,#ddd);border-radius:8px}
.desk-card .dc-followup{border-top:1px solid var(--line,#ddd);padding:10px 0}
.desk-card .dc-followup:first-child{border-top:0}
/* After a payment (desk UI round 3, Codex friction): what staff do next, one tap each. */
.desk-card .dc-next{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0}
.desk-card .dc-next .button,.desk-card .dc-next button{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
.desk-card .dc-wait{margin:4px 0 0}
@media (max-width:600px),(pointer:coarse){.desk-card .dc-link-buttons button,.desk-card .dc-link-list button,.desk-card #dc-saved button,.desk-card #dc-saved-live button,.desk-card #dc-readers button,.desk-card #dc-reader-live button{min-height:44px}.desk-card .dc-next>*{flex:1 1 calc(50% - 8px)}.desk-card .dc-link-buttons button{flex:1 1 calc(50% - 8px)}}
/* The one-tap pay link under a reply draft (review/inbox-pay-link.js). */
.draft-pay-links{margin-top:8px;display:grid;gap:6px;max-width:44rem}
.draft-pay-links .draft-pay-link-panel{display:grid;gap:6px}
.draft-pay-links .draft-pay-link-panel h4{margin:0}
@media (max-width:600px),(pointer:coarse){.draft-pay-links button{min-height:44px}}

/* Friday desk stays scoped to its own panel. */
.fd-draft-badge{font-size:9px;letter-spacing:.6px;text-transform:uppercase;background:#eae2cf;color:#725b30;border-radius:4px;padding:3px 5px;margin-left:5px;vertical-align:middle}
.fd-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin:0 0 22px}.fd-heading h1{margin:0;font-size:43px}.fd-heading .eyebrow{margin-bottom:10px}.fd-heading p:last-child{margin:10px 0 0;font-size:14px;color:var(--muted)}.fd-event-field{min-width:230px;margin:0}.fd-event-field select{margin-top:6px;font-weight:600;background:var(--paper)}.fd-draft-note{display:flex;align-items:center;justify-content:space-between;gap:18px;background:#eee8d9;border:1px solid #ded2b9;border-radius:9px;padding:12px 17px;font-size:12px;line-height:1.6;margin-bottom:22px}.fd-draft-note strong{color:#795426}.fd-draft-note button{flex-shrink:0}.fd-layout{display:grid;grid-template-columns:330px minmax(0,1fr);gap:22px;align-items:start}.fd-find,.fd-order{background:var(--paper);border:1px solid var(--line);border-radius:12px;overflow:hidden}.fd-find-head{padding:22px 21px 16px}.fd-kicker{font-size:10px;font-weight:700;letter-spacing:1.8px;color:var(--muted);margin:0 0 8px}.fd-find-head h2,.fd-order h2{font:25px var(--serif)}.fd-find-head label{margin:18px 0 7px}.fd-search{font-size:16px;padding:13px!important}.fd-people{padding:0 10px 10px}.fd-person{width:100%;display:flex;align-items:center;gap:11px;text-align:left;border:1px solid transparent;padding:13px 10px;margin:2px 0;background:transparent}.fd-person strong{font-size:14px;display:block}.fd-person small{font-size:11px;line-height:1.5;color:var(--muted);display:block;margin-top:4px}.fd-person.fd-selected{background:var(--selected);border-color:var(--selected-line)}.fd-avatar{display:grid;place-items:center;width:37px;height:37px;flex-shrink:0;border-radius:50%;background:var(--soft);color:var(--ink);font:13px var(--serif)}.fd-arrow{margin-left:auto;font-size:20px;color:var(--muted)}.fd-walk-in{border-top:1px solid var(--line);padding:17px 20px}.fd-walk-in button{width:100%;padding:13px;font-size:13px}.fd-walk-in p{margin:9px 0 0}.fd-muted{font-size:12px;line-height:1.6;color:var(--muted)}.fd-order-head{padding:23px 26px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px}.fd-order-head p{margin:5px 0 0;font-size:12px;color:var(--muted)}.fd-cart{padding:0 26px;outline:none}.fd-attendee{padding:22px 0;border-bottom:1px solid var(--line)}.fd-attendee:last-child{border-bottom:0}.fd-row-heading{display:flex;justify-content:space-between;align-items:center;gap:15px}.fd-row-heading h3{font-size:20px;font-weight:600}.fd-tag{font-size:11px;line-height:1.5;border:1px solid var(--line);border-radius:20px;padding:6px 10px;background:var(--soft);max-width:48%;text-align:right}.fd-services{display:flex;gap:12px;margin:18px 0 15px;flex-wrap:wrap}.fd-service{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:7px;padding:11px 13px;margin:0;font-size:13px;cursor:pointer;min-height:46px}.fd-service:has(input:checked){background:var(--selected);border-color:var(--selected-line)}.fd-service input{width:18px;height:18px;accent-color:var(--accent);margin:0;min-height:0}.fd-price-line{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:13px 0;font-size:14px}.fd-price-line small,.fd-recent-row small{display:block;font-size:11px;color:var(--muted);line-height:1.6;margin-top:4px}.fd-covered{color:var(--ok)}.fd-class-warning{font-size:12px;padding:10px 12px;background:#fff1d8;border-radius:5px;line-height:1.6;color:#785129}.fd-both{color:#466c48;font-size:12px;margin:15px 0 0}.fd-guest-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.fd-guest-fields label:only-child{grid-column:1/-1}.fd-guest-fields input,.fd-guest-fields select{margin-top:6px}.fd-class-label{margin:0 0 14px}.fd-class-label select{margin-top:6px}.fd-checkout{padding:23px 26px 25px;border-top:1px solid var(--line);background:#f7f8ef}.fd-total-line{display:flex;align-items:center;justify-content:space-between;gap:20px}.fd-total-line p{font-size:13px;margin:6px 0}.fd-total-line strong{font:38px var(--serif)}.fd-pay-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 15px}.fd-pay-fields label{margin:14px 0 0;font-size:11px}.fd-pay-fields select{margin-top:6px;font-size:13px}.fd-primary{background:var(--ink);border-color:var(--ink);color:var(--paper);font-size:14px;padding:15px 18px;min-height:49px}.fd-primary:hover{background:#1c382c}.fd-primary:disabled{cursor:default}.fd-finish{width:100%;margin-top:10px}.fd-payment-note{text-align:center;font-size:11px;line-height:1.6;color:var(--muted);margin:11px 0 0}.fd-error{color:#a13827;font-size:13px;line-height:1.6;margin:10px 0 0}.fd-empty,.fd-success{text-align:center;max-width:470px;margin:0 auto;padding:58px 10px 62px}.fd-empty h2,.fd-success h2{font:29px/1.25 var(--serif)}.fd-empty p,.fd-success p{font-size:13px;line-height:1.8;color:var(--muted);margin:16px 0 24px}.fd-empty-symbol{font:55px var(--serif);color:var(--field-line);margin-bottom:22px}.fd-success-mark{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:#e0ead7;color:#456b3c;font-size:31px;margin:0 auto 25px}.fd-success .eyebrow{font-size:10px;margin:0 0 12px}.fd-stats{display:grid;grid-template-columns:1fr 1fr 1fr;margin:22px 0 0;padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.fd-stats>div{text-align:center;border-right:1px solid var(--line)}.fd-stats>div:last-child{border:0}.fd-stats strong{display:block;font:27px var(--serif)}.fd-stats span{display:block;font-size:10px;line-height:1.6;color:var(--muted);margin-top:5px}.fd-recent-heading{display:flex;justify-content:space-between;align-items:center;margin:25px 0 10px}.fd-recent-heading h2{font-size:14px}.fd-recent-heading span{font-size:10px;color:var(--muted)}.fd-recent-row{display:flex;justify-content:space-between;align-items:start;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);font-size:12px}.fd-recent-row small{max-width:245px}.fd-bottom-note{font-size:11px;line-height:1.7;color:var(--muted);margin:23px 0 0}#front-desk-panel button:focus-visible{outline:3px solid #98ae8c;outline-offset:3px}#front-desk-panel button,#front-desk-panel select{touch-action:manipulation}
@media(min-width:1100px){.fd-order{position:sticky;top:16px}}@media(max-width:950px){.fd-layout{grid-template-columns:285px minmax(0,1fr);gap:16px}.fd-order-head,.fd-checkout{padding:20px}.fd-cart{padding:0 20px}.fd-tag{max-width:43%}}@media(max-width:760px){.fd-heading{align-items:flex-start;flex-direction:column;gap:16px}.fd-heading h1{font-size:36px}.fd-event-field{width:100%;min-width:0}.fd-layout{grid-template-columns:1fr}.fd-people{max-height:255px;overflow:auto}.fd-draft-note{align-items:flex-start}.fd-draft-note button{padding:5px}.fd-find-head{padding:20px 20px 12px}.fd-find-head label{margin-top:13px}.fd-guest-fields{grid-template-columns:1fr}.fd-stats{margin-top:16px}.fd-recent-section{display:none}.fd-empty,.fd-success{padding:35px 4px}.fd-row-heading{align-items:flex-start}.fd-tag{font-size:10px}.fd-bottom-note{margin-top:16px}.fd-heading p:last-child{line-height:1.6}.fd-pay-fields{grid-template-columns:1fr}.fd-services{gap:8px}.fd-service{padding:10px}.fd-finish{font-size:13px}.fd-total-line strong{font-size:34px}}

.crm-filters,.crm-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.crm-filters{grid-template-columns:150px minmax(160px,1fr) minmax(150px,1fr) minmax(140px,1fr) auto;align-items:end;margin-bottom:16px}.crm-filters label,.crm-fields label{margin:0}.crm-layout{display:grid;grid-template-columns:minmax(240px,1fr) minmax(360px,2fr);gap:24px;align-items:start}.crm-row{display:block;width:100%;text-align:left;margin-bottom:8px;padding:14px;background:white;border:1px solid var(--line);border-radius:8px;color:var(--ink)}.crm-row strong,.crm-row span{display:block}.crm-row span{font-size:.85rem;color:var(--muted);margin-top:5px}.crm-entry{padding:12px 0;border-bottom:1px solid var(--line);white-space:pre-wrap;overflow-wrap:anywhere}.crm-entry small{display:block;color:var(--muted)}.crm-fields input,.crm-fields select{width:100%;min-width:0}#crm-task-form{margin:18px 0;padding:16px;background:var(--soft);border-radius:8px}#crm-detail h3{margin-top:24px}#crm-status{min-height:1.5em}#crm-contact-warning{font-weight:600;color:#8b3c19}@media(max-width:850px){.crm-filters{grid-template-columns:1fr 1fr}.crm-layout{grid-template-columns:1fr}}@media(max-width:480px){.crm-fields,.crm-filters{grid-template-columns:1fr}}

#crm-detail details{margin:14px 0} #crm-detail summary{cursor:pointer;font-weight:600;padding:8px 0} #crm-timeline .crm-entry{border-left:3px solid var(--line);padding:12px 16px;margin:12px 0} #crm-timeline p,#crm-properties p{white-space:pre-wrap;overflow-wrap:anywhere} #crm-timeline small{display:block} #crm-summary{overflow-wrap:anywhere} #crm-source-info{overflow-wrap:anywhere}

#crm-timeline-form{grid-template-columns:minmax(110px,140px) minmax(120px,1fr) auto}@media(max-width:480px){#crm-timeline-form{grid-template-columns:1fr}}

/* Tasks' filters: Search and Status in one row, Due and Priority under "More filters" (a finger-sized line; app.css's details rule undone),
   Refresh on its own row; on a wide screen all four in one row. The editor's heading stays clear of the top bar when it is scrolled to. */
.task-filters{display:grid;grid-template-columns:minmax(0,1fr) minmax(100px,140px);gap:10px;align-items:end;margin-bottom:16px}
.task-filters label{margin:0;min-width:0}
.task-filters input,.task-filters select{width:100%;min-width:0}
.task-filters>details{grid-column:1/-1;margin:0;padding:0;border:0}
.task-filters summary{min-height:44px;padding:10px 0;margin:0;cursor:pointer;font-weight:600}
.task-filter-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:8px 0}
.task-filters>button{grid-column:1/-1}
#tasks-filter-summary{font-weight:400}
@media(min-width:851px){.task-filters{grid-template-columns:minmax(200px,1fr) 140px minmax(160px,1fr) auto}.task-filters>details,.task-filters>button{grid-column:auto}}
#tasks-editor-title{scroll-margin-top:calc(var(--topbar-h) + 8px)}

/* Clients working sections; fixed-header alignment is applied only on fresh selection. */
#customers-person-name{display:inline-block;scroll-margin-top:calc(var(--topbar-h) + 8px)}
.customers-overview-summary{padding:14px 0 18px;border-bottom:1px solid var(--line);margin-bottom:14px}
.customers-overview-summary h2{font-size:20px;margin:0 0 12px}
.customers-overview-summary h3{font-size:14px;margin:12px 0 4px}
.customers-overview-summary p{margin:4px 0 10px;overflow-wrap:anywhere}
.customers-overview-summary button,.customers-secondary>summary{min-height:44px}
.customers-secondary{border-top:1px solid var(--line);margin:12px 0;padding:0}
.customers-secondary>summary{padding:12px 0;font-weight:600;cursor:pointer}
.customers-secondary[open]>.studio-record{padding:0 0 12px}
.customers-projected-record{margin-top:18px}
#customers-subtabs{gap:4px 10px}

.mai-history { min-width: 0; max-width: 100%; }
.mai-history p, .mai-history button, .mai-history summary { overflow-wrap: anywhere; }
.mai-history button { max-width: 100%; min-height: 44px; white-space: normal; margin: .35rem .35rem .35rem 0; }
.mai-history details, .mai-message, .mai-review-thread { margin-block: .75rem; padding: .75rem; border: 1px solid var(--line, #ddd); border-radius: .5rem; }
.mai-message-body { white-space: pre-wrap; }
.mai-thread-summary { min-height: 44px; padding: .4rem .25rem; cursor: pointer; }
.mai-thread-label { font-weight: 600; }
.mai-consent-badge { display: inline-block; margin-inline-start: .5rem; padding: .15rem .5rem; border: 1px solid var(--line, #ddd); border-radius: .35rem; font-size: var(--text-sm, 12px); line-height: 1.4; vertical-align: middle; }
.mai-consent-stop { color: var(--danger, #8a1c1c); background: var(--danger-bg, #fbe6e1); }
.mai-consent-needs_consent, .mai-consent-unknown { color: var(--warn, #6f4419); background: var(--warn-bg, #fff0d5); }
.mai-consent-consented { color: var(--ok, #1d5c2e); background: var(--ok-bg, #e6f0e8); }
dialog.mai-history-dialog { box-sizing: border-box; position: fixed; inset: 0; width: min(42rem, calc(100% - 2rem)); max-width: calc(100% - 2rem); max-height: calc(100dvh - 2rem); margin: auto; padding: 1rem; overflow: auto; overscroll-behavior: contain; color: var(--ink, #404041); background: var(--paper, #fffefa); border: 1px solid var(--field-line, #8a8586); border-radius: .5rem; box-shadow: var(--shadow, 0 4px 18px #2a2a2b1f); }
.mai-history-dialog::backdrop { background: var(--backdrop, #2a2a2b99); }
.mai-history-dialog-header { position: sticky; top: -1rem; z-index: 1; margin: -1rem -1rem .75rem; padding: 1rem; background: var(--paper, #fffefa); border-bottom: 1px solid var(--line, #ddd); }
.mai-history-dialog-header h4 { margin: 0 0 .5rem; font: 600 var(--text-md, 14px)/1.35 var(--sans, sans-serif); }
.mai-history-dialog h4:focus-visible, .mai-thread-summary:focus-visible { outline: 2px solid var(--focus, #9a415b); outline-offset: 3px; }

/* Campaigns tab: audience and campaign preparation. Nothing here sends. */
.cmp-layout{display:grid;grid-template-columns:minmax(220px,1fr) minmax(360px,3fr);gap:24px;align-items:start}
.cmp-side h2{font-size:14px;margin:0 0 10px}
.cmp-side h2+div{margin-bottom:10px}
.cmp-archived{font-size:12px;margin:0 0 22px}
#cmp-status{min-height:1.5em;font-size:13px;color:var(--muted);margin:0 0 14px}
#cmp-progress{display:block;width:100%;height:8px;margin:0 0 14px}
#cmp-collection-meta{margin:0 0 10px}
#cmp-authors{margin:4px 0 0}
#cmp-more,#cmp-more-audiences,#cmp-more-recipients,#cmp-history-more{margin:4px 0 12px}
#cmp-main .settings-card{margin-bottom:18px}
#cmp-main .page-heading{margin-bottom:14px}
.cmp-fieldset{border:1px solid var(--line);border-radius:8px;padding:10px 14px 12px;margin:14px 0 0}
.cmp-fieldset legend{font-size:12px;color:var(--muted);padding:0 4px}
.cmp-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:4px 14px}
.cmp-checks label{margin:4px 0;display:flex;gap:8px;align-items:center;font-size:12px}
.cmp-checks input{width:auto}
.cmp-checks .hint{grid-column:1/-1;margin:0}
.cmp-audience-actions label{margin:0;display:flex;gap:8px;align-items:center}
.cmp-audience-actions select{width:auto}
.cmp-state{font-size:11px;letter-spacing:.4px;color:var(--muted);text-transform:uppercase;white-space:nowrap}
.cmp-counts{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:8px 0 16px}
.cmp-count{background:var(--soft);border-radius:8px;padding:12px 14px}
.cmp-count strong{display:block;font:24px var(--serif)}
.cmp-count span{font-size:11px;color:var(--muted)}
.cmp-count.eligible{background:#e5eee6}
.cmp-count.unknown{background:var(--warn-bg)}
#cmp-warnings .warning{margin:0 0 12px}
.cmp-row{display:block;width:100%;text-align:left;margin-bottom:8px;padding:12px 14px;background:var(--paper);border:1px solid var(--line);border-radius:8px;font-weight:400}
.cmp-row.selected{background:var(--selected);border-color:var(--selected-line)}
.cmp-row strong,.cmp-row span{display:block}
.cmp-row span{font-size:11px;color:var(--muted);margin-top:4px}
.cmp-recipient{padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}
.cmp-recipient:last-child{border-bottom:0}
.cmp-recipient strong{display:inline-block;margin-right:8px}
.cmp-recipient .cmp-verdict{display:inline-block;font-size:10px;letter-spacing:.4px;text-transform:uppercase;padding:2px 7px;border-radius:10px;background:var(--soft);color:var(--muted)}
.cmp-recipient .cmp-verdict.eligible{background:#dbe9dd;color:#26513a}
.cmp-recipient .cmp-verdict.unknown{background:var(--warn-bg);color:var(--warn)}
.cmp-recipient .cmp-verdict.excluded{background:#f1e0dc;color:#7a2f1c}
.cmp-recipient ul{margin:6px 0 0;padding-left:18px;color:var(--muted);font-size:12px;line-height:1.6}
.cmp-recipient a{font-size:12px}
.cmp-problems{margin:8px 0 0;padding-left:18px;font-size:12px;line-height:1.7;color:var(--warn)}
.cmp-problems:empty{display:none}
#cmp-send-reasons{color:var(--muted)}
.cmp-body{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.6 var(--sans);background:var(--soft);padding:14px;border-radius:8px;margin:0}
#cmp-review-summary{font-size:13px;line-height:1.6;margin:0 0 6px}
#cmp-review-form{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
#cmp-review-form label{margin-top:0}
#cmp-recipients label,#cmp-recipients select{display:inline-block;width:auto;margin:0 0 12px}
#cmp-recipients select{margin-left:8px}
#campaigns-panel button:focus-visible,#campaigns-panel .cmp-row:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media(max-width:850px){.cmp-layout{grid-template-columns:1fr}.cmp-side{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.cmp-side h2{grid-row:1}.cmp-side h2+div{grid-row:2;max-height:240px;overflow:auto}#cmp-main .settings-card{padding:18px}}
@media(max-width:560px){.cmp-side{grid-template-columns:1fr}.cmp-side h2,.cmp-side h2+div{grid-row:auto}.cmp-checks{grid-template-columns:1fr}.cmp-audience-actions label{width:100%}}
.cmp-banner{background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-line);border-radius:8px;padding:12px 16px;font-size:13px;line-height:1.6;margin:0 0 14px}
.cmp-banner strong{color:#5e3812}
.cmp-email{border:1px solid var(--line);border-radius:8px;background:var(--paper);padding:16px 18px;max-width:640px}
.cmp-email-meta{margin:0 0 6px;font-size:12px;color:var(--muted);overflow-wrap:anywhere}
.cmp-email-meta strong{color:var(--ink)}
.cmp-email-body{border-top:1px solid var(--line);margin-top:10px;padding-top:12px;font:14px/1.65 var(--sans);overflow-wrap:anywhere}
.cmp-email-body p{margin:0 0 12px;white-space:pre-wrap}
.cmp-email-body p.empty{color:var(--muted);font-style:italic}
.cmp-email-footer{border-top:1px solid var(--line);margin:6px 0 0;padding-top:10px;font-size:11px;color:var(--muted)}
.cmp-test{margin:0 0 14px}
.cmp-test .hint{margin:6px 0 0}
.cmp-preview-toolbar{display:flex;gap:8px;margin:10px 0}
.cmp-view-btn{width:auto;padding:6px 14px;font-size:12px;background:var(--soft);border:1px solid var(--line)}
.cmp-view-btn[aria-pressed="true"]{background:var(--accent);color:#fff;border-color:var(--accent)}
.cmp-preview-frame-wrap{border:1px solid var(--line);border-radius:8px;background:#e9e6dc;padding:16px;overflow:auto}
#cmp-preview-frame{display:block;width:600px;max-width:100%;height:520px;border:0;background:#fff;margin:0 auto;transition:width .15s ease}
.cmp-preview-frame-wrap.cmp-phone #cmp-preview-frame{width:375px}
.cmp-preview-text{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.6 var(--sans);background:var(--soft);padding:14px;border-radius:8px;margin:0;max-height:520px;overflow:auto}

/* Studio campaigns workflow (review/campaign-workflow.js, MARKETING_STORE=studio) */
.cmw-modes{border:2px solid var(--ink);border-radius:10px;padding:12px 16px;margin:0 0 12px;background:var(--paper)}
.cmw-modes-title{font-size:14px;margin:0 0 8px}
.cmw-modes-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
.cmw-mode{border-radius:8px;padding:10px 12px;border:1px solid var(--line)}
.cmw-mode p{margin:4px 0 0;font-size:13px;line-height:1.5}
.cmw-mode .hint{font-size:11px}
.cmw-mode-word{display:inline-block;font:700 15px/1.2 var(--sans);letter-spacing:.6px;padding:3px 9px;border-radius:6px;margin-right:8px}
.cmw-mode-label{font-weight:600}
.cmw-mode-off{background:var(--soft)}.cmw-mode-off .cmw-mode-word{background:#3d3d3d;color:#fff}
.cmw-mode-approvers{background:var(--warn-bg);border-color:var(--warn-line)}.cmw-mode-approvers .cmw-mode-word{background:var(--warn);color:#fff}
.cmw-mode-held{background:var(--warn-bg);border-color:var(--warn-line)}.cmw-mode-held .cmw-mode-word{background:#5e3812;color:#fff}
.cmw-mode-live{background:#f6dede;border-color:#d99a9a}.cmw-mode-live .cmw-mode-word{background:#8a1c1c;color:#fff}
.cmw-send-mode{border-radius:8px;padding:10px 12px;font-weight:600;font-size:13px;line-height:1.5}
.cmw-status{min-height:1.5em;font-size:13px;color:var(--muted);margin:0 0 14px}
.cmw-layout{display:grid;grid-template-columns:minmax(220px,1fr) minmax(360px,3fr);gap:24px;align-items:start}
.cmw-side h2{font-size:14px;margin:0 0 10px}
.cmw-list{list-style:none;margin:0 0 10px;padding:0}
#cmw-main .settings-card{margin-bottom:18px}
#cmw-main .page-heading{margin-bottom:10px}
#cmw-main h3{font-size:15px;margin:0 0 10px}
.cmw-summary{font-size:13px;line-height:1.6;margin:0 0 10px}
.cmw-state{font-size:11px;letter-spacing:.4px;color:var(--muted);text-transform:uppercase;white-space:nowrap}
.cmw-top-actions{margin:0 0 14px;flex-wrap:wrap}
.cmw-inline{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}
.cmw-inline label{margin:0;flex:1 1 220px}
.cmw-frame{display:block;width:600px;max-width:100%;height:560px;border:0;background:#fff;margin:0 auto}
.cmp-preview-frame-wrap.cmp-phone .cmw-frame{width:375px}
.cmw-edit-preview{margin:14px 0}
.cmw-aud-form{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}
.cmw-aud-result{margin-top:12px}
.cmw-aud-result caption{text-align:left;font-size:12px;color:var(--muted);padding:0 0 4px}
.cmw-sample{font-size:12px;line-height:1.6;margin:4px 0 0;padding-left:18px}
.cmw-review-form{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.cmw-history{font-size:12px;line-height:1.7;margin:8px 0 0;padding-left:20px}
#cmw button{min-height:44px}
#cmw button:focus-visible,#cmw .cmp-row:focus-visible,#cmw summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media(max-width:850px){.cmw-layout{grid-template-columns:1fr}.cmw-side .cmw-list{max-height:260px;overflow:auto}#cmw-main .settings-card{padding:16px}.cmw-frame{height:480px}}
@media(max-width:560px){.cmw-top-actions button,.cmw-send-actions button{flex:1 1 100%}.cmw-inline button{flex:1 1 100%}.cmp-preview-frame-wrap{padding:6px}}

/* Sending status and reports (review/marketing-report.js) */
.cmp-delivery{border:1px solid var(--line,#d8d2c4);border-radius:8px;padding:10px 14px;margin:0 0 12px}
.cmp-delivery h3{margin:0 0 6px;font-size:1rem}.cmp-delivery p{margin:0 0 8px}
.mkt-warning{color:#8a1c1c;font-weight:bold}.mkt-note{color:var(--muted,#5b5b5b)}
.mkt-setup>summary{min-height:44px;padding:10px 0;line-height:24px;cursor:pointer}
.mkt-setup>summary:focus-visible{outline:2px solid var(--brand,#7f1623);outline-offset:2px}
.mkt-status button{min-height:44px;white-space:normal;margin:4px 8px 8px 0}
.mkt-email-readiness{overflow-wrap:anywhere}.mkt-email-readiness ul{padding-left:22px}.mkt-email-readiness li{margin:6px 0}
.mkt-status button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.mkt-table{border-collapse:collapse;margin:6px 0 12px}.mkt-table th,.mkt-table td{border:1px solid var(--line,#d8d2c4);padding:4px 8px;text-align:left}

/* A campaign is a focused workspace, with one step visible at a time. */
.cmw-sending-state{font-size:12px;color:var(--muted);margin:0 0 8px}
.cmw-setup{margin:10px 0;border:1px solid var(--line);border-radius:8px;padding:0 14px}
.cmw-setup>summary,.cmw-campaign-settings>summary{cursor:pointer;min-height:44px;line-height:44px;font-size:13px;font-weight:600}
.cmw-setup[open]{padding-bottom:14px}
#cmw:has(#cmw-detail:not([hidden])) .cmw-layout{grid-template-columns:minmax(0,1fr)}
#cmw:has(#cmw-detail:not([hidden])) .cmw-side{display:none}
#cmw:has(#cmw-detail:not([hidden])) #cmw-landing-intro,#cmw:has(#cmw-detail:not([hidden])) #cmw-landing-actions,#cmw:has(#cmw-detail:not([hidden])) #cmw-landing-heading .eyebrow{display:none}
#cmw:has(#cmw-detail:not([hidden])) #cmw-landing-heading{margin-bottom:8px}
#cmw:has(#cmw-detail:not([hidden])) #cmw-landing-heading h1{font:600 14px/1.4 var(--sans);color:var(--muted);margin:0}
#cmw-detail>.page-heading{margin-bottom:4px}
.cmw-tabs{display:flex;gap:4px;padding:6px;background:var(--soft);border:1px solid var(--line);border-radius:10px;margin:12px 0 16px;position:sticky;top:60px;z-index:4}
#cmw .cmw-tabs button{flex:1;min-width:0;background:transparent;border-color:transparent;font-weight:500;padding:8px 10px;color:var(--muted)}
#cmw .cmw-tabs button[aria-selected="true"]{background:var(--paper);border-color:var(--line);color:var(--accent);font-weight:700;box-shadow:0 1px 3px #00000012}
.cmw-tabs+[role="tabpanel"],[id^="cmw-step-"]{scroll-margin-top:124px;min-width:0}
[id^="cmw-step-"][hidden]{display:none!important}
#cmw-main [role="tabpanel"]{padding:20px}
#cmw-main #cmw-step-content{border:0;padding:0;background:transparent}
#cmw-content-heading{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
#cmw-edit>.cmw-savebar{grid-column:1/-1;display:flex;align-items:center;gap:10px;position:sticky;top:124px;z-index:3;margin:0;background:var(--paper);padding:10px 12px;border:1px solid var(--line);border-radius:8px}
.cmw-savebar .cmpz-draft-status{flex:1;margin:0;font-size:12px}
.cmw-savebar #cmw-reload{margin-left:auto}
.cmw-more{position:relative;margin:0}
.cmw-more>summary{cursor:pointer;min-height:44px;line-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:6px;font-size:13px}
.cmw-more[open]>button{display:block;margin:6px 0}
.cmw-campaign-settings{grid-column:1/-1;border-bottom:1px solid var(--line)}
.cmw-subject{grid-column:1/-1;margin:0;font-weight:600}
#cmw-edit-preview{top:192px}
@media(min-width:1101px){#cmw-edit{grid-template-columns:minmax(0,1fr) minmax(350px,.85fr);align-items:start;gap:18px}#cmw-edit-preview{margin:0}.cmw-frame{height:min(68vh,760px)}}
@media(max-width:560px){.cmw-tabs{top:56px;gap:0;padding:3px}#cmw .cmw-tabs button{font-size:12px;padding:8px 4px}.cmw-savebar{flex-wrap:wrap}#cmw-edit>.cmw-savebar{top:114px}.cmw-savebar .cmpz-draft-status{flex-basis:100%;order:3}.cmw-top-actions{gap:6px}.cmw-top-actions button{flex:0 1 auto;font-size:12px}[id^="cmw-step-"]{padding:12px!important}}

/* Campaign block editor (review/composer.js). Nothing here sends. */
.cmp-composer{margin:14px 0 0}
.cmpz-live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.cmpz-settings{border:1px solid var(--line);border-radius:8px;padding:12px 14px 14px;margin:0 0 14px}
.cmpz-settings legend{font-size:12px;color:var(--muted);padding:0 4px}
.cmpz-legend-note{display:block;font-size:12px;font-weight:600;margin:2px 0 6px}
.cmpz-themes{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 6px}
.cmpz-theme{display:flex;align-items:center;gap:8px;margin:0;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--paper);font-size:13px;cursor:pointer;min-height:44px}
.cmpz-theme[hidden]{display:none}
.cmpz-theme input{width:auto;margin:0}
.cmpz-theme:has(input:checked){border-color:var(--accent);background:var(--selected)}
.cmpz-theme:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.cmpz-swatch{width:26px;height:18px;border-radius:4px;border:1px solid rgba(0,0,0,.15);flex-shrink:0}
.cmpz-theme-midtown .cmpz-swatch,.cmpz-theme-midtown-v2 .cmpz-swatch{background:linear-gradient(90deg,#16110e 50%,#b3261e 50% 80%,#d8a93b 80%)}
.cmpz-theme-spotlight .cmpz-swatch,.cmpz-theme-spotlight-v2 .cmpz-swatch{background:linear-gradient(90deg,#404041 50%,#7f1623 50% 80%,#f4efe8 80%)}
.cmpz-theme-website .cmpz-swatch,.cmpz-theme-website-v2 .cmpz-swatch{background:linear-gradient(90deg,var(--paper) 40%,#7f1623 40% 62%,#e7bd65 62% 70%,#a00826 70%)}
.cmpz-theme-studio .cmpz-swatch{background:linear-gradient(90deg,#f7f5f0 40%,#7f1623 40% 70%,#b3261e 70%)}
.cmpz-theme-spotlight-v3 .cmpz-swatch{background:linear-gradient(90deg,#404041 50%,#7f1623 50% 80%,#ffffff 80%)}
.cmpz-theme-website-v3 .cmpz-swatch{background:linear-gradient(90deg,#ffffff 40%,#7f1623 40% 62%,#e7bd65 62% 70%,#a00826 70%)}
.cmpz-theme-studio-v2 .cmpz-swatch{background:linear-gradient(90deg,#ffffff 40%,#7f1623 40% 70%,#b3261e 70%)}
.cmpz-check{display:flex;gap:8px;align-items:flex-start;font-size:13px;margin:10px 0 0}
.cmpz-check input{width:auto;margin:3px 0 0;flex-shrink:0}
.cmpz-field-hint{display:block;font-weight:400;margin:4px 0 0;font-size:11px}
.cmpz-start{display:grid;gap:8px;margin:0 0 16px}
.cmpz-inline,.cmp-inline{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}
.cmpz-inline label,.cmp-inline label{flex:1 1 220px;margin:0}
.cmpz-draft,.cmpz-save-template,.cmpz-sms{border:1px solid var(--line);border-radius:8px;padding:10px 14px;background:var(--soft)}
.cmpz-draft summary,.cmpz-save-template summary,.cmpz-sms summary{cursor:pointer;font-size:13px;font-weight:600;min-height:44px;line-height:44px}
.cmpz-draft[open] summary,.cmpz-save-template[open] summary,.cmpz-sms[open] summary{margin-bottom:8px}
.cmpz-draft button,.cmpz-save-template button{margin-top:10px}
.cmpz-heading{font-size:14px;margin:18px 0 4px}
.cmpz-blocks{list-style:none;margin:10px 0;padding:0;display:grid;gap:8px}
.cmpz-block{border:1px solid var(--line);border-radius:8px;background:var(--paper);border-left:4px solid var(--line)}
.cmpz-block.cmpz-group-swing{border-left-color:#b3261e}
.cmpz-block.cmpz-group-ballroom{border-left-color:#7f1623}
.cmpz-block-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:6px 8px 6px 6px}
.cmpz-toggle{flex:1 1 240px;min-width:0;display:flex;gap:8px;align-items:center;text-align:left;background:transparent;border:0;padding:8px;font-weight:400;min-height:44px}
.cmpz-toggle::before{content:'';width:0;height:0;border-left:6px solid var(--muted);border-top:5px solid transparent;border-bottom:5px solid transparent;flex-shrink:0;transition:transform .12s}
.cmpz-toggle[aria-expanded="true"]::before{transform:rotate(90deg)}
.cmpz-num{display:inline-block;min-width:22px;height:22px;line-height:22px;border-radius:11px;background:var(--soft);font-size:11px;text-align:center;flex-shrink:0}
.cmpz-toggle strong{font-size:13px;flex-shrink:0}
.cmpz-sum{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.cmpz-vis{font-size:10px;letter-spacing:.3px;text-transform:uppercase;background:var(--warn-bg);color:var(--warn);padding:2px 7px;border-radius:10px;white-space:nowrap;flex-shrink:0}
.cmpz-tools{display:flex;gap:4px;flex-wrap:wrap}
.cmpz-tools button,.cmpz-small{padding:7px 10px;font-size:12px;min-height:36px;min-width:44px}
.cmpz-delete{color:#8a2d18}
.cmpz-block-body{padding:4px 16px 16px;border-top:1px solid var(--line)}
.cmpz-block-body>.hint{margin:10px 0 0}
.cmpz-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 16px}
.cmpz-fields>label,.cmpz-fields>fieldset{margin-top:12px}
.cmpz-fields>fieldset,.cmpz-fields>label:has(textarea){grid-column:1/-1}
.cmpz-fieldset{border:1px solid var(--line);border-radius:8px;padding:8px 12px 12px;margin:12px 0 0;min-width:0}
.cmpz-fieldset legend{font-size:12px;color:var(--muted);padding:0 4px}
.cmpz-checks-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:0 12px}
.cmpz-items{display:grid;gap:8px}
.cmpz-item{border:1px dashed var(--line);border-radius:8px;padding:8px 10px}
.cmpz-item-head{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px}
.cmpz-add-item{margin-top:10px}
.cmpz-image-tools{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0}
.cmpz-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.cmpz-thumb{display:block;max-width:180px;max-height:120px;margin:10px 0 0;border-radius:6px;border:1px solid var(--line)}
.cmpz-thumb[hidden]{display:none}
.cmpz-audience{margin-top:6px}
.cmpz-empty{margin:10px 0}
.cmpz-add{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;padding:12px;border:1px dashed var(--field-line);border-radius:8px;margin:8px 0 0}
.cmpz-add label{flex:1 1 220px;margin:0}
.cmpz-add .hint{flex-basis:100%;margin:0}
.cmpz-undo{margin:8px 0 0}
.cmpz-sms{margin:14px 0 0}
.cmpz-checks{margin:18px 0 0;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--soft)}
.cmpz-checks .cmpz-heading{margin-top:0}
.cmpz-checks-summary{font-size:13px;margin:10px 0 6px}
.cmpz-checks-summary:focus{outline:none}
.cmpz-findings{margin:0;padding-left:0;list-style:none;font-size:12px;line-height:1.6}
.cmpz-finding{padding:6px 0;border-top:1px solid var(--line)}
.cmpz-level{display:inline-block;font-size:10px;letter-spacing:.3px;text-transform:uppercase;padding:1px 7px;border-radius:10px;background:var(--soft);color:var(--muted)}
.cmpz-error .cmpz-level{background:#f1e0dc;color:#7a2f1c}
.cmpz-finding button{margin-left:6px}
.cmp-convert-note{margin:12px 0 0;padding:10px 14px;border:1px solid var(--warn-line);border-radius:8px;background:#fff8ea}
.cmp-convert-note .hint{margin:0 0 8px}
#cmp-sms-start{margin:12px 0 0}
.cmp-preview-bar{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:flex-end;justify-content:space-between;margin:10px 0}
.cmp-preview-bar .cmp-preview-toolbar{margin:0;flex-wrap:wrap}
.cmp-persona{display:flex;gap:8px;align-items:center;margin:0;font-size:12px}
.cmp-persona select{width:auto;padding:6px 10px;font-size:12px}
.cmp-preview-sms{background:#e9e6dc;border:1px solid var(--line);border-radius:8px;padding:18px}
.cmp-sms-phone{max-width:340px;margin:0 auto;background:#fff;border-radius:22px;padding:22px 16px;border:1px solid var(--field-line);min-height:180px}
.cmp-sms-bubble{margin:0;background:#e5e5ea;color:#111;border-radius:16px;padding:10px 12px;font:14px/1.45 -apple-system,var(--sans);white-space:pre-wrap;overflow-wrap:anywhere;max-width:85%}
.cmp-preview-sms .hint{text-align:center;margin:10px 0 0}
.cmpz-library{border:1px solid var(--line);border-radius:10px;padding:18px;max-width:min(720px,94vw);width:100%;background:var(--paper);color:var(--ink)}
.cmpz-library::backdrop{background:rgba(20,30,28,.45)}
.cmpz-library h3{margin:0 0 12px}
.cmpz-library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:0 0 12px;max-height:60vh;overflow:auto}
.cmpz-library-item{display:flex;flex-direction:column;gap:6px;padding:6px;font-weight:400;font-size:11px;text-align:left}
.cmpz-library-item img{width:100%;height:100px;object-fit:cover;border-radius:4px;background:var(--soft)}
.cmpz-library>button{margin-right:8px}
#campaigns-panel .cmpz button:focus-visible,#campaigns-panel .cmpz-toggle:focus-visible,.cmpz-library button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(max-width:850px){
 .cmpz-block-head{flex-wrap:wrap}
 .cmpz-toggle{flex-basis:100%}
 .cmpz-tools{width:100%;justify-content:flex-end}
 .cmpz-tools button{flex:1 1 auto;min-height:44px}
 .cmpz-block-body{padding:4px 12px 14px}
}
@media(max-width:560px){
 .cmpz-fields{grid-template-columns:1fr}
 .cmpz-small{min-height:44px}
 .cmpz-sum{display:none}
 .cmp-preview-bar{flex-direction:column;align-items:stretch}
 .cmp-persona select{flex:1}
}

.cmpz-link-dialog{box-sizing:border-box;border:1px solid var(--line);border-radius:10px;padding:20px;width:min(520px,94vw);max-width:94vw;background:var(--paper);color:var(--ink)}
.cmpz-link-dialog::backdrop{background:rgba(20,30,28,.45)}
.cmpz-link-dialog label{display:block;margin:12px 0}
.cmpz-link-dialog input{box-sizing:border-box;width:100%;min-height:44px}
.cmpz-link-dialog button{min-height:44px}
.cmpz-link-dialog :focus-visible,.cmpz :is(input,textarea,select,summary):focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.cmpz-link-dialog h3{margin:0}

.cmpz-recovery{border:1px solid var(--warn-line);background:var(--soft);border-radius:8px;padding:14px;margin:14px 0}
.cmpz-recovery[hidden]{display:none}
.cmpz-recovery summary{cursor:pointer;min-height:44px;line-height:44px}
.cmpz-recovery-text{white-space:pre-wrap;overflow-wrap:anywhere;max-height:260px;overflow:auto;font:12px/1.5 var(--mono,monospace)}
.cmpz-recovery button{min-height:44px}
.cmpz-draft-status{overflow-wrap:anywhere}

.cmpz-layout,.cmpz-interchange{border:1px solid var(--line);padding:10px 14px;border-radius:8px;margin:12px 0}
.cmpz-layout summary,.cmpz-interchange summary{min-height:44px;line-height:44px;cursor:pointer;font-weight:600}
.cmpz-interchange textarea{font:12px/1.5 var(--mono,monospace)}
.cmpz-interchange button{min-height:44px;margin:8px 8px 0 0}
.cmpz-image-sizing{margin-top:10px}
#cmw-edit{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
#cmw-edit>.crm-fields,#cmw-edit>.actions,#cmw-sms-editor{grid-column:1/-1}
#cmw-edit-preview{align-self:start;position:sticky;top:12px}
@media(max-width:1100px){#cmw-edit{grid-template-columns:minmax(0,1fr)}#cmw-edit-preview{position:static}}

/* Editor controls must fit the available column beside the preview. */
#cmw-composer,.cmpz :is(fieldset,label),.cmpz-fields>*{min-width:0}
.cmpz :is(input,select,textarea){min-width:0;max-width:100%}
.cmpz-fields{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr))}
.cmpz .crm-fields{grid-template-columns:repeat(auto-fit,minmax(min(170px,100%),1fr))}

.cmpz-blocks{grid-template-columns:minmax(0,1fr)}
.cmpz-block{min-width:0}

/* Keep writing and the active section in view; reveal optional tools on demand. */
.cmpz-start{gap:10px;margin-bottom:12px}
.cmpz-design,.cmpz-other-starts,.cmpz-audience-options{border:1px solid var(--line);border-radius:8px;padding:0 12px;margin:10px 0;background:var(--paper)}
.cmpz-design>summary,.cmpz-other-starts>summary,.cmpz-audience-options>summary{cursor:pointer;min-height:44px;line-height:44px;font-size:13px;font-weight:600}
.cmpz-design[open],.cmpz-other-starts[open],.cmpz-audience-options[open]{padding-bottom:12px}
.cmpz-design .cmpz-settings{border:0;margin:0;padding:8px 0}
.cmpz-design .cmpz-settings>legend{display:none}
.cmpz-draft{background:var(--selected);border-color:var(--accent);padding:0 14px 12px}
.cmpz-draft:not([open]){padding-bottom:0}
.cmpz-draft>summary{font-size:14px}
.cmpz-draft .hint{font-size:12px;line-height:1.45}
.cmpz-message-header>label{font-size:13px;margin:12px 0}
.cmpz-block-head{padding:4px 8px}
.cmpz-tools[hidden]{display:none!important}
.cmpz-block:has(.cmpz-toggle[aria-expanded="true"]){border-color:var(--accent)}
.cmpz-block:has(.cmpz-toggle[aria-expanded="true"]) .cmpz-block-head{background:var(--selected)}
.cmpz-block-head .cmpz-tools{flex-basis:100%;border-top:1px solid var(--line);padding:6px 0;justify-content:flex-end}
.cmpz-block-body .cmpz-fields{grid-template-columns:minmax(0,1fr)}
.cmpz-block-body .cmpz-fields>label:first-child,.cmpz-block-body .cmpz-fields>fieldset:first-child{margin-top:6px}
.cmpz-block-body>.hint{font-size:12px;margin:8px 0}
.cmpz-blocks{gap:6px}
.cmpz-toggle{flex-basis:100%}
.cmpz-checks{padding:10px 12px;margin-top:12px}
#cmw-edit-preview{top:192px}
@media(min-width:1101px){#cmw-edit{grid-template-columns:minmax(0,1fr) minmax(350px,.85fr)}}
@media(min-width:1101px){#cmw-preview-toggle{display:none}}
@media(max-width:1100px){
 #cmw-edit-preview{position:static;display:none}
 #cmw-edit.cmw-preview-only>#cmw-edit-preview:not([hidden]){display:block}
 #cmw-edit.cmw-preview-only>:not(.cmw-savebar):not(#cmw-edit-preview){display:none}
}
.cmpz-toggle::after{content:'Edit';margin-left:auto;color:var(--accent);font-size:12px;font-weight:600}
.cmpz-toggle[aria-expanded="true"]::after{content:'Done'}

/* Today > Tasks > HubSpot: review/hubspot-tasks.js. Colours and type from tokens.css; the tab bar is .subnav (tokens.css). */
.hs-panel{display:grid;gap:12px;max-width:1080px;min-width:0}
.hs-panel[hidden],.hs-screen[hidden]{display:none}
.hs-status:empty{display:none}
.hs-status{margin:0;font-size:var(--text-md);overflow-wrap:anywhere}
.hs-connect{margin:0}
.hs-screen{display:grid;gap:12px;min-width:0}
.hs-screen .page-heading{margin:0}
.hs-screen h2{font:500 20px/1.25 var(--serif);margin:0}
.hs-filter{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end}
.hs-filter[hidden]{display:none}
.hs-filter label{display:grid;gap:4px;min-width:180px;margin:0}
.hs-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.hs-task{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:14px 16px;min-width:0}
.hs-overdue{border-left:4px solid var(--danger)}
.hs-task h3{font-size:var(--text-lg);line-height:1.35;margin:0;overflow-wrap:anywhere}
.hs-task-head{display:flex;gap:10px;align-items:flex-start;justify-content:space-between}
.hs-flag{flex-shrink:0;background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line);border-radius:var(--radius);padding:2px 8px;font-size:var(--text-sm);font-weight:700}
.hs-facts{display:flex;flex-wrap:wrap;gap:4px 14px;margin:6px 0 0;color:var(--muted);font-size:var(--text-sm);overflow-wrap:anywhere}
.hs-facts a{font-weight:600}
.hs-body{margin-top:8px}
.hs-body summary{cursor:pointer;font-weight:600;font-size:var(--text-sm)}
.hs-body p{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0 0;font-size:var(--text-md);line-height:1.55}
.hs-task .actions{margin-top:10px}
.hs-empty{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:16px;color:var(--muted)}
.hs-pager{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.hs-pager[hidden]{display:none}
.hs-new{margin:0;display:grid;gap:10px}
.hs-new[hidden]{display:none}
.hs-new h3,.hs-rule h3,#hs-screen-connection h3{font-size:var(--text-lg);margin:0}
.hs-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px 14px}
.hs-contact{border:1px solid var(--line);border-radius:var(--radius-card);padding:10px 12px;margin:0;display:grid;gap:8px;min-width:0}
.hs-contact legend{font-weight:600;font-size:var(--text-sm);padding:0 4px}
.hs-contact-find{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.hs-contact-find label{flex:1 1 220px;margin:0}
.hs-rule{display:grid;gap:10px}
.hs-rule-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.hs-rule-out:empty{display:none}
.hs-rule-out{margin:0;font-size:var(--text-md);overflow-wrap:anywhere}
.hs-log-unknown{border-left:4px solid var(--warn)}
.hs-log-failed{border-left:4px solid var(--danger)}
#hs-settings{display:grid;gap:10px}
@media(max-width:620px){
  .hs-filter label{min-width:0;flex:1 1 100%}
  .hs-task{padding:12px}
  .hs-task-head{flex-direction:column;gap:6px}
}

/* One-tap task outcomes (A070, review/task-outcomes.js): the drafted note, the outcome buttons and what was last logged. */
.to-panel{margin-top:10px;padding-top:10px;border-top:1px solid var(--line);display:grid;gap:6px;max-width:44rem}
.to-panel .to-label{font-size:var(--text-sm);font-weight:600;color:var(--ink)}
.to-panel .to-note{width:100%;min-height:3.2em;resize:vertical;font:inherit;font-size:var(--text-sm)}
.to-panel .to-buttons{margin-top:2px}
.to-panel .to-hint{margin:0}
.to-panel .to-last{margin:0;font-size:var(--text-sm);color:var(--ink);background:var(--soft);border-radius:var(--radius);padding:4px 8px}
.to-panel .to-status{margin:0;font-size:var(--text-sm);min-height:1.2em}
.to-panel .to-status:empty{display:none}
.to-next{margin:6px 0 0;padding:6px 10px;border-radius:var(--radius);background:var(--warn-bg);border:1px solid var(--warn-line);font-size:var(--text-sm)}
@media (max-width:600px){.to-panel .to-buttons button{flex:1 1 calc(50% - 8px)}}
.to-panel .to-draft{margin:0;font-size:var(--text-sm);color:var(--ink)}
.to-panel .to-draft strong{font-weight:600}
.to-panel .to-change{margin-left:4px;padding:0 4px;min-height:0;font-size:var(--text-sm);text-decoration:underline}
/* Touch size (WebKit check, 2026-10-18): the outcome buttons, "Change the note" and the decline panel's Cancel are at least 44 px tall on a phone or any touch screen (the rest of Annie's buttons are 36 px). */
@media (max-width:600px),(pointer:coarse){
.to-panel .to-buttons button{min-height:44px}
.to-panel .to-change{display:flex;align-items:center;min-height:44px;margin:2px 0 0 -4px;padding:0 8px}
.su-decline>button.quiet{min-height:44px}
}

/* Today > Membership cancellations (review/cancellations.html); appended to app.css by build-review.mjs. */
.mcx-list{display:grid;gap:12px;margin-top:12px}
.mcx-card{border:1px solid var(--line,#ddd);border-radius:10px;padding:14px 16px;background:var(--surface,#fff)}
.mcx-card h2{margin:0 0 4px;font-size:1.1rem}
.mcx-card dl{display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;margin:8px 0}
.mcx-card dt{font-weight:600}
.mcx-card dd{margin:0;overflow-wrap:anywhere}
.mcx-tag{display:inline-block;border-radius:999px;padding:1px 9px;font-size:.8rem;font-weight:600;margin-left:6px;vertical-align:middle}
.mcx-tag.urgent{background:#fdecc8;color:#7a4a00}.mcx-tag.overdue{background:#f9d4d4;color:#7f1623}.mcx-tag.done{background:#dcefe3;color:#1a5a35}.mcx-tag.test{background:#e5e5f5;color:#333}
.mcx-card form{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:end;margin-top:10px}
.mcx-card form label{display:grid;gap:2px}
.mcx-emails{font-size:.85rem;color:var(--muted,#555);margin:6px 0 0;padding-left:18px}
.mcx-lookup{font-size:.9rem;margin-top:6px}
@media (max-width:600px){.mcx-card dl{grid-template-columns:1fr}.mcx-card dt{margin-top:4px}}

/* Schedule tab: read-only Mindbody day view. */
.sch-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;margin-bottom:22px}
.sch-days{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.sch-days input{width:auto;min-width:160px}
.sch-days button[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
.sch-actions{display:flex;flex-wrap:wrap;gap:8px}
#sch-status{margin:0 0 18px;font-size:13px;color:var(--muted)}
#sch-content>.hint{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:16px 18px}
.sch-followup{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:22px 24px;margin-bottom:22px}
.sch-followup h2{font:24px var(--serif);margin:0 0 14px}
.sch-category{margin:0 0 16px}
.sch-category:last-child{margin-bottom:0}
.sch-category h3{font-size:13px;color:var(--accent);margin:0 0 8px}
.sch-category ul{list-style:none;margin:0;padding:0}
.sch-category li{font-size:13px;line-height:1.7;padding:8px 0;border-bottom:1px solid var(--line)}
.sch-category li:last-child{border-bottom:0}
.sch-instructor{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:22px 24px;margin-bottom:18px}
.sch-instructor-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px}
.sch-instructor-heading h2{font:22px var(--serif)}
.sch-instructor-heading .hint{margin:0}
.sch-table-wrap{overflow-x:auto}
.sch-table{width:100%;border-collapse:collapse;font-size:13px}
.sch-table th,.sch-table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.sch-table td:nth-child(2),.sch-table td:nth-child(3),.sch-table td:last-child{white-space:normal}
.sch-table th{font-size:11px;letter-spacing:.4px;color:var(--muted);text-transform:uppercase}
.sch-table tbody tr:last-child td{border-bottom:0}
.sch-emails{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:22px 24px;margin-bottom:18px}
.sch-emails h2{font:24px var(--serif);margin:0 0 14px}
.sch-emails>.hint{margin:0 0 10px}
.sch-email-card{border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-top:14px}
.sch-email-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:6px}
.sch-email-heading h3{font-size:15px}
.sch-email-state{font-size:11px;letter-spacing:.4px;color:var(--muted);text-transform:uppercase}
.sch-email-card .hint{margin:2px 0}
.sch-email-card details{margin-top:12px;padding-top:12px}
.sch-email-body{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.6 var(--sans);background:var(--soft);padding:14px;border-radius:8px;margin:0}
.sch-email-frame{width:100%;height:520px;border:1px solid var(--line);border-radius:8px;background:#ffffff;display:block}
@media(max-width:760px){
  .sch-controls{flex-direction:column;align-items:stretch}
  .sch-days,.sch-actions{width:100%}
  .sch-days input{flex:1;min-width:0}
  .sch-actions button{flex:1}
  .sch-followup,.sch-instructor,.sch-emails{padding:18px}
  .sch-table{font-size:12px}
  .sch-table th,.sch-table td{padding:8px 10px}
  .sch-email-card{padding:14px}
  .sch-emails .actions button{flex:1;min-width:120px}
}

/* Schedule > Calendar (A040): review/schedule-calendar.js. Phone first (390 px: no sideways page scroll), touch targets of 44 px, the kind and
   the status of every item in words (the coloured edge only repeats the kind), and a visible keyboard focus on everything that opens. */
.calx-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:4px 0 6px}
.calx-step,.calx-bar input,.calx-show-toggle{min-height:44px}
.calx-step{display:inline-flex;align-items:center;justify-content:center;padding:0 14px}
.calx-date input{min-height:44px;max-width:170px}
.calx-range{font:500 22px/1.25 var(--serif);margin:6px 0 8px;overflow-wrap:anywhere}
.calx-show-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:0 0 10px}
.calx-show-toggle{padding:0 14px;font-weight:600}
.calx-show-toggle[aria-expanded=true]{background:var(--selected);border-color:var(--selected-line)}
.calx-shows{margin:0;font-size:13px;color:var(--muted);min-width:0;overflow-wrap:anywhere}
.calx-show{max-width:760px;margin:0 0 14px}
.calx-show h2{font:500 19px/1.25 var(--serif);margin:0 0 8px}
.calx-kinds{border:0;margin:0;padding:0;min-width:0}
.calx-kind-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px 16px}
.calx-kind-list label{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer}
.calx-kind-list input{width:22px;height:22px;flex:none;accent-color:var(--accent)}
.calx-kind-list .calx-closed{color:var(--muted);font-size:13px}
.calx-narrow{display:flex;flex-wrap:wrap;gap:10px 18px;margin:10px 0 2px}
.calx-narrow label{display:flex;flex-direction:column;gap:4px;font-weight:600;font-size:13px;min-width:0;flex:1 1 200px}
.calx-narrow select{min-height:44px;max-width:100%}
.calx-override{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:0 0 10px;padding:8px 12px}
.calx-override a{display:inline-flex;align-items:center;min-height:44px;font-weight:600}
.calx-status:empty{display:none}
.calx-main{display:grid;grid-template-columns:minmax(0,1fr);gap:0 22px;align-items:start}
@media(min-width:1100px){.calx-main:has(.calx-drawer:not([hidden])){grid-template-columns:minmax(0,1fr) 400px}.calx-main>.calx-drawer{position:sticky;top:64px;max-height:calc(100vh - 84px);overflow:auto;margin:0}}
.calx-screen{min-width:0}
/* One item: its time, its kind in words, its name, what else matters, its status in words. The whole row opens it. */
.calx-list{list-style:none;margin:0;padding:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius)}
.calx-list>li+li{border-top:1px solid var(--line)}
.calx-row{display:flex;align-items:stretch;min-width:0}
.calx-row>.calx-item{flex:1 1 auto;min-width:0}
.calx-checkin{display:inline-flex;align-items:center;justify-content:center;padding:0 12px;min-height:44px;min-width:44px;border-left:1px solid var(--line);font-weight:600;font-size:13px;flex:none}
.calx-checkin:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
.calx-fresh{margin:-4px 0 8px}
.calx-item{display:grid;grid-template-columns:86px minmax(0,1fr);gap:2px 12px;align-items:start;padding:10px 12px 10px 10px;border-left:4px solid var(--k,var(--line));min-height:44px;box-sizing:border-box;color:var(--ink);text-decoration:none;width:100%;text-align:left;background:transparent;font:inherit;border-top:0;border-right:0;border-bottom:0;border-radius:0}
a.calx-item:hover,button.calx-item:hover{background:var(--hover);color:var(--ink)}
.calx-item:focus-visible,.calx-count:focus-visible,.calx-daylink:focus-visible,.calx .cal-chip:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
.calx-time{font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink);font-size:13px;padding-top:1px}
.calx-what{min-width:0;display:flex;flex-direction:column;gap:1px}
.calx-kind{font:700 var(--text-xs)/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.calx-title{font-weight:600;overflow-wrap:anywhere}
.calx-sub{font-size:13px;color:var(--muted);overflow-wrap:anywhere}
.calx-flag{font-size:13px;font-weight:600;color:var(--ink)}
.calx-flag::before{content:'Status: ';font-weight:400;color:var(--muted)}
.calx-cancelled .calx-title{text-decoration:line-through}
.calx-none{padding:12px;color:var(--muted)}
/* The kind's edge colour (repeats the word, never replaces it). */
.calx-k-classes{--k:#1d5c2e}.calx-k-lessons{--k:#6b3fa0}.calx-k-rentals{--k:#1f5f8b}.calx-k-studio{--k:#b45309}.calx-k-dances{--k:#a00826}.calx-k-shifts{--k:#4b4a4d}.calx-k-timeoff{--k:#8a8586}
/* Week: seven columns on a computer, the days one under another on a phone. */
.calx-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.calx-wday{min-width:0}
.calx-wday h3{font:700 13px/1.4 var(--sans);margin:0 0 4px}
.calx-wday.calx-today h3 a{color:var(--accent)}
.calx-daylink{display:inline-flex;align-items:center;min-height:44px}
.calx-week .calx-item{grid-template-columns:minmax(0,1fr);padding:6px 6px 6px 6px}
.calx-week .calx-sub{display:none}
/* Month: the studio calendar's grid on a computer (its .cal-* look), the days with items on a phone. */
.calx .cal-day{height:118px}
.calx-cell-counts{margin:3px 0 0}
.calx-count{display:block;font-size:var(--text-sm);line-height:1.3;color:var(--ink);font-weight:600;text-decoration:underline;overflow-wrap:anywhere}
.calx-agenda .calx-count{display:inline-flex;align-items:center;min-height:44px;font-size:14px}
.calx-agenda .cal-chip{min-height:44px;display:flex;align-items:center;flex-wrap:wrap;gap:0 6px}
.calx-agenda .calx-chip-kind{font-size:var(--text-xs);color:var(--muted);font-weight:600}
.calx-legend-note{margin:8px 0 0}
.calx-slots{margin:14px 0 0}
.calx-slots summary{min-height:44px;display:flex;align-items:center;font-weight:600}
.calx-drawer dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 12px;margin:8px 0}
.calx-drawer dt{font-weight:600}
.calx-drawer dd{margin:0;overflow-wrap:anywhere}
.calx-drawer .studio-drawer-head button{min-height:44px}
/* Today's schedule (Today): the Calendar's own words, as Today's rows. */
.card-head .card-links{display:inline-flex;gap:14px;flex-wrap:wrap}
#today-schedule .t-kind{display:block;font:700 var(--text-xs)/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
#today-schedule li{border-left:4px solid var(--k,transparent);padding-left:8px}
#today-schedule .t-actions a{min-height:44px}
@media(max-width:860px){
  .calx-week{grid-template-columns:minmax(0,1fr)}
  .calx-week .calx-item{grid-template-columns:72px minmax(0,1fr)}
  .calx-week .calx-sub{display:block}
  .calx-item{grid-template-columns:72px minmax(0,1fr)}
  .calx .cal-grid-wrap{display:none}
  .calx .cal-agenda{display:block}
  .calx-range{font-size:19px}
  .calx-date input{max-width:150px}
  .card-head a{min-height:44px}
}
/* Today's schedule keeps room for its first rows while they load, as Today's classes did, so the cards under it do not move. */
#today-schedule.t-loading{min-height:110px}
#today-schedule-shows{min-height:1.5em;margin:0 0 4px}
@media(max-width:860px){#today-schedule.t-loading{min-height:210px}}
/* Ron 2026-10-19: one tap from an instructor's own schedule to the whole day, and back. */
.calx-whole-day{min-height:44px;padding:0 14px;border:1px solid var(--field-line, var(--line));border-radius:999px;background:var(--paper);color:var(--ink);font:inherit;font-weight:600;cursor:pointer}
.calx-whole-day[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.calx-whole-day:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
/* Calendar work shares one date/filter context. Planning uses the actual room
   names and known studio-clock intervals; uncertain times retain a plain list. */
.calx-jobs{border-bottom:1px solid var(--line);padding:0 0 10px;margin-bottom:10px}.calx-job-links{display:flex;flex-wrap:wrap;gap:6px}.calx-job-choice{display:none}
.calx #calx-actions:empty{display:none}.calx.workspace-page>.page-heading{margin-bottom:12px}.calx .calx-bar{gap:6px}.calx .calx-step{width:44px;padding:0;font-size:22px}.calx #calx-today{width:auto;font-size:14px;padding-inline:13px}.calx .calx-date input{width:138px;max-width:138px}.calx .calx-range{font:650 19px/1.35 var(--sans);margin:7px 0}
.calx #calx-heading .eyebrow{display:none}.calx[data-job]:not([data-job=schedule]) .calx-show-row,.calx[data-job]:not([data-job=schedule]) #calx-show,.calx[data-job]:not([data-job=schedule]) #calx-override,.calx[data-job]:not([data-job=schedule]) #calx-fresh,.calx[data-job]:not([data-job=schedule]) #calx-status,.calx[data-job]:not([data-job=schedule]) #calx-problems,.calx[data-job]:not([data-job=schedule]) #calx-actions,.calx[data-job]:not([data-job=schedule]) #calx-private-requests,.calx[data-job]:not([data-job=schedule]) #calx-feed{display:none}
.calx-jobs a,.calx-layout-switch button,.calx-back-list{min-height:44px;padding:8px 13px;font:600 13px/1.3 var(--sans)}.calx-jobs a{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:var(--radius);box-sizing:border-box;text-decoration:none}
.calx-jobs [aria-current=page],.calx-layout-switch [aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.calx-date-range{display:flex;flex-wrap:wrap;align-items:center;gap:0 16px}.calx-date-range .calx-range{font-size:16px}.calx-problems{font-size:13px;margin:0 0 12px}.calx-problems summary,.calx-fresh summary{cursor:pointer;min-height:44px;display:list-item;align-content:center}.calx-problems ul{padding-left:20px}.calx-fresh-details{border-left:2px solid var(--line);padding:0 0 8px 12px}.calx-fresh-details>p{margin:0 0 6px}.calx-status:empty{display:none}
.calx-context{border:1px solid var(--line);background:var(--paper);padding:18px;border-radius:var(--radius)}
.calx-context h2{font:650 21px/1.3 var(--sans);margin:0 0 8px}.calx-context h3{font:650 16px/1.4 var(--sans);margin:20px 0 8px}
.calx-health-notes{list-style:none;padding:0;margin:0}.calx-health-notes>li{padding:12px 0;border-bottom:1px solid var(--line)}.calx-health-notes p{font-size:13px;margin:4px 0}.calx-health-notes .calx-blocking{border-left:3px solid var(--warn);padding-left:12px}
.calx-load-scroll{overflow:auto}.calx-load-scroll th,.calx-load-scroll td{white-space:nowrap}
.calx-layout-switch{display:flex;gap:4px;margin-bottom:12px}.calx-layout-switch button{min-height:44px}
.calx-timeline-scroll{max-height:660px;overflow:auto;border:1px solid var(--line);background:var(--paper);border-radius:var(--radius)}
.calx-timeline{display:grid;grid-template-columns:70px repeat(var(--room-count),minmax(210px,1fr));min-width:100%;width:max-content;position:relative}
.calx-timeline-corner,.calx-room-label{position:sticky;top:0;z-index:3;background:var(--paper);border-bottom:1px solid var(--line);font:650 13px/1.4 var(--sans);margin:0;padding:14px 10px}
.calx-timeline-corner{font-size:11px;left:0;z-index:4}.calx-time-axis,.calx-room-lane{height:var(--timeline-height);position:relative;min-width:0}.calx-time-axis{position:sticky;left:0;z-index:2;background:var(--paper)}
.calx-time-axis>span{position:absolute;left:6px;font:600 11px/1.3 var(--sans);color:var(--muted)}
.calx-room-lane{border-left:1px solid var(--line);background:repeating-linear-gradient(to bottom,transparent 0,transparent 89px,var(--line) 89px,var(--line) 90px)}
.calx-time-block{position:absolute;display:block;overflow:hidden;min-height:0;padding:5px 7px;border:1px solid var(--line);border-left:4px solid var(--k);background:var(--soft);border-radius:3px}
.calx-time-block .calx-time{display:block;font-size:11px}.calx-time-block .calx-kind{font-size:10px;letter-spacing:0}.calx-time-block .calx-title{font-size:13px;line-height:1.25}.calx-time-block .calx-sub,.calx-time-block .calx-flag{font-size:11px;line-height:1.2}.calx-time-block .calx-what{gap:0}
.calx-other-title{font:650 15px/1.4 var(--sans);margin:16px 0 8px}
.calx-screen[data-layout=rooms]>.calx-day-list,.calx-screen[data-layout=list]>.calx-planning{display:none}
.calx-slots{margin:0 0 16px}.calx-slots[open]>summary{font-size:18px;padding:0 0 10px}.calx-slots .studio-toolbar{margin-top:0}.calx-slots .studio-slot-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:8px}.calx-slots .studio-slot-list li{border:1px solid var(--line);padding:10px;min-width:0}
.calx-slot-weeks{margin-bottom:12px}.calx-slot-weeks>summary{display:list-item;list-style-type:disclosure-closed;min-height:44px;align-content:center;cursor:pointer}.calx-slot-weeks[open]>summary{list-style-type:disclosure-open}.calx-slot-weeks nav{display:flex;flex-wrap:wrap;gap:6px}.calx-slot-weeks a{display:inline-flex;align-items:center;min-height:44px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius)}
.calx-back-list{justify-self:start;margin-bottom:12px;grid-column:1/-1}.calx-detail-open .calx-back-list{display:inline-flex;align-items:center}
.calx-context .ds-client{font-weight:650;min-height:44px;padding:0;text-align:left}.calx-context .ds-open-lesson{min-height:44px;display:inline-flex;align-items:center;justify-self:start;margin-top:8px}
/* Calendar header: choose the job, then its range; secondary controls fold. */
#calendar-panel .calx-more,#calendar-panel .calx-problems{border:0;border-radius:0;background:transparent;padding:0;margin:0 0 6px}
#calendar-panel .calx-more>summary,#calendar-panel .calx-problems>summary{min-height:44px;padding:10px 0;line-height:24px;box-sizing:border-box;cursor:pointer;color:var(--accent)}
#calendar-panel .calx-more>.actions{margin:0 0 8px}
#calendar-panel .calx-problems ul{margin:0 0 8px}
#calendar-panel .calx-fresh{margin:0}
#calendar-panel .calx-fresh-details{border:0;padding:0 0 8px}
#calendar-panel .calx-date-range{column-gap:12px;row-gap:0;margin-bottom:4px}
#calendar-panel .calx-date-range .calx-show-row{margin:0;flex:1 1 250px}
#calendar-panel .calx-date-range .calx-shows{flex:1 1 120px}
#calendar-panel[data-range-mode=day] #calx-range{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#calendar-panel #calx-subnav{margin-bottom:6px}
#calendar-panel #calx-today[aria-current=date]{border-color:var(--accent);background:var(--soft);font-weight:700}
#calendar-panel .calx-jobs{padding-bottom:6px;margin-bottom:6px}
@media(max-width:860px){
 .calx-job-links{display:none}.calx-job-choice{display:grid;gap:3px;font-size:12px;font-weight:600}.calx-job-choice select{width:100%;min-height:44px;font-size:15px}.calx-date-range{gap:0}.calx-date-range .calx-range{font-size:14px;margin:2px 0 8px}.calx-context{padding:13px}.calx-layout-switch,.calx-planning{display:none!important}.calx-screen>.calx-day-list{display:block!important}.calx-item{grid-template-columns:88px minmax(0,1fr);padding:12px 8px}.calx-time{font-size:12px}.calx-sub{font-size:12px}.calx-checkin{padding:0 8px}.calx-detail-open>.calx-controls,.calx-detail-open>#calx-subnav,.calx-detail-open>#calx-jobs,.calx-detail-open>#calx-context,.calx-detail-open>#calx-slots,.calx-detail-open #calx-screen{display:none!important}.calx-detail-open .calx-drawer{margin:0;max-width:100%;min-width:0}.calx-detail-open .calx-main{display:block}.calx-detail-open .calx-back-list{margin:0 0 12px}.calx-slots .studio-slot-list{grid-template-columns:1fr}
}

/* Studio tab: the schedule and client records. Scoped to #studio-panel / .studio.
   The plum of .studio-banner (8.5:1 with white) is used nowhere else in Annie, so the practice-data warning cannot be mistaken for anything else. */
.studio{display:grid;grid-template-columns:minmax(0,1fr);gap:0;align-items:start}
.studio>*{grid-column:1/-1}
.studio-banner{position:sticky;top:0;z-index:30;background:#8a1c6b;color:#fff;font-weight:700;font-size:13px;line-height:1.5;text-align:center;padding:9px 14px;border-radius:6px;margin:0 0 14px;box-shadow:0 2px 8px #0003}
.studio-banner-dialog{position:static;margin:0 0 16px;box-shadow:none;font-size:12px}
.studio-heading{margin-bottom:10px}
.studio-heading h1{font-size:clamp(26px,3vw,34px);margin:0}
.studio-nav{display:flex;gap:6px}
.studio-nav a{font-size:14px;font-weight:600;text-decoration:none;padding:9px 16px;border:1px solid var(--field-line);border-radius:6px;background:var(--paper);color:var(--ink)}
.studio-nav a:hover{background:var(--hover)}
.studio-nav a[aria-current="page"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.studio-status{min-height:1.5em;margin:0 0 10px;font-size:13px;color:var(--ink);overflow-wrap:anywhere}
.studio-content{min-width:0}
.studio :focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.studio button,.studio select,.studio input{touch-action:manipulation}
.studio button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.studio .hint{font-size:12px;margin:6px 0}
.studio label{margin:0 0 6px}
.studio-field{margin:0;font-size:12px}
.studio-field>span{display:block;margin:0 0 6px;font-weight:600}
.studio-field select,.studio-field input{width:auto;min-width:150px}
.studio-toolbar,.studio-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px;margin:0 0 14px}
.studio-toolbar .studio-field input{min-width:0}
.studio-filters{padding:12px 14px;background:var(--paper);border:1px solid var(--line);border-radius:10px}
.studio-day-title{font:26px var(--serif);margin:6px 0 4px}
.studio-actions{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0}
.studio-actions button{padding:9px 13px}
.pause-block{flex:1 1 100%;min-width:0}
.pause-panel{border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:12px 14px;margin:4px 0}
.pause-field{margin:0 0 12px}
.pause-label,.pause-note-label{display:block;font-size:12px;font-weight:600;margin:0 0 6px}
.pause-choices{display:flex;flex-wrap:wrap;gap:8px}
.pause-choices button{padding:9px 13px}
.pause-choices button:disabled{opacity:.6}
.pause-choices button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.pause-note-label{margin-top:12px}
.pause-end{margin:10px 0 0}
.pause-end input{max-width:100%}
.pause-panel textarea{width:100%;box-sizing:border-box}
.pause-preview{font-size:14px;font-weight:600;margin:12px 0 0;overflow-wrap:anywhere}
.pause-status p{margin:4px 0}
.pause-status{padding:2px 0 6px}
.pause-result{background:var(--ok-bg);border-radius:8px;padding:8px 12px;margin:4px 0}
.pause-result p{margin:4px 0}
.link-button{border:0;background:none;padding:2px;font-weight:400;font-size:inherit;text-decoration:underline;color:var(--accent)}

/* session cards */
.studio-sessions{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;margin:12px 0 22px}
.studio-sessions>.hint,.studio-sessions>.studio-blocked{grid-column:1/-1}
.studio-sessions:has(.studio-calendar){display:block}
.studio-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:16px 18px;min-width:0}
.studio-card h3{font-size:17px;margin:2px 0 6px;overflow-wrap:anywhere}
.studio-card-cancelled{background:#f0f0ea}
.studio-card-cancelled h3{text-decoration:line-through}
.studio-time{margin:0;font-size:13px;font-weight:700;color:var(--accent)}
.studio-meta,.studio-capacity{margin:4px 0;font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.studio-capacity{font-weight:600}
.studio-flags{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0;padding:0}
.flag{display:inline-block;font-size:11px;font-weight:700;line-height:1.4;padding:3px 9px;border-radius:12px;border:1px solid}
.flag-notice{background:#e7eef3;color:#1d3e55;border-color:#b8cbd8}
.flag-attention{background:var(--warn-bg);color:#6d4318;border-color:#e3c48c}
.flag-muted{background:#eeeeea;color:var(--muted);border-color:#d0d3cb}
.flag-blocking{background:#fbe6e1;color:#8a2412;border-color:#e2b0a6}

/* day calendar: one column per instructor (a class sits in the column of whoever teaches it, beside their private lessons; only a
   class with no instructor goes to the leading Studio column), the way the studio's own appointment book looks. The 15-minute lines
   below are a fixed 18px apart because every column's own pixel height (set in studio.js) is always the day's minutes times 1.2px —
   see PX_PER_MINUTE there. Every column shows at every width; a wide day scrolls sideways inside .studio-cal-scroll, never the page.
   A block's own size can be smaller than the usual 44px touch target; the List toggle is the equivalent, larger-target way to reach
   the same roster and actions, which is why that is acceptable here (WCAG 2.5.5's own exception for an equivalent control). */
.studio-cal-scroll{overflow-x:auto}
.studio-cal-grid{display:flex;flex-direction:column;width:max-content;min-width:100%;background:var(--paper);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.studio-cal-headrow,.studio-cal-bodyrow{display:flex}
.studio-cal-corner,.studio-cal-gutter{flex:0 0 66px}
.studio-cal-col-head,.studio-cal-column{flex:1 0 170px}
.studio-cal-corner,.studio-cal-col-head{height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:12px;font-weight:600;text-align:center;border-bottom:1px solid var(--line);padding:4px 6px;overflow:hidden;background:var(--paper)}
.studio-cal-col-name{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.studio-cal-avatar{width:22px;height:22px;flex:0 0 22px;border-radius:50%;background:var(--ink);color:var(--paper);font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}
.studio-cal-col-head-studio .studio-cal-col-name{font-weight:700}
.studio-cal-corner{position:sticky;left:0;z-index:3}
.studio-cal-gutter{position:sticky;left:0;z-index:2;background:var(--paper);border-right:1px solid var(--line)}
.studio-cal-gutter-body{position:relative;height:100%}
.studio-cal-hour{position:absolute;left:0;right:6px;transform:translateY(-7px);font-size:11px;color:var(--muted);text-align:right;background:var(--paper)}
.studio-cal-columns{flex:1 1 auto;display:flex;position:relative}
.studio-cal-column{position:relative;border-left:1px solid var(--line);background-image:repeating-linear-gradient(to bottom,var(--line) 0,var(--line) 1px,transparent 1px,transparent 18px)}
.studio-cal-now{position:absolute;left:0;right:0;height:2px;background:var(--accent);z-index:1;pointer-events:none}
.studio-cal-now::before{content:"";position:absolute;left:-3px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--accent)}
.studio-cal-block{position:absolute;box-sizing:border-box;overflow:hidden;text-align:left;border-style:solid;border-width:1px 1px 1px 4px;border-radius:4px;padding:2px 5px;font:11px/1.25 var(--sans);cursor:pointer}
button.studio-cal-block{width:auto}
.studio-cal-block-time{display:block;font-weight:600;font-size:10px}
.studio-cal-block-name{display:block;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.studio-cal-block-sub{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.studio-cal-block-class{background:#eef2e4;border-color:#a9bf9b;color:#233f1c}
.studio-cal-block-event{background:#e7eef3;border-color:#8fb0c9;color:#1d3e55}
.studio-cal-block-private_lesson{background:#f3e6f0;border-color:#c191b8;color:#5a2650}
.studio-cal-block-cancelled{opacity:.55}
.studio-cal-block-cancelled .studio-cal-block-name{text-decoration:line-through}
.studio-cal-flag{position:absolute;top:2px;right:2px;width:7px;height:7px;border-radius:2px;background:#a1631e}
@media(max-width:900px){.studio-cal-col-head,.studio-cal-column{flex-basis:140px}}
/* Phone width: every column still shows (narrower, avatar only), and the grid scrolls sideways inside its own panel. */
@media(max-width:560px){.studio-cal-col-head,.studio-cal-column{flex-basis:80px}.studio-cal-corner,.studio-cal-gutter{flex-basis:48px}.studio-cal-col-name{display:none}.studio-cal-hour{font-size:10px}}

/* the week strip: a tap-to-change-day row above the day view, the count of each day's sessions filling in once it loads. */
.studio-week-strip{display:flex;gap:2px;margin:0 0 14px;padding:6px 4px;background:var(--paper);border:1px solid var(--line);border-radius:10px}
.studio-week-strip-day{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 2px;border:0;border-radius:8px;background:none;color:inherit;font:inherit}
.studio-week-strip-day:hover{background:var(--hover)}
.studio-week-strip-letter{font-size:10px;font-weight:700;color:var(--muted)}
.studio-week-strip-day[aria-pressed="true"] .studio-week-strip-letter{color:var(--paper)}
.studio-week-strip-num{font-size:15px;font-weight:700;width:26px;height:26px;line-height:26px;border-radius:50%}
.studio-week-strip-today{border:2px solid var(--accent)}
.studio-week-strip-count{font-size:10px;color:var(--muted);min-height:12px}
.studio-week-strip-day[aria-pressed="true"] .studio-week-strip-count{color:var(--paper)}

/* week */
.studio-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;grid-column:1/-1}
.studio-week-day{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px 10px 12px;min-width:0}
.studio-week-day h3{font-size:13px;margin:0 0 8px}
.studio-week-day ul{list-style:none;margin:0;padding:0}
.studio-week-day li{font-size:12px;line-height:1.4;padding:5px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}
.studio-week-item{width:100%;text-align:left;border:0;background:transparent;font-weight:400;font-size:12px;line-height:1.4;padding:2px 0;color:var(--ink)}
.studio-week-item:hover{text-decoration:underline;background:transparent}
.studio-cancelled{text-decoration:line-through;color:var(--muted)}

/* panels: conflicts and open slots */
.studio-panel{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:12px 16px;margin:14px 0 0;font-size:13px}
.studio-panel>summary{font-size:14px;font-weight:600;margin:0;padding:5px 0;min-height:24px;cursor:pointer}
.studio-panel[open]>summary{margin-bottom:12px}
.studio-panel h3{margin:16px 0 8px}
.studio-conflicts{list-style:none;margin:0;padding:0}
.studio-conflicts li{border:1px solid;border-left-width:5px;border-radius:6px;padding:8px 12px;margin:0 0 8px;font-size:13px;line-height:1.5}
.studio-table{width:100%;border-collapse:collapse;font-size:13px}
.studio-table th,.studio-table td{padding:7px 10px;text-align:left;border-bottom:1px solid var(--line)}
.studio-table td{text-align:right}
.studio-slot-list{list-style:none;margin:0;padding:0}
.studio-slot-list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}

/* roster drawer: beside the list on wide screens, under it on narrow ones */
.studio-drawer{background:var(--paper);border:1px solid var(--field-line);border-radius:12px;padding:18px 20px;margin:0 0 18px;scroll-margin-top:70px;min-width:0}
.studio-drawer-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px}
.studio-drawer h2{font:22px var(--serif);overflow-wrap:anywhere}
.studio-drawer h3{margin:18px 0 6px}
.studio-people{list-style:none;margin:0;padding:0}
ol.studio-people{list-style:decimal inside}
.studio-people li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px}
ol.studio-people li{display:list-item}
.saved-cards li .saved-card-note{flex-basis:100%;margin:0}
.saved-card-history{margin:0;padding-left:18px;font-size:13px}
ol.studio-people li .studio-actions{display:inline-flex;margin-left:10px}
@media(min-width:1100px){
  .studio:has(.studio-drawer:not([hidden])){grid-template-columns:minmax(0,1fr) 420px;column-gap:22px}
  .studio:has(.studio-drawer:not([hidden]))>.studio-banner,.studio:has(.studio-drawer:not([hidden]))>.studio-heading,.studio:has(.studio-drawer:not([hidden]))>.studio-status{grid-column:1/-1}
  .studio:has(.studio-drawer:not([hidden]))>.studio-content{grid-column:1;grid-row:4}
  .studio:has(.studio-drawer:not([hidden]))>.studio-drawer{grid-column:2;grid-row:4;position:sticky;top:64px;max-height:calc(100vh - 84px);overflow:auto;margin:0}
}

/* clients */
.studio-search,.customers-search{margin:0 0 18px}
.studio-search>label,.customers-search>label{font-size:13px;font-weight:600}
.studio-inline{display:flex;flex-wrap:wrap;gap:8px}
.studio-inline input{flex:1 1 220px;width:auto}
.studio-clients{display:grid;grid-template-columns:320px minmax(0,1fr);gap:20px;align-items:start}
.studio-results{min-width:0}
.studio-clients.studio-record-only{grid-template-columns:minmax(0,1fr)}
.studio-people-link{margin:0 0 12px}
.studio-people-link a{display:inline-flex;align-items:center;min-height:32px;font-weight:600}
.studio-result-list{list-style:none;margin:0;padding:0;background:var(--paper);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.studio-result-list li+li{border-top:1px solid var(--line)}
.studio-result-list a{display:block;padding:12px 14px;text-decoration:none;font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.studio-result-list a strong{display:block;font-size:14px}
.studio-result-list a:hover{background:var(--hover)}
.studio-result-list a.selected{background:var(--selected);box-shadow:inset 3px 0 0 var(--accent)}
.studio-record{min-width:0}
.studio-record-head{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.studio-record-head h2{font:28px var(--serif);overflow-wrap:anywhere}
/* The search and Who's in today in one disclosure (app.css's details rule is undone: no top rule, no smaller text), "Change client" once a
   person is open. */
.customers-find{margin:0 0 18px;padding:0;border:0;font-size:inherit}
.customers-find>summary{min-height:44px;display:list-item;padding:10px 12px;margin:0;border:1px solid var(--line);border-radius:6px;font-weight:600;cursor:pointer}
.customers-find[open]>summary{margin-bottom:12px}
/* Six sub-tabs on a phone: they wrap, finger-sized, so every one is on screen (the other tab rows scroll sideways). */
#customers-subtabs{flex-wrap:wrap;gap:4px 14px}
#customers-subtabs button{min-height:44px}
#customers-person-name{scroll-margin-top:calc(var(--topbar-h) + 8px)}
/* A phone scrolls an opened profile's name to the top (customers.js) before its record has loaded: the profile keeps a screen's height, so
   there is room to scroll and nothing jumps when the record arrives. */
@media(max-width:860px){#customers-workspace{min-height:calc(100vh - var(--topbar-h))}}
.studio-section{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin:0 0 14px}
.studio-section h3{margin:0 0 10px;font-size:15px}
.studio-section ul{margin:0;padding-left:18px;font-size:14px;line-height:1.6}
.studio-section ul.studio-people{padding-left:0}
.studio-dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 18px;margin:0;font-size:14px}
.studio-dl dt{color:var(--muted);font-size:13px}
.studio-dl dd{margin:0;overflow-wrap:anywhere}

/* messages */
.studio-blocked{background:#fbe6e1;border:1px solid #e2b0a6;color:#6d1a0c;border-radius:8px;padding:14px 16px;font-size:14px;line-height:1.6;margin:0 0 12px}
.studio-error{color:#8a2412;font-size:13px;line-height:1.5;margin:12px 0 0;min-height:1.2em;overflow-wrap:anywhere}

/* dialog */
.studio-dialog{width:min(580px,calc(100% - 24px));max-height:calc(100vh - 24px);overflow:auto;padding:22px 24px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink)}
.studio-dialog::backdrop{background:var(--backdrop)}
.studio-form h2{font:24px var(--serif);margin:0 0 10px}
.studio-intro{font-size:14px;line-height:1.6;margin:0 0 10px;overflow-wrap:anywhere}
.studio-formrow{margin:0 0 14px;border:0;padding:0;min-width:0}
.studio-formrow>label,.studio-formrow>legend{font-size:13px;font-weight:600;padding:0}
.studio-check{display:flex;align-items:center;gap:10px;margin:0 0 10px}
.studio-check input{width:24px;height:24px;min-width:24px;min-height:24px;flex:none;margin:0;accent-color:var(--accent)}
.studio-check label{margin:0;font-size:14px;min-height:24px;display:flex;align-items:center}
.studio-picks{list-style:none;margin:8px 0;padding:0}
.studio-picks button{width:100%;text-align:left;font-weight:400;margin:3px 0;overflow-wrap:anywhere}
.studio-selected{font-size:13px;font-weight:600;margin:8px 0 0}
.studio-picker-change>summary{min-height:44px;padding-block:10px;cursor:pointer}

@media(max-width:1000px){.studio-week{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.studio-clients{grid-template-columns:1fr}.studio-result-list{max-height:280px;overflow:auto}}
@media(max-width:600px){
  .studio-week{grid-template-columns:1fr}
  .studio-sessions{grid-template-columns:1fr}
  /* One row, never broken mid-word ("Check-ins" split at its hyphen); it scrolls sideways if a phone is narrower still. */
  .studio-nav{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.studio-nav a{flex:1 0 auto;text-align:center;white-space:nowrap;padding:9px 10px}
  .studio-dl{grid-template-columns:1fr;gap:2px}.studio-dl dt{margin-top:8px}
  .studio-toolbar>button,.studio-toolbar>.studio-field{flex:1 1 30%}
  .studio-field select,.studio-field input{width:100%}
  .studio-dialog{padding:18px}
  .studio-banner{font-size:12px;padding:8px 10px}
}
@media(pointer:coarse){.studio button,.studio select,.studio input:not([type=checkbox]),.studio-nav a,.studio-result-list a{min-height:44px}.studio-actions button{min-height:44px}.studio-panel>summary{padding:12px 0}.studio-check label{min-height:44px}}
@media(prefers-reduced-motion:no-preference){.studio-card,.studio-panel{transition:border-color .15s}}

/* ---- Setup > Pricing options (S7) ---- */
.pricing-note{margin:0 0 14px;font-size:13px}
.pricing-toolbar{display:grid;grid-template-columns:minmax(200px,2fr) repeat(3,minmax(130px,1fr)) auto auto;gap:12px;align-items:end;margin:0 0 10px}
.pricing-field label{margin:0 0 5px}
.pricing-checks{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;padding-bottom:9px}
.pricing-checks label{margin:0}
.pricing-scroll{position:relative;overflow-x:auto;border:1px solid var(--line);border-radius:8px;background:var(--paper)}
.pricing-table{min-width:900px}
.pricing-table th,.pricing-table td{text-align:left;vertical-align:top}
.pricing-table .pricing-num{text-align:right}
.pricing-table thead th{background:var(--soft);white-space:nowrap}
.pricing-sort{border:0;background:transparent;padding:0;font:inherit;font-weight:700;color:inherit;cursor:pointer}
th[aria-sort="ascending"] .pricing-sort::after{content:" \25B2";font-size:9px}
th[aria-sort="descending"] .pricing-sort::after{content:" \25BC";font-size:9px}
.pricing-title{font-weight:600}
.pricing-name{border:0;background:transparent;padding:0;font:inherit;font-weight:600;color:var(--accent);text-align:left;text-decoration:underline;cursor:pointer}
.pricing-tag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--soft);color:var(--muted);font-size:11px;font-weight:600}
.pricing-retired td,.pricing-retired th{color:var(--muted)}
.pricing-actions-col{white-space:nowrap}
.pricing-actions-col .studio-actions{margin:0;flex-wrap:nowrap}
.pricing-actions-col .studio-actions button{padding:6px 10px}
#pricing-table tbody tr:hover{background:var(--hover)}
@media(max-width:900px){.pricing-toolbar{grid-template-columns:1fr 1fr}.pricing-field--search{grid-column:1/-1}.pricing-add{grid-column:1/-1}.pricing-add button{width:100%}}
@media(pointer:coarse){.pricing-actions-col .studio-actions button,.pricing-sort,.pricing-name{min-height:44px}}
.studio-dialog:has(.pricing-form){width:min(860px,calc(100% - 24px))}
.pricing-form{display:grid;grid-template-columns:1fr 1fr;gap:0 22px;align-items:start}
.pricing-form>*{grid-column:1/-1}
.pricing-form>.studio-formrow,.pricing-form>.studio-check{grid-column:auto}
.pricing-form>.studio-wide{grid-column:1/-1}
.pricing-form>.studio-check{align-self:end;padding-bottom:14px}
@media(max-width:700px){.pricing-form{grid-template-columns:1fr}.pricing-form>.studio-formrow,.pricing-form>.studio-check{grid-column:1/-1}}
/* Membership plans (platform 0182, 0183): the plan list, the plan editor's benefits, the price change preview and the changes in progress. */
.pricing-sub{display:block;margin-top:2px;font-size:12px;font-weight:400;color:var(--muted)}
.pricing-plan-tools{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin:0 0 10px}
.pricing-plan-tools label{margin:0}
.pricing-benefits{margin:0 0 14px;padding:8px 12px 12px;border:1px solid var(--line);border-radius:8px}
.pricing-benefits legend{padding:0 4px;font-weight:600}
.pricing-benefit-list{display:grid;gap:10px;margin:0 0 10px;padding:0;list-style:none}
.pricing-benefit-list li{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto;gap:8px;align-items:end}
.pricing-benefit-field label{display:block;margin:0 0 4px}
.pricing-benefit-field select,.pricing-benefit-field input{width:100%;box-sizing:border-box}
.pricing-preview-box{margin:4px 0 12px}
.pricing-preview{margin-top:10px}
.pricing-preview h3,.pricing-plan-changes h3{margin:12px 0 4px;font-size:14px}
.pricing-preview-list{margin:4px 0 12px;padding-left:20px}
.pricing-preview-list li{margin:0 0 6px}
.pricing-plan-changes{margin-top:18px}
.pricing-change{margin:0 0 8px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}
.pricing-change summary{cursor:pointer}
@media(max-width:700px){
  .pricing-plans-scroll{overflow-x:visible;border:0;background:transparent}
  .pricing-table.pricing-plans{min-width:0}
  .pricing-plans thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .pricing-plans,.pricing-plans tbody,.pricing-plans tr,.pricing-plans th,.pricing-plans td{display:block;width:auto}
  .pricing-plans tr{margin:0 0 10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}
  .pricing-plans th,.pricing-plans td{padding:2px 0;border:0}
  .pricing-plans .pricing-num{text-align:left}
  .pricing-plans td[data-label]::before{content:attr(data-label) ": ";font-weight:600;color:var(--muted)}
  .pricing-plans .pricing-actions-col{padding-top:8px;white-space:normal}
  .pricing-plans .pricing-actions-col .studio-actions{flex-wrap:wrap}
  .pricing-benefit-list li{grid-template-columns:1fr}
  .pricing-plan-tools button,.pricing-benefit-list button,.pricing-benefit-add,.pricing-preview-button,.pricing-to-plans{min-height:44px}
}
@media(pointer:coarse){.pricing-plan-tools button,.pricing-benefit-list button,.pricing-benefit-add,.pricing-preview-button,.pricing-to-plans{min-height:44px}}

/* Thread T4: the front desk and the check-in history (studio-desk.js). The day's classes on the left, the class at the door on the right; one row per person. */
.studio-desk-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin:0 0 10px}
.studio-desk{display:grid;grid-template-columns:280px minmax(0,1fr);gap:20px;align-items:start;margin-top:12px}
.studio-desk-list{list-style:none;margin:0;padding:0;background:var(--paper);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.studio-desk-list li+li{border-top:1px solid var(--line)}
.studio-desk-pick{display:block;width:100%;text-align:left;border:0;border-radius:0;background:transparent;padding:12px 14px;font-size:13px;line-height:1.5}
.studio-desk-pick strong{display:block;font-size:14px}
.studio-desk-pick.selected{background:var(--selected);box-shadow:inset 3px 0 0 var(--accent)}
.studio-desk-class{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:14px 18px;min-width:0}
.studio-desk-class-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.studio-desk-people,.studio-history{list-style:none;margin:10px 0 0;padding:0}
.studio-desk-row,.studio-history-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;padding:10px 0;border-top:1px solid var(--line);font-size:14px}
.studio-desk-row>div,.studio-history-row>div{min-width:0;flex:1 1 260px;overflow-wrap:anywhere}
.studio-desk-line{margin:3px 0 0;font-size:13px;color:var(--muted)}
.studio-desk-row.due .studio-desk-line{color:#8a4b00}
.studio-desk-row.in .studio-desk-line{color:var(--ok)}
.studio-desk-balance{margin:4px 0;font-size:13px}
.studio-desk-balance.owed,.studio-desk-alerts .red{color:#8c2020;font-weight:600}
.studio-desk-alerts{margin:4px 0;padding-left:20px;font-size:13px;overflow-wrap:anywhere}
.studio-desk-alerts .warning{color:#8a4b00}
.studio-history-row.undone>div>p:first-child{text-decoration:line-through}
.studio-desk-credit{margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--soft);font-size:14px}
.studio-desk-total{margin:10px 0 0;font-weight:700}
.studio-sale-summary{position:sticky;top:0;z-index:2;background:var(--paper);padding:8px 0;border-block:1px solid var(--line);margin-bottom:12px}
.studio-sale-summary .studio-selected,.studio-sale-summary .studio-desk-total{margin:0;overflow-wrap:anywhere}
.studio-sale-search{display:flex;flex-wrap:wrap;gap:8px}
.studio-sale-search input{flex:1 1 170px;min-width:0;min-height:44px}
.studio-sale-search button,.studio-sale-picker .studio-check,.studio-sale-picker .studio-check label{min-height:44px}
.studio-sale-picker .studio-check label{min-width:44px}
.studio-sale-options{max-height:256px;overflow:auto;overscroll-behavior:contain;padding:4px;border:1px solid var(--line);border-radius:8px;scroll-padding-block:4px}
.studio-sale-options .studio-check[hidden]{display:none}
.studio-sale-options .studio-check:focus-within{outline:2px solid var(--focus);outline-offset:-2px}
.studio-qty{width:4.5em}
.studio-sale-retail-row{display:flex;align-items:center;gap:12px;margin-block:8px}
.studio-sale-retail-row label{flex:1 1 0;min-width:0;overflow-wrap:anywhere}
.studio-sale-retail-row input.studio-qty{flex:0 0 64px;width:64px;min-width:44px;min-height:44px}
@media(pointer:coarse){.studio-desk-row button,.studio-desk-pick{min-height:44px}}
@media(max-width:800px){.studio-desk{grid-template-columns:1fr}}
/* People > Who's in today (review/customers.js, UX audit #6): the empty state, one tap to a profile. */
.people-today{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:14px 16px;margin:0 0 18px;max-width:760px}
.people-today .card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.people-today h2{margin:0;font:500 19px/1.3 var(--serif)}
.people-today-group h3{font-size:13px;font-weight:700;margin:14px 0 6px;color:var(--ink)}
.people-today-list{max-height:none!important;overflow:visible!important}
.people-today-list button{font:inherit;display:block;width:100%;text-align:left;background:none;border:0;border-radius:0;padding:10px 14px;min-height:44px;font-size:13px;line-height:1.45;color:var(--ink)}
.people-today-list button:hover{background:var(--hover)}
.people-today-list button strong{display:block;font-size:14px}
.people-today-list button span{color:var(--muted)}
/* Classes on a phone (UX audit #8): Brand, Kind, Instructor and Room behind one Filters button (review/studio.js). The default view is
   unchanged (calendar), which is Ron's call. */
.studio-filters-toggle{display:none}
@media(max-width:860px){
  .studio-filters-toggle{display:inline-flex;align-items:center;min-height:40px;margin:0 0 10px}
  .studio-filters-toggle[aria-expanded="true"]{background:var(--selected)}
  .studio-filters:not(.open){display:none}
}
/* The Mindbody schedule sync (platform migration 0061): how fresh the shown schedule is, and the owners' switch. */
.sched-sync{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:2px 0 10px}
.sched-sync-button{font:inherit;font-size:var(--text-sm);padding:2px 10px;min-height:32px}
#customer-schedule-printout { display:none; }
#customer-schedule-summary input { max-width:100%; }
@media print {
  body.printing-customer-schedule > * { display:none !important; }
  body.printing-customer-schedule > #customer-schedule-printout { display:block !important; color:#000; background:#fff; font:12pt sans-serif; padding:16pt; }
  #customer-schedule-printout li { margin:12pt 0; break-inside:avoid; }
}

.studio-waiver-text{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;max-height:24rem;overflow:auto;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}
.agreement-carryover{min-width:0;overflow-wrap:anywhere}
.agreement-carryover select{max-width:100%}
@media(prefers-color-scheme:dark){
  #studio-content[data-view="waivers"],.studio-dialog:has(.agreement-carryover),.studio-desk-row:has(.agreement-carryover),.door-row:has(.agreement-carryover){color-scheme:dark;--page:#1c1c20;--paper:#26262c;--ink:#f2eff0;--line:#65616a;--field-line:#a59da6;--muted:#c4bec5;--accent:#f1a6b5;--accent-hover:#ffc5d0;--on-accent:#271017;--focus:#f1a6b5;--soft:#333037;--hover:#38343b;background:var(--paper);color:var(--ink)}
}
/* Staff screens review (2026-10-18): the door is used on a phone with one thumb. D07: every tap target on the desk is at least 44 px at any pointer;
   D06: one-tap reasons; D19: the roster find box; GD04: cancelled sessions fold away. */
.studio-desk-row button,.studio-desk-pick,.studio-desk-class-head button,.studio-desk-find input,.studio-desk-cancelled>summary{min-height:44px}
.studio-desk-row button{min-width:44px}
.studio-desk-find{display:block;margin:10px 0 0}
.studio-desk-find input{width:100%;box-sizing:border-box}
.studio-desk-cancelled{margin-top:10px}
.studio-desk-cancelled>summary{display:flex;align-items:center;cursor:pointer;font-size:13px;color:var(--muted)}
.studio-reasons{border:0;padding:0;margin:12px 0 0}
.studio-reasons legend{font-size:13px;font-weight:600;padding:0 0 4px}
.studio-reasons .studio-check{min-height:44px}
.studio-reasons .studio-check label{min-height:44px}
.studio-reasons textarea{width:100%;box-sizing:border-box;margin-top:6px}
#studio-desk-class-title{scroll-margin-top:calc(var(--topbar-h,56px) + 8px)}

/* PAY-UI-1910-01 (Codex): Clients > Purchases at phone width: each sale is a card (label: value), the Receipt button and the receipt span the card. */
@media(max-width:640px){
  #customers-purchases-table,#customers-purchases-table tbody,#customers-purchases-table tr,#customers-purchases-table td{display:block;width:100%;box-sizing:border-box}
  #customers-purchases-table thead,#customers-purchases-table tr[hidden]{display:none}
  #customers-purchases-table tr{border:1px solid var(--line);border-radius:10px;margin:0 0 10px;padding:8px 12px}
  #customers-purchases-table td{text-align:left;border:0;padding:3px 0;overflow-wrap:anywhere}
  #customers-purchases-table td[data-label]::before{content:attr(data-label) ": ";color:var(--muted)}
  #customers-purchases-table td button{width:100%;min-height:44px;margin-top:6px}
  #customers-purchases-table tr.customers-receipt{border:0;padding:0;margin:-6px 0 12px}
  #customers-purchases-table tr.customers-receipt .settings-card{margin:0}
}

/* The authorized Studio schedule is the Calendar workspace for roles using this adapter. */
#studio-panel.schedule-workspace .studio-heading{align-items:start;gap:6px 14px;margin-bottom:8px}
#studio-panel.schedule-workspace #studio-eyebrow{display:none}
#studio-panel.schedule-workspace .studio-status:empty{display:none}
#studio-panel.schedule-workspace .studio-schedule-more{border:0;border-radius:0;padding:0;margin:0 0 0 auto;font-size:13px}
#studio-panel.schedule-workspace .studio-schedule-more>summary{min-height:44px;padding:10px 0;line-height:24px;box-sizing:border-box;cursor:pointer;color:var(--accent)}
#studio-panel.schedule-workspace .studio-schedule-more .studio-nav{flex-wrap:wrap;overflow:visible;margin:0 0 8px}
#studio-panel.schedule-workspace .studio-schedule-modes{display:flex;gap:4px;margin-bottom:6px}
#studio-panel.schedule-workspace .studio-schedule-modes button{min-height:44px;padding:8px 16px}
#studio-panel.schedule-workspace .studio-schedule-date{gap:6px;margin:0 0 6px;align-items:center}
#studio-panel.schedule-workspace .studio-schedule-date>button{flex:0 0 44px;min-height:44px;padding:0;font-size:22px}
#studio-panel.schedule-workspace #studio-today{flex-basis:65px;font-size:14px}
#studio-panel.schedule-workspace .studio-schedule-date>.studio-field{flex:0 1 140px;margin:0}
#studio-panel.schedule-workspace #studio-date{min-width:0;width:140px;max-width:100%;min-height:44px}
#studio-panel.schedule-workspace .studio-schedule-views{display:flex;flex-wrap:wrap;align-items:start;gap:4px 10px;margin-bottom:4px}
#studio-panel.schedule-workspace .studio-schedule-views .studio-toolbar{margin:0;gap:4px}
#studio-panel.schedule-workspace .studio-schedule-views button{min-height:44px;padding:8px 10px;flex:0 0 auto}
#studio-panel.schedule-workspace .studio-filters-toggle{display:inline-flex;align-items:center;margin:0;min-height:44px}
#studio-panel.schedule-workspace .studio-filters:not(.open){display:none}
#studio-panel.schedule-workspace .studio-schedule-days{border:0;padding:0;margin:0;font-size:13px;flex:1 1 110px;min-width:0}
#studio-panel.schedule-workspace .studio-schedule-days>summary{min-height:44px;line-height:24px;padding:10px 0;box-sizing:border-box;cursor:pointer}
#studio-panel.schedule-workspace .studio-schedule-days[open]{flex-basis:100%}
#studio-panel.schedule-workspace .studio-week-strip{margin:0 0 6px}
#studio-panel.schedule-workspace[data-schedule-mode=day] #studio-day-title{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#studio-panel.schedule-workspace[data-schedule-mode=week] #studio-day-title{font:650 16px/1.35 var(--sans);margin:6px 0}
#studio-panel.schedule-workspace #studio-day-counts{margin:2px 0;font-size:12px}
#studio-panel.schedule-workspace #studio-sessions{margin-top:6px}
@media(max-width:600px){#studio-panel.schedule-workspace .studio-heading{flex-direction:row;align-items:center}#studio-panel.schedule-workspace .studio-nav a{flex:0 1 auto;white-space:normal;text-align:left}#studio-panel.schedule-workspace .studio-schedule-views{gap:4px 6px}}

#studio-panel.schedule-workspace #studio-find-time{margin-left:auto;background:transparent;color:var(--accent)}
#studio-panel.schedule-workspace #studio-slots{scroll-margin-top:80px}

#studio-panel.schedule-workspace .studio-nav a{min-height:44px;display:inline-flex;align-items:center}

/* The existing post-action heading focus must remain visible in the compact day view. */
#studio-panel.schedule-workspace[data-schedule-mode=day] #studio-day-title:focus{position:static;width:auto;height:auto;overflow:visible;clip-path:none;white-space:normal;margin:6px 0;outline:2px solid var(--accent);outline-offset:3px}
/* New-client intake (2026-10-21): the "No contact info" exception, its reason, the optional studio email sign-up, and the possible-duplicate choice. */
.studio-intake .studio-intake-reason{margin:6px 0 10px}
.studio-intake .studio-intake-reason textarea{width:100%;box-sizing:border-box}
.studio-intake input:disabled+label{color:var(--muted)}
.studio-dup{border:1px solid var(--line);border-radius:8px;padding:12px;margin:0 0 14px;background:var(--paper,#fff)}
.studio-dup-intro{margin:0 0 8px;font-weight:600}
.studio-dup-list{list-style:none;padding:0;margin:0 0 10px;display:grid;gap:8px}
.studio-dup-list li{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.studio-dup-list li span{flex:1 1 200px;min-width:0;overflow-wrap:anywhere}
.studio-dup button{min-height:44px}

.profile-page{max-width:760px;margin:0 auto}.profile-page label{display:block;margin-top:14px}.profile-page label.checkbox{display:flex;gap:8px;align-items:center}.profile-page input:not([type=checkbox]):not([type=file]),.profile-page textarea{width:100%;box-sizing:border-box}.profile-page fieldset{border:1px solid var(--line);border-radius:10px;margin-top:16px;padding:12px 16px}.profile-notice{font-size:1.05em}.profile-photo{display:block;max-width:220px;max-height:280px;border-radius:10px;margin:12px 0;object-fit:cover}.profile-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.profile-owner-item{border-top:1px solid var(--line);padding:16px 0;display:grid;grid-template-columns:120px 1fr;gap:16px}.profile-owner-item img{width:120px;height:150px;object-fit:cover;border-radius:8px}.profile-owner-item dl{margin:0}.profile-owner-item dt{font-weight:600;margin-top:6px}.profile-owner-item dd{margin:0;white-space:pre-wrap}@media (max-width:600px){.profile-owner-item{grid-template-columns:1fr}}
.profile-owner-item.profile-target{outline:3px solid var(--accent);outline-offset:4px;border-radius:6px;scroll-margin-top:16px}.profile-owner-item h3:focus{outline:none}
/* This standalone page follows the same personal Light / Dark choice as Annie. */
:root[data-profile-page][data-theme="dark"]{color-scheme:dark;--ink:#f2eae3;--muted:#c7b7aa;--paper:#282421;--page:#1c1917;--soft:#322c28;--hover:#3c3330;--line:#51463e;--field-line:#9b887b;--accent:#f096a6;--accent-hover:#ffb3bf;--on-accent:#281419;--accent-soft:#472c32;--selected:#472c32;--selected-line:#b47c87;--focus:#f0acbb}

.team-page{max-width:860px;margin:0 auto}.team-page label{display:block;margin-top:12px}.team-page input:not([type=checkbox]),.team-page select{box-sizing:border-box}.team-page #team-add-form input{width:100%}.team-member{border-top:1px solid var(--line);padding:16px 0}.team-member.inactive{opacity:.7}.team-member h3{margin:0 0 4px}.team-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:10px 0}.team-actions label{margin:0}.team-emails{list-style:none;padding:0;margin:8px 0}.team-emails li{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:4px 0;flex-wrap:wrap}.team-add-email{display:flex;gap:8px;flex-wrap:wrap}.team-add-email input{flex:1;min-width:200px}.team-roles dt{font-weight:600;margin-top:8px}.team-roles dd{margin:0}.role-unavailable{max-width:640px;margin:40px auto;text-align:center}.profile-last-edit{font-style:italic}.profile-permission{border:1px solid var(--line);border-radius:10px;padding:12px 16px;margin-top:16px}
/* Mindbody staff ID and HubSpot owner per person (review/team.js). */
.team-links-bar{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;justify-content:space-between;margin:0 0 8px}.team-links-bar[hidden]{display:none}.team-links-bar p{margin:0;flex:1 1 280px}.team-links-form{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-end;margin-top:8px}.team-links-form label{margin:0;display:grid;gap:4px}.team-links-form input{max-width:180px}.team-links-form input[hidden]{display:none}.team-links-form select{max-width:100%;min-width:0}

/* The shell: the sidebar by job, the top bar, the phone bottom bar, global search, and the Today and Messages layouts.
   Values from tokens.css. The sidebar column is always there on a wide screen (signed in or not), so nothing moves when the
   workspace appears; on a phone the sidebar is a drawer and the bottom bar is fixed (its space is reserved on the page). */
.skip-link{position:absolute;left:12px;top:-60px;z-index:100;background:var(--paper);color:var(--accent);padding:10px 14px;border:1px solid var(--field-line);border-radius:var(--radius);font-weight:600}
.skip-link:focus{top:8px}
.shell{--sidebar-w:224px;display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:100vh}
.column{min-width:0;display:flex;flex-direction:column}
main#content{flex:1;padding:28px 30px 32px;width:100%;max-width:1480px;outline:none;min-height:calc(100vh - var(--topbar-h))}
/* sidebar */
.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;overscroll-behavior:contain;background:var(--paper);border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:60}
.sidebar-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:18px 18px 12px}
.sidebar-close{display:none}
/* The stacked names, text only, as on the website header: Spotlight maroon over a short gold rule over Midtown red. */
.wordmark{display:flex;flex-direction:column;align-items:flex-start;text-decoration:none;line-height:1.3;border-radius:var(--radius)}
.wordmark:hover{text-decoration:none}
.wm-name{font:700 12px/1.3 var(--sans);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}
.wm-sb{color:#7f1623}
.wm-mts{color:#a00826}
.wm-rule{display:block;width:38px;height:3px;background:var(--gold);border-radius:2px;margin:5px 0}
.wm-app{margin-top:8px;font:500 15px/1.2 var(--serif);color:var(--ink);letter-spacing:0;text-transform:none}
.wordmark-small{display:none}
.global-search{position:relative;padding:0 14px 12px}
.global-search input{padding-left:32px;font-size:13px}
.search-icon{position:absolute;left:24px;top:10px;width:16px;height:16px;fill:none;stroke:var(--muted);stroke-width:1.8;pointer-events:none}
.search-results{position:absolute;left:14px;top:calc(100% - 8px);width:min(440px,calc(100vw - 28px));max-height:min(70vh,520px);overflow:auto;background:var(--paper);border:1px solid var(--field-line);border-radius:var(--radius-card);box-shadow:var(--shadow);z-index:80;padding:6px 0}
.search-group{margin:0;padding:6px 12px 2px;font:700 var(--text-xs)/1.4 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.search-option{display:block;padding:7px 12px;cursor:pointer;color:var(--ink)}
.search-option strong{display:block;font-size:13px;font-weight:600}
.search-option span{display:block;font-size:var(--text-sm);color:var(--muted)}
.search-option[aria-selected="true"],.search-option:hover{background:var(--selected);box-shadow:inset 3px 0 0 var(--accent)}
.search-empty{padding:8px 12px;margin:0;font-size:13px;color:var(--muted)}
.nav-list{list-style:none;margin:0;padding:0 8px}
.main-nav{flex:1;padding-bottom:12px}
.nav-link{display:flex;align-items:center;gap:10px;padding:10px;margin:2px 0;border-radius:var(--radius);font:600 14px/1.3 var(--sans);color:var(--ink);text-decoration:none;min-height:44px}
.nav-link svg,.menu-button svg,.bottom-bar svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.nav-link:hover{background:var(--hover);color:var(--ink);text-decoration:none}
.nav-section.active>.nav-link{color:var(--accent)}
.nav-link[aria-current]{background:var(--accent-soft);color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}
.nav-sub{list-style:none;margin:0 0 6px;padding:0;display:none}
.nav-section.active>.nav-sub{display:block}
.nav-sub a{display:flex;align-items:center;gap:6px;padding:8px 10px 8px 38px;min-height:44px;border-radius:var(--radius);font-size:13px;color:var(--ink);text-decoration:none}
.nav-sub a:hover{background:var(--hover);color:var(--ink)}
.nav-sub a.pending,.nav-link.pending,.today-links li.pending{visibility:hidden}
.nav-sub a[aria-current]{background:var(--accent-soft);color:var(--accent);font-weight:600;box-shadow:inset 3px 0 0 var(--accent)}
.nav-badge{margin-left:auto;min-width:22px;padding:0 7px;border-radius:999px;background:var(--accent);color:var(--on-accent);font:700 11px/20px var(--sans);text-align:center;font-variant-numeric:tabular-nums}
.owner-tag,.soon-tag{font:700 10px/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:0 6px}
.sidebar-foot{border-top:1px solid var(--line);padding:8px 0 14px}
/* Websites: the live site and (owners) the Test site, always open, so they are one tap away on a phone too. */
.sidebar-sites{border-top:1px solid var(--line);padding:8px 0 6px}
.sidebar-sites .nav-sub{display:block}
.sidebar-label{margin:6px 0 2px;padding:0 10px 0 38px;font:600 11px/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
/* top bar */
.topbar{position:sticky;top:0;z-index:50;height:var(--topbar-h);display:flex;align-items:center;gap:14px;padding:0 28px;background:var(--paper);border-bottom:1px solid var(--line)}
.crumb{margin:0;font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.crumb strong{color:var(--ink);font-weight:600}
.header-right{margin-left:auto;display:flex;gap:14px;align-items:center;font-size:13px;white-space:nowrap}
.header-right a{font-weight:600}
.pill{font-size:var(--text-sm);padding:4px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);max-width:32ch;overflow:hidden;text-overflow:ellipsis}
.menu-button{display:none}
/* views */
.view>.page-heading h1:focus{outline:none}
.view h1[tabindex]:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.role-unavailable{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:22px}
.placeholder-card{max-width:640px}
.placeholder-card h2{font:500 20px/1.25 var(--serif)}
.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px}
.card-head h2{font:500 19px/1.25 var(--serif)}
.card-head a{font-size:13px;font-weight:600}
/* Today */
.today-alerts{margin:0 0 16px}
.today-alerts h2{margin-bottom:8px}
.alert-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}
/* Fixed-size boxes, drawn before their numbers arrive, so the page below them never moves. */
.alert{display:flex;align-items:center;gap:12px;background:var(--paper);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius-card);padding:8px 12px;font-size:13px;height:62px;overflow:hidden}
.alert strong{font:700 22px/1 var(--sans);color:var(--accent);min-width:2ch;text-align:center;font-variant-numeric:tabular-nums}
.alert span{display:flex;flex-direction:column;min-width:0;line-height:1.35}
.alert span b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alert a{font-weight:600;white-space:nowrap}
.alert-quiet{border-left-color:var(--field-line)}
.alert-quiet strong{color:var(--muted)}
.alert-ok{border-left-color:var(--ok)}
.alert-ok strong{color:var(--ok)}
.alert-soon{border-left-color:var(--gold)}
/* Words, not colour alone (review/today.js): "None" in the number column; "Not connected" under the label, with no number. */
.alert strong.alert-word{flex:none;font-size:15px}
.alert-line{display:flex;gap:8px;align-items:baseline;min-width:0}
.alert-state{font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap}
.today-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:14px;align-items:start}
.today-side{display:grid;gap:14px;align-content:start;min-width:0}
.today-side>.settings-card{margin:0}
.today-grid>.settings-card{margin:0}
.today-list{list-style:none;margin:0;padding:0}
.today-list li{display:grid;grid-template-columns:78px minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:8px 0;border-top:1px solid var(--line);font-size:13px}
.today-list li:first-child{border-top:0}
.today-list .t-time{font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}
.today-list .t-what strong{display:block;font-weight:600}
.today-list .t-what span{display:block;color:var(--muted);font-size:var(--text-sm)}
.today-list .t-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.today-list .t-actions a{font-size:var(--text-sm);font-weight:600;padding:4px 8px;border:1px solid var(--field-line);border-radius:var(--radius);text-decoration:none;color:var(--ink);min-height:30px;display:inline-flex;align-items:center}
.today-list .t-actions a:hover{background:var(--hover)}
.today-list li.t-none{display:block;color:var(--muted)}
.today-links{list-style:none;margin:0;padding:0}
.today-links li{padding:8px 0;border-top:1px solid var(--line)}
.today-links li:first-child{border-top:0}
.today-links a{font-weight:600}
.today-links .hint{display:block;margin:2px 0 0}
/* Messages */
.inbox-filters{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.inbox-filters button{border-radius:999px;min-height:32px;padding:5px 12px;font-size:13px}
.inbox-filters button[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.inbox-filters button[aria-pressed="true"] .owner-tag{color:var(--on-accent);border-color:var(--on-accent)}
#conversation-list{height:440px;overflow:auto;margin:0 -14px;border-top:1px solid var(--line)}
#conversation-list .thread{padding-left:14px;padding-right:14px}
#conversation-list>.hint{padding:0 14px}
.desk>aside,.desk>section{min-width:0}
.inbox-selects{display:flex;gap:6px}
.inbox-selects>div{flex:1;min-width:0}
.inbox-selects select{margin-bottom:8px}
.thread .kind{font:700 10px/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.web-detail{min-width:0}
.web-status{margin:0;padding:8px 18px 0;font-size:13px;color:var(--muted)}
.web-history{padding:10px 18px;max-height:360px;overflow:auto}
.web-history p{margin:0 0 10px;padding:9px 12px;background:var(--soft);border-radius:var(--radius-card);font-size:13px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}
.safety-note{padding:8px 18px 0;margin:0}
.safety-body{padding:8px 18px}
.safety-body p{margin:0 0 8px;font-size:13px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}
/* The standalone pages (Team, My profile, Password, Email delivery, Safety reports, Website questions): the same wordmark, a crumb
   saying where they sit in the sidebar, and the way back. */
.page-bar{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:12px 24px;background:var(--paper);border-bottom:1px solid var(--line)}
.page-bar .crumb{margin:0}
.page-bar .crumb a{color:var(--muted)}
.back-link{margin-left:auto;font-weight:600;font-size:13px}
body>main{max-width:1180px;margin:0 auto;padding:20px 24px 32px}
body>main>h1{margin-bottom:10px}
body>main>p{max-width:80ch;line-height:1.6}
/* phone bottom bar (hidden above the phone width) */
.bottom-bar{display:none}
@media(max-width:860px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .sidebar{position:fixed;left:0;top:0;bottom:0;width:min(320px,88vw);height:100%;transform:translateX(-105%);transition:transform .2s ease;box-shadow:none;visibility:hidden}
  .sidebar.open{transform:none;box-shadow:var(--shadow);visibility:visible}
  .sidebar{padding-bottom:calc(var(--bottombar-h) + env(safe-area-inset-bottom));scroll-padding-bottom:calc(var(--bottombar-h) + env(safe-area-inset-bottom))}
  .sidebar-close{display:inline-flex}
  .sidebar-backdrop{position:fixed;inset:0;background:var(--backdrop);z-index:55}
  .topbar{padding:0 12px;gap:10px}
  .menu-button{display:inline-flex;padding:6px 10px;min-height:40px}
  .wordmark-small{display:flex}
  .wordmark-small .wm-name{font-size:10px;letter-spacing:.08em}
  .wordmark-small .wm-rule{width:28px;margin:3px 0}
  .crumb{display:none}
  .header-right{gap:10px}
  .header-right .pill,#password-settings{display:none}
  main#content{padding:14px 14px calc(var(--bottombar-h) + 18px)}
  .app-footer{padding-bottom:calc(var(--bottombar-h) + 16px)}
  .bottom-bar:not([hidden]){display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;height:var(--bottombar-h);background:var(--paper);border-top:1px solid var(--line);z-index:70;padding-bottom:env(safe-area-inset-bottom)}
  .bottom-bar a,.bottom-bar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;border-radius:0;background:transparent;color:var(--muted);font:600 11px/1.2 var(--sans);text-decoration:none;min-height:0;padding:4px 2px}
  .bottom-bar svg{width:22px;height:22px}
  .bottom-bar [aria-current]{color:var(--accent);box-shadow:inset 0 3px 0 var(--accent)}
  .today-grid{grid-template-columns:minmax(0,1fr)}
  .today-list li{grid-template-columns:64px minmax(0,1fr)}
  #conversation-list{height:300px}
  .today-list .t-actions{grid-column:2;justify-content:flex-start}
  .inbox-filters{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}
  .inbox-filters button{flex:none}
}
@media(prefers-reduced-motion:reduce){.sidebar{transition:none}}
/* UX polish (2026-10-08, annie/docs/ux-audit-2026-10-08.md): finger-sized targets and phone fit, shared by every screen. */
/* Today's "Needs attention" boxes: the whole box opens its screen, not only the small link inside it. */
.alert{position:relative}
.alert a::after{content:'';position:absolute;inset:0}
.alert:has(a):hover{background:var(--hover)}
.alert:has(a:focus-visible){outline:3px solid var(--focus);outline-offset:2px}
.alert a:focus-visible{outline:none}
/* A card's heading link (Full schedule, All tasks, Edit links) and the footer links: a taller tap area, same look. */
.card-head a{display:inline-flex;align-items:center;min-height:32px}
footer.app-footer a{display:inline-block;padding:6px 0}
/* Labelled checkboxes (label.checkbox: Settings, Campaigns, Pricing options, the portal forms): 18 px with the brand colour, not the
   browser's 13 px default. Screens that size their own (studio check-in 24 px, supplies, the desk team table) keep theirs. */
.checkbox input[type=checkbox]{width:18px;height:18px;flex:none;accent-color:var(--accent)}
/* The conversation opened from the list scrolls clear of the sticky top bar (review/inbox.js scrolls it into view on a phone). */
#conversation,#web-detail,#safety-detail{scroll-margin-top:calc(var(--topbar-h) + 8px)}
/* Settings: General and Connections and drafting are one panel showing different cards (review/pricing.js selectSection). */
#setup-general[data-part="general"]>.setup-conn,#setup-general[data-part="connections"]>.settings-card:not(.setup-conn){display:none}
@media(max-width:860px){
  /* Search results stay inside the phone drawer instead of running off its edge. */
  .search-results{width:auto;right:14px}
  /* Today's "Needs attention" boxes two to a row (they took most of the first screen one per row). The whole box is the link, so its
     small link line is kept for screen readers but not drawn; the label may take two lines. */
  .alert-list{grid-template-columns:repeat(2,minmax(0,1fr))}
  .alert{gap:8px;padding:8px 10px}
  .alert strong{font-size:20px}
  .alert strong.alert-word{font-size:13px}
  .alert-off{padding-top:6px;padding-bottom:6px}
  .alert span b{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}
  .alert a{font-size:0;line-height:0}
  .alert:has(a){padding-right:24px}
  .alert:has(a)::before{content:'';position:absolute;right:11px;top:50%;width:7px;height:7px;border-top:2px solid var(--muted);border-right:2px solid var(--muted);transform:translateY(-50%) rotate(45deg)}
  /* Roster and Check in on Today: finger-sized. */
  .today-list .t-actions a{min-height:40px;padding:6px 12px}
  /* Messages: no "Select a conversation" box under the list on a phone; the conversation appears there when one is chosen. */
  #empty{display:none}
}
/* One shared "could not load" block (review/portal-ui.js problem(), UX audit #7): plain words, who to ask, Try again. Words carry the
   meaning; the colour only frames it. */
.pf-problem{border:1px solid var(--line);border-left:3px solid var(--warn-line, var(--accent));background:var(--paper);border-radius:var(--radius-card);padding:10px 14px;margin:8px 0 12px;max-width:680px}
.pf-problem p{margin:0 0 4px;font-size:14px;line-height:1.45;color:var(--ink)}
.pf-problem .pf-problem-ask{color:var(--muted);font-size:13px}
.pf-problem-retry{margin-top:6px;min-height:40px}
/* Messages (UX audit #14): one row of chips, "Needs attention" first, then the sources; on a phone the list flows with the page and an
   opened conversation takes the screen with "Back to the list" (review/inbox.js). */
.inbox-sep{flex:none;width:1px;align-self:stretch;margin:4px 2px;background:var(--line)}
.inbox-back{display:none}
@media(max-width:860px){
  #conversation-list{height:auto;overflow:visible}
  #messages-panel .desk{min-height:0}
  #messages-panel.inbox-open .desk>aside{display:none}
  #messages-panel:not(.inbox-open) .desk>.conversation-panel{display:none}
  #messages-panel.inbox-open .inbox-back{display:inline-flex;align-items:center;min-height:40px;margin:10px 14px 0}
}
/* Today's sales card (owners, review/today.js, UX audit #3): phone first, one fixed height so nothing below it moves while it loads. */
.today-sales-card{margin:0 0 14px;height:178px;overflow:hidden;display:flex;flex-direction:column}
.today-sales-card .card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.today-sales-card h2{margin:0}
.tsc-total{margin:4px 0 0;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px}
.tsc-amount{font:500 32px/1.15 var(--serif);color:var(--ink);font-variant-numeric:tabular-nums}
.tsc-flag{font:700 11px/1.4 var(--sans);letter-spacing:.04em;color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:999px;padding:2px 8px}
.tsc-words{margin:6px 0 2px;color:var(--ink);font-size:15px;line-height:1.35}
.tsc-sub{margin:2px 0 6px;color:var(--muted);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tsc-tenders{list-style:none;margin:0;padding:0;display:flex;gap:6px 16px;font-size:13px;white-space:nowrap;overflow-x:auto;scrollbar-width:none}
.tsc-tenders li span{color:var(--muted)}
@media(max-width:860px){.today-sales-card{height:156px}.tsc-amount{font-size:30px}}
/* Today's classes while the first answer is on its way: room for about two classes (review/today.js), so nothing under it jumps. */
#today-classes.t-loading{min-height:110px}
@media(max-width:860px){#today-classes.t-loading{min-height:210px}}
#pr-dates:empty{display:none}
/* The phone drawer's sections with pages (nav.js syncToggles, 2026-10-14): a button that unfolds its list in place, with a chevron that turns
   over when open. Only the sections the person unfolded show their pages; the one you are in starts unfolded. */
.nav-link[role="button"]{cursor:pointer}
.nav-link[role="button"]>[data-section-label]{flex:1}
.nav-link[role="button"]::after{content:'';flex:none;width:8px;height:8px;margin:0 4px 3px 6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .15s ease}
.nav-link[role="button"][aria-expanded="true"]::after{transform:rotate(-135deg);margin-bottom:-3px}
@media(max-width:860px){
  .nav-section[data-collapsible]>.nav-sub{display:none}
  .nav-section[data-collapsible].expanded>.nav-sub{display:block}
  .nav-section[data-collapsible]>.nav-sub a{min-height:40px}
}
@media(prefers-reduced-motion:reduce){.nav-link[role="button"]::after{transition:none}}

/* Messages > Team: the team chat. Values from tokens.css; the layout follows Messages > Customers (a list beside a conversation)
   and becomes one column on a phone (the list, or the open conversation with a way back). */
.chat-heading{margin-bottom:10px}
.chat-icon{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.chat-status:empty{display:none}
.chat-status{margin:0 0 10px;padding:8px 12px;background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-line);border-radius:var(--radius);font-size:13px}
.chat-desk{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);display:grid;grid-template-columns:300px minmax(0,1fr);overflow:hidden;height:calc(100vh - var(--topbar-h) - 170px);min-height:460px}
.chat-list-pane{padding:12px 0 12px;border-right:1px solid var(--line);overflow-y:auto;display:flex;flex-direction:column}
.chat-search{padding:0 12px}
.chat-search input{font-size:13px;margin-bottom:6px}
.chat-group-title{margin:12px 14px 4px;font:700 var(--text-xs)/1.4 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.chat-convs,.chat-results,.chat-people,.chat-devices,.chat-audit{list-style:none;margin:0;padding:0}
.chat-convs button{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:0;border-radius:0;background:transparent;padding:7px 14px;min-height:40px;font:400 14px/1.3 var(--sans);color:var(--ink)}
.chat-convs button:hover{background:var(--hover)}
.chat-convs button[aria-current="true"]{background:var(--selected);box-shadow:inset 3px 0 0 var(--accent)}
.chat-convs .c-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-convs .c-unread .c-name{font-weight:700}
.chat-convs .c-sym{width:16px;flex:none;text-align:center;color:var(--muted);font-weight:700}
.chat-count{min-width:22px;padding:0 7px;border-radius:999px;background:var(--accent);color:var(--on-accent);font:700 11px/20px var(--sans);text-align:center;font-variant-numeric:tabular-nums}
.chat-count.c-mention{background:var(--ink)}
.chat-empty-note{padding:0 14px}
.chat-list-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 14px 6px}
.chat-list-head h3{font-size:13px}
.chat-results li button{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding:8px 14px;font:400 13px/1.45 var(--sans);color:var(--ink)}
.chat-results li button:hover{background:var(--hover)}
.chat-results strong{display:block;font-size:var(--text-sm)}
.chat-results span{display:block;color:var(--muted);font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.chat-conv-pane{min-width:0;display:flex;flex-direction:column;min-height:0}
.chat-conv{display:flex;flex-direction:column;min-height:0;flex:1}
.chat-conv-head{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line)}
.chat-conv-titles{flex:1;min-width:0}
.chat-conv-titles h2{font:500 20px/1.25 var(--serif);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-conv-titles h2:focus{outline:none}
.chat-conv-titles h2:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.chat-conv-sub{margin:2px 0 0;font-size:var(--text-sm);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-conv-actions{display:flex;gap:2px;flex-wrap:wrap;justify-content:flex-end}
.chat-back{display:none}
.chat-log{flex:1;min-height:0;overflow-y:auto;padding:8px 16px 4px;overscroll-behavior:contain}
.chat-log:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
.chat-more{text-align:center;min-height:8px}
.chat-messages{list-style:none;margin:0;padding:0}
.chat-day{display:flex;align-items:center;gap:10px;margin:14px 0 6px;font:700 var(--text-xs)/1.4 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.chat-day::before,.chat-day::after{content:"";flex:1;border-top:1px solid var(--line)}
.chat-new-line{display:flex;align-items:center;gap:10px;margin:8px 0;font:700 var(--text-xs)/1.4 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.chat-new-line::after{content:"";flex:1;border-top:1px solid var(--accent)}
.chat-msg{position:relative;padding:4px 8px;margin:0 -8px;border-radius:var(--radius)}
.chat-msg:hover,.chat-msg:focus-within{background:var(--soft)}
.chat-msg.c-first{margin-top:8px}
.chat-msg.c-flash{background:var(--selected)}
.chat-msg-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.chat-msg-head strong{font-size:14px}
.chat-msg-head time,.chat-edited{font-size:var(--text-xs);color:var(--muted)}
.chat-body{margin:1px 0 0;font-size:14px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
.chat-deleted{font-style:italic;color:var(--muted)}
.chat-mention{background:var(--accent-soft);color:var(--accent);font-weight:600;border-radius:3px;padding:0 2px}
.chat-mention.c-me{background:var(--warn-bg);color:var(--warn)}
.chat-tag{font:700 10px/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;border-radius:999px;padding:0 6px;border:1px solid var(--line);color:var(--muted)}
.chat-tag.c-urgent{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-line)}
.chat-system{border-left:3px solid var(--gold);padding-left:10px}
.chat-file{display:inline-flex;align-items:center;gap:8px;margin:6px 0 2px;padding:7px 10px;border:1px solid var(--field-line);border-radius:var(--radius);font-size:13px;font-weight:600;text-decoration:none;max-width:100%}
.chat-file span{color:var(--muted);font-weight:400}
.chat-photo{display:block;margin:6px 0 2px;max-width:min(360px,100%)}
.chat-photo img{display:block;max-width:100%;max-height:320px;border-radius:var(--radius-card);border:1px solid var(--line);background:var(--soft)}
.chat-msg-actions{display:flex;gap:2px;margin-top:2px}
.chat-msg-actions button{min-height:28px;padding:2px 8px;font-size:var(--text-xs)}
@media(hover:hover){.chat-msg-actions{position:absolute;right:6px;top:2px;margin:0;opacity:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius)}.chat-msg:hover .chat-msg-actions,.chat-msg:focus-within .chat-msg-actions{opacity:1}}
.chat-composer{border-top:1px solid var(--line);padding:10px 16px 8px}
.chat-compose-row{display:flex;gap:8px;align-items:flex-end}
.chat-input-wrap{flex:1;min-width:0;position:relative}
.chat-input-wrap textarea{min-height:40px;max-height:180px;resize:none;line-height:1.45}
.chat-compose-help{margin:4px 0 0;font-size:var(--text-xs)}
.chat-readonly{margin:0 0 6px}
.chat-editing,.chat-attachment{display:flex;align-items:center;gap:8px;margin:0 0 6px;padding:4px 10px;background:var(--soft);border-radius:var(--radius);font-size:13px}
.chat-attachment span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-urgent{margin:8px 0 0;font-weight:600}
.chat-mentions{position:absolute;left:0;bottom:calc(100% + 4px);width:min(320px,100%);max-height:220px;overflow:auto;background:var(--paper);border:1px solid var(--field-line);border-radius:var(--radius-card);box-shadow:var(--shadow);margin:0;padding:4px 0;list-style:none;z-index:30}
.chat-mentions li{padding:7px 12px;cursor:pointer;font-size:13px}
.chat-mentions li[aria-selected="true"],.chat-mentions li:hover{background:var(--selected);box-shadow:inset 3px 0 0 var(--accent)}
.chat-mentions li span{color:var(--muted);margin-left:6px}
.chat-paused{display:inline-flex;align-items:center;gap:3px;font:600 var(--text-xs)/1.4 var(--sans);color:var(--muted);white-space:nowrap}
.chat-paused svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.8}
.chat-dialog{width:min(560px,calc(100vw - 24px));max-height:calc(100vh - 40px);border:1px solid var(--line);border-radius:var(--radius-card);padding:20px 22px;background:var(--paper);color:var(--ink);box-shadow:var(--shadow)}
.chat-dialog::backdrop{background:var(--backdrop)}
.chat-dialog h2{font:500 22px/1.25 var(--serif);margin-bottom:8px}
.chat-dialog h3{margin:18px 0 6px;font-size:15px}
.chat-dialog section:first-of-type h3{margin-top:6px}
.chat-dialog fieldset{border:0;margin:0;padding:0}
.chat-dialog legend{font-size:13px;font-weight:600;margin:12px 0 5px;padding:0}
.chat-dialog .checkbox{display:flex;gap:8px;align-items:flex-start;font-weight:400;margin:6px 0}
.chat-dialog .checkbox input{width:auto;min-height:0;margin-top:3px}
.chat-people li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line);font-size:14px}
.chat-people li label{display:flex;gap:8px;align-items:center;margin:0;font-weight:400;flex:1;cursor:pointer}
.chat-people li input{width:auto;min-height:0}
.chat-people .p-role{color:var(--muted);font-size:var(--text-sm)}
.chat-pick .chat-people{max-height:260px;overflow:auto}
.chat-pause-state{margin:0 0 8px;font-size:13px}
.chat-pause-state.c-on{padding:8px 10px;background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-line);border-radius:var(--radius);font-weight:600}
.chat-custom-pause{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin-top:8px}
.chat-custom-pause label{margin:0;align-self:center}
.chat-custom-pause input{width:auto;flex:1;min-width:180px}
#chat-resume{margin-top:10px}
.chat-quiet-times{display:flex;gap:12px}
.chat-quiet-times>div{flex:1}
.chat-day-list{display:flex;flex-wrap:wrap;gap:4px 14px}
.chat-day-list label{display:flex;gap:6px;align-items:center;margin:4px 0;font-weight:400}
.chat-day-list input{width:auto;min-height:0}
.chat-devices li,.chat-audit li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}
.chat-audit li{display:block;color:var(--ink)}
.chat-audit li span{display:block;color:var(--muted);font-size:var(--text-sm)}
.chat-audit-title{margin:14px 0 4px;font-size:13px}
.chat-install{padding:8px 10px;background:var(--soft);border-radius:var(--radius)}
.nav-sub .nav-badge{margin-left:auto}
/* Scott's four Slack features (2026-09-28): mute, threads, reactions, typing. */
.chat-convs .c-muted .c-name{color:var(--muted)}
.chat-convs .c-muted-icon{width:14px;height:14px;color:var(--muted)}
.chat-count.c-dim{background:var(--soft);color:var(--muted);box-shadow:inset 0 0 0 1px var(--line)}
.chat-muted-note{display:inline-flex;align-items:center;gap:3px;font-weight:600}
.chat-muted-note svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.8}
#chat-mute .chat-icon{width:16px;height:16px;margin-right:4px;vertical-align:-3px}
.chat-small-dialog{width:min(440px,calc(100vw - 24px))}
.chat-choice-list{display:grid;gap:6px;margin:10px 0}
.chat-choice-list button{text-align:left}
.chat-typing{margin:0 0 4px;min-height:1.4em;font-size:var(--text-xs);color:var(--muted);font-style:italic}
.chat-msg-actions button{display:inline-flex;align-items:center;gap:4px}
.chat-msg-actions .chat-icon{width:14px;height:14px}
.chat-reactions{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 2px}
.chat-reaction{display:inline-flex;align-items:center;gap:4px;min-height:28px;padding:1px 8px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--ink);font:600 12px/1.4 var(--sans);cursor:pointer}
.chat-reaction .c-emoji{font-size:15px;line-height:1}
.chat-reaction:hover{background:var(--hover)}
.chat-reaction.c-mine{background:var(--accent-soft);border-color:var(--accent);color:var(--ink)}
.chat-reaction.c-add{color:var(--muted);padding:1px 6px}
.chat-reaction.c-add .chat-icon{width:16px;height:16px}
@media(hover:hover){.chat-reaction.c-add{opacity:0}.chat-msg:hover .chat-reaction.c-add,.chat-msg:focus-within .chat-reaction.c-add{opacity:1}}
.chat-thread-link{display:inline-flex;align-items:center;gap:8px;margin:4px 0 2px;padding:3px 8px;min-height:30px;border:1px solid transparent;border-radius:var(--radius);background:transparent;color:var(--accent);font:400 13px/1.4 var(--sans);cursor:pointer}
.chat-thread-link:hover{border-color:var(--line);background:var(--paper)}
.chat-thread-link .chat-icon{width:15px;height:15px}
.chat-thread-link .c-last{color:var(--muted);font-size:var(--text-xs)}
.chat-tag.c-new{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.chat-from-thread{display:block;min-height:0;padding:0;margin:1px 0;font-size:var(--text-xs);color:var(--muted);text-decoration:underline}
.chat-desk.c-thread{grid-template-columns:260px minmax(0,1fr) minmax(300px,360px)}
.chat-thread-pane{display:flex;flex-direction:column;min-width:0;min-height:0;border-left:1px solid var(--line);background:var(--paper)}
.chat-thread-head{padding:10px 14px}
.chat-thread-head h2{font-size:18px}
.chat-thread-root .chat-msg{margin:0 -8px}
.chat-thread-count{display:flex;align-items:center;gap:10px;margin:8px 0 2px;font:700 var(--text-xs)/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.chat-thread-count::after{content:"";flex:1;border-top:1px solid var(--line)}
.chat-also{margin:6px 0 0;font-size:13px;font-weight:400}
.chat-emoji-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:4px;margin:6px 0 10px}
.chat-emoji-grid.c-quick{grid-template-columns:repeat(8,minmax(40px,1fr))}
.chat-emoji{min-height:40px;padding:0;font-size:22px;line-height:1;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper)}
.chat-emoji:hover{background:var(--hover)}
#chat-emoji-more{max-height:180px;overflow:auto}
.chat-emoji-sub{margin:4px 0;font-size:13px}
.chat-emoji-other{display:flex;gap:8px}
.chat-emoji-other input{flex:1}
.chat-reactors li{gap:12px}
.chat-reactors .c-emoji{font-size:20px}
@media(max-width:1180px) and (min-width:861px){.chat-desk.c-thread{grid-template-columns:220px minmax(0,1fr) 320px}}
@media(hover:none){.chat-msg-actions{display:none}.chat-msg.c-show .chat-msg-actions{display:flex;flex-wrap:wrap}}
@media(max-width:860px){
  .chat-desk.c-thread{grid-template-columns:minmax(0,1fr)}
  .chat-thread-pane{position:fixed;inset:0;z-index:90;border-left:0;padding-bottom:env(safe-area-inset-bottom)}
  .chat-thread-head{padding:10px 12px;border-bottom:1px solid var(--line)}
  .chat-emoji-grid.c-quick{grid-template-columns:repeat(4,minmax(40px,1fr))}
  .chat-heading .actions{width:100%}
  .chat-heading .actions button{flex:1}
  .chat-desk{grid-template-columns:minmax(0,1fr);height:calc(100dvh - var(--topbar-h) - var(--bottombar-h) - 150px);min-height:380px;margin:0 -14px;border-left:0;border-right:0;border-radius:0}
  .chat-desk.c-open .chat-list-pane{display:none}
  .chat-desk:not(.c-open) .chat-conv-pane{display:none}
  .chat-list-pane{border-right:0}
  .chat-back{display:inline-flex}
  .chat-conv-head{padding:8px 10px;flex-wrap:wrap}
  .chat-conv-titles h2{font-size:18px}
  .chat-log{padding:8px 12px 4px}
  .chat-composer{padding:8px 10px 6px}
  .chat-attach-text{display:none}
  .chat-compose-help{display:none}
  .chat-quiet-times{flex-direction:column;gap:0}
}
.bottom-bar a{position:relative}
.bb-badge{position:absolute;top:5px;left:calc(50% + 6px);margin:0;min-width:18px;padding:0 5px;font-size:10px;line-height:17px}
.chat-recovery{grid-column:1/-1;border:1px solid var(--line,#d7dbe2);border-radius:8px;padding:10px;background:var(--surface,#fff);overflow-wrap:anywhere}
.chat-recovery p{margin:0 0 8px}
.chat-recovery button{min-height:44px;max-width:100%;white-space:normal}

/* Marketing > Event listings (Draft): review/event-listings.js. Colours and type from tokens.css; the tab bar is .subnav (tokens.css). */
.el-draft-tag{display:inline-block;vertical-align:middle;margin-left:8px;font:700 11px/1.5 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:999px;padding:1px 9px}
.el-notice{margin-bottom:12px}
.el-setup,.el-source-details,.el-matrix,.el-standing-list,.el-event-tools,.el-instructions{margin:10px 0}
.el-setup nav{display:flex;gap:8px 20px;flex-wrap:wrap;padding:10px 0}
.el-setup a,.el-back{display:inline-flex;align-items:center;min-height:44px}
.el-site-choice{max-width:760px;margin:12px 0}
.el-site-choice label{margin:0 0 4px}
.el-site-choice select{width:100%;min-height:44px}
#el-screen-event>.el-site-card{max-width:980px;margin:12px 0}
#el-screen-event .el-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
#el-screen-event .el-field-long{grid-column:1/-1}
.el-event-tools button{margin-top:10px}
#el-heading{flex-direction:row;align-items:center;gap:8px;margin-bottom:8px}
#el-heading h1{margin-bottom:0}
#el-subnav{margin-bottom:8px}
#el-screen-event>.el-back{margin-bottom:2px}
#el-status:empty{display:none}
.el-screen>.intro{margin:0 0 14px;max-width:760px}
.el-section{font:500 20px/1.25 var(--serif);margin:22px 0 10px}
.el-card-title{font:500 19px/1.25 var(--serif);margin:0 0 8px}
.el-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;align-items:start}
.el-cards>.settings-card{margin:0;min-width:0;scroll-margin-top:calc(var(--topbar-h) + 12px)}
.el-cards-wide{grid-template-columns:repeat(auto-fill,minmax(420px,1fr))}
.el-chip{display:inline-block;font:600 var(--text-sm)/1.4 var(--sans);padding:1px 8px;border-radius:999px;border:1px solid var(--line);background:var(--soft);color:var(--ink);white-space:nowrap}
.el-chip-posted{background:var(--ok-bg);color:var(--ok);border-color:#b7d3bd}
.el-chip-partial,.el-chip-expiring,.el-chip-due{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-line)}
.el-chip-lapsed{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-line)}
.el-chip-todo{background:var(--paper);color:var(--ink);border-color:var(--field-line)}
.el-chip-skip,.el-chip-coming{background:var(--soft);color:var(--muted)}
.el-tag{display:inline-block;font:700 10px/1.5 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:0 7px;margin-right:6px;white-space:nowrap}
.el-verified{color:var(--ok);border-color:#b7d3bd}
.el-unverified{color:var(--warn);border-color:var(--warn-line)}
.el-alert{background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-line);border-radius:var(--radius);padding:8px 10px;font-size:13px;margin:8px 0}
.el-needs{font-size:13px}
.el-facts{margin:8px 0 0;padding-left:18px;font-size:13px;line-height:1.6}
/* Overview */
.el-reminder-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.el-reminder{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:13px;padding:8px 10px;background:var(--soft);border-radius:var(--radius)}
.el-reminder-text{flex:1 1 260px;min-width:0}
.el-reminder a{font-weight:600;white-space:nowrap}
.el-grid-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--radius);margin-top:10px}
.el-grid{border-collapse:collapse;min-width:100%;font-size:var(--text-sm)}
.el-grid th,.el-grid td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.el-grid thead th{position:sticky;top:0;background:var(--paper);font-weight:700;white-space:nowrap;color:var(--ink)}
.el-grid thead th.el-auto{color:var(--muted)}
.el-grid tbody th{min-width:200px;max-width:260px;font-weight:600;background:var(--paper)}
.el-grid tbody th a{display:block;line-height:1.35}
.el-grid-date{display:block;font-weight:400;color:var(--muted);margin-top:2px}
.el-grid tbody tr:hover td,.el-grid tbody tr:hover th{background:var(--hover)}
.el-legend{margin-top:10px}
/* Staff posting */
.el-standing{max-width:980px}
.el-event-list{list-style:none;margin:0;padding:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);max-width:980px}
.el-event-list li+li{border-top:1px solid var(--line)}
.el-event-link{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 16px;padding:12px 14px;text-decoration:none;color:var(--ink)}
.el-event-link:hover{background:var(--hover);color:var(--ink)}
.el-event-link strong{color:var(--accent);font-size:var(--text-md)}
.el-event-when{grid-column:1;color:var(--muted);font-size:var(--text-sm)}
.el-event-chips{grid-column:2;grid-row:1/3;display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
/* One event */
.el-back{display:inline-block;font-weight:600;font-size:13px;margin-bottom:10px}
.el-event-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px 20px;flex-wrap:wrap;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:16px 18px}
.el-event-title{font:500 24px/1.2 var(--serif);margin:0 0 4px}
.el-event-title:focus{outline:none}
.el-event-head p{margin:4px 0 0;font-size:13px}
.el-jump{display:flex;flex-wrap:wrap;gap:2px 4px;margin:10px 0 0}
.el-card-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.el-meta{margin:0 0 6px}
.el-how{font-size:13px;line-height:1.55;margin:6px 0}
.el-warnings{margin:6px 0;padding-left:18px;font-size:13px;color:var(--warn)}
.el-submit{font-size:13px;margin:8px 0;overflow-wrap:anywhere}
.el-submit a{font-weight:600}
.el-fields{display:grid;gap:10px;margin:12px 0 4px}
.el-field{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper)}
.el-field-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 8px 6px 10px;border-bottom:1px solid var(--line);background:var(--soft)}
.el-field-name{font-weight:700;font-size:var(--text-sm)}
.el-count{font-size:var(--text-sm);color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto}
.el-count .el-tag{margin:0 0 0 4px}
.el-over{color:var(--danger);font-weight:700}
.el-copy{min-height:44px;padding:4px 12px}
.el-field-head .el-field-name+.el-copy{margin-left:auto}
.el-value{margin:0;padding:8px 10px;font:var(--text-md)/1.55 var(--sans);white-space:pre-wrap;overflow-wrap:anywhere;max-height:320px;overflow:auto}
.el-empty{color:var(--muted);font-style:italic}
.el-note{margin:6px 0 0}
.el-refresh{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin:10px 0 0}
.el-track,.el-groups{border:1px solid var(--line);border-radius:var(--radius);margin:12px 0 0;padding:8px 12px 12px;min-width:0}
.el-track legend,.el-groups legend{font-weight:700;font-size:var(--text-sm);padding:0 4px}
.el-track-line{font-size:13px;margin:4px 0}
.el-posted{margin:8px 0}
.el-track-fields{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:0 12px}
.el-track-fields label{margin-top:8px}
.el-track>button{margin-top:10px;margin-right:6px}
.el-track .hint{overflow-wrap:anywhere}
.el-group-list{list-style:none;margin:4px 0 0;padding:0}
.el-group-list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 10px;padding:6px 0;border-bottom:1px solid var(--line)}
.el-group-list .checkbox{margin:0;font-size:13px}
.el-group-extra{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:var(--text-sm)}
.el-group-extra a{font-weight:600}
.el-add-group{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:0 10px;align-items:end;margin-top:8px}
.el-history{max-width:980px}
.el-audit{margin:0;padding-left:18px;font-size:13px;line-height:1.6;overflow-wrap:anywhere}
/* Sites */
.el-meta-line{font-size:var(--text-sm);color:var(--muted);margin:0 0 6px;font-weight:600}
.el-limits{border-collapse:collapse;width:100%;margin:12px 0 6px;font-size:var(--text-sm)}
.el-limits caption{text-align:left;font-weight:700;margin-bottom:4px}
.el-limits th,.el-limits td{text-align:left;padding:4px 6px;border-bottom:1px solid var(--line)}
.el-limits td:nth-child(2){font-variant-numeric:tabular-nums}
.el-activity{font-size:13px;margin:8px 0 0}
.el-offscreen{position:fixed;left:-9999px;top:0}
@media(max-width:860px){
  #el-screen-event .el-fields{grid-template-columns:minmax(0,1fr)}
  .el-event-title{font-size:21px}
  .el-event-head{padding:12px}
  #el-heading h1{font-size:25px}
  .el-cards,.el-cards-wide{grid-template-columns:minmax(0,1fr)}
  .el-event-link{grid-template-columns:minmax(0,1fr)}
  .el-event-chips{grid-column:1;grid-row:auto;justify-content:flex-start;margin-top:4px}
  .el-track-fields,.el-add-group{grid-template-columns:minmax(0,1fr)}
  .el-add-group button{margin-top:10px;justify-self:start}
  .el-grid tbody th{min-width:150px}
  .el-event-head .primary{width:100%}
  .el-draft-tag{margin-left:4px}
}

/* Marketing > Experiments: review/experiments.js. Colours and type from tokens.css; the tab bar is .subnav (tokens.css). */
.ex-notice{margin-bottom:12px}
#ex-status:empty,#ex-asof:empty{display:none}
.ex-screen{display:grid;gap:14px;max-width:1080px}
.ex-screen[hidden]{display:none}
.ex-card{margin:0;min-width:0}
.ex-card-title{font:500 19px/1.25 var(--serif);margin:0 0 8px}
.ex-lead{font-size:var(--text-lg);font-weight:600;margin:0 0 8px;color:var(--ink)}
.ex-card .hint{margin:4px 0}
.ex-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line);border-radius:var(--radius);padding:10px 12px;margin:0;font-weight:600}
.ex-off p{margin:0}
.ex-progress{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}
.ex-progress li{display:grid;grid-template-columns:minmax(150px,220px) minmax(80px,1fr) auto;gap:4px 12px;align-items:center;font-size:13px}
.ex-progress meter{width:100%;height:10px}
.ex-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--radius);margin-top:10px}
.ex-table{border-collapse:collapse;min-width:100%;font-size:13px}
.ex-table caption{text-align:left;font-weight:700;font-size:var(--text-sm);padding:8px 10px 4px;color:var(--ink)}
.ex-table th,.ex-table td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.ex-table thead th{background:var(--soft);font-weight:700;color:var(--ink);white-space:nowrap}
.ex-table tbody th{font-weight:600;min-width:200px;max-width:280px}
.ex-num{font-variant-numeric:tabular-nums}
.ex-main{display:block;font-weight:600}
.ex-sub{display:block;color:var(--muted);font-size:var(--text-sm);margin-top:2px}
.ex-progress .ex-sub{margin:0}
.ex-none .ex-main{font-weight:400;color:var(--muted)}
.ex-good .ex-main{color:var(--ok)}
.ex-bad .ex-main{color:var(--danger)}
.ex-wait .ex-main{color:var(--warn)}
.ex-rule{margin-top:10px}
.ex-details{margin-top:12px}
.ex-details summary{cursor:pointer;font-weight:600;font-size:13px}
.ex-notes,.ex-explain{margin:0;padding-left:18px;font-size:13px;line-height:1.6}
.ex-explain li+li{margin-top:6px}
@media(max-width:860px){
  .ex-progress li{grid-template-columns:minmax(0,1fr) auto}
  .ex-progress meter{grid-column:1/3;grid-row:2}
  .ex-table tbody th{min-width:150px}
}

/* The staff-portal screens (2026-09-29): Teaching > Syllabus, Library, Quick links, Schedule > Studio calendar, Events.
   Colours and type from tokens.css; the tab bar is .subnav (tokens.css). */
.pf-status:empty{display:none}
.pf-screen{min-width:0}
.pf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0 16px}
.pf-field{min-width:0}
.pf-field.checkbox{margin:12px 0 4px}
.pf-field.checkbox label{margin:0}
.pf-hint{margin:4px 0 0}
.pf-tag{display:inline-block;font:700 10px/1.5 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:0 7px;white-space:nowrap;vertical-align:middle}
.pf-tag-draft,.pf-tag-pending{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-line)}
.pf-tag-ok{color:var(--ok);background:var(--ok-bg);border-color:#b7d3bd}
.pf-problems{background:var(--danger-bg);border:1px solid var(--danger-line);color:var(--danger);border-radius:var(--radius);padding:8px 12px;margin:0 0 12px;font-size:13px}
.pf-problems p{margin:0 0 4px;font-weight:700}
.pf-problems ul{margin:0;padding-left:18px}

/* ---- Teaching > Syllabus ---- */
.sy-back,.lib-back,.cal-back,.ev-back{display:inline-block;font-weight:600;font-size:13px;margin-bottom:10px}
.sy-empty,.lib-empty{margin:4px 0}
.sy-dance-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.sy-dance-card{display:grid;gap:4px;padding:14px 16px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);color:var(--ink);text-decoration:none;height:100%}
.sy-dance-card:hover{background:var(--hover);color:var(--ink)}
.sy-dance-name{font:500 19px/1.25 var(--serif);color:var(--accent)}
.sy-dance-card .pf-tag{justify-self:start}
.sy-dance-facts,.sy-dance-count{font-size:var(--text-sm);color:var(--muted)}
.sy-dance-head{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:14px 18px;margin-bottom:14px}
.sy-dance-title{font:500 24px/1.2 var(--serif);margin:0}
.sy-dance-title:focus,.lib-article-title:focus,.cal-event-title:focus,.ev-title:focus{outline:none}
.sy-facts{margin:6px 0 0;font-size:13px;color:var(--ink);font-weight:600}
.sy-h3{font:500 19px/1.25 var(--serif);margin:0 0 8px}
.sy-h4{font:700 var(--text-sm)/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:16px 0 6px}
.sy-para{margin:0 0 10px;line-height:1.6;white-space:pre-line;max-width:760px}
.sy-facts-list{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;margin:12px 0 0;font-size:13px}
.sy-facts-list dt{font-weight:700}
.sy-facts-list dd{margin:0}
.sy-level-top{display:flex;justify-content:space-between;align-items:center;gap:8px 16px;flex-wrap:wrap;margin-bottom:6px}
.sy-level-top .sy-h3{margin:0}
.sy-label{font-size:var(--text-sm);font-weight:700;margin:8px 0 4px}
.sy-level-video{margin-bottom:10px}
.sy-patterns{list-style:none;margin:8px 0 0;padding:0;border-top:1px solid var(--line)}
.sy-pattern{padding:10px 0;border-bottom:1px solid var(--line)}
.sy-pattern-name{display:flex;align-items:center;gap:10px;font-weight:600}
.sy-num{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;border-radius:999px;background:var(--soft);font:700 var(--text-sm)/1 var(--sans);color:var(--ink);font-variant-numeric:tabular-nums;flex-shrink:0}
.sy-starred .sy-num{background:var(--accent);color:var(--on-accent)}
.sy-star-wrap{display:inline-flex;align-items:center}
.sy-star{width:18px;height:18px;fill:var(--gold);stroke:#8a6414;stroke-width:1}
.sy-pattern-notes{margin:4px 0 0 36px;font-size:13px;line-height:1.55;white-space:pre-line;color:var(--ink)}
.sy-pattern .sy-video{margin:6px 0 0 36px}
.sy-legend{margin-top:8px}
.sy-play{gap:8px}
.sy-play::before{content:'';width:0;height:0;border-style:solid;border-width:6px 0 6px 10px;border-color:transparent transparent transparent currentColor}
.sy-play-source{font-weight:400;color:var(--muted);font-size:var(--text-sm)}
.sy-frame{display:block;width:100%;max-width:720px;aspect-ratio:16/9;border:1px solid var(--line);border-radius:var(--radius);background:#111;margin-bottom:6px}
.sy-edit-head{margin-bottom:10px}
.sy-edit-head .sy-unsaved{margin:4px 0 0;color:var(--warn);font-weight:600}
.sy-editor .settings-card{margin-bottom:14px}
.sy-levels-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.sy-levels-row p{margin:0;font-size:13px}
.sy-edit-patterns{list-style:none;margin:0 0 10px;padding:0}
.sy-edit-pattern{border:1px solid var(--line);border-radius:var(--radius);padding:8px 10px;margin-bottom:8px;background:var(--paper)}
.sy-edit-row{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap}
.sy-edit-row .sy-name-field{flex:1 1 220px}
.sy-edit-row .pf-field.checkbox{margin:0}
.sy-move{display:flex;gap:2px;margin-left:auto}
.sy-edit-fold{margin:6px 0 0 36px}
.sy-edit-fold>summary{cursor:pointer;font-size:var(--text-sm);font-weight:600;color:var(--accent);padding:2px 0}
.sy-edit-fold .sy-edit-more{margin-left:0}
.sy-edit-more{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 12px;margin-left:36px}
.sy-edit-more label{margin-top:8px;font-size:var(--text-sm)}
.sy-save{position:sticky;bottom:0;background:var(--page);padding:10px 0;margin:0;border-top:1px solid var(--line);z-index:2}
.sy-import .actions{margin-top:12px}
.sy-import-summary{font-weight:600;font-size:13px;margin:14px 0 8px}
.sy-table-wrap,.lib-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}
.sy-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}
.sy-table th,.sy-table td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)}
.sy-table th{background:var(--paper)}
/* Print one level: only the sheet. */
.sy-print-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:14px}
.sy-print-tools .hint{margin:0;flex-basis:100%}
.sy-print-sheet{background:#fff;border:1px solid var(--line);border-radius:var(--radius-card);padding:24px 28px;max-width:820px;color:#222}
.sy-print-brand{font-size:var(--text-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}
.sy-print-title{font:500 26px/1.2 var(--serif);margin:0 0 4px;color:#222}
.sy-print-list{margin:14px 0 0;padding-left:26px;line-height:1.5}
.sy-print-list li{padding:4px 0;border-bottom:1px solid #e5e2e2}
.sy-print-name{font-weight:600;display:block}
.sy-print-notes{display:block;font-size:13px;color:#333;white-space:pre-line}
.sy-print-key{font-size:var(--text-sm);margin:12px 0 0}
@media print{
  body.print-sheet-on{background:#fff}
  body.print-sheet-on .sidebar,body.print-sheet-on .topbar,body.print-sheet-on .bottom-bar,body.print-sheet-on .app-footer,body.print-sheet-on .sidebar-backdrop,
  body.print-sheet-on .page-heading,body.print-sheet-on .subnav,body.print-sheet-on form[role=search],body.print-sheet-on .no-print,body.print-sheet-on #message,body.print-sheet-on .skip-link,body.print-sheet-on .pf-status{display:none!important}
  body.print-sheet-on .shell,body.print-sheet-on .column,body.print-sheet-on main{display:block!important;margin:0!important;padding:0!important;max-width:none!important;width:auto!important}
  body.print-sheet-on .sy-print-sheet{border:0;padding:0;max-width:none}
  body.print-sheet-on .sy-print-list li{break-inside:avoid}
}

/* ---- Library ---- */
.lib-search{display:flex;gap:8px;max-width:560px;margin:0 0 14px}
.lib-search input{flex:1}
.lib-intro{margin:0 0 10px}
.lib-list{list-style:none;margin:0;padding:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);max-width:980px}
.lib-row{padding:12px 16px;display:grid;gap:4px}
.lib-row+.lib-row{border-top:1px solid var(--line)}
.lib-title{font-weight:600;font-size:15px}
.lib-tags{display:flex;gap:6px;flex-wrap:wrap}
.lib-excerpt{margin:0;font-size:13px;line-height:1.55}
.lib-meta{margin:0;font-size:var(--text-sm);color:var(--muted)}
.lib-h2{font:500 20px/1.25 var(--serif);margin:0 0 8px}
.lib-h3{font:500 18px/1.25 var(--serif);margin:0 0 6px}
.lib-article{max-width:860px}
.lib-article-title{font:500 26px/1.2 var(--serif);margin:0 0 4px}
.lib-notice{margin:12px 0}
.lib-body{margin-top:14px;line-height:1.65;font-size:15px;overflow-wrap:anywhere}
.lib-body .md-h{font-family:var(--serif);font-weight:500;margin:18px 0 6px;line-height:1.25}
.lib-body h3.md-h{font-size:22px}.lib-body h4.md-h{font-size:18px}.lib-body h5.md-h{font-size:16px}
.lib-body p{margin:0 0 10px}
.lib-body ul,.lib-body ol{margin:0 0 10px;padding-left:22px}
.lib-body blockquote{margin:0 0 10px;padding:6px 12px;border-left:3px solid var(--gold);background:var(--soft)}
.lib-body pre{background:var(--soft);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;overflow-x:auto;font-size:13px}
.lib-body code{font-family:ui-monospace,Consolas,monospace;font-size:.92em;background:var(--soft);padding:0 3px;border-radius:2px}
.lib-body pre code{background:none;padding:0}
.lib-body hr{border:0;border-top:1px solid var(--line);margin:14px 0}
.md-outside{text-decoration:underline dotted;text-underline-offset:3px}
.md-address{color:var(--muted);font-size:.92em;overflow-wrap:anywhere}
.lib-actions{margin-top:16px}
.lib-review,.lib-knowledge{max-width:860px}
.lib-archive{margin:4px 0 14px}
.lib-editor{max-width:860px}
.lib-text{font:14px/1.55 ui-monospace,Consolas,monospace}
.lib-help{margin:10px 0;font-size:13px}
.lib-help summary{cursor:pointer;font-weight:600;color:var(--accent)}
.lib-help ul{margin:6px 0 0;padding-left:18px;line-height:1.6}
.lib-preview{border:1px dashed var(--field-line);border-radius:var(--radius);padding:10px 14px;margin-top:12px}
.lib-preview-label{font:700 var(--text-xs)/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}
.lib-preview{line-height:1.6}

/* ---- Quick links (Today card and editor) ---- */
.ql-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px}
.ql-link{display:flex;align-items:center;gap:8px;min-height:40px;padding:6px 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);color:var(--ink);text-decoration:none;font-weight:600;font-size:13px}
.ql-link:hover{background:var(--hover);color:var(--ink)}
.ql-icon,.ql-out{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.ql-icon{color:var(--accent)}
.ql-out{width:14px;height:14px;margin-left:auto;color:var(--muted)}
.ql-label{min-width:0;overflow-wrap:anywhere}
#today-links-note{margin:8px 0 0}
.ql-h2{font:500 20px/1.25 var(--serif);margin:0 0 8px}
.ql-edit-list{list-style:none;margin:0;padding:0}
.ql-edit-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 12px;padding:8px 0;border-top:1px solid var(--line)}
.ql-edit-row:first-child{border-top:0}
.ql-edit-what{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0;flex:1 1 300px}
.ql-edit-url{font-size:var(--text-sm);color:var(--muted);overflow-wrap:anywhere;min-width:0}
.ql-edit-actions{display:flex;gap:2px;flex-wrap:wrap}
.ql-form{max-width:760px}
.ql-icons{border:1px solid var(--line);border-radius:var(--radius);margin:12px 0 0;padding:6px 10px 10px;display:flex;flex-wrap:wrap;gap:4px 8px}
.ql-icons legend{font-weight:600;font-size:13px;padding:0 4px}
.ql-icon-choice{display:inline-flex;align-items:center;gap:6px;margin:0;font-weight:400;font-size:13px;padding:6px 8px;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;min-height:36px}
.ql-icon-choice input{width:auto;min-height:0;margin:0}
.ql-icon-choice:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}

/* ---- Schedule > Studio calendar ---- */
.cal-type-ballroom-party{--cal:#7f1623;--cal-bg:#f6ecee}
.cal-type-deadline{--cal:#b45309;--cal-bg:#fff0d5}
.cal-type-midtown-stomp{--cal:#a00826;--cal-bg:#fbe9ec}
.cal-type-showcase{--cal:#6b3fa0;--cal-bg:#efe8f7}
.cal-type-closure{--cal:#4b4a4d;--cal-bg:#ebeaea}
.cal-type-workshop{--cal:#1d5c2e;--cal-bg:#e6f0e8}
.cal-type-rental{--cal:#1f5f8b;--cal-bg:#e5eff7}
.cal-type-other{--cal:#8a8586;--cal-bg:#f3f1f1}
.cal-month-nav{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin-bottom:12px}
.cal-month-title{font:500 22px/1.2 var(--serif);margin:0 8px;min-width:170px;text-align:center}
.cal-grid-wrap{overflow-x:auto}
.cal-grid{width:100%;border-collapse:collapse;table-layout:fixed;background:var(--paper);border:1px solid var(--line)}
.cal-grid th{font:700 var(--text-xs)/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:6px;border-bottom:1px solid var(--line);text-align:left}
.cal-day{vertical-align:top;height:108px;padding:4px 5px;border:1px solid var(--line)}
.cal-out{background:var(--page)}
.cal-out .cal-num{color:var(--muted)}
.cal-num{display:inline-block;font-weight:700;font-size:var(--text-sm);min-width:22px;height:22px;line-height:22px;text-align:center;border-radius:999px}
.cal-today .cal-num{background:var(--accent);color:var(--on-accent)}
.cal-day-events{list-style:none;margin:3px 0 0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:3px}
.cal-day-events li{min-width:0}
.cal-day{overflow:hidden}
.cal-chip{position:relative;display:block;font-size:var(--text-sm);line-height:1.3;padding:2px 5px;border-radius:2px;border-left:3px solid var(--cal);background:var(--cal-bg);color:var(--ink);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-chip:hover{color:var(--ink);text-decoration:underline}
.cal-chip-time{font-weight:700}
.cal-more{display:block;font-size:var(--text-xs);color:var(--muted);margin-top:2px}
.cal-agenda{display:none;list-style:none;margin:0;padding:0}
.cal-agenda-day{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:8px 12px;margin-bottom:8px}
.cal-agenda-day.cal-today{border-color:var(--accent)}
.cal-agenda-date{font:700 13px/1.4 var(--sans);margin:0 0 6px}
.cal-agenda .cal-chip{white-space:normal;padding:5px 8px}
.cal-empty{margin:10px 0 0}
.cal-legend{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 14px;font-size:var(--text-sm)}
.cal-legend-item{display:inline-flex;align-items:center;gap:6px}
.cal-swatch{display:inline-block;width:12px;height:12px;border-radius:2px;background:var(--cal-bg);border:3px solid var(--cal);border-width:0 0 0 4px;flex-shrink:0}
.cal-list-month{font:500 19px/1.25 var(--serif);margin:18px 0 8px}
.cal-list-month:first-of-type{margin-top:0}
.cal-list{list-style:none;margin:0;padding:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);max-width:980px}
.cal-list-row{display:flex;align-items:flex-start;gap:12px;padding:10px 14px}
.cal-list-row+.cal-list-row{border-top:1px solid var(--line)}
.cal-list-row .cal-swatch{margin-top:4px;height:16px}
.cal-list-what{display:grid;gap:2px;flex:1;min-width:0}
.cal-list-title{font-weight:600}
.cal-list-when{font-size:13px}
.cal-list-notes{font-size:var(--text-sm);color:var(--muted)}
.cal-event{max-width:760px}
.cal-tag{background:var(--cal-bg);color:var(--ink);border-color:var(--cal)}
.cal-event-title{font:500 24px/1.2 var(--serif);margin:6px 0 4px}
.cal-event-when{font-weight:600;margin:0 0 10px}
.cal-event-notes{white-space:pre-line;line-height:1.6;margin:0 0 10px}
.cal-form{max-width:760px}

/* ---- Events (event workspaces) ---- */
.ev-group{font:500 20px/1.25 var(--serif);margin:18px 0 10px}
.ev-group:first-child{margin-top:0}
.ev-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.ev-card{margin:0}
.ev-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.ev-card-name{font:500 19px/1.25 var(--serif)}
.ev-card-meta{margin:4px 0 8px;font-size:13px;color:var(--muted)}
.ev-status-planning{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-line)}
.ev-status-active{color:var(--ok);background:var(--ok-bg);border-color:#b7d3bd}
.ev-status-done{color:var(--muted)}
.ev-progress{display:grid;gap:4px}
.ev-progress progress{width:100%;height:10px;appearance:none;-webkit-appearance:none;border:1px solid var(--field-line);border-radius:999px;background:var(--soft);overflow:hidden}
.ev-progress progress::-webkit-progress-bar{background:var(--soft)}
.ev-progress progress::-webkit-progress-value{background:var(--accent)}
.ev-progress progress::-moz-progress-bar{background:var(--accent)}
.ev-progress-text{font-size:var(--text-sm);color:var(--ink);font-variant-numeric:tabular-nums}
.ev-flags{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:8px 0 0}
.ev-blocked{color:var(--danger);background:var(--danger-bg);border-color:var(--danger-line)}
.ev-overdue{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-line)}
.ev-next{font-size:var(--text-sm);color:var(--muted)}
.ev-head{max-width:980px}
.ev-title{font:500 24px/1.2 var(--serif);margin:0}
.ev-notes{white-space:pre-line;margin:10px 0 0;font-size:13px;line-height:1.6}
.ev-h3{font:500 18px/1.25 var(--serif);margin:0 0 8px}
.ev-tasks-card,.ev-done-card,.ev-task-form,.ev-ws-form{max-width:980px}
.ev-done-card summary{cursor:pointer;margin:0}
.ev-tasks{list-style:none;margin:0;padding:0}
.ev-tasks.settings-card{padding:4px 16px;max-width:980px}
.ev-task{padding:10px 0;border-top:1px solid var(--line)}
.ev-task:first-child{border-top:0}
.ev-task-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ev-task-head input{width:20px;height:20px;min-height:0;margin:0;flex-shrink:0;accent-color:var(--accent)}
.ev-task-title{margin:0;font-size:14px;font-weight:600;flex:1 1 200px}
.ev-done .ev-task-title{text-decoration:line-through;color:var(--muted)}
.ev-badges{display:flex;gap:6px;flex-wrap:wrap}
.ev-task-meta,.ev-waits,.ev-task-notes{margin:4px 0 0 30px;font-size:var(--text-sm)}
.ev-task-meta{color:var(--muted)}
.ev-waits{color:var(--danger);font-weight:600}
.ev-waits-ok{color:var(--muted);font-weight:400}
.ev-task-notes{white-space:pre-line}
.ev-task-actions{display:flex;gap:2px;margin:4px 0 0 24px}
.ev-deps{border:1px solid var(--line);border-radius:var(--radius);margin:12px 0 0;padding:4px 10px 10px;max-height:240px;overflow:auto}
.ev-deps legend{font-weight:600;font-size:13px;padding:0 4px}
.ev-deps .pf-field.checkbox{margin:6px 0}
li.ev-task-form{list-style:none;margin:8px 0}

/* ---- Added with the staff portal reconciliation: search, This week, levels' own timing, sections, variations, videos, links ---- */
.sy-results,.sy-week,.sy-video-list,.sy-place-list,.pi-files,.pi-people,.pi-notes,.pf-session-options{list-style:none;margin:0;padding:0}
.sy-results{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);max-width:980px}
.sy-results li+li{border-top:1px solid var(--line)}
.sy-result{display:grid;gap:2px;padding:10px 14px;text-decoration:none;color:var(--ink)}
.sy-result:hover{background:var(--hover);color:var(--ink)}
.sy-result-name{font-weight:600;color:var(--accent);white-space:pre-wrap}
.sy-result-where{font-size:var(--text-sm);color:var(--muted)}
.sy-week{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);max-width:980px}
.sy-week-row{display:grid;grid-template-columns:minmax(0,190px) minmax(0,1fr);gap:4px 16px;padding:10px 14px}
.sy-week-row+.sy-week-row{border-top:1px solid var(--line)}
.sy-week-when{font-weight:700;font-size:13px;color:var(--accent);font-variant-numeric:tabular-nums}
.sy-week-what{display:grid;gap:2px;font-size:13px}
.sy-taught{font-size:13px;margin:4px 0 0}
.sy-prereq{font-size:13px;margin:8px 0 0;padding:8px 10px;background:var(--soft);border-radius:var(--radius);max-width:760px}
.sy-variations{margin:4px 0 0 36px;padding-left:18px;font-size:13px;line-height:1.5}
.sy-videos{display:flex;flex-wrap:wrap;gap:6px 8px;margin:6px 0 0}
.sy-videos .sy-video{flex:0 1 auto}
.sy-videos .sy-video:has(iframe){flex:1 1 100%}
.sy-pattern .sy-videos{margin-left:36px}
.sy-level-video .sy-videos{margin-left:0}
.sy-play-source{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sy-video-edit{margin:4px 0 0}
.sy-video-list li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px solid var(--line);font-size:13px}
.sy-video-title{min-width:0;overflow-wrap:anywhere}
.sy-video-add{display:flex;gap:8px;align-items:flex-end;margin-top:6px}
.sy-video-add .pf-field{flex:1}
.sy-edit-videos{grid-column:1/-1}
.sy-edit-row .sy-code-field{flex:0 0 72px}
.sy-class-types{border:1px solid var(--line);border-radius:var(--radius);margin:14px 0 0;padding:6px 12px 10px}
.sy-class-types legend{font-weight:600;font-size:13px;padding:0 4px}
.sy-class-types .pf-field.checkbox{margin:6px 0}
.sy-place{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,320px);gap:6px 12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}
.sy-print-section{font:700 var(--text-sm)/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;margin:14px 0 0;color:#333}
.lib-group{font:500 18px/1.25 var(--serif);margin:16px 0 8px}
.lib-group:first-of-type{margin-top:4px}
.lib-compare{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;align-items:start}
.lib-compare>.settings-card{margin:0}
.lib-side-title{font-weight:700;margin:0 0 6px}
.ev-h4{font:700 var(--text-sm)/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:14px 0 2px}
.ev-linked,.cal-linked{font-size:13px;margin:6px 0 0}
.ev-files{max-width:980px}
.ev-file-list{list-style:none;margin:0;padding:0}
.ev-file{padding:10px 0;border-top:1px solid var(--line)}
.ev-file:first-child{border-top:0}
.ev-file-top{display:flex;justify-content:space-between;align-items:center;gap:8px 12px;flex-wrap:wrap}
.ev-file-actions{display:flex;gap:4px;flex-wrap:wrap}
.ev-file-url{margin:2px 0 0;font-size:var(--text-sm);color:var(--muted);overflow-wrap:anywhere}
.ev-frame{display:block;width:100%;height:480px;border:1px solid var(--line);border-radius:var(--radius);margin-top:8px;background:#fff}
.pf-session{border:1px solid var(--line);border-radius:var(--radius);margin:14px 0 0;padding:6px 12px 10px}
.pf-session legend{font-weight:600;font-size:13px;padding:0 4px}
.pf-session-now{margin:4px 0;font-size:13px}
.pf-session-find{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.pf-session-find .pf-field{flex:0 1 220px}
.pf-session-options{display:grid;gap:2px;margin-top:8px}
.pi-card{max-width:860px}
.pi-h2{font:500 20px/1.25 var(--serif);margin:0 0 8px}
.pi-h3{font:500 18px/1.25 var(--serif);margin:0 0 8px}
.pi-files li,.pi-people li,.pi-notes li{font-size:13px;padding:3px 0}
.pi-notes li{border-bottom:1px solid var(--line)}
@media(max-width:860px){
  .sy-week-row,.sy-place{grid-template-columns:minmax(0,1fr)}
  .sy-variations,.sy-pattern .sy-videos{margin-left:0}
  .ev-frame{height:360px}
  .sy-edit-row .sy-code-field{flex-basis:64px}
  .pf-grid{grid-template-columns:minmax(0,1fr)}
  .sy-dance-list,.ev-cards,.ql-list{grid-template-columns:minmax(0,1fr)}
  .sy-edit-more{grid-template-columns:minmax(0,1fr);margin-left:0}
  .sy-edit-fold{margin-left:0}
  .sy-move{margin-left:0}
  .sy-print-sheet{padding:16px}
  .cal-grid-wrap{display:none}
  .cal-agenda{display:block}
  .cal-empty{display:none}
  .cal-month-title{min-width:0;flex-basis:100%;order:-1;text-align:left;margin:0}
  .lib-search{max-width:none}
  .ev-task-meta,.ev-waits,.ev-task-notes{margin-left:30px}
}
/* Library > Ask Annie (2026-10-07, review/ask-annie.js): the answer card, its label, its sources and Questions asked. */
.ask-intro{max-width:760px;margin:0 0 12px}
.ask-form,.ask-answer{max-width:860px}
.ask-form textarea{width:100%}
@media(max-width:600px){#library-panel[data-screen=ask] #lib-search,#library-panel[data-screen=ask] #lib-heading .actions,#library-panel[data-screen=ask] #lib-heading .hint{display:none}.ask-form textarea{font-size:16px}}
.ask-label{display:inline-block;margin:6px 0 8px;padding:4px 10px;border-radius:var(--radius);border:1px solid;font-weight:700;font-size:var(--text-md);line-height:1.4}
.ask-label-staff{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-line)}
.ask-label-customer{color:var(--ok);background:var(--ok-bg);border-color:#b7d3bd}
.lib-audience{margin:8px 0 0}
.ask-text{white-space:pre-wrap;line-height:1.6;font-size:15px;margin:0 0 10px;overflow-wrap:anywhere}
.ask-not-covered{font-weight:600}
.ask-h4,.lib-h4{font:700 var(--text-sm)/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:14px 0 6px}
.ask-sources{margin:0;padding-left:20px;line-height:1.7;overflow-wrap:anywhere}
.ask-feedback-form{border-top:1px solid var(--line);margin-top:14px;padding-top:6px}
.ask-kinds,.lib-audience-choice{border:0;margin:0 0 8px;padding:0;min-width:0}
.ask-kind{display:flex;align-items:center;gap:8px;font-weight:600;margin:8px 0 0;cursor:pointer}
.ask-kind input[type=radio]{width:18px;height:18px;min-height:0;margin:0;padding:0;flex:none;box-shadow:none}
.ask-log .ask-q{margin:0}
.ask-more summary{cursor:pointer;font-weight:600;color:var(--accent);font-size:13px}
.ask-more .ask-text{margin-top:8px;font-size:14px}
.ask-pager{display:flex;gap:12px;align-items:center;margin:14px 0;flex-wrap:wrap}
.ask-note{font-size:var(--text-md);color:var(--ink);line-height:1.55}
/* Settings > What Annie knows: a card filed by Ask Annie (review/questions.js) */
.question-ask{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}
.question-ask button{margin-top:4px}

/* ---- Schedule > Day sheet (2026-10-08, review/day-sheet.js) ---- */
.ds-days{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px}
.ds-days button[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--selected-line)}
.ds-date input{min-height:36px}
.ds-dayhead{font:500 22px/1.25 var(--serif);margin:4px 0 6px}
.ds-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:12px 16px;margin:0 0 12px}
.ds-card h2{font:500 19px/1.25 var(--serif);margin:0 0 8px}
.ds-category h3{font:700 var(--text-sm)/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:12px 0 4px}
.ds-urgent h3,.ds-needsPayment h3{color:var(--danger)}
.ds-items{list-style:none;margin:0;padding:0}
.ds-items li{padding:6px 0;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;gap:2px 8px;align-items:baseline}
.ds-items li:last-child{border-bottom:0}
.ds-meta{color:var(--muted);font-size:13px}
.ds-detail{flex-basis:100%;font-size:13px;white-space:pre-line}
.ds-instructor summary{cursor:pointer;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:36px;font-weight:600}
.ds-name{font:500 18px/1.25 var(--serif)}
.ds-mine{color:var(--ok);background:var(--ok-bg);border-color:#b7d3bd}
.ds-lessons{list-style:none;margin:8px 0 0;padding:0;border-top:1px solid var(--line)}
.ds-lesson{display:grid;grid-template-columns:minmax(84px,auto) 1fr;gap:2px 12px;padding:10px 0;border-bottom:1px solid var(--line)}
.ds-time{font-size:13px;color:var(--muted);white-space:nowrap}
.ds-who{display:flex;flex-wrap:wrap;gap:2px 8px;align-items:baseline}
.ds-service{flex-basis:100%;font-size:13px;color:var(--muted)}
.ds-chips{grid-column:2;display:flex;flex-wrap:wrap;gap:4px 6px}
.ds-chip{font-size:12px;padding:1px 8px;border-radius:999px;background:var(--soft);color:var(--ink);border:1px solid var(--line)}
.ds-chip.ds-warn{color:var(--danger);background:var(--danger-bg);border-color:var(--danger-line);font-weight:700}
.ds-chip.ds-good{color:var(--ok);background:var(--ok-bg);border-color:#b7d3bd;font-weight:700}
.ds-notes{grid-column:2;margin:4px 0 0;font-size:13px;font-style:italic;white-space:pre-line}
@media (max-width:600px){.ds-lesson{grid-template-columns:1fr}.ds-chips,.ds-notes{grid-column:1}}
/* ---- Today > Announcements (2026-10-08, review/announcements-card.js) ---- */
.an-list{list-style:none;margin:0;padding:0}
.an-item{padding:10px 0;border-bottom:1px solid var(--line);display:grid;gap:4px}
.an-item:last-child{border-bottom:0}
.an-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}
.an-text{margin:0;white-space:pre-line;overflow-wrap:anywhere;font-size:var(--text-md);line-height:1.5}
.an-pinned{background:var(--accent-soft);margin:0 -12px;padding:10px 12px;border-radius:var(--radius)}
.an-tag{color:var(--accent);border-color:var(--selected-line)}
.an-tag-urgent{color:var(--danger);background:var(--danger-bg);border-color:var(--danger-line)}
.an-pin{justify-self:start;min-height:32px}

/* ---- Schedule > Studio calendar: the subscribe link (2026-10-08, review/calendar-feed.js) ---- */
.cf-card{margin-top:16px}
.cf-card h2{font:500 19px/1.25 var(--serif);margin:0 0 8px}
.cf-url{width:100%;max-width:100%;box-sizing:border-box;font:13px/1.4 ui-monospace,Consolas,monospace;min-height:40px}
.cf-actions{flex-wrap:wrap;margin-top:8px}
.cf-how ul{margin:6px 0 0;padding-left:20px;font-size:13px;line-height:1.5}
.ds-followup summary{cursor:pointer;display:flex;align-items:baseline;gap:8px;list-style-position:outside}
.ds-followup summary h2{display:inline;margin:0}
@media (max-width:600px){
  .ds-days{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
  .ds-days button{padding-inline:4px;min-height:40px}
  .ds-wide{display:none}
  .ds-date{grid-column:1/-1}.ds-date input{width:100%;box-sizing:border-box}
}

/* ---- Business > Leads > Meta sign-ups (2026-10-08, review/free-night-signups.js) ---- */
.fn-rows{list-style:none;margin:0;padding:0}
.fn-row{padding:10px 0;border-bottom:1px solid var(--line);display:grid;gap:4px}
.fn-row:last-child{border-bottom:0}
.fn-top{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 10px}
.fn-state{font-size:12px;font-weight:700;padding:1px 8px;border-radius:999px;background:var(--soft);border:1px solid var(--line);color:var(--ink)}
.fn-signed_up .fn-state{color:var(--ok);background:var(--ok-bg);border-color:#b7d3bd}
.fn-unknown .fn-state,.fn-failed .fn-state{color:var(--danger);background:var(--danger-bg);border-color:var(--danger-line)}
.fn-held .fn-state{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-line)}
.fn-meta{margin:0;overflow-wrap:anywhere}
.fn-error{margin:0;color:var(--danger);font-size:13px}
.fn-actions{display:flex;flex-wrap:wrap;gap:6px}
/* Today > Ask Annie (2026-10-10): the big box first on Today, and the screens an answer offers (also in Library > Ask Annie). */
.today-ask{margin:0 0 14px;border:2px solid var(--accent);padding:16px 18px}
.today-ask h2{margin:0;font-size:22px}
.today-ask .today-ask-sub{margin:2px 0 10px}
.today-ask .pf-field label{font-weight:600}
.today-ask textarea{width:100%;font-size:18px;line-height:1.45;padding:12px;min-height:72px}
.today-ask .actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:8px}
.today-ask .actions button[type=submit]{min-height:48px;padding:10px 22px;font-size:16px}
.ask-count-list .lib-row{padding:.4rem 0}
.ask-error{margin:10px 0 0}
.tq-answer{border-top:1px solid var(--line);margin-top:14px;padding-top:6px}
.tq-feedback-form{border-top:1px solid var(--line);margin-top:14px;padding-top:6px}
/* A request Annie drafted (Stage 3): every field as a label and its value, then Submit, Edit and Discard (big targets on a phone). */
.ask-draft{border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);padding:12px 14px;margin:12px 0}
.ask-draft .ask-h4{margin-top:0}
.ask-draft-fields{margin:0 0 10px;display:grid;grid-template-columns:minmax(96px,34%) 1fr;gap:6px 12px}
.ask-draft-fields dt{font-weight:600;color:var(--ink-soft,inherit)}
.ask-draft-fields dd{margin:0;overflow-wrap:anywhere}
.ask-draft-actions{flex-wrap:wrap}
.ask-draft-actions button{min-height:44px}
.ask-draft-status{margin:8px 0 0}
.ask-actions-log .ask-draft-fields{margin-top:8px}
@media(max-width:600px){.ask-draft-fields{grid-template-columns:1fr;gap:2px}.ask-draft-fields dd{margin-bottom:8px}.ask-draft-actions button{flex:1 1 30%}}
.ask-screens{list-style:none;margin:0 0 6px;padding:0;display:grid;gap:8px}
.ask-screens li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}
.ask-screens .ask-go{min-height:44px}
.ask-screens .hint{margin:0;overflow-wrap:anywhere}
/* Phones: still first and big, but compact enough that Needs attention and the first class stay on the first screen. */
@media(max-width:600px){.today-ask{padding:10px 12px;margin-bottom:10px}.today-ask h2{font-size:19px}.today-ask .today-ask-sub{display:none}.today-ask .pf-field label{margin-top:4px}.today-ask textarea{font-size:16px;min-height:52px;padding:10px}.today-ask .ask-note{font-size:var(--text-sm);line-height:1.4;margin-top:4px}.today-ask .actions{margin-top:6px;flex-wrap:nowrap}.today-ask .actions button[type=submit]{min-height:44px;padding:8px 18px;flex:none}.ask-screens .ask-go{width:100%}}
/* Desk UI round 3 (Codex N2): a compact Ask box on Today. Still first (Ron, 2026-10-10) and always open, but one line high until it is used, so
   My teaching today and the desk follow on the first screen. The line under the box (Ron's words) stays; the duplicate subtitle goes. */
.today-ask{padding:12px 16px}
.today-ask h2{font-size:19px}
.today-ask .today-ask-sub{display:none}
.today-ask textarea{height:50px;min-height:0;resize:vertical}
/* The Ask button sits beside the box, Ron's line under both. */
.today-ask .tq-form{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;align-items:start}
.today-ask .tq-form>*,.today-ask .tq-form .pf-field>*{grid-column:1/-1}
.today-ask .tq-form .pf-field{display:contents}
.today-ask .tq-form .pf-field>textarea{grid-column:1;grid-row:2}
.today-ask .tq-form>.actions{grid-column:2;grid-row:2;margin-top:0;align-self:start}
.today-ask textarea:focus,.today-ask textarea:not(:placeholder-shown){height:92px}
@media(max-width:600px){.today-ask .tq-form .pf-field>textarea,.today-ask .tq-form>.actions{grid-row:1}.today-ask .pf-field>label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.today-ask textarea{height:46px;min-height:0}.today-ask textarea:focus,.today-ask textarea:not(:placeholder-shown){height:84px}}
/* The heading's desk and teaching actions (Open the front desk, Book a private lesson, Check-in history): finger-sized on a phone, three to a row. */
@media(max-width:600px){#today-panel>.page-heading{margin-bottom:8px;gap:6px}.today-ask{padding-top:8px}.today-ask h2{line-height:1.2}.today-ask .ask-note{line-height:1.35}}
@media(max-width:600px),(pointer:coarse){#today-panel .page-heading .actions{display:flex;flex-wrap:wrap;gap:6px;width:100%}#today-panel .page-heading .actions .button{min-height:44px;flex:1 1 100px;padding:6px 8px;line-height:1.25}}
/* ---- Tools > Client move count (Mindbody) (A071, review/client-count.js) ---- */
.cc-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:12px 16px;margin:0 0 12px}
.cc-card h2{font:500 19px/1.25 var(--serif);margin:0 0 8px}
.cc-card summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600}
.cc-note{background:var(--soft)}
.cc-note p{margin:0}
.cc-actions{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 8px}
.cc-actions button{min-height:44px}
#cc-progress{width:100%;height:10px;margin:4px 0}
.cc-table{width:100%;border-collapse:collapse;margin:0 0 8px}
.cc-table th,.cc-table td{padding:8px 4px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-weight:400}
.cc-table thead th{font:700 var(--text-sm)/1.4 var(--sans);color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.cc-label span{display:block}
.cc-label .cc-sub{font-size:13px;color:var(--muted)}
.cc-n{text-align:right !important;white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:600 !important}
.cc-total th,.cc-total td{border-top:2px solid var(--line);font-weight:700 !important}
.cc-range,.cc-warn{margin:6px 0 0}
.cc-warn{color:var(--danger);font-weight:600}
.cc-about{margin:0;padding-left:20px}
.cc-about li{margin:0 0 6px}
@media (max-width:600px){.cc-card{padding:12px}.cc-table th,.cc-table td{padding:10px 2px}}
/* ---- Tools > Teacher hours in Mindbody (A073, review/teacher-hours-mb.js) ---- */
.th-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:12px 16px;margin:0 0 12px;overflow-wrap:anywhere}
.th-card h2{font:500 19px/1.25 var(--serif);margin:0 0 6px}
.th-card h3{font:700 var(--text-sm)/1.4 var(--sans);color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin:10px 0 4px}
.th-actions{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 8px}
.th-actions button{min-height:44px;min-width:44px}
.th-weekly{margin:0 0 2px;font-weight:600}
.th-total,.th-totals{margin:0;color:var(--muted)}
.th-totals{color:inherit;font-weight:600}
.th-warn{color:var(--danger);font-weight:600;margin:8px 0 0}
.th-list{margin:0;padding-left:20px}
.th-list li{margin:0 0 4px}
.th-part .hint{margin:0}
@media (max-width:600px){.th-card{padding:12px}.th-actions button{width:100%}}
/* Tools > Auto-replies (owners only; review/auto-replies.js). 44 px touch targets and no sideways scroll at 390 px (A070 pattern). */
.ar-section{margin:0 0 22px}
.ar-section>h2{font:500 21px/1.25 var(--serif);margin:0 0 6px}
.ar-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:12px 16px;margin:0 0 12px;overflow-wrap:anywhere;min-width:0}
.ar-card h3{font:700 var(--text-sm)/1.4 var(--sans);color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin:0 0 4px}
.ar-card p{margin:0 0 6px}
.ar-banner{background:var(--warn-bg);border-color:var(--warn-line)}
.ar-banner-main{font-weight:600}
.ar-banner-note{margin:0}
.ar-cat{padding:8px 0;border-top:1px solid var(--line)}
.ar-cat-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px}
.ar-badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:var(--text-sm);font-weight:600;border:1px solid var(--line)}
.ar-ready{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.ar-notyet{color:var(--muted)}
.ar-nums{font-weight:600;margin:4px 0 0}
.ar-bar,.ar-why,.ar-always{margin:2px 0 0}
.ar-switch{display:flex;align-items:center;gap:12px;min-height:44px;cursor:pointer}
.ar-switch input{width:24px;height:24px;flex:none;margin:0}
.ar-cap{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:6px 0}
.ar-cap input{width:96px;min-height:44px;font-size:16px}
.ar-cap button,.ar-outcome{min-height:44px;min-width:44px}
.ar-cats{border:0;border-top:1px solid var(--line);margin:8px 0 0;padding:8px 0 0;min-width:0}
.ar-cats legend{font:700 var(--text-sm)/1.4 var(--sans);color:var(--muted);letter-spacing:.04em;text-transform:uppercase;padding:0}
.ar-filter{display:flex;align-items:center;gap:10px;margin:0 0 10px}
.ar-filter select{min-height:44px;font-size:16px;max-width:100%}
.ar-row-head{display:flex;flex-wrap:wrap;gap:2px 12px;color:var(--muted);font-size:var(--text-sm);margin:0 0 4px}
.ar-cat-name{font-weight:600;color:var(--ink)}
.ar-decision{font-weight:700;margin:0 0 4px}
.ar-would{color:var(--ok)}
.ar-held{color:var(--ink)}
.ar-block{color:var(--danger);font-weight:600}
.ar-switchnote{color:var(--muted);font-size:var(--text-sm)}
.ar-text{margin:0 0 8px}
.ar-label{display:block;font-size:var(--text-sm);font-weight:700;color:var(--muted);margin:0 0 2px}
.ar-body{white-space:pre-wrap;margin:0;padding:6px 10px;border-left:3px solid var(--line);background:var(--soft)}
.ar-staff-line{font-weight:600}
.teach-dialog{width:min(640px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;padding:20px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink)}
.teach-dialog::backdrop{background:#0007}
.teach-dialog form{display:grid;gap:12px;min-width:0}
.teach-dialog h2,.teach-dialog p{margin:0}
.teach-dialog input:not([type=radio]),.teach-dialog textarea{width:100%;min-width:0;box-sizing:border-box;font:inherit;padding:10px}
.teach-dialog label,.teach-dialog legend{font-weight:600}
.teach-audience{display:grid;gap:10px;min-width:0;margin:0;padding:12px;border:1px solid var(--line)}
.teach-choice{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer}
.teach-choice input{flex:none;width:24px;height:24px;margin:0}
.teach-dialog button,.teach-dialog .actions a{min-height:44px}
.teach-dialog .actions{flex-wrap:wrap}
.teach-original{white-space:pre-wrap;overflow-wrap:anywhere}
.teach-status{white-space:pre-wrap;overflow-wrap:anywhere}
.teach-status:empty{display:none}
.teach-title summary,.teach-source summary{min-height:44px;display:list-item;align-content:center;cursor:pointer}
.teach-source-context{overflow-wrap:anywhere}
.ar-review{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 0}
.ar-outcome.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}
.ar-reviewed{margin:6px 0 0}
@media (max-width:600px){.ar-card{padding:12px}.ar-review .ar-outcome{flex:1 1 calc(50% - 8px)}.ar-cap input{flex:1 1 96px}}
/* ---- Business > Room rentals and Online private lessons (2026-10-19, owner setup; review/owner-setup.js). 44 px touch targets and no sideways scroll at 390 px. ---- */
.os-banner{margin:0 0 12px}
.os-status{min-height:1.4em;margin:0 0 10px}
.os-tabs button{min-height:44px;padding:8px 6px}
.os-tabs button[aria-selected=true]{border-bottom-color:var(--accent);color:var(--ink);font-weight:600}
.os-list{list-style:none;margin:0;padding:0}
.os-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:12px 16px;margin:0 0 12px;overflow-wrap:anywhere}
.os-card h2{font:500 20px/1.25 var(--serif);margin:0 0 6px}
.os-card h3{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font:500 18px/1.3 var(--serif);margin:0 0 4px}
.os-card p{margin:4px 0}
.os-lines{margin:4px 0;padding-left:20px}
.os-badge{font:600 var(--text-sm)/1.2 var(--sans);border:1px solid var(--line);border-radius:999px;padding:3px 10px;color:var(--muted)}
.os-badge.os-active{color:var(--ink);border-color:var(--accent)}
.os-badge.os-draft{border-style:dashed}
.os-actions{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0}
.os-actions button,.os-filters button,.os-add-slot,.os-remove{min-height:44px;min-width:44px}
.os-filters{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.os-filters button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.os-section{margin:18px 0 0}
.os-section>h2{font:500 21px/1.25 var(--serif);margin:0 0 6px}
.os-rules input{max-width:8rem}
.os-history{margin:8px 0 0;padding-left:20px}
.os-history li{margin:0 0 4px}
.os-form .os-wide{grid-column:1/-1}
.os-label{font-weight:600;margin:0 0 6px}
.os-slot{border:1px solid var(--line);border-radius:var(--radius-card);padding:8px 12px 12px;margin:0 0 10px;display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:8px 12px;min-width:0}
.os-slot legend{font-weight:600;padding:0 4px}
.os-field{display:flex;flex-direction:column;gap:4px;min-width:0}
.os-field select,.os-field input,.os-card select,.os-form select,.os-form input:not([type=checkbox]){min-height:44px;max-width:100%;box-sizing:border-box}
.os-slot .os-remove{grid-column:1/-1;justify-self:start}
.os-checks{border:1px solid var(--line);border-radius:var(--radius-card);padding:8px 12px;margin:0 0 10px;min-width:0}
.os-checks legend{font-weight:600;padding:0 4px}
.os-checks .studio-check{min-height:44px;margin:0}
.os-checks input[type=checkbox]{width:24px;height:24px}
@media (max-width:600px){.os-card{padding:12px}.os-actions button,.os-filters button{flex:1 1 calc(50% - 8px)}.os-slot{grid-template-columns:1fr 1fr}}
.os-switch{min-height:44px;margin:10px 0 0}.os-switch input[type=checkbox]{width:24px;height:24px}

/* Project preparation: working lists first; existing editors open on intent. */
#events-panel .page-heading{margin-bottom:12px}
#events-panel #ev-actions:empty{display:none}
#events-panel #ev-intro{margin:6px 0 0;max-width:65ch}
#events-panel .ev-back{display:inline-flex;align-items:center;min-height:44px;margin:0 0 6px}
#events-panel .ev-head{max-width:none;padding:0;margin-bottom:6px}
#events-panel .ev-head .ev-card-meta{margin:0}
#events-panel .ev-head .ev-progress{margin-top:8px}
#events-panel .ev-head>.actions{margin-top:8px}
#events-panel .ev-head .ev-linked{font-size:13px;margin:8px 0}
#events-panel .ev-project-notes summary,#events-panel .ev-update summary{cursor:pointer;min-height:44px;align-content:center}
#events-panel .ev-project-notes{font-size:13px}
#events-panel .ev-project-notes{margin:0;padding:0;border:0;min-width:0;flex:0 1 auto}
#events-panel .ev-project-secondary{display:flex;align-items:start;flex-wrap:wrap;gap:0 20px}
#events-panel .ev-project-back{display:inline-flex;align-items:center;min-height:44px;font-size:13px;font-weight:600;text-decoration:none}
#events-panel .ev-project-notes[open]{flex-basis:100%}
#events-panel .ev-project-notes .ev-next{display:block;margin-top:8px;font-size:13px}
#events-panel .ev-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
#events-panel .ev-card{margin:0;min-width:0}
#events-panel .ev-card-meta{font-size:13px}
#events-panel .ev-tasks-card,#events-panel .ev-done-card,#events-panel .ev-task-form,#events-panel .ev-ws-form{max-width:none}
#events-panel .ev-list-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
#events-panel .ev-list-heading .ev-h3{margin:0;font:650 19px/1.3 var(--sans)}
#events-panel .ev-list-heading button{flex:none;min-height:44px}
#events-panel .ev-task{padding:14px 0}
#events-panel .ev-task:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
#events-panel .ev-attention{border-left:3px solid var(--warn);padding-left:12px;margin-bottom:18px}
#events-panel .ev-h4{font:650 14px/1.4 var(--sans);margin:18px 0 6px}
#events-panel .ev-task-meta,#events-panel .ev-waits,#events-panel .ev-task-notes{margin-left:30px;line-height:1.5}
#events-panel .ev-waits button{min-height:44px;padding:0 2px;white-space:normal;text-align:left}
#events-panel .ev-update{margin:4px 0 0 30px;font-size:13px}
#events-panel .ev-update{padding-top:0;border-top:0}
#events-panel .ev-update>summary{font-weight:600}
#events-panel .ev-task-form{border:1px solid var(--selected-line);background:var(--soft);padding:16px;margin:12px 0}
#events-panel .ev-task-form .ev-h3{font:650 17px/1.35 var(--sans)}
#events-panel .ev-draft:empty{display:none}
#events-panel .ev-draft{font-size:12px;line-height:1.5}
#events-panel .ev-file-url{overflow-wrap:anywhere}
#events-panel .ev-file-actions{flex-wrap:wrap}
#events-panel .ev-files .ev-h3{margin-bottom:0}
@media(max-width:860px){
 #events-panel .ev-head{padding:0;margin-bottom:6px}
 #events-panel .ev-head .ev-card-top{align-items:start;gap:8px}
 #events-panel .ev-head .ev-progress-text{font-size:12px}
 #events-panel .ev-cards{grid-template-columns:minmax(0,1fr)}
 #events-panel .ev-list-heading{gap:8px;align-items:start}
 #events-panel .ev-list-heading .ev-h3{font-size:18px;padding-top:8px}
 #events-panel .ev-list-heading button{font-size:13px;padding-inline:10px}
 #events-panel .ev-task-form{padding:12px}
 #events-panel .ev-task-form .pf-grid{grid-template-columns:minmax(0,1fr)}
 #events-panel .ev-task-title{flex-basis:180px}
 #events-panel .ev-task-head{gap:6px 10px}
 #events-panel .ev-badges{margin-left:30px}
 #events-panel .ev-task-meta{margin-top:6px}
 #events-panel .ev-file-top{align-items:start;gap:8px;flex-wrap:wrap}
}

/* Working Resources reader. All state comes from the existing Library module. */
#library-panel #lib-heading{align-items:center;flex-direction:row;flex-wrap:nowrap;gap:.75rem}
#library-panel #lib-heading>div{min-width:0}
#library-panel .lib-header-teach{min-height:44px;padding:.45rem .65rem;font-size:.85rem;white-space:nowrap;flex:0 0 auto}
#library-panel .lib-header-teach[hidden]{display:none}
#library-panel .lib-search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem;max-width:none;margin:1rem 0}
#library-panel .lib-search label{grid-column:1/-1;font-weight:650}
#library-panel .lib-jobs{display:flex;gap:.5rem 1rem;align-items:start;flex-wrap:wrap;margin:.5rem 0 1rem}
#library-panel .lib-jobs>a,#library-panel .lib-jobs summary{min-height:44px;display:flex;align-items:center}
#library-panel .lib-jobs details{margin:0;padding:0;border:0}
#library-panel .lib-jobs summary{display:list-item;line-height:44px;cursor:pointer}
#library-panel .lib-jobs>a[hidden],#library-panel .lib-author-actions>a[hidden]{display:none}
#library-panel .lib-jobs details .actions{padding:.75rem 0;max-width:45rem}
#library-panel .lib-search input{min-width:0;width:100%}
#library-panel .lib-search button,#library-panel .lib-back,#library-panel .lib-title{min-height:44px}
#library-panel .lib-workspace{display:grid;grid-template-columns:minmax(0,1fr);gap:1.25rem;align-items:start}
#library-panel[data-reader="detail"][data-has-results="true"] .lib-workspace{grid-template-columns:minmax(15rem,1fr) minmax(0,2fr)}
#library-panel .lib-results,#library-panel .lib-detail{min-width:0}
#library-panel .lib-results .lib-list{list-style:none;padding:0;margin:.75rem 0}
#library-panel .lib-results .lib-row{padding:.85rem 0;border-bottom:1px solid var(--line,#ddd);overflow-wrap:anywhere}
#library-panel .lib-results .lib-excerpt{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:.4rem 0}
#library-panel .lib-results .lib-meta{margin:.3rem 0;font-size:.8rem}
#library-panel .lib-title{display:flex;align-items:center;line-height:1.35;font-weight:650;overflow-wrap:anywhere}
#library-panel .lib-row[data-selected="true"]{border-left:3px solid var(--brand,#63314b);padding-left:.75rem}
#library-panel .lib-title:focus-visible,#library-panel .lib-back:focus-visible{outline:3px solid var(--brand,#63314b);outline-offset:3px}
#library-panel .lib-selection{display:flex;align-items:baseline;flex-wrap:wrap;gap:.5rem 1rem;border-bottom:1px solid var(--line,#ddd);padding:.5rem 0;margin-bottom:1rem;scroll-margin-block-start:calc(var(--topbar-h) + .5rem)}
#library-panel .lib-selection[hidden],#library-panel .lib-results[hidden],#library-panel .lib-detail[hidden]{display:none}
#library-panel .lib-selection p{margin:0}
#library-panel .lib-back{display:inline-flex;align-items:center}
#library-panel .lib-article-title{overflow-wrap:anywhere;line-height:1.25}
#library-panel .lib-body{overflow-wrap:anywhere;line-height:1.6;max-width:72ch}
#library-panel .lib-body pre{overflow:auto;max-width:100%}
#library-panel .lib-body table{display:block;overflow:auto;max-width:100%}
#library-panel .lib-result-count{font-weight:650}
@media(min-width:861px){#library-panel[data-reader="detail"] .lib-results{max-height:calc(100dvh - 13rem);overflow:auto;scrollbar-gutter:stable}}
@media(max-width:860px){
 #library-panel #lib-heading{margin-bottom:.5rem}
 #library-panel #lib-heading .eyebrow{display:none}
 #library-panel .lib-search{margin:.5rem 0 .25rem;gap:.25rem .5rem}
 #library-panel .lib-search input,#library-panel .lib-search button{min-height:44px}
 #library-panel .lib-search button{padding-inline:.85rem}
 #library-panel .lib-jobs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:.25rem 0 .5rem;gap:0 .5rem;font-size:.8rem}
 #library-panel .lib-jobs>a,#library-panel .lib-jobs details{min-width:0}
 #library-panel .lib-jobs summary{line-height:1.25;margin:0;padding:6px 0;overflow-wrap:anywhere}
 #library-panel .lib-jobs details[open]{grid-column:1/-1}
 #library-panel .lib-results>.lib-h2{font-size:1rem;margin:.5rem 0 .25rem}
 #library-panel .lib-result-count{margin:.25rem 0}
 #library-panel .lib-results .lib-list{margin:.25rem 0}
 #library-panel[data-reader="detail"][data-has-results] .lib-workspace{grid-template-columns:minmax(0,1fr)}
 #library-panel[data-reader="detail"] .lib-results,#library-panel[data-reader="detail"] #lib-search,#library-panel[data-reader="detail"] #lib-subnav,#library-panel[data-reader="detail"] #lib-jobs{display:none}
 #library-panel[data-reader="detail"] #lib-heading{margin-bottom:.25rem}
 #library-panel[data-reader="detail"] #lib-title{font-size:1.25rem}
 #library-panel .lib-selection{position:static;gap:.25rem}
 #library-panel .lib-selection p{flex-basis:100%;overflow-wrap:anywhere}
 #library-panel .lib-article{padding:1rem}
 #library-panel .lib-article-title{font-size:1.5rem}
 #library-panel .lib-results .lib-row{padding:.75rem 0}
}
/* Phones (INT19): the job links (workspaces.css draws them as described cards) go back to the one compact row of three
   labels used before the cards, so the first search result and the Ask box stay near the top. "Maintain knowledge" stays the
   explicit disclosure for authoring. Two ids plus a class beat the card rules in either stylesheet order; the detail reader
   still hides the row. */
@media(max-width:480px){
 #library-panel:not([data-reader="detail"]) #lib-jobs.lib-jobs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 10px;margin:4px 0 8px;font-size:inherit}
 #library-panel #lib-jobs.lib-jobs>a,#library-panel #lib-jobs.lib-jobs>details{border-top:0;padding-top:0;min-width:0}
 #library-panel #lib-jobs.lib-jobs>a{flex-direction:row;align-items:center;gap:0;min-height:44px}
 #library-panel #lib-jobs.lib-jobs>[hidden]{display:none}
 #library-panel #lib-jobs.lib-jobs .lib-job-description,#library-panel #lib-jobs.lib-jobs .lib-job-action{display:none}
 #library-panel #lib-jobs.lib-jobs strong{font-size:14px;line-height:1.25;overflow-wrap:anywhere}
 #library-panel #lib-jobs.lib-jobs>a strong{color:var(--accent);text-decoration:underline}
 #library-panel #lib-jobs.lib-jobs summary{display:list-item;min-height:44px;padding:4px 0;line-height:1.25;margin:0;overflow-wrap:anywhere}
 #library-panel #lib-jobs.lib-jobs>details[open]{grid-column:1/-1}
}

/* Shared workspace patterns: scope -> working content -> supporting context.
   Business forms, data adapters and access checks remain with their owners. */
.workspace-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,320px);gap:28px;align-items:start}
.workspace-main,.workspace-context{min-width:0}
.workspace-context{display:grid;gap:22px;align-content:start}
.workspace-page .workspace-main>.settings-card,.workspace-page .workspace-context>.settings-card{margin:0}
.workspace-main>.settings-card+.settings-card{margin-top:22px}
.workspace-page .today-card{background:transparent;border:0;border-radius:0;padding:20px 0;border-top:1px solid var(--line)}
.workspace-page .card-head{align-items:flex-start;gap:12px;margin-bottom:14px}
.workspace-page .card-head h2{font:650 20px/1.25 var(--sans);letter-spacing:-.015em}
.workspace-page .card-head .hint{margin:2px 0;font-size:12px;text-align:right}
.workspace-page .card-head a{min-height:32px;display:inline-flex;align-items:center}
.workspace-page .today-alerts{margin-bottom:24px}
.workspace-page .today-alerts .alert-list{display:block}
.workspace-page .alert{height:auto;min-height:78px;background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:14px 0;overflow:visible;align-items:flex-start;gap:14px}
.workspace-page .alert strong{font:650 22px/1.25 var(--sans);min-width:28px;text-align:left}
.workspace-page .alert span{gap:5px}
.workspace-page .alert span b{white-space:normal;overflow:visible;text-overflow:clip;font-size:15px;line-height:1.35}
.workspace-page .alert a{white-space:normal;min-height:28px;display:inline-flex;align-items:center;font-size:13px}
.workspace-page .alert-off .alert-line{flex-direction:column;align-items:flex-start}
.workspace-page .today-clear-note{padding:16px 0;font-size:14px;color:var(--muted)}
.workspace-page #today-attention-more>summary{min-height:44px;display:list-item;padding:12px 0;color:var(--accent);font-weight:600}
#today-panel .today-heading-line{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex:1;min-width:0}
#today-panel .today-heading-line>div{min-width:0}
#today-panel #today-mywork{flex:none}
#today-panel .today-primary-actions{width:auto;gap:8px}
@media(max-width:650px){
 #today-panel .today-heading-line{flex-basis:100%}
 #today-panel .today-primary-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:6px}
 #today-panel .today-primary-actions>a{min-width:0;min-height:44px;padding:8px 6px}
}
/* A three-row brief keeps its place while its existing sources answer. This
   matches the normal row/actions/disclosure space; longer real content grows. */
#today-panel .today-commitment-brief{min-block-size:29rem}
/* Status text changes as independent checks answer. Its column must not move
   sideways, or add a late line above the attention rows on a phone. */
#today-panel .today-alerts>.card-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
#today-panel #today-attention-status{inline-size:100%;max-width:none;min-block-size:3em;line-height:1.5}
#today-panel .today-alerts>.card-head{margin-bottom:6px}
#today-panel .today-alerts h2{margin-bottom:0}
#today-panel #today-attention-more{margin:0;padding:0;border:0}
#today-panel #today-attention-more>summary{box-sizing:border-box;min-height:44px;margin:0;padding:12px 0;line-height:20px}
#today-panel #today-schedule-card .card-links{display:flex;flex-wrap:nowrap;align-items:start;gap:8px}
#today-panel #today-schedule-card .card-links a{white-space:nowrap}
#today-panel #today-schedule-shows,#today-panel #today-schedule-status{min-block-size:1.55em;margin:4px 0}
#today-panel .today-source-problems>summary{margin-bottom:0}
@media(max-width:860px){
 #today-panel .today-alerts>.card-head{grid-template-columns:minmax(0,1fr);gap:0}
 #today-panel #today-attention-status{text-align:left;max-width:none}
 #today-panel .today-alerts{margin-bottom:12px}
 #today-panel .today-commitment-brief{padding-top:12px}
 #today-panel .today-commitment-brief>.card-head{margin-bottom:6px}
 #today-panel #today-schedule-shows,#today-panel #today-schedule-status{margin:2px 0}
 #today-panel .today-commitment-brief .today-list>li{padding:12px 0}
}
.workspace-page .today-list li{padding:16px 0;font-size:14px;grid-template-columns:68px minmax(0,1fr);gap:8px 14px;align-items:start}
.workspace-page .today-list .t-time{font-size:13px;font-weight:600;color:var(--ink)}
.workspace-page .today-list .t-what strong{font-size:16px;line-height:1.35;font-weight:650;margin-bottom:4px}
.workspace-page .today-list .t-what span{font-size:13px;line-height:1.5}
.workspace-page .today-list .t-actions{grid-column:2;justify-content:flex-start;gap:8px}
.workspace-page .today-list .t-actions a{min-height:44px;padding:9px 12px;font-size:13px}
.workspace-page .today-list [hidden]{display:none!important}
.today-brief-controls{padding:8px 0 0}
.today-brief-controls .hint{font-size:12px;margin:0 0 4px}
.today-brief-controls button{padding-left:0;justify-content:flex-start}
.workspace-more{border-top:1px solid var(--line);margin-top:28px;padding-top:4px}
.workspace-more>summary{min-height:52px;padding:13px 0;color:var(--accent);font-weight:650;cursor:pointer}
.workspace-more>summary small{font-weight:400;color:var(--muted);font-size:12px;margin-left:8px;line-height:1.6}
.workspace-more-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;align-items:start}
.workspace-more-actions{margin:6px 0 18px}
.workspace-page .today-sales-card{height:auto;min-height:156px;overflow:visible;padding:20px 0;background:transparent;border:0}
/* Keep the existing Ask form, answer and functional notices. It is contextual
   support rather than the entire first phone screen. */
.workspace-page .today-ask{margin:0;padding:17px;border:1px solid var(--line);border-top:3px solid var(--accent);background:var(--paper)}
.workspace-page .today-ask h2{font:650 19px/1.25 var(--sans);margin:0 0 10px}
.workspace-page .today-ask .today-ask-sub{display:none}
.workspace-page .today-ask textarea{font-size:14px;height:50px;min-height:44px;padding:10px}
.workspace-page .today-ask .tq-form{display:block}
.workspace-page .today-ask .tq-form .pf-field{display:block}
.workspace-page .today-ask .tq-form .pf-field>label{position:static;width:auto;height:auto;clip:auto;white-space:normal;margin:0 0 5px;overflow:visible;font-size:13px}
.workspace-page .today-ask .tq-form>.actions{margin-top:8px;display:flex;flex-wrap:wrap}
.workspace-page .today-ask .ask-note{font-size:12px;line-height:1.5}
.workspace-page .today-ask textarea:focus,.workspace-page .today-ask textarea:not(:placeholder-shown){height:88px}
.workspace-page .today-ask .tq-answer{margin-top:15px}
.workspace-home-status{max-width:65ch;padding:20px 0;color:var(--muted)}
#workspace-home-panel>.page-heading{margin-bottom:24px}
#workspace-home-panel>.workspace-home-status[hidden]{display:none}
#workspace-home-tasks>.workspace-task-section:first-child{margin-top:0;padding-top:0;border-top:0}
.workspace-task-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px;max-width:900px}
.workspace-task-list a{min-height:64px;padding:18px 2px;border-top:1px solid var(--line);font-size:16px;font-weight:600;text-decoration:none;display:flex;align-items:center}
.workspace-task-list a:hover{text-decoration:underline}
#workspace-website-destinations{max-width:1000px;margin:0 0 28px}
#workspace-website-destinations[hidden]{display:none}
#workspace-website-destinations h2{font:650 20px/1.3 var(--sans);margin:0}
#workspace-website-destinations>.workspace-website-group{margin-top:20px}
#workspace-website-destinations .workspace-website-group>h3{font:650 16px/1.4 var(--sans);margin:0 0 8px}
#workspace-website-destinations>.hint{margin:6px 0 14px}
.workspace-website-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 24px}
.workspace-website-choice{min-width:0;border-top:1px solid var(--line);padding:12px 0}
.workspace-website-choice>a,.workspace-website-choice>span{display:flex;align-items:center;min-height:44px;font-size:18px;font-weight:650}
.workspace-website-choice>a:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.workspace-website-choice>p{font-size:14px;line-height:1.5;margin:4px 0 0;max-width:38ch}
.workspace-website-choice>.hint{font-size:13px;color:var(--muted)}
@media(max-width:650px){.workspace-website-choices{grid-template-columns:1fr}.workspace-website-choice{padding:8px 0 12px}#workspace-website-destinations{margin-bottom:24px}}
@media(max-width:650px){.workspace-website-choice{display:grid;grid-template-columns:82px minmax(0,1fr);column-gap:12px;padding:10px 0}.workspace-website-choice>a,.workspace-website-choice>span{grid-row:1/3;font-size:16px}.workspace-website-choice>p{grid-column:2;margin:0;font-size:14px}.workspace-website-choice>.hint{margin-top:4px}}
.workspace-task-list>section{grid-column:1/-1;margin:0 0 18px}
.workspace-task-list>section h2{font:650 19px/1.3 var(--sans);margin:0 0 10px}
.workspace-personal-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px}
.workspace-task-list>.workspace-task-section{padding-top:14px;border-top:2px solid var(--line);margin-top:8px}
.workspace-task-list>.workspace-task-section h2{font-size:14px;color:var(--muted);letter-spacing:.025em;margin:0 0 8px}
.workspace-task-list .workspace-task-action{justify-content:space-between;gap:16px;color:var(--accent);min-height:52px;padding:12px 4px;border-top:0;border-bottom:1px solid var(--line)}
.workspace-task-arrow{font-size:20px;flex:none}
/* Resources have three distinct jobs. Text describes each destination; links
   and the native disclosure remain the actual controls, never heading buttons. */
#library-panel #lib-jobs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:12px 0 20px}
#library-panel #lib-jobs>a,#library-panel #lib-jobs>details{border-top:2px solid var(--line);padding-top:12px;min-width:0}
#library-panel #lib-jobs>a{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-decoration:none;min-height:44px}
#library-panel #lib-jobs>[hidden]{display:none}
#library-panel #lib-jobs strong{font:650 16px/1.35 var(--sans)}
#library-panel #lib-jobs .lib-job-description{display:block;color:var(--muted);font-size:14px;line-height:1.5;font-weight:400}
#library-panel #lib-jobs .lib-job-action{color:var(--accent);text-decoration:underline;font-size:14px;min-height:32px;display:flex;align-items:center}
#library-panel #lib-jobs summary{min-height:44px;line-height:1.4;padding:0 0 8px}
#library-panel #lib-jobs summary>.lib-job-description{margin-top:6px}
@media(max-width:650px){#library-panel #lib-jobs{grid-template-columns:1fr;gap:14px}#library-panel #lib-jobs>details[open]{grid-column:auto}}
@media(max-width:650px){.workspace-personal-links{grid-template-columns:1fr}.workspace-task-list>section{margin-bottom:14px}}
.workspace-task-return{min-height:44px;margin-bottom:12px}
.wr-new-request{margin-top:18px;border-top:1px solid var(--line)}
.wr-new-request>summary{min-height:48px;padding:12px 0;box-sizing:border-box;font-weight:650;color:var(--accent);cursor:pointer}
.rs-scope{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
#rs-grid>.rs-scope,#rs-grid>.hint{grid-column:1/-1}
.rs-scope button{min-height:44px;padding:9px 12px}
.rs-scope [aria-pressed=true]{background:var(--accent);color:var(--paper);border-color:var(--accent)}
.workspace-page>.page-heading.workspace-tools-host{display:flex;flex-direction:row;align-items:start;flex-wrap:wrap;gap:8px 18px}
#workspace-related-actions{margin-left:auto;font-size:13px;max-width:100%;min-width:0}
#calendar-panel #workspace-related-actions{border:0;border-radius:0;background:transparent;padding:0;margin:0 0 0 auto}
#calendar-panel #workspace-related-actions>summary{min-height:44px;padding:10px 0;line-height:24px}
.workspace-page .today-source-problems{border:0;border-radius:0;background:transparent;padding:0;margin:0 0 8px;font-size:13px}
.workspace-page .today-source-problems>summary{padding:8px 0;min-height:44px;box-sizing:border-box;cursor:pointer;color:var(--accent)}
.workspace-page .today-source-problems ul{margin:0 0 8px;padding-left:20px;line-height:1.5}
.workspace-page .today-source-problems button{min-height:44px}
#workspace-related-actions[hidden]{display:none}
#workspace-related-actions>summary{min-height:44px;padding:12px 0;box-sizing:border-box;cursor:pointer}
#workspace-related-actions nav{display:grid;gap:3px;max-width:300px}
#workspace-related-actions nav a{min-height:44px;display:inline-flex;align-items:center}
.workspace-messages-context{display:flex;align-items:start;justify-content:space-between;gap:8px 20px;border-bottom:1px solid var(--line);margin-bottom:16px;min-width:0}
.workspace-messages-context[hidden],#messages-tools[hidden]{display:none}
#messages-primary-tabs{display:flex;gap:22px;flex-wrap:wrap}
#messages-primary-tabs a{min-height:44px;display:inline-flex;align-items:center;text-decoration:none;border-bottom:3px solid transparent;font-weight:650}
#messages-primary-tabs a[aria-current=page]{border-bottom-color:var(--gold);color:var(--accent)}
#messages-tools{max-width:50%;font-size:13px}
#messages-tools,#messages-panel .messages-inbox-details{margin:0;padding:0;border:0;border-radius:0;background:transparent}
.workspace-messages-context{margin-bottom:10px}
#messages-tools>summary{min-height:44px;display:list-item;padding:12px 0;box-sizing:border-box;cursor:pointer}
#messages-tool-links{display:grid;gap:4px;padding-bottom:12px}
#messages-tool-links a{min-height:44px;display:inline-flex;align-items:center}
#messages-panel.workspace-page>.page-heading{margin:0 0 12px}
#messages-panel.workspace-page>.page-heading h1{font:650 26px/1.25 var(--sans)}
#messages-panel.workspace-page .messages-connection-summary{padding:10px 12px;margin-bottom:14px;font-size:13px}
#messages-panel.workspace-page .messages-connection-summary:not([hidden]){display:block}
#messages-panel .messages-connection-summary>div{display:block}
#messages-panel .messages-connection-summary strong{font-size:13px;display:inline}
#messages-panel .messages-connection-summary #connection-summary{display:inline;font-size:12px;margin-left:5px}
#messages-panel .messages-inbox-details>summary{min-height:30px;padding:5px 0}
.lib-audience-help{margin:8px 0 0!important;padding:0!important;border:0!important;background:transparent!important}
.lib-audience-help>summary{min-height:36px;padding:8px 0;font-size:12px;cursor:pointer}
.web-task-helpers{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.web-task-helpers button{min-height:44px;padding:9px 12px;font-size:13px}
.rs-help{margin-top:18px;border-top:1px solid var(--line)}
.rs-help>summary{min-height:44px;padding:12px 0;box-sizing:border-box;cursor:pointer;font-size:13px}
#setup-panel.workspace-page[data-workspace=settings] #setup-sections{display:none}
.messages-inbox-details>summary{min-height:36px;box-sizing:border-box;padding:8px 0;font-size:12px;cursor:pointer}
.messages-inbox-details p{font-size:12px;line-height:1.4}
#messages-panel.workspace-page .list-heading{margin-bottom:8px}
#messages-panel.workspace-page .list-heading h2{font-size:17px}
#messages-panel.workspace-page #search{min-height:44px;margin-bottom:8px}
#messages-panel.workspace-page .inbox-filters{margin-bottom:10px;gap:5px}
.workspace-management-context{margin:0 0 24px;border-bottom:1px solid var(--line);padding:0 0 12px;min-width:0}
.workspace-management-context[hidden]{display:none}
#workspace-management-subjects{display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px}
.workspace-management-label{font-size:12px;color:var(--muted);font-weight:650;margin-right:10px}
#workspace-management-subjects a{display:inline-flex;align-items:center;min-height:44px;padding:8px 12px;font-weight:650;text-decoration:none;border-radius:4px}
#workspace-management-subjects a[aria-current=page]{background:var(--accent);color:var(--paper)}
#workspace-subject-tasks{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:7px}
#workspace-subject-tasks a{display:inline-flex;align-items:center;min-height:44px;font-size:14px;text-decoration:none;border-bottom:2px solid transparent}
#workspace-subject-tasks a[aria-current=page]{border-bottom-color:var(--accent);font-weight:650}
.workspace-management-context a:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.workspace-subject-chooser{display:none}
#workspace-subject-subviews{display:flex;gap:18px;padding-top:8px}
#workspace-subject-subviews[hidden]{display:none}
#workspace-subject-subviews a{min-height:44px;display:inline-flex;align-items:center;font-size:14px}
#workspace-subject-subviews a[aria-current=page]{font-weight:650}
#main-nav .workspace-primary .nav-link,#main-nav .workspace-personal .nav-link,#main-nav .workspace-supplies-list .nav-link{min-height:40px;padding-block:8px;font-size:14px}
#workspace-management-group>summary{min-height:44px;font-size:14px}
.phone-header-search{display:none}
#website-articles-panel.workspace-page #wa-heading{margin-bottom:12px}
#website-articles-panel.workspace-page #wa-heading[hidden]{display:none}
#website-articles-panel.workspace-page .wa-head{margin:0 0 4px;padding:0;border:0;gap:0}
#website-articles-panel.workspace-page .wa-article-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px}
#website-articles-panel.workspace-page .wa-head .wa-back{margin:0;min-height:44px;display:inline-flex;align-items:center}
#website-articles-panel.workspace-page .wa-head h2{margin:4px 0;font:650 22px/1.3 var(--sans)}
#website-articles-panel.workspace-page .wa-head p{margin:4px 0}
#website-articles-panel.workspace-page .wa-save-state{font-size:12px;color:var(--muted)}
#website-articles-panel.workspace-page #wa-panes{margin:4px 0 14px}
#website-articles-panel.workspace-page #wa-panes .subnav-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:visible;gap:0;width:100%}
#website-articles-panel.workspace-page #wa-panes .subnav-tab{font-size:13px;min-width:0;padding:10px 5px;text-align:center;white-space:normal;box-sizing:border-box}
#website-articles-panel.workspace-page .wa-row{border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding:14px 0;gap:3px}
#website-articles-panel.workspace-page .wa-row-line{font-size:12px;line-height:1.4}
#website-articles-panel.workspace-page #wa-status:empty{display:none}
.wa-publishing-help{margin-top:20px;max-width:72ch;font-size:13px;color:var(--muted)}
.wa-publishing-help>summary{min-height:44px;cursor:pointer;padding-block:10px}
.wa-publishing-help p{line-height:1.5}
@media(max-width:860px){
 .workspace-management-context{margin-bottom:20px;padding-bottom:10px}
 .workspace-management-label{flex-basis:100%;margin:0 0 2px}
 #workspace-management-subjects{gap:0 2px}
 #workspace-management-subjects a{padding:7px 9px;font-size:13px}
 #workspace-subject-tasks{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;gap:0 18px;scrollbar-width:thin}
 #workspace-subject-tasks a{flex-shrink:0}
 #workspace-management-subjects>.workspace-management-label,#workspace-management-subjects>.workspace-subject-link{display:none}
 .workspace-subject-chooser{display:flex;align-items:center;gap:12px;width:100%;margin:0}
 .workspace-subject-chooser>span{font-size:12px;font-weight:650;color:var(--muted)}
 .workspace-subject-chooser select{min-height:44px;min-width:0;flex:1;font-size:15px;padding:8px 12px}
 #workspace-subject-tasks{flex-wrap:wrap;overflow:visible;gap:0 16px;margin-top:3px}
 #workspace-subject-tasks a{font-size:13px;min-height:44px}
 #workspace-management-context{margin-bottom:14px;padding-bottom:7px}
 #bottom-bar:not([hidden]){display:flex}
 #bottom-bar>a,#bottom-bar>button{flex:1 1 0;min-width:0}
 #bottom-bar [hidden]{display:none!important}
 .topbar .phone-header-search:not([hidden]){display:inline-flex;order:2;align-items:center;justify-content:center;width:44px;min-width:44px;height:44px;padding:8px}
 .phone-header-search svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6}
 .topbar .wordmark-small{order:1;min-width:0}
 .topbar .header-right{order:3;margin-left:auto}
 .topbar #menu-button{width:44px;min-width:44px;height:44px;justify-content:center;padding:8px}
 .topbar #menu-button>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
 #website-articles-panel.workspace-page #wa-heading{display:flex;flex-direction:row;align-items:center;gap:10px;margin-bottom:10px}
 #website-articles-panel.workspace-page #wa-heading .eyebrow{display:none}
 #website-articles-panel.workspace-page #wa-heading h1{font-size:24px;margin:0}
 #website-articles-panel.workspace-page .wa-head-actions{margin-left:auto;gap:5px}
 #website-articles-panel.workspace-page .wa-head-actions .button{font-size:13px;padding:8px 10px}
 #website-articles-panel.workspace-page .wa-head-actions .quiet{font-size:12px;padding:8px 6px}
 #website-articles-panel.workspace-page #wa-lists .subnav-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:visible;gap:0;width:100%}
 #website-articles-panel.workspace-page #wa-lists .subnav-tab{font-size:12px;min-width:0;padding:11px 4px;text-align:center;white-space:normal}
 #website-articles-panel.workspace-page .wa-head h2{font:650 21px/1.3 var(--sans)}
 #website-articles-panel.workspace-page .wa-article-actions button{font-size:13px;min-height:40px;padding:8px 14px}
 #website-articles-panel.workspace-page .wa-head h2{font-size:18px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
 .workspace-messages-context{gap:8px 16px;margin-bottom:12px}
 #messages-primary-tabs{gap:18px}
 #messages-primary-tabs a{font-size:14px}
}
@media(max-width:1100px){.workspace-grid{grid-template-columns:minmax(0,1fr) 270px;gap:22px}.workspace-more-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:860px){
 .workspace-grid{display:block}.workspace-context{margin-top:24px;gap:22px}.workspace-page>.page-heading{margin-bottom:22px;gap:14px}.workspace-page>.page-heading>.actions{width:100%;gap:8px}.workspace-page>.page-heading>.actions .primary{flex:1}.workspace-page .today-alerts{margin-bottom:20px}.workspace-page .card-head h2{font-size:20px}.workspace-page .card-head .hint{max-width:17ch;font-size:11px}.workspace-page .today-list li{grid-template-columns:58px minmax(0,1fr);gap:8px 12px}.workspace-page .today-list .t-what strong{font-size:15px}.workspace-more-grid{display:block}.workspace-more-grid>.settings-card{margin-bottom:18px}.workspace-more>summary small{display:block;margin:6px 0 0 17px}.workspace-page .today-ask{padding:16px}.workspace-page .today-ask .tq-form>.actions{flex-wrap:wrap}.workspace-page .today-ask textarea{height:48px}.workspace-page .today-ask .tq-form .pf-field>label{font-size:13px}.workspace-page .today-ask .actions button[type=submit]{font-size:14px;padding:9px 17px}.workspace-task-list{grid-template-columns:1fr}
}
/* Today > Waiting for your approval (owners, 2026-10-21): one fixed-height row per staff profile, the main action (Review) on the row. */
.approval-list{list-style:none;margin:0;padding:0}
.approval-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:8px 0;border-top:1px solid var(--line);box-sizing:border-box}
.approval-row:first-child{border-top:0}
.approval-what{display:flex;flex-direction:column;gap:2px;min-width:0}
.approval-what strong{font-size:16px;line-height:1.35;font-weight:650;color:var(--ink);overflow-wrap:anywhere}
.approval-what span{font-size:13px;line-height:1.5;color:var(--muted);overflow-wrap:anywhere}
.approval-row .button{flex:none;min-height:44px;display:inline-flex;align-items:center}

/* Schedule > Reception shifts, Schedule > Timesheet and Business > Payroll (review/reception.js). On the tokens of tokens.css; one column
   and no sideways scroll on a phone; 44 px targets there. */
.rs-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin:0 0 12px}
.rs-period{font:500 18px/1.3 var(--serif);margin:0 0 0 6px}
.rs-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;align-items:start}
.rs-day{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:10px 8px;min-width:0}
.rs-day h3{font-size:13px;margin:0 0 8px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rs-today{border-color:var(--selected-line);box-shadow:inset 0 3px 0 var(--gold)}
.rs-list,.rs-request-list,.ts-history{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.rs-shift{display:grid;gap:4px;padding:8px;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius);background:var(--paper);font-size:13px;min-width:0}
.rs-shift-open{border-left-color:var(--gold);background:var(--warn-bg)}
.rs-shift-mine{background:var(--accent-soft)}
.rs-time{font-weight:700;font-variant-numeric:tabular-nums}
.rs-who{overflow-wrap:anywhere}
.rs-open{font-weight:600;color:var(--warn)}
.rs-note{color:var(--muted);font-size:var(--text-sm);overflow-wrap:anywhere}
.rs-empty{color:var(--muted);font-size:var(--text-sm);padding:4px 2px}
.rs-tags{display:flex;flex-wrap:wrap;gap:4px}
.rs-tags:empty{display:none}
.rs-tag{font:700 10px/1.5 var(--sans);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line);border-radius:999px;padding:0 7px;color:var(--muted);background:var(--paper);white-space:nowrap}
.rs-tag-you,.rs-tag-today{color:var(--accent);border-color:var(--selected-line)}
.rs-tag-offer{color:var(--warn);border-color:var(--warn-line);background:var(--warn-bg)}
.rs-tag-wait{color:var(--ink);border-color:var(--field-line)}
.rs-tag-late{color:var(--danger);border-color:var(--danger-line);background:var(--danger-bg)}
.rs-tag-state[data-state="confirmed"]{color:var(--ok);border-color:var(--ok);background:var(--ok-bg)}
.rs-tag-state[data-state="submitted"]{color:var(--ink);border-color:var(--field-line)}
.rs-tag-state[data-state="open"],.rs-tag-state[data-state="not_started"]{color:var(--warn);border-color:var(--warn-line);background:var(--warn-bg)}
.rs-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.rs-actions button,.rs-actions .button{padding:5px 9px;min-height:32px;font-size:var(--text-sm)}
.rs-request{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}
.rs-request:last-child{border-bottom:0}
/* the timesheet */
.ts-person label{margin-top:0}
.ts-person select{min-width:220px}
.ts-deadline{display:block}
.ts-deadline strong{display:block}
.ts-locked{border-left-color:var(--danger)}
.ts-state{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 12px}
.ts-pill{font-weight:700}
.ts-pill[data-state="confirmed"]{background:var(--ok-bg);color:var(--ok)}
.ts-pill[data-state="open"]{background:var(--warn-bg);color:var(--warn)}
.ts-late-note{margin:0 0 12px}
.ts-table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
.ts-table th,.ts-table td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.ts-table thead th{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.ts-table tbody th{white-space:nowrap;font-weight:600}
.ts-table tfoot th,.ts-table tfoot td{font-weight:700;border-bottom:0;border-top:2px solid var(--line)}
.ts-today th{color:var(--accent)}
.ts-input{max-width:84px;min-height:34px;padding:5px 8px;text-align:right}
.ts-value{display:inline-block;min-width:3em}
.ts-zero{color:var(--muted)}
.ts-total{font-weight:700}
.ts-reception{min-width:180px}
.ts-shift{display:grid;gap:3px;margin-top:6px;padding-top:6px;border-top:1px dashed var(--line);font-size:var(--text-sm);color:var(--muted)}
.ts-shift-hours{color:var(--ink)}
.ts-error{color:var(--danger);font-size:13px;font-weight:600;margin:8px 0 0}
.ts-error:empty{display:none}
.ts-history li{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;font-size:13px;padding:6px 0;border-bottom:1px solid var(--line)}
.ts-when{color:var(--muted);font-variant-numeric:tabular-nums;min-width:118px}
/* notes (platform 0060): a day's note in its row, the pay period's under the table */
.ts-note{min-width:200px}
.ts-note-input{width:100%;min-height:34px;padding:5px 8px}
.ts-note-text{overflow-wrap:anywhere;white-space:normal}
.ts-period-note{display:grid;gap:4px;margin:12px 0 0;max-width:640px}
.ts-period-note label{margin:0}
.ts-period-note p{margin:0}
.pr-table .pr-notes-row td{padding-top:0;border-top:0;font-size:var(--text-sm);text-align:left}
.pr-notes{list-style:none;margin:0;padding:0 0 4px;display:grid;gap:2px;overflow-wrap:anywhere}
/* payroll */
.pr-card{overflow:hidden}
.pr-num{text-align:right;font-variant-numeric:tabular-nums}
.pr-total{font-weight:700}
.pr-table tfoot th,.pr-table tfoot td{font-weight:700;border-top:2px solid var(--line)}
/* the dialog */
.rcp-dialog{max-width:min(520px,calc(100% - 32px));width:100%;padding:22px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);color:var(--ink)}
.rcp-dialog::backdrop{background:var(--backdrop)}
.rcp-dialog h2{font:500 20px/1.25 var(--serif);margin:0 0 8px}
.rcp-dialog .actions{justify-content:flex-end;margin-top:16px}
.rcp-dialog input[type=date],.rcp-dialog input[type=time]{max-width:220px}
button.danger{background:var(--danger);border-color:var(--danger);color:var(--on-accent)}
/* Today: at the desk now */
.today-desk-now{margin:0;font-size:var(--text-md);min-height:1.5em}
#today-desk-next{min-height:1.55em;margin:4px 0 0}
.today-desk-now strong{font-weight:700}
@media(max-width:1100px){.rs-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:860px){
  .rs-grid{grid-template-columns:1fr}
  .rs-actions button,.rs-actions .button,.rs-toolbar button{min-height:44px}
  .rs-period{margin:4px 0 0;width:100%}
  /* The timesheet and the payroll table become one card per row: no sideways scroll on a phone. */
  .ts-table thead,.pr-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
  .ts-table tr,.pr-table tr{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;padding:10px 0;border-bottom:1px solid var(--line)}
  .ts-table th,.ts-table td,.pr-table th,.pr-table td{border:0;padding:2px 0}
  .ts-table tbody th,.ts-table tfoot th,.pr-table tbody th,.pr-table tfoot th{grid-column:1/-1;font-size:var(--text-md)}
  .ts-table td[data-label]::before,.pr-table td[data-label]::before{content:attr(data-label);display:block;font:700 var(--text-xs)/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
  .ts-reception{grid-column:1/-1;min-width:0}
  .ts-note,.pr-table .pr-notes-row td{grid-column:1/-1;min-width:0;text-align:left}
  .ts-note-empty,.ts-note-foot{display:none}
  .ts-note-input{min-height:44px}
  .ts-input{max-width:none;width:100%;min-height:44px}
  .pr-num{text-align:left}
  .pr-table td:empty{display:none}
  .ts-person select{min-width:0}
}

/* One-tap reasons (review/quick-reason.js). Built into app.css; the CSP allows no inline style. */
.qr-dialog{max-width:min(520px,calc(100% - 32px));width:100%;padding:22px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);color:var(--ink)}
.qr-dialog::backdrop{background:var(--backdrop)}
.qr-dialog h2{font:500 20px/1.25 var(--serif);margin:0 0 8px}
.qr-reasons{display:grid;grid-template-columns:1fr;gap:10px;margin:14px 0 8px}
.qr-reasons .qr-reason{min-height:48px;width:100%;text-align:left;padding:10px 14px;font-size:16px}
.qr-reasons .qr-reason[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent)}
.qr-dialog .qr-edit{min-height:44px;background:none;border-color:transparent;color:var(--accent);text-decoration:underline;padding-inline:4px}
.qr-dialog .qr-edit[aria-pressed=true]{text-decoration:none;font-weight:600}
.qr-note{margin-top:8px}.qr-note[hidden],.qr-dialog [hidden]{display:none!important}
.qr-error{color:var(--danger);min-height:1.4em;margin:8px 0 0;font-size:var(--text-sm)}
.qr-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:12px}
.qr-actions button{min-height:44px}
.qr-dialog label{display:block;margin-top:12px;font-weight:600}
.qr-dialog button.danger{background:var(--danger);border-color:var(--danger);color:var(--on-accent)}
@media(min-width:560px){.qr-reasons{grid-template-columns:1fr 1fr}}

/* Settings > Switch-over setup: review/switchover.js. Colours and type from tokens.css; the tab bar is .subnav (tokens.css). Phone first:
   one column, 44 px tap targets, nothing wider than the screen at 390 px. */
#sw-status:empty{display:none}
.sw-progress{margin:-6px 0 14px;font-size:var(--text-lg);font-weight:600;color:var(--ink)}
.sw-progress:empty{display:none}
.sw-meter{display:block;height:8px;margin-top:6px;background:var(--soft);border-radius:var(--radius);overflow:hidden;max-width:520px}
.sw-meter-fill{display:block;height:100%;background:var(--accent);border-radius:var(--radius)}
.sw-screen{display:grid;gap:12px;max-width:760px;min-width:0}
.sw-screen[hidden]{display:none}
.sw-item{margin:0;min-width:0;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);padding:12px 14px}
.sw-item-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 10px}
.sw-item-title{font:600 var(--text-lg)/1.3 var(--sans);margin:0;color:var(--ink);overflow-wrap:anywhere;min-width:0}
.sw-item .hint{margin:6px 0 0}
.sw-status{display:inline-block;font-size:var(--text-sm);font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap}
.sw-status-answered{background:var(--ok-bg);color:var(--ok)}
.sw-status-open{background:var(--warn-bg);color:var(--warn)}
.sw-status-waiting{background:var(--soft);color:var(--muted)}
.sw-facts{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:2px;font-size:var(--text-md);color:var(--muted)}
.sw-facts strong{color:var(--ink);font-weight:600}
.sw-choices{display:grid;gap:8px;margin:10px 0 0}
.sw-choice{display:flex;align-items:center;justify-content:flex-start;gap:8px;width:100%;min-height:44px;text-align:left;padding:8px 12px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:500 var(--text-md)/1.3 var(--sans);cursor:pointer}
.sw-choice:hover{background:var(--hover)}
.sw-choice[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:700}
.sw-choice[aria-pressed="true"]::before{content:"\2713";font-weight:700}
.sw-choice:disabled{opacity:.6;cursor:default}
.sw-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 0}
.sw-row input[type="number"]{width:7em;min-height:44px}
.sw-row input[type="date"]{min-height:44px}
.sw-row select{min-height:44px;max-width:100%}
.sw-row label{display:inline-flex;align-items:center;gap:6px;min-height:44px}
.sw-row button{min-height:44px}
.sw-answered{margin:8px 0 0;font-size:var(--text-sm);color:var(--muted)}
.sw-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line);border-radius:var(--radius);padding:8px 10px;margin:8px 0 0;font-weight:600;overflow-wrap:anywhere}
.sw-error:empty{display:none}
.sw-card-note{margin:0;border-left:3px solid var(--gold);background:var(--soft);padding:8px 10px;font-size:var(--text-md);overflow-wrap:anywhere}
.sw-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0}
.sw-chip{min-height:40px;padding:6px 12px;border:1px solid var(--field-line);border-radius:999px;background:var(--paper);color:var(--ink);font:600 var(--text-md)/1.2 var(--sans);cursor:pointer}
.sw-chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.sw-group-title{font:500 19px/1.25 var(--serif);margin:6px 0 0}
.sw-unavailable{margin:0;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);padding:14px}
.sw-unavailable strong{display:block;font-size:var(--text-lg);margin-bottom:4px}
.sw-change{margin:10px 0 0;padding:10px;border:1px dashed var(--field-line);border-radius:var(--radius)}
.sw-change[hidden]{display:none}
/* Autopays (A038) */
.sw-why{margin:8px 0 0;padding-left:18px;display:grid;gap:4px;font-size:var(--text-md);color:var(--ink);overflow-wrap:anywhere}
.sw-bulk{border-color:var(--accent);background:var(--accent-soft)}
.sw-carried{display:grid;gap:12px;min-width:0}
.sw-carried>summary{cursor:pointer;min-height:44px;display:flex;align-items:center}
.sw-row-wide input[type="text"]{flex:1 1 220px;min-width:0;min-height:44px}
.sw-row input[type="number"][inputmode="decimal"]{width:8em}
.sw-converted-note{color:var(--ink);font-weight:600}
.sw-progress-sub{display:block;margin-top:4px;font-size:var(--text-md);font-weight:500;color:var(--muted)}
@media(max-width:860px){.sw-item{padding:12px}.sw-progress{margin-top:0}}

.rights-comparison { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
#sw-screen-rights { max-width:1100px; padding:16px; background:var(--page); color:var(--ink); }
#sw-screen-rights select, #sw-screen-rights textarea { max-width:100%; min-width:0; background:var(--paper); color:var(--ink); border:1px solid var(--line); padding:8px; font:inherit; }
#sw-screen-rights button { background:var(--accent); color:var(--on-accent,white); padding:8px 12px; border:0; cursor:pointer; }
@media(prefers-color-scheme:dark) { #sw-screen-rights { color-scheme:dark; --page:#1c1c20; --paper:#26262c; --ink:#f2eff0; --line:#65616a; --muted:#c4bec5; --accent:#a83248; } }
.rights-comparison pre { white-space:pre-wrap; overflow-wrap:anywhere; font:inherit; font-size:.875rem; }
#sw-screen-rights form { display:grid; gap:.75rem; }
#sw-screen-rights label { display:grid; gap:.35rem; }
@media(max-width:640px) { .rights-comparison { grid-template-columns:1fr; } }

/* Settings > Switch-over setup > Clients: review/client-match.js. Tokens from tokens.css. Phone first: one column, 44 px tap targets,
   nothing wider than the screen at 360 px; the two records sit side by side from 640 px. */
.cm-head{display:grid;gap:10px;min-width:0}
.cm-summary{margin:0;font-weight:600;color:var(--ink);font-size:var(--text-md)}
.cm-groups{display:flex;flex-wrap:wrap;gap:6px}
.cm-group{min-height:44px;padding:6px 12px;border:1px solid var(--field-line);border-radius:999px;background:var(--paper);color:var(--ink);font:500 var(--text-sm)/1.2 var(--sans);cursor:pointer}
.cm-group[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:700}
.cm-intro{margin:0}
.cm-notice{margin:0;padding:8px 12px;border-radius:var(--radius);background:var(--ok-bg);color:var(--ok);font-weight:600}
.cm-batch{display:grid;gap:6px}
.cm-batch-button{min-height:48px;width:100%;max-width:420px;border:0;border-radius:var(--radius);background:var(--accent);color:var(--on-accent);font:700 var(--text-md)/1.2 var(--sans);cursor:pointer}
.cm-batch-button:hover{background:var(--accent-hover)}
.cm-batch-button:disabled{opacity:.6;cursor:default}
.cm-empty{margin:0;color:var(--muted)}
.cm-card{margin:0;min-width:0;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:var(--radius-card);background:var(--paper);padding:12px 14px;display:grid;gap:10px}
.cm-tier-high{border-left-color:var(--ok)}
.cm-tier-medium{border-left-color:var(--warn)}
.cm-tier-low{border-left-color:var(--danger)}
.cm-card-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 10px}
.cm-tier{font-size:var(--text-sm);font-weight:700;padding:2px 8px;border-radius:999px;background:var(--soft);color:var(--ink)}
.cm-tier-high .cm-tier{background:var(--ok-bg);color:var(--ok)}
.cm-tier-medium .cm-tier{background:var(--warn-bg);color:var(--warn)}
.cm-tier-low .cm-tier{background:var(--danger-bg);color:var(--danger)}
.cm-id{font-size:var(--text-xs);color:var(--muted)}
.cm-sides{display:grid;gap:10px;grid-template-columns:minmax(0,1fr)}
@media (min-width:640px){.cm-sides{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.cm-side{min-width:0;display:grid;gap:2px;align-content:start;padding:8px 10px;border-radius:var(--radius);background:var(--soft)}
.cm-side-title{font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.cm-name{font-size:var(--text-lg);color:var(--ink);overflow-wrap:anywhere}
.cm-none{color:var(--muted)}
.cm-facts{margin:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 8px;font-size:var(--text-sm)}
.cm-facts dt{color:var(--muted)}
.cm-facts dd{margin:0;color:var(--ink);overflow-wrap:anywhere}
.cm-signals{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px}
.cm-signal{font-size:var(--text-sm);padding:2px 8px;border-radius:999px;background:var(--ok-bg);color:var(--ok)}
.cm-signal-warn{background:var(--warn-bg);color:var(--warn)}
.cm-reason{display:grid;gap:4px}
.cm-reason-text{margin:0;color:var(--ink);font-size:var(--text-md)}
.cm-reason-edit{justify-self:start;min-height:44px;padding:0;border:0;background:none;color:var(--accent);font:500 var(--text-sm)/1.2 var(--sans);text-decoration:underline;cursor:pointer}
.cm-reason-label{font-size:var(--text-sm);font-weight:600;color:var(--ink)}
.cm-reason-input{width:100%;min-height:64px;font:inherit;padding:8px;border:1px solid var(--field-line);border-radius:var(--radius);box-sizing:border-box}
.cm-by{margin:0;font-size:var(--text-sm);color:var(--muted)}
.cm-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}
.cm-action{min-height:48px;padding:8px 12px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:600 var(--text-md)/1.2 var(--sans);cursor:pointer}
.cm-action:hover{background:var(--hover)}
.cm-action-primary{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}
.cm-action-primary:hover{background:var(--accent-hover)}
.cm-action:disabled{opacity:.6;cursor:default}
.cm-merge{display:grid;gap:8px;padding:10px;border:1px dashed var(--field-line);border-radius:var(--radius)}
.cm-merge-title{margin:0;font-weight:600}
.cm-merge-list{display:grid;gap:6px}
.cm-search{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.cm-search .cm-reason-label{flex-basis:100%}
.cm-search-input{flex:1 1 180px;min-width:0;min-height:44px;padding:6px 10px;border:1px solid var(--field-line);border-radius:var(--radius);font:inherit}
.cm-more{justify-self:start;min-height:44px}

/* Schedule > Class editor (A038): review/class-editor.js. Colours and type from tokens.css; the tab bar is .subnav. Phone first: one column,
   44 px tap targets, nothing wider than the screen at 390 px. */
#ce-status:empty{display:none}
.ce-head-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ce-head-actions .button{min-height:44px}
.ce-screen{display:grid;gap:12px;max-width:760px;min-width:0}
.ce-screen[hidden]{display:none}
.ce-unavailable{margin:0;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);padding:14px}
.ce-unavailable strong{display:block;font-size:var(--text-lg);margin-bottom:4px}
.ce-day{display:grid;gap:8px;min-width:0}
.ce-day-title{font:500 19px/1.25 var(--serif);margin:8px 0 0}
details.ce-day>summary{cursor:pointer;min-height:44px;display:flex;align-items:center}
.ce-row{display:grid;gap:2px;min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);color:var(--ink);text-decoration:none}
.ce-row:hover{background:var(--hover)}
.ce-row-top{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 10px}
.ce-row-title{font:600 var(--text-lg)/1.3 var(--sans);overflow-wrap:anywhere;min-width:0}
.ce-row-line{font-size:var(--text-md);color:var(--muted);overflow-wrap:anywhere}
.ce-row-next{color:var(--ink)}
.ce-brand{display:inline-block;font-size:var(--text-sm);font-weight:700;padding:2px 8px;border-radius:999px;background:var(--soft);color:var(--muted);white-space:nowrap}
.ce-brand-midtown,.ce-brand-spotlight{background:var(--accent-soft);color:var(--accent)}
.ce-editor-head{display:grid;gap:4px;min-width:0}
.ce-editor-head .hint{margin:0}
.ce-back{font-size:var(--text-md);min-height:32px;display:inline-flex;align-items:center}
.ce-editor-title{font:500 22px/1.25 var(--serif);margin:0;overflow-wrap:anywhere}
.ce-result{border-left:3px solid var(--accent);background:var(--soft);padding:8px 10px;border-radius:var(--radius)}
.ce-result p{margin:2px 0;overflow-wrap:anywhere}
.ce-tab{display:grid;gap:12px;min-width:0}
.ce-field{display:grid;gap:4px;min-width:0}
.ce-field label,.ce-label{font-weight:600;font-size:var(--text-md);margin:0}
.ce-field input[type="text"],.ce-field textarea,.ce-field select{width:100%;max-width:100%;min-height:44px;box-sizing:border-box}
.ce-field input[type="number"]{width:8em;min-height:44px}
.ce-field input[type="date"],.ce-field input[type="time"]{min-height:44px;max-width:100%}
.ce-field .hint{margin:0}
.ce-group{margin:0;min-width:0;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);padding:10px 12px;display:grid;gap:8px}
.ce-group>legend{font-weight:700;padding:0 4px}
.ce-choices{display:grid;gap:8px}
.ce-choice{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;width:100%;min-height:44px;text-align:left;padding:8px 12px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:500 var(--text-md)/1.3 var(--sans);cursor:pointer}
.ce-choice:hover{background:var(--hover)}
.ce-choice[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:700}
.ce-choice-help{font-weight:400;font-size:var(--text-sm);color:var(--muted)}
.ce-check{display:flex;align-items:center;gap:8px;min-height:44px;overflow-wrap:anywhere}
.ce-check input{width:20px;height:20px;flex:none}
.ce-checks{display:grid;gap:0}
.ce-row-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ce-row-actions button{min-height:44px}
.ce-brand-line{margin:0}
.ce-warn{margin:0;border-left:3px solid var(--gold);background:var(--warn-bg);color:var(--ink);padding:8px 10px;border-radius:var(--radius)}
.ce-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line);border-radius:var(--radius);padding:8px 10px;margin:0;font-weight:600;overflow-wrap:anywhere}
.ce-error:empty{display:none}
.ce-sub{display:grid;gap:8px;padding:10px;border:1px dashed var(--field-line);border-radius:var(--radius);min-width:0}
.ce-sub>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600}
.ce-sub-title{font:600 var(--text-lg)/1.3 var(--sans);margin:4px 0 0}
.ce-dates{margin:0;padding-left:18px;display:grid;gap:4px;font-size:var(--text-md);overflow-wrap:anywhere}
.ce-preview{display:grid;gap:6px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);padding:14px;min-width:0;overflow-wrap:anywhere}
.ce-preview p{margin:0}
.ce-preview-title{font:500 22px/1.25 var(--serif);margin:0}
.ce-preview-when{font-weight:600}
.ce-preview-meta{color:var(--muted);font-size:var(--text-md)}
.ce-preview-action{justify-self:start;margin-top:4px;padding:8px 14px;border-radius:var(--radius);background:var(--accent);color:var(--on-accent);font-weight:700}
.ce-save-bar{position:sticky;bottom:0;z-index:2;display:grid;gap:6px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);box-shadow:0 -2px 8px rgba(0,0,0,.06)}
.ce-save-words{margin:0;font-weight:600}
@media(max-width:860px){.ce-save-bar{bottom:calc(var(--bottombar-h) + env(safe-area-inset-bottom))}}

/* Website > Traffic: review/website-traffic.js. Colours and type from tokens.css; the tab bar is .subnav (tokens.css). */
.wt-head-actions{display:flex;gap:8px;align-items:center}
#wt-status:empty{display:none}
.wt-screen{display:grid;gap:14px;max-width:1080px}
.wt-screen[hidden]{display:none}
.wt-card{margin:0;min-width:0}
.wt-card-title{font:500 19px/1.25 var(--serif);margin:0 0 8px}
.wt-card .hint{margin:4px 0}
.wt-off{margin:0;color:var(--muted)}
.wt-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line);border-radius:var(--radius);padding:10px 12px;margin:0;font-weight:600}
.wt-tiles{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.wt-tile{border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;background:var(--soft)}
.wt-tile-label{display:block;font-size:var(--text-sm);color:var(--muted)}
.wt-tile-value{display:block;font:600 24px/1.2 var(--sans);font-variant-numeric:tabular-nums;color:var(--ink)}
.wt-tile-change{display:block;font-size:var(--text-sm);color:var(--muted)}
.wt-up{color:var(--ok)}
.wt-down{color:var(--danger)}
.wt-chart{margin-top:12px}
.wt-chart svg{width:100%;height:auto;display:block}
.wt-chart .wt-grid{stroke:var(--line);stroke-width:1}
.wt-chart .wt-axis{fill:var(--muted);font-size:11px}
.wt-chart .wt-line{fill:none;stroke:var(--accent,#263f3a);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.wt-chart .wt-dot{fill:var(--accent,#263f3a)}
.wt-chart-title{font-size:var(--text-sm);font-weight:700;margin:0 0 2px}
.wt-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--radius);margin-top:10px}
.wt-table{border-collapse:collapse;min-width:100%;font-size:13px}
.wt-table caption{text-align:left;font-weight:700;font-size:var(--text-sm);padding:8px 10px 4px;color:var(--ink)}
.wt-table th,.wt-table td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.wt-table thead th{background:var(--soft);font-weight:700;white-space:nowrap}
.wt-table tbody th{font-weight:600;max-width:340px;overflow-wrap:anywhere}
.wt-num{text-align:right!important;font-variant-numeric:tabular-nums;white-space:nowrap}
.wt-ai th,.wt-ai td{background:var(--soft)}
.wt-badge{display:inline-block;margin-left:6px;padding:0 6px;border-radius:999px;border:1px solid var(--line);font-size:11px;font-weight:700}
.wt-note{margin:10px 0 0;padding:8px 10px;border-left:3px solid var(--warn);background:var(--soft);font-size:13px}
.wt-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}
@media(max-width:860px){.wt-two{grid-template-columns:minmax(0,1fr)}.wt-tile-value{font-size:20px}}

/* Website > Articles (review/website-articles.html, .js). */
.wa-head-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wa-head-actions .button{min-height:44px}
.wa-screen{display:grid;gap:12px;max-width:820px;min-width:0}
.wa-screen[hidden]{display:none}
.wa-row{display:grid;gap:4px;min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);color:var(--ink);text-decoration:none}
.wa-row:hover{background:var(--hover)}
.wa-row-top{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 10px}
.wa-row-title{font:600 var(--text-lg)/1.3 var(--sans);overflow-wrap:anywhere;min-width:0}
.wa-row-line{font-size:var(--text-md);color:var(--muted);overflow-wrap:anywhere}
.wa-status-word{display:inline-block;font-size:var(--text-sm);font-weight:700;padding:2px 10px;border-radius:999px;border:1px solid var(--line);background:var(--soft);color:var(--ink);white-space:nowrap}
.wa-status-published{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}
.wa-status-scheduled,.wa-status-in_review{background:var(--warn-bg);border-color:var(--warn-line);color:var(--ink)}
.wa-status-archived,.wa-status-unpublished{background:var(--soft);color:var(--muted)}
.wa-empty{margin:0;padding:14px;border:1px dashed var(--line);border-radius:var(--radius-card);color:var(--muted)}
.wa-pages{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wa-pages a,.wa-pages span{min-height:44px;display:inline-flex;align-items:center}
.wa-head{display:grid;gap:6px;min-width:0}
.wa-head h2{font:500 26px/1.25 var(--serif);margin:0;overflow-wrap:anywhere}
.wa-back{font-size:var(--text-md);min-height:32px;display:inline-flex;align-items:center}
.wa-form{display:grid;gap:14px;min-width:0}
.wa-field{display:grid;gap:4px;min-width:0}
.wa-field label,.wa-field legend{font-weight:600}
.wa-field input[type=text],.wa-field textarea,.wa-field input[type=datetime-local]{font:inherit;width:100%;box-sizing:border-box;min-height:44px;padding:8px 10px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--page);color:var(--ink)}
.wa-field textarea.wa-body{min-height:420px;font:15px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}
.wa-field .hint{margin:0}
.wa-topics{display:flex;flex-wrap:wrap;gap:6px 16px;border:0;padding:0;margin:0}
.wa-topics label{font-weight:400;display:inline-flex;gap:6px;align-items:center;min-height:36px}
.wa-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wa-actions button,.wa-actions .button{min-height:44px}
.wa-actions button.danger{border:1px solid var(--danger-line);color:var(--danger);background:var(--page)}
.wa-notice{margin:0;padding:12px 14px;border:1px solid var(--warn-line);border-radius:var(--radius-card);background:var(--warn-bg)}
.wa-error{margin:0;padding:12px 14px;border:1px solid var(--danger-line);border-radius:var(--radius-card);background:var(--danger-bg);color:var(--ink)}
.wa-ok{margin:0;padding:12px 14px;border:1px solid var(--ok);border-radius:var(--radius-card);background:var(--ok-bg)}
.wa-facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 14px;margin:0}
.wa-facts dt{font-weight:600}
.wa-facts dd{margin:0;overflow-wrap:anywhere}
.wa-preview-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wa-preview-bar button[aria-pressed=true]{background:var(--selected);border-color:var(--selected-line)}
.wa-frame-wrap{overflow:auto;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--soft);padding:12px}
.wa-frame{display:block;border:1px solid var(--line);background:#fff;width:100%;height:900px;margin:0 auto}
.wa-frame.wa-phone{width:390px;max-width:none}
.wa-link-out{display:grid;gap:6px}
.wa-link-out input{font:inherit;width:100%;box-sizing:border-box;min-height:44px;padding:8px 10px;border:1px solid var(--field-line);border-radius:var(--radius)}
.wa-history{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.wa-history li{padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);display:grid;gap:4px}
.wa-version{white-space:pre-wrap;overflow-wrap:anywhere;font:14px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;max-height:480px;overflow:auto;padding:12px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--page)}
.wa-help summary{cursor:pointer;min-height:36px;display:flex;align-items:center}
.wa-help pre{white-space:pre-wrap;font:14px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;margin:6px 0 0}
@media(max-width:600px){.wa-facts{grid-template-columns:1fr}.wa-facts dd{margin-bottom:6px}.wa-frame.wa-phone{width:390px}}

/* Website > Change log (review/website-changes.html, .js). */
.wc-head-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wc-head-actions .button{min-height:44px}
.wc-screen{display:grid;gap:12px;max-width:820px;min-width:0}
.wc-screen[hidden]{display:none}
.wc-entry{display:grid;gap:6px;min-width:0;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);color:var(--ink)}
.wc-entry.wc-is-hidden{background:var(--soft);color:var(--muted)}
.wc-when{font-size:var(--text-md);color:var(--muted)}
.wc-title{font:600 var(--text-lg)/1.3 var(--sans);margin:0;overflow-wrap:anywhere}
.wc-summary{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.wc-meta{margin:0;font-size:var(--text-sm);color:var(--muted);overflow-wrap:anywhere}
.wc-meta code{font-size:inherit}
.wc-pages{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.wc-pages li{font-size:var(--text-sm);padding:2px 10px;border-radius:999px;border:1px solid var(--line);background:var(--soft)}
.wc-more summary{cursor:pointer;min-height:32px;display:flex;align-items:center;font-weight:600}
.wc-more p{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0 0}
.wc-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wc-actions button,.wc-actions .button{min-height:44px}
.wc-hidden-word{display:inline-block;font-size:var(--text-sm);font-weight:700;padding:2px 10px;border-radius:999px;border:1px solid var(--line);background:var(--soft);color:var(--ink);white-space:nowrap}
.wc-empty{margin:0;padding:14px;border:1px dashed var(--line);border-radius:var(--radius-card);color:var(--muted)}
.wc-pager{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}
.wc-pager a{min-height:44px;display:inline-flex;align-items:center}
.wc-form{display:grid;gap:14px;min-width:0}
.wc-field{display:grid;gap:4px;min-width:0}
.wc-field label{font-weight:600}
.wc-field input[type=text],.wc-field textarea,.wc-field input[type=datetime-local]{font:inherit;width:100%;box-sizing:border-box;min-height:44px;padding:8px 10px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--page);color:var(--ink)}
.wc-field textarea{min-height:120px}
.wc-field .hint{margin:0}
.wc-error{margin:0;padding:10px 12px;border:1px solid var(--warn-line);border-radius:var(--radius);background:var(--warn-bg);color:var(--ink)}
.wc-history{display:grid;gap:4px;margin:0;padding:0;list-style:none}
.wc-history li{font-size:var(--text-md);color:var(--muted)}

/* Website > Request a change and Website > Requests (review/website-requests.html, .js). */
.wr-head-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wr-head-actions button{min-height:44px}
.wr-screen{display:grid;gap:14px;max-width:820px;min-width:0}
.wr-screen[hidden]{display:none}
.wr-card{display:grid;gap:6px;min-width:0;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);color:var(--ink)}
.wr-card h2,.wr-card h3{font:600 var(--text-lg)/1.3 var(--sans);margin:0;overflow-wrap:anywhere}
.wr-top{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:var(--text-md);color:var(--muted)}
.wr-pill{display:inline-block;font-size:var(--text-sm);font-weight:700;padding:2px 10px;border-radius:999px;border:1px solid var(--line);background:var(--soft);color:var(--ink);white-space:nowrap}
.wr-pill.wr-approved{border-color:var(--accent);color:var(--ink)}
.wr-pill.wr-urgent{border-color:var(--warn-line);background:var(--warn-bg)}
.wr-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.wr-label{margin:0;font-size:var(--text-sm);font-weight:700;color:var(--muted)}
.wr-reply{margin:0;padding:10px 12px;border-left:3px solid var(--accent);background:var(--soft);white-space:pre-wrap;overflow-wrap:anywhere}
.wr-meta{margin:0;font-size:var(--text-sm);color:var(--muted);overflow-wrap:anywhere}
.wr-clip{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.wr-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wr-actions button,.wr-actions .button{min-height:44px}
.wr-empty{margin:0;padding:14px;border:1px dashed var(--line);border-radius:var(--radius-card);color:var(--muted)}
.wr-error{margin:0;padding:10px 12px;border:1px solid var(--warn-line);border-radius:var(--radius);background:var(--warn-bg);color:var(--ink)}
.wr-notice{margin:0;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--soft);color:var(--ink)}
.wr-form{display:grid;gap:14px;min-width:0}
.wr-field{display:grid;gap:4px;min-width:0;margin:0;padding:0;border:0}
.wr-field>label,.wr-field legend{font-weight:600;padding:0}
.wr-field input[type=text],.wr-field input[type=url],.wr-field textarea,.wr-field select{font:inherit;width:100%;box-sizing:border-box;min-height:44px;padding:8px 10px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--page);color:var(--ink)}
.wr-field textarea{min-height:110px}
.wr-field .hint{margin:0}
.wr-choices{display:flex;flex-wrap:wrap;gap:8px 18px}
.wr-choices label{display:inline-flex;gap:6px;align-items:center;min-height:44px;font-weight:400}
.wr-files{display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none}
.wr-files li{display:grid;gap:4px;max-width:180px;font-size:var(--text-sm);overflow-wrap:anywhere}
.wr-files img{display:block;max-width:180px;max-height:140px;border-radius:var(--radius);border:1px solid var(--line);object-fit:cover}
.wr-history{display:grid;gap:4px;margin:0;padding:0;list-style:none}
.wr-history li{font-size:var(--text-md);color:var(--muted);overflow-wrap:anywhere}
.wr-pager{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}
.wr-pager a{min-height:44px;display:inline-flex;align-items:center}
.wr-decide{display:grid;gap:10px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--soft)}
.wr-decide h2{font:600 var(--text-lg)/1.3 var(--sans);margin:0}
.wr-subhead{font:600 var(--text-lg)/1.3 var(--sans);margin:8px 0 0}
.wr-back{min-height:44px;display:inline-flex;align-items:center}
.wr-choices input[type=radio]{flex:none;width:20px;height:20px;min-height:0;margin:0;padding:0}
/* A060: how to ask, at the top of Request a change (large, phone-friendly). */
.wr-howto{border:2px solid var(--line,#d9dde3);border-radius:12px;background:var(--panel,#fffdf7);padding:1rem 1.15rem;margin:0 0 1.25rem;font-size:1.08rem;line-height:1.6}
.wr-howto h2{font-size:1.3rem;margin:0 0 .5rem}
.wr-howto h3{font-size:1.1rem;margin:1rem 0 .35rem}
.wr-howto ol,.wr-howto ul{margin:0;padding-left:1.4rem}
.wr-howto li{margin:.35rem 0}
.wr-howto-hide{margin-top:.75rem}
.wr-howto-show{margin:0 0 1rem}
.wr-queue-howto{font-size:1rem;margin:.25rem 0 1rem}
@media (max-width:520px){.wr-howto{font-size:1.05rem;padding:.85rem .9rem}}

/* Website requests with a preview (review/site-request-previews.js). */
.srp-rev{border-top:1px solid var(--line,#d9dde3);margin-top:.75rem;padding-top:.75rem}
.srp-rev-title{font-weight:600;margin:0 0 .35rem}
.srp-diff{display:grid;gap:.5rem;margin:.5rem 0}
.srp-change{background:var(--panel-2,#f6f7f9);border-radius:8px;padding:.5rem .75rem;overflow-wrap:anywhere}
.srp-file{font:600 .8rem/1.3 ui-monospace,Consolas,monospace;margin:0 0 .25rem;color:var(--muted,#555)}
.srp-before,.srp-after{margin:0 0 .35rem;font-size:.92rem;line-height:1.45}
.srp-ctx{color:var(--muted,#666)}
.srp-before del{background:#fde2e1;color:#7a1712;text-decoration:line-through}
.srp-after ins{background:#dcf5e3;color:#0d4f25;text-decoration:none}
.srp-problems{color:#8a1c12;margin:.25rem 0 .5rem 1.2rem}
.srp-cost{margin:.5rem 0;font-size:.9rem}
.srp-cost summary{cursor:pointer;font-weight:600}
.srp-dl{display:grid;grid-template-columns:max-content 1fr;gap:.2rem .75rem;margin:.5rem 0}
.srp-dl dt{font-weight:600;color:var(--muted,#555)}
.srp-dl dd{margin:0;overflow-wrap:anywhere}
.srp-stages{margin:0;padding-left:1.1rem}
.srp-total{font-weight:600}
.srp-summary{border:1px solid var(--line,#d9dde3);border-radius:10px;padding:.75rem 1rem;margin:0 0 1rem}
.srp-summary h2{font-size:1rem;margin:0 0 .5rem}
.srp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.75rem}
.srp-period-title{font-weight:700;margin:0}
.srp-brief{border-top:1px dashed var(--line,#d9dde3);margin-top:.5rem;padding-top:.5rem}
.srp-json{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.8rem;background:var(--panel-2,#f6f7f9);padding:.5rem;border-radius:6px;max-height:20rem;overflow:auto}
.srp-older summary{cursor:pointer;margin-top:.5rem}
@media (max-width:520px){.srp-dl{grid-template-columns:1fr}.srp-dl dt{margin-top:.35rem}}
.srp-bottom{margin-top:1.5rem}
.srp-lazy summary{cursor:pointer;font-weight:600;margin:.5rem 0}
.srp-shots{margin:.75rem 0}
.srp-shots-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:.5rem 0}
.srp-live{font-size:1.05rem;font-weight:700;padding:.7rem 1.2rem}
.srp-shot-holder{max-height:80vh;overflow:auto;border:1px solid var(--line,#d9dde3);border-radius:8px;background:#fff;text-align:center}
.srp-shot{display:block;margin:0 auto;height:auto}
.srp-shot-desktop{width:100%;max-width:1280px}
.srp-shot-phone{width:390px;max-width:100%}
.srp-tech{margin:.5rem 0;font-size:.9rem}
.srp-tech summary{cursor:pointer;color:var(--muted,#555)}
.srp-problem{color:#8a1c12;margin:.25rem 0}
/* A061: notes on a new page or event: alt text for an owner to check, the Mindbody class BEAST adds. */
.srp-notes{margin:.4rem 0}
.srp-note{margin:.25rem 0;padding:.35rem .6rem;border-left:3px solid var(--line,#d9dde3);background:var(--soft,#f6f7f9)}
.srp-note-check{border-left-color:var(--warn,#b7791f)}
.srp-alts{margin:.25rem 0 .5rem 1.2rem;font-size:.92rem}

/* Today > Late cancels and no-shows (A038): review/charge-decisions.js. Phone first: one column, 44 px tap targets, nothing wider than 390 px. */
#cd-status:empty{display:none}
.cd-screen{display:grid;gap:12px;max-width:760px;min-width:0}
.cd-unavailable{margin:0;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);padding:14px}
.cd-unavailable strong{display:block;font-size:var(--text-lg);margin-bottom:4px}
.cd-item{margin:0;min-width:0;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);padding:12px 14px;display:grid;gap:4px}
.cd-item-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 10px}
.cd-item-title{font:600 var(--text-lg)/1.3 var(--sans);margin:0;overflow-wrap:anywhere;min-width:0}
.cd-tag{display:inline-block;font-size:var(--text-sm);font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap}
.cd-tag-noshow{background:var(--warn-bg);color:var(--warn)}
.cd-tag-late{background:var(--soft);color:var(--muted)}
.cd-line{margin:0;overflow-wrap:anywhere}
.cd-muted{color:var(--muted);font-size:var(--text-md)}
.cd-uses{margin:4px 0 0;border-left:3px solid var(--gold);background:var(--soft);padding:6px 10px;overflow-wrap:anywhere}
.cd-decided{margin:4px 0 0;font-weight:700;color:var(--ink);overflow-wrap:anywhere}
.cd-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.cd-actions button{min-height:44px;min-width:96px}
.cd-form{display:grid;gap:8px;margin-top:6px;padding:10px;border:1px dashed var(--field-line);border-radius:var(--radius);min-width:0}
.cd-form>button{justify-self:start;min-height:44px}
.cd-field{display:grid;gap:4px;min-width:0}
.cd-field label{font-weight:600}
.cd-field input[type="text"]{width:100%;box-sizing:border-box;min-height:44px}
.cd-field input[type="number"]{width:8em;min-height:44px}
.cd-field .hint{margin:0}
.cd-chips{display:flex;flex-wrap:wrap;gap:6px}
.cd-chip{min-height:40px;padding:6px 12px;border:1px solid var(--field-line);border-radius:999px;background:var(--paper);color:var(--ink);font:600 var(--text-md)/1.2 var(--sans);cursor:pointer}
.cd-chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.cd-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line);border-radius:var(--radius);padding:8px 10px;margin:4px 0 0;font-weight:600;overflow-wrap:anywhere}
.cd-error:empty{display:none}

/* Mindbody gift cards held in reserve (A038): review/gift-cards.js, in People > Account details and Settings > Switch-over setup > Gift
   cards. Phone first: one column, 44 px tap targets, nothing wider than 390 px. */
.gc-box{margin-top:18px;padding-top:12px;border-top:1px solid var(--line);display:grid;gap:10px;min-width:0}
.gc-box:empty{display:none}
.gc-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px}
.gc-head h3{margin:0}
.gc-head button{min-height:44px}
.gc-search{display:grid;gap:10px;min-width:0}
.gc-search>button{justify-self:start;min-height:44px}
.gc-row{display:flex;flex-wrap:wrap;gap:10px}
.gc-field{display:grid;gap:4px;min-width:0}
.gc-field label{font-weight:600}
.gc-field input{min-height:44px;max-width:100%;box-sizing:border-box}
.gc-field input[type="search"],.gc-field input[type="text"]{width:100%}
.gc-field input[type="number"]{width:8em}
.gc-field .hint{margin:0}
.gc-card{margin:0;min-width:0;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);padding:12px 14px;display:grid;gap:6px}
.gc-card>button{justify-self:start;min-height:44px}
.gc-card-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 10px}
.gc-card-number{font:600 var(--text-lg)/1.3 var(--sans);overflow-wrap:anywhere}
.gc-status{display:inline-block;font-size:var(--text-sm);font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap}
.gc-status-held{background:var(--warn-bg);color:var(--warn)}
.gc-status-applied{background:var(--ok-bg);color:var(--ok)}
.gc-facts{margin:0;padding:0;list-style:none;display:grid;gap:2px;font-size:var(--text-md);color:var(--muted);overflow-wrap:anywhere}
.gc-applied{margin:0;font-weight:600;overflow-wrap:anywhere}
.gc-confirm{display:grid;gap:8px;padding:10px;border:1px dashed var(--field-line);border-radius:var(--radius);min-width:0}
.gc-confirm-words{margin:0;font-weight:700;overflow-wrap:anywhere}
.gc-actions{display:flex;flex-wrap:wrap;gap:8px}
.gc-actions button{min-height:44px;white-space:normal;text-align:left}
.gc-result{margin:0;border-left:3px solid var(--accent);background:var(--soft);padding:8px 10px;border-radius:var(--radius);overflow-wrap:anywhere}
.gc-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line);border-radius:var(--radius);padding:8px 10px;margin:0;font-weight:600;overflow-wrap:anywhere}
.gc-unavailable{margin:0;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);padding:14px}
.gc-unavailable strong{display:block;font-size:var(--text-lg);margin-bottom:4px}
.gc-totals{margin:0;font-size:var(--text-lg)}
.gc-history>summary{cursor:pointer;min-height:44px;display:flex;align-items:center}
.gc-history-list{margin:0;padding-left:18px;display:grid;gap:4px;font-size:var(--text-md);overflow-wrap:anywhere}
.ask-gift-hint{display:grid;gap:8px;margin:10px 0 0;border-left:3px solid var(--gold);background:var(--soft);padding:10px 12px;border-radius:var(--radius)}
.ask-gift-hint p{margin:0}
.ask-gift-hint .actions{display:flex;flex-wrap:wrap;gap:8px}
.ask-gift-hint button{min-height:44px}

/* Business > Leads: review/leads.js. Colours and type from tokens.css; the tab bar is .subnav (tokens.css). Works at 390 px: long tables
   scroll inside their own box, never the page. */
#ld-status:empty{display:none}
.ld-screen{display:grid;gap:14px;max-width:1080px;min-width:0}
.ld-screen[hidden]{display:none}
.ld-card{margin:0;min-width:0}
.ld-card-title{font:500 19px/1.25 var(--serif);margin:0 0 8px}
.ld-card .hint{margin:4px 0}
.ld-lead{font-size:var(--text-lg);font-weight:600;margin:0 0 6px;color:var(--ink)}
.ld-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line);border-radius:var(--radius);padding:8px 10px;margin:6px 0 0;font-weight:600;overflow-wrap:anywhere}
.ld-notice,.ld-off{margin:0}
.ld-off{margin:8px 0 10px}
/* The funnel: one row per stage, a CSS bar, the count and the share (text, so a screen reader reads the figures). */
.ld-bars{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ld-bar-row{display:grid;grid-template-columns:minmax(150px,240px) minmax(60px,1fr) 3.5em 3.5em;gap:10px;align-items:center;font-size:13px}
.ld-bar-label{color:var(--ink)}
.ld-bar-track{display:block;height:22px;background:var(--soft);border-radius:var(--radius);overflow:hidden}
.ld-bar-fill{display:block;height:100%;background:var(--accent);border-radius:var(--radius)}
.ld-bar-quiet .ld-bar-fill{background:var(--field-line)}
.ld-bar-count{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.ld-bar-pct{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}
.ld-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.ld-stat{border:1px solid var(--line);border-radius:var(--radius-card);padding:10px 12px;background:var(--paper);min-width:0}
.ld-stat-label{display:block;color:var(--muted);font-size:var(--text-sm)}
.ld-stat-value{display:block;font-size:20px;font-weight:700;margin-top:2px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
/* Leads per week: twelve columns. */
.ld-weeks-chart{list-style:none;margin:6px 0 0;padding:0;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:4px;align-items:end}
.ld-week{display:grid;grid-template-rows:96px auto auto;justify-items:center;gap:2px;min-width:0}
.ld-week-col{display:flex;align-items:flex-end;width:100%;height:96px}
.ld-week-fill{display:block;width:100%;background:var(--selected-line);border-radius:var(--radius) var(--radius) 0 0}
.ld-week-count{font-size:var(--text-sm);font-weight:700;font-variant-numeric:tabular-nums}
.ld-week-date{font-size:var(--text-xs);color:var(--muted);white-space:nowrap}
.ld-notes{margin:0;padding-left:18px;font-size:13px;line-height:1.6}
.ld-notes li+li{margin-top:4px}
/* Tables. */
.ld-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--radius);margin-top:10px;max-width:100%}
.ld-table-wrap:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.ld-table{border-collapse:collapse;min-width:100%;font-size:13px}
.ld-table th,.ld-table td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.ld-table thead th{background:var(--soft);font-weight:700;color:var(--ink);white-space:nowrap}
.ld-table tbody th{font-weight:600}
.ld-num{text-align:right!important;font-variant-numeric:tabular-nums}
.ld-main{display:block}
.ld-sub{display:block;color:var(--muted);font-size:var(--text-sm);margin-top:2px;overflow-wrap:anywhere}
.ld-person{min-width:180px;max-width:280px}
.ld-person .ld-main{font-weight:600}
.ld-email{overflow-wrap:anywhere;max-width:220px}
.ld-links{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:4px}
.ld-link{background:none;border:0;padding:0;color:var(--accent);text-decoration:underline;font:inherit;font-size:var(--text-sm);cursor:pointer;text-align:left;min-height:24px}
th .ld-link{font-size:13px;font-weight:600}
.ld-sort{background:none;border:0;padding:0;font:inherit;font-weight:700;color:var(--ink);cursor:pointer;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.ld-bad .ld-main{color:var(--danger);font-weight:600}
.ld-filters{display:flex;flex-wrap:wrap;gap:10px 16px;margin:4px 0 2px}
.ld-field{display:grid;gap:4px;font-size:var(--text-sm);font-weight:600;min-width:0}
.ld-field select{max-width:100%;min-width:180px}
.ld-pager{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:10px;font-size:13px}
.ld-pager-text{color:var(--muted);font-variant-numeric:tabular-nums}
.ld-backfill-out{margin-top:10px}
@media(max-width:860px){
  .ld-bar-row{grid-template-columns:minmax(0,1fr) 3em 3em}
  .ld-bar-track{grid-column:1/-1;grid-row:2}
  .ld-week-date{font-size:10px}
  .ld-field select{min-width:0;width:100%}
  .ld-filters>.ld-field{flex:1 1 140px}
}

/* Business > Gift cards: review/gift-card-sales.js. Colours and type from tokens.css; the tab bar is .subnav (tokens.css). Works at 390 px: wide tables scroll
   inside their own box, never the page. The printed card: while body has .gc-printing only .gc-print-host is shown (see the @media print block). */
#gc-status:empty{display:none}
.gc-screen{display:grid;gap:14px;max-width:880px;min-width:0}
.gc-screen[hidden]{display:none}
.gc-card{margin:0;min-width:0}
.gc-card-title{font:500 19px/1.25 var(--serif);margin:0 0 8px}
.gc-card .hint{margin:4px 0}
.gc-sub{font-size:var(--text-lg);margin:14px 0 6px}
.gc-fieldset{border:1px solid var(--line);border-radius:var(--radius-card);padding:10px 12px 12px;margin:12px 0;min-width:0}
.gc-fieldset legend{font-weight:700;padding:0 6px}
.gc-field{display:grid;gap:4px;margin:8px 0}
.gc-field label{font-weight:600}
.gc-field input,.gc-field select,.gc-field textarea{max-width:100%;width:100%;box-sizing:border-box}
.gc-inline{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.gc-inline .gc-field{flex:1 1 220px}
.gc-presets{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 8px}
.gc-preset{min-width:84px;font-weight:700}
.gc-preset[aria-pressed="true"]{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.gc-radio{display:flex;gap:8px;align-items:center;margin:6px 0}
.gc-radio input{flex:0 0 auto}
.gc-picked{font-weight:700;margin:4px 0 8px;overflow-wrap:anywhere}
.gc-found{list-style:none;margin:6px 0;padding:0;display:grid;gap:6px}
.gc-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.gc-primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.gc-primary:hover{background:var(--accent-hover)}
.gc-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line);border-radius:var(--radius);padding:8px 10px;margin:8px 0 0;font-weight:600;overflow-wrap:anywhere}
.gc-ok{background:var(--ok-bg);color:var(--ok);border-radius:var(--radius);padding:8px 10px;margin:8px 0 0;font-weight:600}
.gc-facts{margin:8px 0;display:grid;gap:4px}
.gc-facts div{display:flex;flex-wrap:wrap;gap:6px 12px}
.gc-facts dt{color:var(--muted);min-width:11em}
.gc-facts dd{margin:0;font-weight:600;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.gc-history,.gc-deliveries{margin:6px 0;padding-left:18px;font-size:13px;line-height:1.6}
.gc-slot{border-top:1px solid var(--line);margin-top:12px;padding-top:6px}
.gc-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--radius);margin-top:10px;max-width:100%}
.gc-table-wrap:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.gc-table{border-collapse:collapse;min-width:100%;font-size:13px}
.gc-table th,.gc-table td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.gc-table thead th{background:var(--soft);font-weight:700;white-space:nowrap}
.gc-table .gc-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
/* The card, on the screen and in print: Spotlight maroon and charcoal with the Midtown gold rule. */
.gc-face{border:2px solid var(--accent);border-radius:10px;background:#fbf7ee;padding:18px 20px;margin:10px 0;max-width:520px;text-align:center;color:var(--ink)}
.gc-face-studio{background:var(--ink);color:#fff;margin:-18px -20px 14px;padding:12px 16px;border-radius:8px 8px 0 0;font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:14px}
.gc-face-title{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:#500b19}
.gc-face-amount{font:700 44px/1.1 var(--serif);color:var(--accent);margin:6px 0 10px}
.gc-face-code{display:inline-block;background:#fff;border:1px solid var(--gold);border-radius:6px;padding:8px 14px;font:700 20px/1.2 'Courier New',Courier,monospace;letter-spacing:.12em;color:#1d1d1f;overflow-wrap:anywhere}
.gc-face-line{margin-top:10px;font-weight:600}
.gc-face-message{margin:12px auto 0;max-width:30em;white-space:pre-wrap;border-top:1px solid var(--gold);padding-top:10px;overflow-wrap:anywhere}
.gc-face-never{margin-top:14px;font-weight:700;color:#500b19}
.gc-face-how{margin-top:6px;font-size:13px;color:var(--muted)}
.gc-print-host{display:none}
@media print{
  body.gc-printing>*:not(.gc-print-host){display:none!important}
  body.gc-printing .gc-print-host{display:block;padding:.6in 0}
  body.gc-printing .gc-face{margin:0 auto;max-width:6in;-webkit-print-color-adjust:exact;print-color-adjust:exact;page-break-inside:avoid}
  body.gc-printing .gc-face-amount{font-size:60px}
  body.gc-printing .gc-face-code{font-size:26px}
  body.gc-printing .gc-face-how{font-size:14px;color:#404041}
}

/* Tools > Convert image and the operations half of Settings > Staff portal import (review/portal-ops.js); the reception additions (desk team, requests) and the
   Today cards. Colours and type from tokens.css. */
.ci-card,#pi-part-operations .pi-card{max-width:760px;display:grid;gap:10px}
.ci-drop{border:2px dashed var(--field-line);border-radius:var(--radius);padding:18px;text-align:center;background:var(--paper)}
.ci-drop.ci-over{border-color:var(--accent);background:var(--accent-soft)}
.ci-drop-label{display:grid;gap:4px;cursor:pointer}
.ci-drop input[type=file]{margin-top:8px;max-width:100%}
.ci-quality{display:grid;gap:4px}
.ci-quality input[type=range]{width:100%;min-height:44px}
.ci-quality input[type=number]{max-width:220px}
.ci-result{display:grid;grid-template-columns:minmax(0,220px) 1fr;gap:14px;align-items:start}
.ci-result img{max-width:100%;height:auto;border:1px solid var(--line);border-radius:var(--radius)}
.ci-result[hidden]{display:none}
#ci-status:empty,#ci-chosen:empty,#pi-status:empty,#pi-expected:empty{display:none}
.pi-found{margin:0;padding-left:18px;font-size:var(--text-sm)}
.pi-found:empty{display:none}
.pi-card input[type=date]{max-width:220px}
.pi-report{display:grid;gap:12px;max-width:960px;margin-top:14px}
.pi-report[hidden]{display:none}
.pi-section{margin:0}
.pi-section h2{font:500 18px/1.25 var(--serif);margin:0 0 6px}
.pi-section ul{margin:0;padding-left:18px;display:grid;gap:4px;font-size:var(--text-sm)}
/* Reception: the sub-screens, the desk team and the requests. */
.rs-screen[hidden],.pr-screen[hidden]{display:none}
.rs-waiting{margin:0 0 10px}
.rs-waiting a{margin-left:4px}
.rs-team-table td,.rs-team-table th{vertical-align:middle}
.rs-team-table input[type=checkbox]{width:22px;height:22px}
.rs-team-add{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0}
.rs-team-add[hidden]{display:none}
.rs-team-add select{min-width:200px;max-width:100%}
.pr-close{margin-top:14px}
.pr-close h2{font:500 18px/1.25 var(--serif);margin:0 0 6px}
#pr-close-status:empty,#rs-requests-status:empty,#rs-team-status:empty{display:none}
#today-desk-list:empty,#today-coming-up:empty{display:none}
@media (max-width:860px){.ci-result{grid-template-columns:1fr}.rs-team-table th,.rs-team-table td{padding:8px 6px}}
/* Business > Payroll > Back pay (review/back-pay.js), owners only. */
.bp-records{display:grid;gap:12px;margin:12px 0}
.bp-record{margin:0}
.bp-head{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;justify-content:space-between}
.bp-head h2{font:500 18px/1.25 var(--serif);margin:0}
.bp-facts{margin:8px 0;padding-left:18px;display:grid;gap:4px;font-size:var(--text-sm)}
.bp-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:8px 0}
.bp-lines{min-width:520px}
.pr-backpay{margin-top:14px}
.pr-backpay h2{font:500 18px/1.25 var(--serif);margin:0 0 6px}
#pr-backpay-status:empty,#bp-status:empty,#pr-backpay-total:empty{display:none}
.bp-lines td,.bp-lines th{text-align:left}
.bp-lines td.pr-num,#pr-backpay-table td.pr-num{text-align:right}
#pr-backpay-table td,#pr-backpay-table th{text-align:left}
.pi-who-table{border-collapse:collapse;width:100%}
.pi-who-table th{text-align:left;font-weight:400;padding:6px 12px 6px 0;vertical-align:middle}
.pi-who-table td{padding:6px 0}
.pi-who-table select{max-width:100%}
@media (max-width:600px){.pi-who-table tr{display:grid;gap:4px;padding:6px 0}.pi-who-table th,.pi-who-table td{padding:0}}

/* Today > Supplies (Scott, 2026-09-30; review/supplies.js). Colours and type from tokens.css; the tab bar is .subnav (tokens.css).
   Phone first: every choice is a 44 px target, and the request form is one column. */
.su-screen{max-width:860px}
.su-card{margin-bottom:14px}
.su-h2{font:500 20px/1.25 var(--serif);margin:0 0 8px}
.su-group{border:0;margin:14px 0 0;padding:0;min-width:0}
.su-group legend{font-weight:700;font-size:13px;padding:0;margin-bottom:6px}
.su-chips{display:flex;flex-wrap:wrap;gap:8px}
.su-chip{position:relative;display:inline-flex;flex-direction:column;justify-content:center;min-height:44px;padding:6px 14px;border:1px solid var(--field-line);border-radius:999px;background:var(--paper);cursor:pointer;margin:0;font-weight:600;font-size:14px;line-height:1.25;color:var(--ink)}
.su-chip:hover{background:var(--hover)}
.su-chip input{position:absolute;opacity:0;width:1px;height:1px;min-height:0;margin:0;pointer-events:none}
.su-chip:has(input:checked){background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.su-chip:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}
.su-chip-note{font-size:var(--text-xs);font-weight:600;opacity:.85}
.su-typed,.su-quantity{margin-top:10px;max-width:420px}
.su-quantity input{max-width:140px}
.su-existing:empty{display:none}
.su-existing-card{margin-top:14px;padding:12px 14px;border:1px solid var(--warn-line);background:var(--warn-bg);border-radius:var(--radius-card)}
.su-existing-card p{margin:0 0 4px}
.su-existing-title{font-weight:700;color:var(--warn)}
.su-request .pf-field{margin-top:14px;max-width:560px}
.su-send{margin-top:16px;min-height:48px;font-size:15px;min-width:220px}
.su-who{margin:10px 0 0}
.su-top{display:flex;align-items:center;justify-content:space-between;gap:8px 16px;flex-wrap:wrap;margin-bottom:12px}
.su-top p{margin:0;flex:1 1 300px}
.su-empty{margin:4px 0 14px}
.su-list{list-style:none;margin:0;padding:0}
.su-row{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:6px 14px;padding:10px 0;border-top:1px solid var(--line)}
.su-row:first-child{border-top:0}
.su-row-main{flex:1 1 280px;min-width:0}
.su-row-main p{margin:2px 0 0}
.su-row-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.su-item{font-size:15px;overflow-wrap:anywhere}
.su-amount{font-size:13px;font-weight:600}
.su-note,.su-status-note{font-size:13px;white-space:pre-line;overflow-wrap:anywhere}
.su-status-note{color:var(--muted)}
.su-row-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.su-row-actions .hint{margin:0}
.su-tag-ordered{color:var(--accent);background:var(--accent-soft);border-color:var(--selected-line)}
.su-tag-declined{color:var(--danger);background:var(--danger-bg);border-color:var(--danger-line)}
.su-decline{flex:1 1 100%;max-width:560px}
.su-pager{margin:0 0 14px}
.su-check{display:flex;align-items:center;gap:10px;min-height:44px;margin:0;font-weight:400;cursor:pointer;padding:2px 0}
.su-check input{width:20px;height:20px;min-height:0;margin:0;flex-shrink:0;accent-color:var(--accent)}
.su-check-big input{width:24px;height:24px}
.su-pick .su-check,.su-shop .su-check{border-top:1px solid var(--line)}
.su-pick legend,.su-shop legend{font:700 var(--text-sm)/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.su-shop-row{display:flex;justify-content:space-between;align-items:center;gap:6px 12px;flex-wrap:wrap;min-height:44px;border-top:1px solid var(--line)}
.su-shop-row .su-check{border-top:0;flex:1 1 auto}
.su-bought .su-shop-text strong{text-decoration:line-through;color:var(--muted)}
.su-shop-state{font-size:13px;font-weight:600;color:var(--muted)}
.su-list-meta{margin:0 0 4px;font-weight:600}
.su-count{margin:0 0 4px}
.su-back{display:inline-block;font-weight:600;font-size:13px;margin-bottom:10px}
.su-sent .su-row-main strong{display:block}
.su-items .su-row{align-items:center}
.su-items .pf-field{flex:1 1 220px;max-width:360px}
.su-add{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;margin-top:12px}
.su-add .pf-field{flex:1 1 220px;max-width:360px}
.su-events{flex:1 1 100%}
.su-event-list{margin:4px 0 0;padding-left:18px;font-size:13px;line-height:1.55}
@media(max-width:860px){
  .su-send{width:100%}
  .su-chip{flex:0 1 auto}
  .su-chips-wide .su-chip{flex:1 1 0;align-items:center;text-align:center;min-width:96px}
  .su-row-actions{flex:1 1 100%}
  .su-row-actions>button{flex:1 1 auto}
}

/* Schedule > Time off (Scott, 2026-10-01; review/time-off.js). Colours and type from tokens.css; the tab bar is .subnav (tokens.css).
   Phone first: one column, 44 px targets, nothing wider than the screen. */
.to-screen{max-width:900px}
.to-card{margin-bottom:14px}
.to-h2{font:500 20px/1.25 var(--serif);margin:0 0 8px}
.to-h3{font:700 var(--text-sm)/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:18px 0 6px}
.to-top{display:flex;align-items:center;justify-content:space-between;gap:8px 16px;flex-wrap:wrap;margin-bottom:10px}
.to-top p{margin:0;flex:1 1 300px}
.to-empty{margin:4px 0 10px}
.to-list{list-style:none;margin:0;padding:0}
.to-row{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:6px 14px;padding:10px 0;border-top:1px solid var(--line)}
.to-row:first-child{border-top:0}
.to-row-main{flex:1 1 280px;min-width:0}
.to-row-main p{margin:2px 0 0}
.to-row-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.to-row-link{font-weight:700;font-size:15px}
.to-item-title{font-size:15px;overflow-wrap:anywhere}
.to-when,.to-dates{font-size:13px;font-weight:600}
.to-plan-line{font-size:14px}
.to-note,.to-reason{font-size:13px;white-space:pre-line;overflow-wrap:anywhere}
.to-stop{max-width:640px}
.to-problem{color:var(--danger);font-weight:600;margin:6px 0}
.to-row-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.to-row-actions .hint{margin:0}
.to-tag-declined{color:var(--danger);background:var(--danger-bg);border-color:var(--danger-line)}
.to-notice{display:flex;align-items:center;justify-content:space-between;gap:8px 16px;flex-wrap:wrap;margin-bottom:14px;padding:12px 14px;border:1px solid var(--warn-line);background:var(--warn-bg);border-radius:var(--radius-card)}
.to-notice p{margin:0;font-weight:600;color:var(--warn)}
.to-days{display:flex;gap:10px 16px;flex-wrap:wrap}
.to-days .pf-field{flex:1 1 180px;max-width:260px}
.to-new .pf-field{margin-top:10px}
.to-new textarea{max-width:560px}
.to-found{margin-top:4px}
.to-found-count{font-weight:600;margin:6px 0}
.to-plan{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:flex-end;width:100%;margin-top:6px}
.to-plan .pf-field{flex:1 1 200px;max-width:280px;margin:0}
.to-plan-row{display:block}
.to-move{display:flex;gap:6px 14px;flex-wrap:wrap;flex:1 1 100%}
.to-move .pf-field{flex:1 1 160px;max-width:220px}
.to-move-hint{flex:1 1 100%;margin:0}
.to-send{margin-top:16px;min-height:48px;font-size:15px;min-width:220px}
.to-back{display:inline-block;font-weight:600;font-size:13px;margin-bottom:10px}
.to-dates-big{font-size:17px}
.to-proposed{flex:1 1 100%;display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;padding:8px 12px;border:1px solid var(--selected-line);background:var(--accent-soft);border-radius:var(--radius-card)}
.to-proposed p{margin:0;font-weight:600}
.to-edit{flex:1 1 100%;max-width:720px}
.to-withdraw{margin:4px 0 14px}
.to-history{margin:0 0 14px}
.to-history summary{cursor:pointer;font-weight:600;min-height:44px;display:flex;align-items:center}
.to-events{margin:4px 0 0;padding-left:18px;font-size:13px;line-height:1.55}
.to-uncovered{margin:2px 0 0;padding-left:18px;font-size:13px}
.to-uncovered-title{font-size:13px;font-weight:700;color:var(--warn)}
.to-person{margin-bottom:10px;padding:0}
.to-person>summary{cursor:pointer;list-style:none;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:12px 16px;min-height:44px}
.to-person>summary::-webkit-details-marker{display:none}
.to-person>summary::before{content:'+';font-weight:700;width:12px;color:var(--muted)}
.to-person[open]>summary::before{content:'\2212'}
.to-person-sum{margin:0}
.to-matrix-form{padding:0 16px 14px}
.to-matrix-fields{border:0;margin:0;padding:0;min-width:0}
.to-matrix-fields .pf-field{max-width:360px}
.to-flags{display:flex;gap:4px 20px;flex-wrap:wrap}
/* Dances under group headings that open and close (cover matrix, Needs a category): the heading says how many are ticked. */
.to-groups{margin-top:10px;border-top:1px solid var(--line)}
.to-group{margin:0;padding:0;border-top:0;border-bottom:1px solid var(--line);font-size:inherit}
.to-group>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:4px 12px;min-height:44px;padding:4px 0}
.to-group>summary::-webkit-details-marker{display:none}
.to-group>summary::before{content:'+';font-weight:700;width:12px;color:var(--muted)}
.to-group[open]>summary::before{content:'\2212'}
.to-group-name{flex:1 1 auto;font-weight:700}
.to-group-count{margin:0;font-size:13px;white-space:nowrap}
.to-group-all{margin:0 0 2px;font-weight:600}
.to-group .to-cats{padding:0 0 8px 18px;grid-template-columns:repeat(auto-fill,minmax(128px,1fr))}
.to-dance-chooser{flex:1 1 100%;max-width:640px;flex-direction:column;align-items:stretch}
.to-dance-chooser .to-matrix-fields legend{padding:0;margin:0 0 4px}
.to-group-body{padding:0 16px 12px}
.to-group-body>.to-row-actions{margin-bottom:6px}
.to-matrix-form>button{margin-top:12px}
.to-today-warn{color:var(--warn);font-weight:600}
@media(max-width:860px){
  .to-send{width:100%}
  .to-row-actions{flex:1 1 100%}
  .to-row-actions>button{flex:1 1 auto}
  .to-plan .pf-field,.to-days .pf-field{max-width:none}
}
/* The matrix's dances: two columns on a phone, more on wider screens. Dances, Needs a category and every title (owners). */
.to-cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:0 14px}
.to-cats .pf-field.checkbox{margin:2px 0;min-height:40px;align-items:center}
.to-links{display:flex;gap:6px 18px;flex-wrap:wrap;font-weight:600;margin:6px 0 0}
.to-cat-list{margin-bottom:6px}
.to-cat-edit{display:flex;flex-direction:column;gap:8px;max-width:520px}
.to-cat-edit .pf-field{max-width:none;margin:0}
.to-cat-edit .actions{margin:0}
.to-cat-add form .pf-field{max-width:420px;margin-top:8px}
.to-title-form{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;flex:1 1 280px;max-width:520px}
.to-title-form select{flex:1 1 200px;min-height:44px;max-width:100%}
.to-title-actions{display:flex;gap:6px;flex-wrap:wrap}
.to-title .to-meta{font-size:13px}
.to-titles #to-title-filter{max-width:320px}
.to-pager{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.to-pager .hint{margin:0}
@media(max-width:860px){
  .to-title-form{max-width:none}
  .to-pager button{flex:1 1 30%}
  .to-cat{align-items:center}
  .to-cat .to-row-main{flex:1 1 0}
  .to-cat .to-row-actions{flex:0 0 auto}
  .to-cat .to-cat-edit{flex:1 1 100%}
}
.to-cat .to-meta{font-size:13px;margin:0}
/* Today's Time off card (owners). */
.to-today-list{list-style:none;margin:0;padding:0}
.to-today-list li{padding:8px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}
.to-today-list li:first-child{border-top:0}
.to-today-list .hint{margin:0}

/* Business > Reports > Today (owners): the phone screen for the day's sales (review/reports.html, reports.js; docs/todays-sales.md).
   Phone first: one column, 44 px targets, the total at the top, one line per sale with the detail opening in place. */
.sday-card{max-width:760px}
.sday-card.report-card{display:block}
.sday-day{display:flex;align-items:center;gap:8px;margin:0 0 6px}
.sday-arrow{min-width:44px;min-height:44px;padding:0;font-size:26px;line-height:1;border-radius:999px}
.sday-arrow:disabled{opacity:.35}
.sday-date{flex:1;min-width:0;text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px}
#sday-date-label{font:500 19px/1.25 var(--serif);color:var(--ink)}
.sday-link{border:0;background:none;color:var(--accent);min-height:28px;padding:2px 6px;font-size:var(--text-sm);text-decoration:underline}
.sday-link:hover{background:none;color:var(--accent-hover)}
.sday-refresh{min-height:36px;padding:4px 12px;margin-left:4px;vertical-align:middle}
.sday-summary{text-align:center;margin:4px 0 10px}
.sday-total{margin:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px 10px}
#sday-total-amount{font:500 36px/1.1 var(--serif);color:var(--ink);font-variant-numeric:tabular-nums}
.sday-flag{font:700 11px/1.4 var(--sans);letter-spacing:.08em;color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:999px;padding:2px 8px}
.sday-words{margin:0 auto;max-width:34rem}
.sday-words p{margin:0;color:var(--ink);font-size:var(--text-md,16px);line-height:1.4}
.sday-words .sday-words-small{margin-top:4px;color:var(--muted);font-size:var(--text-sm)}
.sday-sub{margin:4px 0 0;color:var(--muted);font-size:var(--text-sm)}
.sday-sources{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px;font-size:var(--text-sm);text-align:left}
.sday-source{border-left:4px solid var(--line);padding:4px 8px;border-radius:2px;background:var(--soft);color:var(--ink)}
.sday-source:empty{display:none}
.sday-source-complete{border-left-color:var(--ok)}
.sday-source-incomplete{border-left-color:var(--warn-line);background:var(--warn-bg);color:var(--warn)}
.sday-source-unavailable{border-left-color:var(--danger-line);background:var(--danger-bg);color:var(--danger)}
.sday-status{min-height:1.4em;margin:6px 0;font-size:var(--text-md)}
.sday-status:empty{min-height:0;margin:0}
.sday-tools{display:flex;flex-wrap:wrap;gap:8px 8px;align-items:flex-end;margin:6px 0 8px}
.sday-tools .sday-search{flex:1 1 140px}
.sday-filters{flex:0 0 auto;position:relative}
.sday-filters summary{min-height:44px;display:inline-flex;align-items:center;padding:0 14px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--paper);cursor:pointer;font:600 13px/1.3 var(--sans);list-style:none}
.sday-filters summary::-webkit-details-marker{display:none}
.sday-filters summary::after{content:'';width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);margin:-3px 0 0 8px}
.sday-filters[open] summary::after{transform:rotate(-135deg);margin-top:3px}
.sday-filter-body{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;margin-top:8px}
.sday-filters[open]{flex-basis:100%}
.sday-field{display:flex;flex-direction:column;gap:3px;font-size:var(--text-sm);color:var(--muted);min-width:0}
.sday-field input,.sday-field select{min-height:44px;width:100%;font-size:16px}
.sday-tools #sday-find{min-height:44px}
.sday-search span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.sday-search input::placeholder{color:var(--muted)}
/* Phones: the report choices are one row that scrolls sideways (Annie's sub-tab rule), so the day's sales start near the top. */
@media(max-width:620px){
  #report-picker{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;margin-bottom:12px;padding-bottom:4px}
  #report-picker button{flex-shrink:0;padding:6px 12px;min-height:40px}
}
.sday-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.sday-item{border-bottom:1px solid var(--line)}
.sday-row{display:block;width:100%;text-align:left;border:0;border-radius:0;background:transparent;padding:10px 6px;min-height:56px;font-weight:400}
.sday-row:hover{background:var(--hover)}
.sday-row[aria-expanded="true"]{background:var(--accent-soft)}
.sday-row-top{display:flex;align-items:baseline;gap:10px}
.sday-time{flex:0 0 auto;min-width:62px;color:var(--muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums}
.sday-who{flex:1;min-width:0;font-weight:600;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sday-amt{flex:0 0 auto;font-weight:700;font-size:15px;font-variant-numeric:tabular-nums}
.sday-zero{color:var(--muted)}
.sday-row-meta{display:flex;flex-wrap:wrap;gap:2px 12px;margin:3px 0 0 72px;color:var(--muted);font-size:var(--text-sm)}
.sday-pay{display:inline-flex;align-items:center;gap:4px}
.sday-num-id{font-variant-numeric:tabular-nums}
.sday-src{font:700 10px/1.6 var(--sans);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line);border-radius:999px;padding:0 6px;color:var(--muted)}
.sday-icon{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.sday-detail{background:var(--soft);padding:8px 12px 10px 78px;font-size:var(--text-md)}
.sday-detail[hidden]{display:none}
.sday-detail-h{font:700 11px/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:6px 0 2px}
.sday-items{width:100%;border-collapse:collapse}
.sday-items td{padding:3px 0;vertical-align:top}
.sday-num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;padding-left:12px}
.sday-pays{list-style:none;margin:0;padding:0}
.sday-pays li{display:flex;align-items:center;gap:6px;padding:2px 0}
.sday-pays li .sday-num{margin-left:auto}
.sday-notes{margin:6px 0 0}
.sday-more{width:100%;min-height:44px;margin-top:10px}
.sday-help{margin-top:14px}
@media(max-width:620px){
  .sday-row-meta{margin-left:0}
  .sday-detail{padding-left:12px}
  .sday-time{min-width:56px}
  #sday-total-amount{font-size:32px}
}
/* Annie's global form spacing (details, summary, label, input margins) is for long forms; this toolbar sits on one line. */
.sday-card .sday-filters{margin:0;padding:0;border:0}
.sday-card .sday-filters summary{margin:0}
.sday-card .sday-field{margin:0;font-weight:400}
.sday-card .sday-field input,.sday-card .sday-field select{margin:0}
/* The "Owners" tag on the Today choice stays readable when that choice is the selected (maroon) one, as on the inbox filters. */
#report-picker button[aria-pressed="true"] .owner-tag{color:var(--on-accent);border-color:var(--on-accent)}
/* Reports' wide tables (daily sale lines, upcoming autopay): they scroll inside their card on a phone, never the page (UX audit #3). */
.report-scroll{overflow-x:auto;max-width:100%}
.report-scroll:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.report-scroll .studio-table{min-width:520px}
@media(min-width:861px){.report-scroll .studio-table{min-width:0}}

/* Reports > Attendance and Close-out (platform migration 0069). Same look as the other report cards: pills for sub-tabs, tables in a scroll box. */
.report-other-workspaces{margin:0 0 16px}
#reports-panel #report-picker button{min-height:44px}
#report-other-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 24px;padding-top:12px}
#report-other-links h3{margin:0 0 4px}
#report-other-links nav{display:flex;flex-direction:column;align-items:flex-start}
#report-other-links a{display:inline-flex;align-items:center;min-height:44px}
#report-choice-status:empty{display:none}
.report-job-field{display:none}
@media(max-width:860px){
  #reports-panel #report-picker{display:none}
  .report-job-field{display:grid;gap:4px;margin:0 0 14px;font-weight:600}
  .report-job-field select{width:100%;min-height:44px;font-weight:400}
}
.att-form{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end;margin:0 0 10px}
.att-form .studio-field{margin:0}
.att-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:8px 0}
.att-tile{background:var(--soft);border:1px solid var(--line);border-radius:var(--radius-card);padding:10px 12px}
.att-tile dt{font-size:var(--text-sm);color:var(--muted)}
.att-tile dd{margin:2px 0 0;font:600 22px/1.2 var(--sans);font-variant-numeric:tabular-nums}
.att-tabs,.co-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.att-tabs button,.co-tabs button{border:1px solid var(--field-line);border-radius:999px;background:var(--paper);color:var(--ink);padding:8px 16px;font-size:14px}
.att-tabs button[aria-pressed="true"],.co-tabs button[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--on-accent,#fff);font-weight:600}
.att-link{border:0;background:transparent;padding:0;min-height:0;color:var(--accent);font:600 14px/1.4 var(--sans);text-decoration:underline;text-underline-offset:3px;text-align:left;cursor:pointer}
.att-rev{white-space:nowrap}
.att-visits{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
.co-card .sday-day{margin:6px 0}
.co-card .studio-table td.co-text{text-align:left}
.co-warnings{list-style:none;margin:0 0 12px;padding:10px 14px;background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:var(--radius-card);color:var(--warn);font-size:var(--text-sm)}
.co-warnings li+li{margin-top:4px}
.co-sales-line{margin:8px 0 14px;font-variant-numeric:tabular-nums}
.co-form{display:grid;gap:10px;max-width:460px}
.co-form .studio-field{margin:0}
.co-form input,.co-form textarea{width:100%;box-sizing:border-box}
.co-form input[inputmode]{text-align:right;font-variant-numeric:tabular-nums}
.co-hint{margin:-4px 0 0}
.co-calc{display:grid;gap:4px;margin:0;padding:8px 12px;background:var(--soft);border:1px solid var(--line);border-radius:var(--radius-card)}
.co-calc--wide{max-width:460px}
.co-fig{display:flex;justify-content:space-between;gap:12px;font-variant-numeric:tabular-nums}
.co-fig dt{color:var(--muted)}
.co-fig dd{margin:0;text-align:right}
.co-fig--strong dt,.co-fig--strong dd{color:var(--ink);font-weight:700}
#co-overshort[data-state="off"]{color:var(--warn)}
.co-accept{display:flex;gap:8px;align-items:flex-start;font-size:var(--text-sm)}
.co-problems{min-height:1.4em;margin:0}
.co-actions{display:flex;flex-wrap:wrap;gap:10px}
.co-confirm{border:2px solid var(--accent);border-radius:var(--radius-card);padding:12px 14px;background:var(--paper)}
.co-confirm p{margin:0 0 10px}
.co-confirm button{margin-right:8px}
.co-locked h3{margin:0 0 4px}
.co-lock-note{margin:0 0 10px;font-size:var(--text-sm);color:var(--muted)}
.co-list{margin:6px 0 12px;padding-left:20px;font-size:var(--text-sm);line-height:1.5}
.co-amend{display:grid;gap:10px;max-width:460px;margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
.co-amend .studio-field{margin:0}
.co-amend textarea{width:100%;box-sizing:border-box}
.co-audit-box{margin:10px 0}
.co-sheet{max-width:820px}
.co-sheet-sub{margin:0 0 4px;color:#333}
.co-sheet-status{margin:0 0 10px;font-weight:700}
.co-sheet-h{font:600 15px/1.3 var(--sans);margin:14px 0 4px}
.co-sheet-dl{margin:0;display:grid;gap:2px;max-width:420px}
.co-sheet-dl>div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #e5e2e2;padding:2px 0;font-variant-numeric:tabular-nums}
.co-sheet-dl dd{margin:0;text-align:right}
.co-sheet-table{width:100%}
.co-sign{margin-top:28px;display:grid;gap:18px}
.co-sign p{margin:0}
@media print{
  body.print-sheet-on .report-picker,body.print-sheet-on .studio-banner,body.print-sheet-on .co-tabs,body.print-sheet-on #co-day-bar,body.print-sheet-on #co-status{display:none!important}
  body.print-sheet-on #report-closeout-card{border:0;padding:0;box-shadow:none}
  body.print-sheet-on .co-sheet-table th,body.print-sheet-on .co-sheet-table td{font-size:12px}
}
/* Reports > Clients and Attendance by session (platform migration 0076): sortable headers, the small second line under a worth, the email column. */
.rt-sort{border:0;background:transparent;padding:0;min-height:0;color:inherit;font:inherit;font-weight:600;cursor:pointer;text-align:inherit;white-space:nowrap}
.rt-sort:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.rt-arrow{font-size:.75em}
.rc-card .co-accept{display:flex;align-items:center;gap:8px;margin:6px 0 10px}
.rc-card .co-accept input[type=checkbox]{width:20px;height:20px;min-height:0;flex:none;margin:0}
.rc-card .att-tabs{margin:8px 0}
.att-why{font-size:var(--text-sm);color:var(--muted);font-weight:400;text-align:left;max-width:26ch}
.rc-pane[hidden]{display:none}
.rc-card .att-form{margin-bottom:6px}
.studio-table td.rt-text{text-align:left}
#rc-status{margin:4px 0;min-height:0}

/* Round 2 (2026-10-18): the fast door (studio-door.js). Phone first: every button is at least 44 px tall; the session strip scrolls sideways; the toast sits above the bottom bar. */
.door{display:grid;gap:12px}
.door-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
.door-top h2{margin:0;font-size:var(--text-lg)}
.door-top-acts{display:flex;flex-wrap:wrap;gap:8px}
.door-top-acts .door-chip{padding-inline:10px}
.door-chip{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 14px;border:1px solid var(--field-line);border-radius:999px;background:var(--paper);color:var(--ink);font:inherit;font-size:var(--text-sm);text-decoration:none;cursor:pointer}
.door-chip.on,.door-chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.door-chip:focus-visible,.door-btn:focus-visible,.door-time:focus-visible,.door-session:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.door-chips{display:flex;flex-wrap:wrap;gap:8px}
.door-sessions{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -4px;padding:2px 4px 6px}
.door-session-list{display:flex;gap:8px;list-style:none;margin:0;padding:0}
.door-session{display:grid;gap:2px;min-width:150px;max-width:220px;min-height:56px;padding:8px 12px;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:var(--radius);background:var(--paper);color:var(--ink);text-decoration:none}
.door-session.brand-midtown{border-left-color:var(--mts)}
.door-session.brand-spotlight{border-left-color:var(--gold)}
.door-session.on{background:var(--selected);border-color:var(--selected-line)}
.door-session-time{font-weight:600;font-size:var(--text-sm)}
.door-session-name{font-size:var(--text-sm);line-height:1.25;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.door-session-count{font-size:var(--text-xs);color:var(--muted)}
.door-main{display:grid;gap:10px;min-width:0}
.door-head h3{margin:0;font-size:var(--text-lg)}
.door-head{border-left:4px solid var(--line);padding-left:10px}
.door-head.brand-midtown{border-left-color:var(--mts)}
.door-head.brand-spotlight{border-left-color:var(--gold)}
.door-meta,.door-count,.door-dance-note{margin:2px 0;font-size:var(--text-sm)}
.door-count{font-weight:600}
.door-dance-note{color:var(--ok)}
.door-dance-note{display:grid}
.door-dance-note>span{grid-area:1/1}
.door-dance-reserve{visibility:hidden}
.door-included-note{margin:2px 0;color:var(--ok);font-size:var(--text-sm)}
.door-find{display:flex;gap:8px;align-items:center}
.door-find input{flex:1 1 auto;min-width:0;min-height:48px;font-size:18px;padding:0 12px;border:1px solid var(--field-line);border-radius:var(--radius)}
.door-rows{list-style:none;margin:0;padding:0;display:grid;gap:0}
.door-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 0;border-top:1px solid var(--line)}
.door-who{flex:1 1 180px;min-width:0;display:grid;gap:2px;overflow-wrap:anywhere}
.door-who strong{font:600 17px/1.5 var(--sans)}
.door-label{font-size:var(--text-sm);color:var(--muted)}
.door-sub{font-size:var(--text-xs);color:var(--muted)}
.door-row.state-in .door-label{color:var(--ok);font-weight:600}
.door-row.state-due .door-label{color:var(--warn)}
.door-row.state-included .door-label{color:var(--ok)}
.door-row.walkin{background:var(--soft)}
.door-acts{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.door-btn{min-height:44px;min-width:44px;padding:0 16px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:inherit;font-weight:600;cursor:pointer}
.door-btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);min-width:112px}
.door-btn.quiet{font-weight:400}
.door-btn:disabled{opacity:.6;cursor:default}
.door-tag{align-self:center;font-size:var(--text-sm);color:var(--ok)}
.door-pay,.door-undo{flex:1 0 100%;display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 0 2px}
.door-pay>.door-sub,.door-undo>.door-sub{flex:1 0 100%}
.door-results-title{margin:14px 0 4px;font-size:var(--text-md)}
.door-empty{padding:12px 0}
.door-toast{position:sticky;bottom:calc(var(--bottombar-h, 0px) + 8px);z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;border-radius:var(--radius);background:var(--ink);color:var(--paper);box-shadow:var(--shadow)}
.door-toast[hidden]{display:none}
.door-toast span{flex:1 1 200px}
.door-toast .door-btn{background:transparent;color:var(--paper);border-color:var(--paper)}
/* The private-lesson sheet */
.door-step-title{margin:6px 0 4px;font-weight:600}
.door-times{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:8px;margin-top:8px}
.door-time{display:grid;gap:2px;min-height:48px;padding:6px 8px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:inherit;text-align:center;cursor:pointer}
.door-time span{font-size:var(--text-xs);color:var(--muted)}
.door-time.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.door-time.on span{color:var(--on-accent)}
.door-time.lonely{border-style:dashed}
.door-room summary{min-height:44px;display:flex;align-items:center;cursor:pointer}
.door-room select{min-height:44px;width:100%}
.door-lesson-form .studio-picks button{min-height:44px}
.door-hour-picker{display:grid;gap:4px;margin:8px 0}
.door-hour-picker>label{font-size:var(--text-sm);font-weight:600}
.door-hour-picker>select{width:100%;min-height:44px;padding:0 10px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:inherit}
.door-hour-count{margin:4px 0 8px}
.door-lesson-selection{padding:8px 10px;background:var(--soft);border:1px solid var(--line);border-radius:var(--radius);font-size:var(--text-sm);overflow-wrap:anywhere}
.studio-dialog:has(>.door-lesson-form){scroll-padding-block:18px 140px}
.door-lesson-form>.studio-actions{position:sticky;bottom:0;z-index:2;align-items:stretch;padding:10px 0;background:var(--paper);border-top:1px solid var(--line);flex-wrap:nowrap}
.door-lesson-form>.studio-actions>button{min-height:44px}
.door-lesson-form>.studio-actions>button[type=submit]{flex:1;min-width:0;overflow-wrap:anywhere}
.door-lesson-form>.studio-actions>button[type=button]{flex:0 0 auto;min-width:76px}
/* My teaching today (Today). Desk UI round 3: drawn in place under the Ask box; while it loads it keeps its room (no jump when it arrives). */
#today-myday-card{margin:0 0 14px}
.door-myday.t-loading{min-height:118px}
.door-myday .door-next{background:var(--selected)}
.door-myday .t-actions .button{min-height:44px;display:inline-flex;align-items:center}
@media (min-width:900px){
  .door{grid-template-columns:260px minmax(0,1fr);align-items:start}
  .door-top,.door-daybar,.door>.hint,.door-toast{grid-column:1/-1}
  .door-sessions{overflow:visible;margin:0;padding:0}
  .door-session-list{flex-direction:column}
  .door-session{max-width:none}
}
.door-btn.collect{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn);min-width:112px}
.door-times>p{grid-column:1/-1}
.door-myday .t-actions a.button.primary,.door-myday .t-actions a.button.primary:visited{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}
/* Desk UI round 3 (Codex N2): another day, check-in history and receipts from the door; what pays and whether they are here as two separate words;
   the booking sheet's payment / booking / attendance lines. */
.door-daybar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.door-daybar input[type=date]{min-height:44px;flex:1 1 140px;min-width:0;max-width:190px;padding:0 10px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:inherit;font-size:16px}
.door-label{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.door-here{display:inline-block;padding:0 8px;border:1px solid var(--line);border-radius:999px;font-size:var(--text-xs);line-height:1.6;color:var(--muted);font-weight:400}
.door-row.state-in .door-label .door-paid{color:var(--muted);font-weight:400}
.door-row.state-in .door-here,.door-here.is-in{border-color:var(--ok);color:var(--ok);font-weight:600}
.door-lesson-state{display:grid;gap:6px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--soft)}
.door-state-row{display:grid;grid-template-columns:92px minmax(0,1fr);gap:8px;font-size:var(--text-sm);line-height:1.4}
.door-state-label{color:var(--muted)}
.door-state-value{font-weight:600;overflow-wrap:anywhere}
@media(max-width:420px){.door-state-row{grid-template-columns:minmax(0,1fr);gap:0}}
.door-owed{justify-self:start;margin-top:4px}
.door-owed-tag{display:inline-block;padding:2px 10px;border:1px solid var(--warn-line);border-radius:999px;background:var(--warn-bg);color:var(--warn);font-size:var(--text-sm);font-weight:600}
.desk-collect .door-pay{padding:4px 0}
/* 2026-10-19: the teacher's Whole day / Only mine toggle, on its own row above the sideways session strip (always on screen at 390 px). */
.door-whole-row{display:flex;position:sticky;left:0;margin:0 0 8px}
.door-whole-row .door-chip{min-height:44px}
/* Platform 0179 (2026-10-19): a desk time that leaves the teacher a dead gap, shown last and labelled. */
.door-time-dead{color:var(--warn);font-weight:600}
/* Live service workspace: scope, search and arrivals precede optional tools.
   The original desk/attendance/sale operations and fields remain unchanged. */
.desk-workspace #studio-eyebrow,.desk-workspace .studio-heading>.studio-nav{display:none}
.desk-workspace .studio-heading{margin-bottom:16px}
.desk-workspace .studio-status:empty{min-height:0;margin:0}
.desk-workspace .studio-heading h1{font:650 clamp(24px,2.2vw,32px)/1.2 var(--sans);letter-spacing:-.025em}
.desk-workspace .studio-banner{font-size:12px;padding:7px 10px;margin-bottom:14px}
.door-workspace{display:block;min-width:0}
.door-workspace .door-scopebar{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:end;margin-bottom:8px}
.door-workspace .door-daybar{gap:6px;flex-wrap:nowrap}
.door-workspace .door-daybar input[type=date]{width:142px;min-width:120px;flex:0 1 142px;font-size:14px;max-width:165px}
.door-workspace .door-step{width:44px;padding:0;border-radius:4px;font-size:22px}
.door-session-picker{min-width:0;margin:0;padding:0;border:0}
.door-session-picker .door-sessions{overflow:visible;margin:0;padding:0;display:grid;gap:4px}
.door-session-label{font-size:13px;font-weight:600}
.door-session-picker select{width:100%;min-width:0;max-width:100%;min-height:44px;padding:0 8px;font:inherit;font-size:16px;background:var(--paper);color:var(--ink);border:1px solid var(--field-line);border-radius:var(--radius)}
.door-direct-sessions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
.door-direct-session{min-width:0;min-height:44px;display:grid;align-content:center;gap:2px;padding:7px 9px;border:1px solid var(--field-line);border-radius:var(--radius);color:var(--ink);text-decoration:none;font-size:13px;line-height:1.3;overflow-wrap:anywhere}
.door-direct-session.on{background:var(--selected);border-color:var(--selected-line)}
.door-direct-session-name{font-weight:600}.door-direct-session-brand{font-size:12px;color:var(--muted)}
.door-direct-session:focus-visible,.door-session-picker select:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
@media(max-width:600px){.door-workspace .door-scopebar.door-small-day{grid-template-columns:1fr;gap:5px}}
.door-session-picker>summary,.door-tools>summary{margin:0}
.door-session-picker>summary,.door-tools>summary{min-height:44px;padding:11px 6px;cursor:pointer;color:var(--accent);font-size:13px;font-weight:600}
.door-workspace .door-session-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px}
.door-workspace .door-session{max-width:none;min-width:0}
.door-workspace .door-tools{border-bottom:1px solid var(--line);margin:6px 0 18px;padding:0 0 3px}
.door-workspace .door-service-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 4px}
.door-quick-links{display:flex;flex-wrap:wrap;gap:4px 12px;margin:0 0 10px}
.door-quick-links .door-chip{border:0;border-radius:0;background:transparent;padding-inline:0;color:var(--accent);min-height:44px;text-decoration:underline;text-underline-offset:3px}
.door-find>#door-new-client{flex:0 0 auto;min-height:44px;padding-inline:12px;border-radius:var(--radius);white-space:nowrap}
.door-workspace .door-service-actions>#door-sell{flex:0 0 auto}
.door-workspace .door-service-actions>.door-tools{flex:1;min-width:0;margin:0}
@media(max-width:860px){.door-workspace .door-service-actions{margin-bottom:4px}}
.door-workspace .door-tools .door-top-acts{padding:8px 0 15px}
.door-workspace .door-related{display:flex;flex-wrap:wrap;gap:8px;padding:0 0 15px}
.door-workspace .door-related .door-chip{border-color:transparent;color:var(--accent);padding-inline:7px}
.door-workspace .door-main{gap:12px}
.door-workspace .door-head{border:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:16px;align-items:baseline}
.door-workspace .door-head h3{font-size:22px;font-weight:650;grid-column:1}
.door-workspace .door-meta{grid-column:1;font-size:13px;margin:4px 0}
.door-workspace .door-count{grid-column:2;grid-row:1/3;font-size:13px;color:var(--muted);font-weight:500;max-width:28ch;text-align:right}
.door-workspace .door-dance-note,.door-workspace .door-included-note,.door-workspace .door-head>.hint{grid-column:1/-1;font-size:12px;margin-top:5px}
.door-workspace .door-find{margin-top:3px}
.door-workspace .door-find input{font-size:16px;min-height:48px}
.door-workspace #door-find-hint{font-size:12px;margin:0 0 2px}
.door-workspace .door-row{padding:15px 0;gap:10px 18px;align-items:flex-start}
.door-workspace .door-who strong{font:650 16px/1.4 var(--sans)}
.door-workspace .door-label{font-size:13px;gap:4px 10px;margin-top:3px}
.door-workspace .door-here{border:0;padding:0;font-size:12px}
.door-workspace .door-label .door-paid{color:var(--muted)}
.door-workspace .door-acts{padding-top:2px}
.door-workspace .door-btn{padding-inline:14px}
.door-workspace .door-btn.primary{min-width:104px}
.door-row-outcome{flex:1 0 100%;font-size:13px;color:var(--ink);background:var(--soft);border-left:3px solid var(--line);padding:9px 12px;margin:2px 0 0;overflow-wrap:anywhere}
.door-client-error{flex:1 0 100%;grid-column:1/-1;margin:0}
.door-workspace .door-date-notice{margin:8px 0;font-size:13px}
@media(max-width:860px){
 .desk-workspace .studio-heading{margin-bottom:12px}.desk-workspace .studio-heading h1{font-size:25px}.door-workspace .door-scopebar{gap:4px 10px;margin-bottom:0}.door-workspace .door-daybar input[type=date]{width:128px;min-width:116px;flex-basis:128px}.door-session-picker>summary{font-size:12px;padding-inline:0}.door-session-picker{flex:1 1 95px}.door-workspace .door-session-list{grid-template-columns:1fr}.door-workspace .door-tools{margin-bottom:16px}.door-tools>summary{padding:9px 0}.door-workspace .door-head{display:block}.door-workspace .door-head h3{font-size:20px}.door-workspace .door-count{text-align:left;max-width:none;margin-top:5px;font-size:12px}.door-workspace .door-meta{font-size:12px}.door-workspace .door-find input{font-size:16px}.door-workspace .door-find .door-chip{padding-inline:10px;font-size:12px}.door-workspace .door-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;padding:15px 0}.door-workspace .door-who{min-width:0}.door-workspace .door-who strong{font-size:16px}.door-workspace .door-label{display:grid;gap:4px}.door-workspace .door-acts{max-width:134px;gap:7px;justify-content:flex-end}.door-workspace .door-btn{padding-inline:12px;font-size:13px}.door-workspace .door-btn.primary{min-width:98px}.door-workspace .door-pay,.door-workspace .door-undo,.door-workspace .door-row-outcome{grid-column:1/-1}.door-workspace .door-toast{font-size:13px}.door-workspace .door-row-outcome{margin:0}
}

/* Studio > Teachers (studio-hours.js, 2026-10-18). Phone first: every control is at least 44 px; the half-hour grid is four across on a phone. */
.hours{display:grid;gap:12px;min-width:0}
.hours h2{margin:0;font-size:var(--text-lg)}
.hours h3{margin:0 0 8px;font-size:var(--text-md)}
.hours-back{display:inline-flex;align-items:center;min-height:44px;color:var(--accent);text-decoration:none;font-weight:600}
.hours-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.hours-teacher{display:grid;gap:2px;min-height:56px;padding:10px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);color:var(--ink);text-decoration:none}
.hours-teacher:focus-visible,.hours-cell:focus-visible,.hours-back:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.hours-teacher strong{font-size:17px}
.hours-line{font-size:var(--text-sm)}
.hours-line.tone-warn,.hours-warn{color:var(--warn);font-weight:600}
.hours-line.tone-ok{color:var(--ok)}
.hours-line.tone-muted{color:var(--muted)}
.hours-warn{margin:0;padding:10px 12px;border:1px solid var(--line);border-left:4px solid var(--warn);border-radius:var(--radius);background:var(--paper)}
.hours-card{padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);display:grid;gap:10px;min-width:0}
.hours-days .door-chip{min-width:52px;padding:0 10px}
.hours-days .door-chip.has:not(.on){border-color:var(--ok);color:var(--ok);font-weight:600}
.hours-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:6px}
.hours-cell{min-height:44px;min-width:44px;padding:0 6px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:inherit;font-size:var(--text-sm);cursor:pointer}
.hours-cell.hour{font-weight:600}
.hours-cell.on{background:var(--ok);border-color:var(--ok);color:var(--paper)}
.hours-cell:disabled{cursor:default;opacity:.85}
.hours-copy-label{flex:1 0 100%;margin-top:4px}
.hours-dates{display:flex;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}
.hours-dates .door-chip{flex:0 0 auto}
.hours-exceptions,.hours-preview,.links-list{list-style:none;margin:0;padding:0;display:grid;gap:0}
.hours-ex,.hours-preview li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px;padding:8px 0;border-top:1px solid var(--line)}
.hours-preview li{display:grid;justify-content:stretch}
.hours-times{font-size:var(--text-sm);color:var(--ok);overflow-wrap:anywhere}
.hours-exact{margin:0 0 4px}
.links-group summary{min-height:44px;display:flex;align-items:center;font-weight:600;cursor:pointer}
.links-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 0;border-top:1px solid var(--line)}
.links-row.check .door-label{color:var(--warn)}
.links-row.linked .door-label{color:var(--ok)}
.links-pick{min-height:44px;max-width:100%;padding:0 8px;border:1px solid var(--field-line);border-radius:var(--radius);background:var(--paper);color:var(--ink);font:inherit}
@media (min-width:900px){.hours-grid{grid-template-columns:repeat(8,minmax(76px,1fr))}}
.links-row .door-acts{justify-content:flex-start}
/* 0148-0149 (2026-10-19): the booked-lesson choice, rebook requests, last changes, and From Mindbody. */
.hours-choice{border-left:4px solid var(--warn)}
.hours-choice h3{color:var(--warn)}
.hours-choice h3:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.hours-choice-acts{display:flex;flex-wrap:wrap;gap:8px}
.hours-choice-acts .door-btn{min-height:44px;flex:1 1 220px}
.hours-rebook{border-left:4px solid var(--warn)}
.hours-rebook .door-btn{min-height:44px}
.hours-ok{margin:0;padding:10px 12px;border:1px solid var(--line);border-left:4px solid var(--ok);border-radius:var(--radius);background:var(--paper);color:var(--ok);font-weight:600}
.import-row{cursor:default}
#import-apply,#import-dry{min-height:44px}
.hours-ex span{overflow-wrap:anywhere;min-width:0}
/* 0151 (2026-10-19): Start from Mindbody, a teacher's own current Mindbody hours. */
.hours-mb .door-btn{min-height:44px;max-width:100%}
.hours-mb-words{margin:0 0 8px;font-weight:600;overflow-wrap:anywhere}
.hours-mb-words:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.hours-line.tone-dated{color:var(--ink)}
