/**
 * singular-theme.css — Singular-only additions layered on the shared theme.
 *
 * Loaded AFTER style.css (the theme copied from beta.admin). Everything here
 * uses the shared design tokens (--brand, --surface, --border, --text,
 * --muted, --radius-card) so it inherits both the dark default and the
 * [data-theme="light"] overrides for free.
 *
 * NOT to be confused with the older `singular.css`, which is a self-contained
 * stylesheet for the standalone PayPal payment pages under views/singular/ and
 * is unrelated to the app shell.
 *
 * Keep this file small. If a rule would be useful in beta.admin too, it belongs
 * in style.css there and gets picked up on the next copy across — not
 * duplicated here.
 *
 * Sections:
 *   1. Section nav (replaces admin's side rail)
 *   2. Footer
 *   3. Cookie notice
 *   4. Legacy-view bridge (temporary)
 */

/* ═══════════════════════════════════════════════════════════════════
   1. SECTION NAV
   Admin uses a collapsible side rail for 100+ destinations. Singular has
   six, so they sit in a horizontal pill row under the top bar.
   ═══════════════════════════════════════════════════════════════════ */
.singular-app { --brand:#7c3aed; --brand-hover:#6d28d9; --brand-shadow:rgba(124,58,237,.30); --brand-glow:rgba(124,58,237,.16); --brand-soft:rgba(124,58,237,.13); --c-purple:#7c3aed; --c-purple-bg:rgba(124,58,237,.13); }
.singular-app.brand-pumpitup { --brand:#007fae; --brand-hover:#00658c; --brand-shadow:rgba(0,127,174,.26); --brand-soft:rgba(0,127,174,.13); --c-purple:#007fae; --c-purple-bg:rgba(0,127,174,.13); }
.singular-app.brand-bounceu { --brand:#008f8c; --brand-hover:#007471; --brand-shadow:rgba(0,143,140,.26); --c-purple:#008f8c; --c-purple-bg:rgba(0,143,140,.13); }
.singular-app.accent-purple { --brand:#7c3aed; --brand-hover:#6d28d9; --brand-shadow:rgba(124,58,237,.30); --brand-glow:rgba(124,58,237,.16); --brand-soft:rgba(124,58,237,.13); --c-purple:#7c3aed; --c-purple-bg:rgba(124,58,237,.13); }
.singular-app.accent-blue { --brand:#007fae; --brand-hover:#00658c; --brand-shadow:rgba(0,127,174,.26); --brand-glow:rgba(0,127,174,.16); --brand-soft:rgba(0,127,174,.13); --c-purple:#007fae; --c-purple-bg:rgba(0,127,174,.13); }
.singular-app.accent-teal { --brand:#008f8c; --brand-hover:#007471; --brand-shadow:rgba(0,143,140,.26); --brand-glow:rgba(0,143,140,.16); --brand-soft:rgba(0,143,140,.13); --c-purple:#008f8c; --c-purple-bg:rgba(0,143,140,.13); }
.singular-app.accent-berry { --brand:#c0266d; --brand-hover:#9d174d; --brand-shadow:rgba(192,38,109,.27); --brand-glow:rgba(192,38,109,.16); --brand-soft:rgba(192,38,109,.13); --c-purple:#c0266d; --c-purple-bg:rgba(192,38,109,.13); }
.singular-app.accent-coral { --brand:#f05a47; --brand-hover:#d94838; --brand-shadow:rgba(240,90,71,.28); --brand-glow:rgba(240,90,71,.16); --brand-soft:rgba(240,90,71,.13); --c-purple:#f05a47; --c-purple-bg:rgba(240,90,71,.13); }
.topbar-brand .brand-fyp { font-size:1.02rem; letter-spacing:-.025em; }
.topbar-brand .brand-fyp i { font-size:.85em; transform:rotate(-7deg); margin-right:.18rem; }
.topbar-brand .brand-ctx { color:var(--brand); opacity:.9; }

.alternate-email-form { display:block; width:100%; }
.alternate-email-form .form-text { margin:-.25rem 0 .65rem; }
.alternate-email-controls { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.6rem; align-items:center; }
.alternate-email-controls .btn { white-space:nowrap; }
.report-range { display:flex; align-items:end; gap:.6rem; flex-wrap:wrap; }
.report-range label { display:grid; gap:.25rem; color:var(--muted); font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; }
.report-kpis { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:.8rem; margin-bottom:1rem; }
.report-kpis article { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-card); padding:1rem; box-shadow:var(--shadow-card); display:grid; gap:.2rem; }
.report-kpis span,.report-kpis small { color:var(--muted); }
.report-kpis strong { font-size:1.65rem; line-height:1; color:var(--text); }
.velocity-bars { height:240px; display:flex; align-items:stretch; gap:.35rem; padding:1rem; overflow-x:auto; }
.velocity-day { min-width:28px; flex:1; display:grid; grid-template-rows:18px 1fr 28px; text-align:center; font-size:.67rem; color:var(--muted); }
.velocity-track { position:relative; display:block; border-bottom:1px solid var(--border); }
.velocity-track i { position:absolute; inset:auto 15% 0; min-height:3px; border-radius:5px 5px 0 0; background:linear-gradient(180deg,color-mix(in srgb,var(--brand) 64%,white),var(--brand)); }
.stacked-party-chart .velocity-day { grid-template-rows:26px 1fr 28px; }
.stacked-party-chart .velocity-value { white-space:nowrap; font-weight:700; }
.stacked-party-chart .velocity-value i { margin-left:.12rem; font-size:.58rem; }
.stacked-party-chart .velocity-track { align-self:end; display:flex; flex-direction:column-reverse; width:min(46px,88%); min-height:4px; margin-inline:auto; overflow:hidden; border:1px solid var(--border); border-radius:7px 7px 2px 2px; background:var(--surface-hover); }
.stacked-party-chart .party-stack-segment { display:block; min-height:3px; background:var(--c-amber); border-top:1px solid rgba(255,255,255,.4); }
.stacked-party-chart .party-stack-segment.is-sold { background:var(--c-green); }
.stacked-party-chart .party-stack-segment.has-video { box-shadow:inset 3px 0 0 var(--c-blue); }
.chart-legend { display:flex; align-items:center; gap:.35rem; flex-wrap:wrap; color:var(--muted); font-size:.68rem; }
.chart-legend>b { display:inline-flex; align-items:center; gap:.3rem; font-weight:inherit; }
.chart-legend>i,.chart-legend b>i { width:.62rem; height:.62rem; border-radius:2px; background:var(--c-amber); }
.chart-legend>i.is-sold { background:var(--c-green); }.chart-legend b>i.has-video { background:var(--c-blue); }
.staff-rank-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; padding:1rem; }
.staff-rank-grid>div { padding:1rem; border:1px solid var(--border); border-radius:var(--radius-card); }
.staff-rank-grid h3 { font-size:.95rem; }.staff-rank-grid h4 { margin:1rem 0 .4rem; color:var(--muted); font-size:.7rem; text-transform:uppercase; letter-spacing:.08em; }
.staff-rank-grid p { display:flex; justify-content:space-between; margin:0; padding:.45rem 0; border-bottom:1px solid var(--border); }.bottom-label { color:#e97726!important; }
.performance-table td>a { display:grid; }.performance-table td>a small { color:var(--muted); }.zero-photo-row { background:rgba(233,119,38,.07); }
.target-progress { display:inline-block; width:80px; height:7px; overflow:hidden; border-radius:99px; background:var(--surface-hover); vertical-align:middle; }.target-progress i { display:block; height:100%; background:var(--brand); }
.history-attention { display:flex; align-items:center; gap:.6rem; padding:.65rem 1rem; color:#a84b0a; background:rgba(233,119,38,.1); border-top:1px solid rgba(233,119,38,.18); }.history-attention span { margin-left:auto; color:var(--muted); font-size:.78rem; }
.actual-time { opacity:.68; font-style:italic; }
.purchase-toggle { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:.8rem .9rem; border:1px solid var(--border); border-radius:var(--radius-btn); background:var(--surface-hover); }
.purchase-toggle>div:first-child { display:grid; }.purchase-toggle>div:first-child span { color:var(--muted); font-size:.75rem; }
#settings .settingsbox { width:min(100%,1000px)!important; margin-inline:auto; color:var(--text); background:var(--surface)!important; border:1px solid var(--border)!important; opacity:1!important; backdrop-filter:none!important; -webkit-backdrop-filter:none!important; box-shadow:var(--shadow-card); }
#settings .modal-content { color:var(--text); background:var(--surface)!important; opacity:1!important; backdrop-filter:none!important; -webkit-backdrop-filter:none!important; }
.singular-app .modal-content,.singular-app .modal-header,.singular-app .modal-body,.singular-app .modal-footer{opacity:1!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.singular-app .modal-content{background:#111827!important}.singular-app .modal-header,.singular-app .modal-body,.singular-app .modal-footer{background:inherit!important}[data-theme="light"] .singular-app .modal-content{background:#fff!important}
#regcustomerModal .modal-content { max-height:calc(100vh - 2rem); }
#regcustomerModal .customer-form-body { padding:1.1rem 1.35rem!important; text-align:left!important; }
#regcustomerModal .customer-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.9rem 1rem; }
#regcustomerModal .settingsrow { display:block; width:100%!important; max-width:none; margin:0!important; padding:0; }
#regcustomerModal .customer-field-wide { grid-column:1/-1; }
#regcustomerModal .settingsfieldname { width:auto; margin:0 0 .3rem; color:var(--text); font-size:.72rem; font-weight:700; letter-spacing:.035em; }
#regcustomerModal .settingsfield { width:100%; }
#regcustomerModal input[type="text"],#regcustomerModal input[type="email"],#regcustomerModal input[type="tel"],#regcustomerModal textarea { display:block; width:100%!important; min-height:42px; padding:.55rem .7rem; color:var(--text); background:var(--input-bg); border:1px solid var(--border); border-radius:var(--radius-btn); }
#regcustomerModal textarea { min-height:68px; resize:vertical; }
#regcustomerModal .purchase-toggle { min-height:72px; }
#regcustomerModal .form-check { padding:.45rem .5rem .45rem 2rem; margin:.2rem 0; border:1px solid var(--border); border-radius:var(--radius-btn); background:var(--surface-hover); }
#regcustomerModal .form-check-label { font-size:.78rem; line-height:1.35; }
.userdata-form-body { padding:1.25rem 1.5rem!important; text-align:left!important; }
#edituserdataModal .userdata-form-row { display:grid; grid-template-columns:145px minmax(0,1fr); align-items:start; gap:.45rem 1rem; width:100%; margin:0; padding:.55rem 0; }
#edituserdataModal .settingsfieldname { width:auto; padding:.65rem 0 0; color:var(--muted); font-size:.78rem; font-weight:700; }
#edituserdataModal .settingsfield { width:100%; }
#edituserdataModal .form-control { width:100%; min-height:43px; color:var(--text); background:var(--input-bg); border:1px solid var(--border); border-radius:var(--radius-btn); }
#edituserdataModal textarea.form-control { min-height:84px; resize:vertical; }
#edituserdataModal .userdata-purchase-row { grid-template-columns:1fr; padding-left:161px; }
#edituserdataModal .purchase-toggle { width:100%; }
.room-text-action { appearance:none; padding:0; color:var(--brand); background:none; border:0; font:inherit; font-weight:700; text-decoration:none; cursor:pointer; }
.room-text-action:hover,.room-text-action:focus-visible { color:var(--brand-strong); text-decoration:none; }
@media(max-width:575px){#edituserdataModal .userdata-form-row{grid-template-columns:1fr;gap:.3rem}#edituserdataModal .settingsfieldname{padding:0}#edituserdataModal .userdata-purchase-row{padding-left:0}#regcustomerModal .customer-form-grid{grid-template-columns:1fr}#regcustomerModal .customer-field-wide{grid-column:auto}}
.quickrow button.quick { appearance:none; -webkit-appearance:none; border:1px solid var(--border); font:inherit; text-align:left; cursor:pointer; }
.setup-flow { display:flex; gap:.7rem; align-items:center; justify-content:center; flex-wrap:wrap; margin:1rem 0 1.25rem; }
.setup-flow span { display:flex; align-items:center; gap:.45rem; padding:.55rem .75rem; background:var(--surface-hover); border-radius:999px; font-weight:700; }
.setup-flow b { display:grid; place-items:center; width:1.7rem; height:1.7rem; border-radius:50%; background:var(--brand); color:#fff; }
.setup-flow>i { color:var(--muted); }
.browser-url { display:grid; grid-template-columns:1fr auto; align-items:center; gap:.45rem 1rem; padding:1rem; margin-bottom:1rem; border:1px solid var(--border); border-radius:var(--radius-card); background:var(--surface-hover); }
.browser-url span { grid-column:1/-1; color:var(--muted); font-size:.72rem; font-weight:800; text-transform:uppercase; letter-spacing:.07em; }
.browser-url a { overflow-wrap:anywhere; }
@media(max-width:900px){.report-kpis{grid-template-columns:repeat(2,1fr)}.staff-rank-grid{grid-template-columns:1fr}.report-range{width:100%}.report-range label{flex:1}.history-attention{align-items:flex-start;flex-wrap:wrap}.history-attention span{width:100%;margin-left:1.5rem}}
@media(max-width:575px){.alternate-email-controls{grid-template-columns:1fr}.alternate-email-controls .btn{width:100%}.report-kpis{grid-template-columns:1fr}.browser-url{grid-template-columns:1fr}.browser-url .btn{width:100%}.setup-flow>i{transform:rotate(90deg)}}
.singular-nav {
  position:sticky;
  top:var(--topbar-h);
  width:238px;
  height:calc(100vh - var(--topbar-h));
  flex:0 0 238px;
  display:flex;
  flex-direction:column;
  gap:.2rem;
  align-items:stretch;
  margin:0;
  padding:1rem .7rem 4.25rem;
  overflow-x:hidden;
  overflow-y:auto;
  background: var(--surface);
  border-right:1px solid var(--border);
  transition:width .22s cubic-bezier(.4,0,.2,1),flex-basis .22s cubic-bezier(.4,0,.2,1),transform .22s cubic-bezier(.4,0,.2,1);
}

/* Slideshow day and television setup. */
.slideshow-datebar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;margin-bottom:1rem;padding:.75rem 1rem}.slideshow-datebar h2{margin:0;text-align:center;color:var(--text);font-size:1rem}.slideshow-datebar form{display:flex;align-items:center;gap:.4rem}.slideshow-datebar form label{color:var(--muted);font-size:.65rem;font-weight:750;white-space:nowrap}.slideshow-datebar form .form-control{width:150px}.slideshow-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(285px,1fr));gap:.7rem;padding:1rem}.slideshow-party-card{height:100%;padding:.85rem;border:1px solid var(--border);border-radius:13px;background:var(--surface);box-shadow:var(--shadow-card)}.slideshow-party-card-head,.slideshow-party-meta,.slideshow-party-actions{display:flex;align-items:center;gap:.45rem}.slideshow-party-card-head{justify-content:space-between}.slideshow-party-card h3{margin:.6rem 0 .2rem;color:var(--text);font-size:.82rem}.slideshow-party-card p{margin:0;color:var(--muted);font-size:.66rem}.slideshow-party-meta{flex-wrap:wrap;margin:.65rem 0}.slideshow-party-meta span{padding:.25rem .4rem;border-radius:6px;background:var(--surface-hover);color:var(--muted);font-size:.61rem}.slideshow-party-actions{flex-wrap:wrap}.slideshow-party-room{margin:.65rem 0}.slideshow-party-room .form-select{font-size:.68rem}.slideshow-timeline{display:grid;grid-template-columns:76px 1fr;min-height:var(--slideshow-grid-height);padding:1rem 1rem 1rem 0}.slideshow-time-gutter,.slideshow-time-body{position:relative;height:var(--slideshow-grid-height)}.slideshow-time-gutter span{position:absolute;right:.75rem;transform:translateY(-50%);color:var(--muted);font-size:.6rem}.slideshow-time-body{border-left:1px solid var(--border)}.slideshow-gridline{position:absolute;left:0;right:0;border-top:1px solid var(--border)}.slideshow-timed-party{position:absolute;padding:3px 4px}.slideshow-timed-party .slideshow-party-card{position:relative;z-index:1;overflow:auto}.slideshow-unscheduled{margin-bottom:1rem}.purchase-toggle{display:flex!important;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem;border-radius:12px;background:var(--surface-hover)}.purchase-toggle>div>span{display:block}.purchase-delivery-copy{margin-top:.35rem;color:var(--c-red)!important;font-size:.67rem!important;font-weight:800}.purchase-delivery-copy.is-on{color:var(--c-green)!important}.email-confirm-address{padding:.7rem;border-radius:10px;background:var(--surface-hover);color:var(--text);font-weight:800;word-break:break-word}
.slideshow-method-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:1rem}.slideshow-method-card{padding:1.1rem}.slideshow-method-card.is-recommended{border-color:color-mix(in srgb,var(--c-green) 45%,var(--border))}.slideshow-method-icon,.slideshow-room-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;color:var(--brand);background:var(--brand-soft)}.slideshow-method-card .chip{float:right;margin-top:-42px}.slideshow-method-card h2{margin:.8rem 0 .35rem;color:var(--text);font-size:.95rem}.slideshow-method-card p,.slideshow-method-card small{color:var(--muted);font-size:.7rem;line-height:1.5}.slideshow-url{display:flex;gap:.4rem;margin:.75rem 0}.slideshow-url .form-control{min-width:0;font-size:.65rem}.owner-only-note{margin:.7rem 0 0!important;color:var(--c-amber)!important}.slideshow-room-list article{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.8rem;padding:.8rem 1rem;border-top:1px solid var(--border)}.slideshow-room-list strong{color:var(--text);font-size:.75rem}.slideshow-room-list .slideshow-url{margin:.3rem 0 0}.compact-empty{padding:1.5rem}
@media (max-width:1100px){.customer-results article{grid-template-columns:minmax(220px,1fr) auto auto}.customer-photo-preview{grid-column:1/-1;grid-row:2}}
@media (max-width:767.98px){.slideshow-datebar{grid-template-columns:1fr}.slideshow-datebar h2{grid-row:1;text-align:left}.slideshow-datebar form{flex-wrap:wrap}.slideshow-method-grid{grid-template-columns:1fr}.customer-photo-filter{grid-template-columns:1fr}.customer-photo-filter>.btn{grid-column:1}.customer-results article{grid-template-columns:1fr}.customer-photo-preview{grid-column:auto;grid-row:auto}.slideshow-timeline{grid-template-columns:58px 1fr}.slideshow-card-grid{grid-template-columns:1fr}}
.primary-nav-toggle { position:fixed; z-index:1012; left:.7rem; bottom:1rem; width:216px; display:inline-flex; align-items:center; justify-content:center; gap:.45rem; margin:0; padding:.55rem .7rem; color:var(--muted); background:var(--surface-hover); border:1px solid var(--border); border-radius:var(--radius-btn); font-size:.72rem; font-weight:700; transition:width .22s; }
@media (min-width:768px){
  body.primary-nav-collapsed .singular-nav { width:58px; flex-basis:58px; padding:.7rem .4rem 4rem; }
  body.primary-nav-collapsed .singular-nav-link { width:100%; min-height:44px; justify-content:center; padding:.6rem; font-size:0; }
  body.primary-nav-collapsed .singular-nav-link i { font-size:.92rem; }
  body.primary-nav-collapsed .singular-nav-ext { display:none; }
  body.primary-nav-collapsed .primary-nav-toggle { width:42px; left:.5rem; }
  body.primary-nav-collapsed .primary-nav-toggle span { display:none; }
}

.singular-nav-link {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  min-height:42px;
  padding:.62rem .75rem;
  border-radius: var(--radius-btn);
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--muted) !important;
  text-decoration: none !important;
  white-space: nowrap;
  transition: background 0.18s, color 0.18s;
}

.singular-nav-link:hover {
  background: var(--surface-hover);
  color: var(--text) !important;
}

.singular-nav-link.active {
  background: var(--brand);
  color: #fff !important;
  box-shadow: 0 2px 10px var(--brand-shadow);
}

.singular-nav-link i { width:18px; flex:none; text-align:center; font-size:.85em; }

/* Trailing "opens in a new tab" marker — quieter than the section icon. */
.singular-nav-ext {
  font-size: 0.62em !important;
  opacity: 0.55;
  margin-left: 0.1rem;
}

@media (max-width: 575.98px) {
  .photo-organizer { padding-right:0; }
  .party-stat-rail { position:static; width:auto; margin-bottom:1rem; }
  .singular-nav { gap: 0.2rem; padding: 0.3rem; }
  .singular-nav-link { padding: 0.45rem 0.72rem 0.45rem 0.6rem; font-size: 0.75rem; }
}
@media (max-width:767.98px){
  .primary-nav-toggle{z-index:1060;left:.75rem;bottom:.75rem;width:46px;height:46px;padding:0;border-radius:50%;box-shadow:var(--shadow-premium)}.primary-nav-toggle span{display:none}
  .singular-nav{position:fixed;z-index:1050;left:0;top:var(--topbar-h);bottom:0;width:min(286px,86vw);height:auto;flex-basis:auto;padding:1rem .75rem 4.5rem;box-shadow:12px 0 36px rgba(0,0,0,.3);transform:translateX(0)}
  body.primary-nav-collapsed .singular-nav{transform:translateX(-105%)}
  body:not(.primary-nav-collapsed)::after{content:"";position:fixed;z-index:1040;inset:var(--topbar-h) 0 0;background:rgba(0,0,0,.42)}
  body:not(.primary-nav-collapsed) .primary-nav-toggle{left:min(230px,calc(86vw - 56px))}
}

/* Section sub-nav (Account tabs) — same pills, but inline beside a heading
   rather than a full-width bar, so it reads as secondary to the main nav. */
.singular-subnav {
  margin-bottom: 0;
  width: auto;
}

.singular-subnav .singular-nav-link {
  padding: 0.35rem 0.7rem;
  font-size: 0.78rem;
}

/* ═══════════════════════════════════════════════════════════════════
   2. FOOTER
   ═══════════════════════════════════════════════════════════════════ */
.singular-footer {
  padding: 1.75rem 1.5rem 2.5rem;
  text-align: center;
  font-size: 0.78rem;
  color: var(--muted);
  border-top: 1px solid var(--border);
  margin-top: 1rem;
}

.singular-footer-links { margin-bottom: 0.4rem; }

.singular-footer-links a {
  color: var(--muted);
  text-decoration: none;
  font-weight: 600;
  transition: color 0.18s;
}

.singular-footer-links a:hover { color: var(--text); }

.singular-footer-sep { opacity: 0.4; margin: 0 0.5rem; }

.singular-footer-meta { opacity: 0.75; }

/* The cookie toast is bottom-centred and so are the footer links, so Bootstrap's
   `bottom-0` parked the notice on top of Support / FAQs / Privacy Policy —
   including the privacy link the notice itself tells you to read. Dock it clear
   of the footer band instead. */
.singular-cookie-dock { bottom: 6rem; }

@media (max-width: 575.98px) {
  .singular-cookie-dock { bottom: 8rem; }
}

/* ═══════════════════════════════════════════════════════════════════
   2b. LOGIN NOTICE CARDS
   The promo / holiday boxes beside the sign-in form. Replaces the old
   .notificationBox + .warningBox + .cookieBox inline styles.
   ═══════════════════════════════════════════════════════════════════ */
.singular-notice {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  transition: transform 0.18s, box-shadow 0.18s;
}

.singular-notice:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-premium);
}

/* These are <h6>, but `.card-title` in style.css is a global 26px/900 rule, so
   the promo headings rendered at exactly the size of "Location Log In" — three
   marketing boxes shouting louder than the form the page exists for. Size is
   set here rather than on the global class because every Bootstrap .card in
   the app inherits that rule and re-sizing it is a much wider change. */
.singular-notice .card-title {
  color: var(--text);
  font-weight: 700;
  font-size: 1.05rem;
  line-height: 1.35;
}
.singular-notice .card-text  { color: var(--muted); font-size: 0.85rem; }

/* Holiday / office-closed notice reads as an advisory, not a promo. */
.singular-notice-holiday { border-color: var(--border-success); }
.singular-notice-holiday .card-title { color: var(--color-success); }

.singular-notice-status {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-warning);
}

/* ═══════════════════════════════════════════════════════════════════
   2c. DASHBOARD
   Panels, stat tiles, metric toggles and the recent-image strip on Home.
   Replaces the fixed 800x500 table layout and its corner-PNG borders.
   ═══════════════════════════════════════════════════════════════════ */
.singular-panel,
.singular-stat,
.singular-idcard {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
}

/* ── Stat tiles ── */
.singular-stat-label {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 0.35rem;
}

.singular-stat-value {
  font-size: 1.75rem;
  font-weight: 800;
  line-height: 1.1;
  color: var(--text);
}

/* ── Location identity card (QR + ids) ── */
.singular-idcard #qrcodeimg img,
.singular-idcard #qrcodeimg canvas {
  display: block;
  border-radius: 6px;
  background: #fff;
  padding: 3px;
}

/* ── Dashboard: today's parties + funnel tiles ── */
.singular-stat-sub {
  margin-top: 0.15rem;
  line-height: 1.25;
}

.singular-today > :not(caption) > * > * {
  padding-top: 0.55rem;
  padding-bottom: 0.55rem;
}

.singular-today code {
  color: var(--muted);
  background: var(--surface-hover);
  padding: 0.1rem 0.35rem;
  border-radius: 4px;
}

.singular-upcoming {
  border-top: 1px solid var(--border);
}

/* ── Metric toggle list beside the chart ── */
.singular-optionmenu {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  max-height: 430px;
  overflow-y: auto;
}

.singular-option {
  display: flex;
  /* flex-start, not center: labels are allowed to wrap to two lines now, and
     centring would leave the swatch floating beside the middle of the text. */
  align-items: flex-start;
  gap: 0.5rem;
  width: 100%;
  padding: 0.3rem 0.4rem;
  background: transparent;
  border: 0;
  border-radius: var(--radius-btn-sm);
  text-align: left;
  font-size: 0.78rem;
  color: var(--muted);
  transition: background 0.15s, color 0.15s;
}

.singular-option:hover {
  background: var(--surface-hover);
  color: var(--text);
}

.singular-option-swatch {
  flex: 0 0 auto;
  width: 14px;
  height: 14px;
  border-radius: 3px;
  margin-top: 0.1rem;   /* optical alignment with the first line of the label */
}

/* The label had no min-width, so in the narrow col-lg-3 chart sidebar it could
   not shrink below its longest word — it overflowed and the card clipped it
   ("System Em", "Twitter Pos"). flex + min-width:0 lets it wrap instead. */
.singular-option-label {
  flex: 1 1 auto;
  min-width: 0;
  line-height: 1.2;
  white-space: normal;
  overflow-wrap: anywhere;
}

/* ── Recent image strip ── */
.singular-recentimages {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.singular-recentimages .recentimagesbox { line-height: 0; }

.singular-recentimages img.recentimages {
  height: 84px;
  width: auto;
  border-radius: var(--radius-btn-sm);
  border: 1px solid var(--border);
}

/* ── Glossary accordion ── */
.singular-glossary .accordion-item {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  overflow: hidden;
}

.singular-glossary .accordion-button {
  background: transparent;
  color: var(--text);
  font-weight: 600;
  box-shadow: none;
}

.singular-glossary .accordion-button:not(.collapsed) { color: var(--brand); }
.singular-glossary .accordion-body dt { color: var(--text); font-size: 0.85rem; margin-top: 0.75rem; }
.singular-glossary .accordion-body dt:first-child { margin-top: 0; }
.singular-glossary .accordion-body dd { color: var(--muted); font-size: 0.82rem; margin-bottom: 0; }

/* Legacy visibility helper still used by the code-verify panel. */
.thidden { display: none; }

/* ═══════════════════════════════════════════════════════════════════
   2d. FORMS
   ═══════════════════════════════════════════════════════════════════ */

/* "or" divider between mutually exclusive search criteria. */
.singular-or {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin: 0.75rem 0;
  color: var(--muted);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.singular-or::before,
.singular-or::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--border);
}

/* A disabled date input should read as switched-off, not merely greyed. */
.singular-panel .form-control:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

/* ═══════════════════════════════════════════════════════════════════
   2e. FILE BROWSER
   ═══════════════════════════════════════════════════════════════════ */

/* Results list keeps its own scroll region (the original pinned the rows to a
   420px box) but sized to the viewport rather than a fixed pixel height. */
.singular-filetable {
  max-height: min(60vh, 520px);
  overflow: auto;
}

.singular-filetable thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--surface);
  border-bottom: 1px solid var(--border);
}

/* Thumbnail grid (image view). */
.singular-thumbgrid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 0.75rem;
}

.singular-thumb {
  position: relative;
  border: 1px solid var(--border);
  border-radius: var(--radius-btn);
  overflow: hidden;
  background: var(--surface-hover);
  transition: border-color 0.15s, transform 0.15s;
}

.singular-thumb:hover { transform: translateY(-2px); }
.singular-thumb.selected { border-color: var(--brand); box-shadow: 0 0 0 2px var(--brand-glow); }

.singular-thumb img {
  display: block;
  width: 100%;
  height: 130px;
  object-fit: cover;
}

.singular-thumb-check {
  position: absolute;
  top: 0.4rem;
  left: 0.4rem;
  z-index: 1;
}

.singular-thumb-caption {
  padding: 0.4rem 0.5rem;
  font-size: 0.72rem;
  color: var(--muted);
  word-break: break-all;
}

/* ═══════════════════════════════════════════════════════════════════
   3. COOKIE NOTICE
   ═══════════════════════════════════════════════════════════════════ */
.singular-cookie {
  max-width: 420px;
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-card) !important;
  box-shadow: var(--shadow-premium);
  color: var(--text);
}

.singular-cookie .toast-header {
  background: transparent;
  border-bottom: 1px solid var(--border);
  color: var(--text);
}

.singular-cookie .toast-header i { color: var(--brand); }
.singular-cookie .toast-body { color: var(--muted); font-size: 0.82rem; }
.singular-cookie .toast-body a { color: var(--brand); }

/* ═══════════════════════════════════════════════════════════════════
   4. LEGACY-VIEW BRIDGE — TEMPORARY
   Content views still carrying pre-Bootstrap markup sit inside
   .pagecontainer. The legacy stylesheet.css assumes a white page, so text
   inherits dark-on-dark until each view is converted. These rules keep
   unconverted screens readable in the meantime.

   DELETE this whole section together with the stylesheet.css <link> in
   header_view.php once the last content view is on Bootstrap markup.
   ═══════════════════════════════════════════════════════════════════ */
.singular-app .pagecontainer { color: var(--text); }
.singular-app .pagecontainer a:not(.btn) { color: var(--brand); }
.singular-app .pagecontainer table { color: var(--text); }
.singular-app .pagecontainer h1,
.singular-app .pagecontainer h2,
.singular-app .pagecontainer h3,
.singular-app .pagecontainer h4 { color: var(--text); }

/* ═══════════════════════════════════════════════════════════════════════
   Marketing pages (login/planoptions — the Photo Party product page)

   These pages render through layout/template_marketing, which uses the same
   shell as the login screen but sets body.marketing-page instead of
   body.login-page so #maincontent flows normally instead of being vertically
   centred for a login card.

   The page previously depended on header_app's stylesheet stack (.well,
   .featureBox, .horizontal-break, .center, .mb50). None of those exist in the
   current theme, so the styling it needs lives here instead.
   ═══════════════════════════════════════════════════════════════════════ */

body.marketing-page #maincontent {
  display: block;
  padding: 0 !important;
}

/* Sticky section nav — replaces the anchor links that lived in header_app's
   navbar, which this page no longer loads. */
.marketing-nav {
  position: sticky;
  top: 0;
  z-index: 1030;
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  backdrop-filter: saturate(180%) blur(8px);
}

.marketing-nav-link {
  padding: 0.35rem 0.6rem;
  border-radius: var(--radius-btn-sm);
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--muted);
  text-decoration: none;
  white-space: nowrap;
}

.marketing-nav-link:hover {
  background: var(--surface-hover);
  color: var(--text);
}

/* scroll-margin so a sticky-nav-height gap is left above each anchor target,
   otherwise the nav covers the heading you just jumped to. */
.marketing-page section[id],
.marketing-page header[id] {
  scroll-margin-top: 4rem;
}

html { scroll-behavior: smooth; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

/* ── Bands ── */
.marketing-hero {
  background: linear-gradient(180deg, var(--bg-top), var(--bg-mid));
  border-bottom: 1px solid var(--border);
}

.marketing-band-pink   { background: var(--c-pink-bg);   border-block: 1px solid var(--border); }
.marketing-band-blue   { background: var(--c-blue-bg);   border-block: 1px solid var(--border); }
.marketing-band-violet { background: var(--c-violet-bg); border-block: 1px solid var(--border); }
.marketing-band-light  { background: var(--surface-hover); border-block: 1px solid var(--border); }

/* ── Cards ── */
.marketing-feature img { object-fit: contain; }

.marketing-feature-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--brand);
  color: #fff;
  font-size: 1.6rem;
}

/* The old page forced .fa { font-size:48px; color:white } globally, which leaked
   white icons on to anything else that used Font Awesome. Scoped to the badge. */

.marketing-step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  margin-bottom: 0.5rem;
  border-radius: 50%;
  background: var(--brand);
  color: #fff;
  font-size: 0.8rem;
  font-weight: 700;
}

.marketing-roadmap-icon {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 12px;
  background: var(--c-violet-bg);
  color: var(--c-violet);
  font-size: 1.1rem;
}

.marketing-contact a { text-decoration: none; }
.marketing-contact a:hover { text-decoration: underline; }

.marketing-plan-party { font-weight: 800; color: var(--c-blue); }
.marketing-plan-lite  { font-weight: 800; color: var(--c-pink); }

/* ── Empty message blocks ───────────────────────────────────────────────
   Seven views render <div class="errmsg"> unconditionally and echo '' when
   there is nothing to say (settings/rooms, files/files, files/client,
   files/client_image, files/event, files/event_image, files/searchcodes).
   .errmsg carries padding, a border and a danger background, so an empty one
   paints a small pink pill above the content — visible on settings/rooms.

   Fixed here rather than in each view: it is one rule instead of seven edits,
   and it also covers any future view that follows the same pattern. */
.errmsg:empty,
.msg:empty {
  display: none;
}

/* Account Statement — was a fixed 300px scroller wrapping a fake table. Caps
   the height only once there is enough content to need it. */
.singular-statement {
  max-height: 340px;
  overflow-y: auto;
}

/* ═══════════════════════════════════════════════════════════════════
   5. CALENDAR
   The party schedule: week grid, day grid, party blocks, editor.

   Design notes for whoever touches this next:
   - Party blocks are absolutely positioned inside a day column. Vertical
     position and height are minutes * px-per-minute, set inline by the view,
     so a 90-minute party is visibly longer than a 60-minute one. Horizontal
     position comes from the lane packing in Mschedule::layoutLanes().
   - Status colour is the primary signal and is used consistently everywhere
     (grid block, chip, legend, editor badge). Do not introduce a fifth colour
     without adding it to the legend — staff read these at a glance from across
     a front desk.
   - Touch targets are deliberately generous. This runs on a counter tablet.
   ═══════════════════════════════════════════════════════════════════ */

.cal {
  --cal-gutter-w: 62px;
  --cal-radius: 14px;
}

/* ── Toolbar ── */
.cal-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 1rem;
}

.cal-toolbar-left,
.cal-toolbar-right {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
}

.cal-range {
  font-size: 1.15rem;
  font-weight: 700;
  margin: 0;
  color: var(--text);
}

.cal-viewswitch {
  display: inline-flex;
  padding: 3px;
  background: var(--surface-hover);
  border: 1px solid var(--border);
  border-radius: 999px;
}

.cal-viewswitch-btn {
  padding: 0.3rem 0.85rem;
  border-radius: 999px;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--muted);
  text-decoration: none;
  transition: background 0.15s, color 0.15s;
}

.cal-viewswitch-btn:hover { color: var(--text); }

.cal-viewswitch-btn.active {
  background: var(--surface);
  color: var(--text);
  box-shadow: var(--shadow-card);
}

/* ── Week grid ──
   8 columns: the time gutter plus 7 days. Scrolls horizontally on small
   screens rather than crushing seven columns into a phone width. */
.cal-week-wrap,
.cal-day-wrap {
  overflow-x: auto;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--cal-radius);
  box-shadow: var(--shadow-card);
}

.cal-week {
  display: grid;
  grid-template-columns: var(--cal-gutter-w) repeat(7, minmax(132px, 1fr));
  min-width: 900px;
}

.cal-dayview {
  display: grid;
  grid-template-columns: var(--cal-gutter-w) 1fr;
  min-width: 520px;
}
.cal .notice + .cal-day-wrap { margin-top:.85rem; clear:both; }
.setting-help-link { display:inline-grid; place-items:center; width:25px; height:25px; margin-left:.45rem; border-radius:50%; color:var(--c-blue); background:var(--c-blue-bg); font-size:.7rem; text-decoration:none; vertical-align:middle; }
.setting-help-link:hover { color:#fff; background:var(--c-blue); }

/* ── Time gutter ── */
.cal-gutter { position: relative; border-right: 1px solid var(--border); }
.cal-gutter-head { height: 58px; border-bottom: 1px solid var(--border); }
.cal-gutter-body { position: relative; height: var(--cal-height); }

.cal-gutter-label {
  position: absolute;
  right: 8px;
  transform: translateY(-50%);
  font-size: 0.68rem;
  color: var(--muted);
  opacity: 0.65;
  white-space: nowrap;
}

.cal-gutter-label.on-hour { opacity: 1; font-weight: 600; }

/* ── Day column ── */
.cal-day { border-right: 1px solid var(--border); min-width: 0; }
.cal-day:last-child { border-right: 0; }
.cal-day.is-past { background: color-mix(in srgb, var(--surface-hover) 45%, transparent); }
.cal-day.is-today { background: color-mix(in srgb, var(--brand) 5%, transparent); }

.cal-day-head {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 0.4rem;
  height: 58px;
  border-bottom: 1px solid var(--border);
  text-decoration: none;
  color: var(--text);
  transition: background 0.15s;
}

.cal-day-head:hover { background: var(--surface-hover); color: var(--text); }

.cal-day-dow {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}

.cal-day-num { font-size: 1.15rem; font-weight: 700; }

.cal-day.is-today .cal-day-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px; height: 30px;
  border-radius: 50%;
  background: var(--brand);
  color: #fff;
  font-size: 0.95rem;
}

.cal-day-count {
  font-size: 0.66rem;
  font-weight: 700;
  padding: 0.1rem 0.4rem;
  border-radius: 999px;
  background: var(--surface-hover);
  color: var(--muted);
}

/* ── The grid body parties sit in ── */
.cal-day-body { position: relative; height: var(--cal-height); }

.cal-slotline {
  position: absolute;
  left: 0; right: 0;
  height: 1px;
  background: var(--border);
  opacity: 0.4;
}

.cal-slotline.on-hour { opacity: 0.9; }

/* Clicking empty space books at that time — the fastest path to a booking. */
.cal-slotline[onclick] { height: 14px; background-clip: content-box; cursor: pointer; }
.cal-slotline[onclick]:hover { background: color-mix(in srgb, var(--brand) 22%, transparent); opacity: 1; }

.cal-now {
  position: absolute;
  left: 0; right: 0;
  height: 2px;
  background: var(--c-red, #e5484d);
  z-index: 4;
  pointer-events: none;
}

.cal-now::before {
  content: '';
  position: absolute;
  left: -4px; top: -3px;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--c-red, #e5484d);
}

.cal-now-label {
  position: absolute;
  left: 8px; top: -18px;
  font-size: 0.65rem;
  font-weight: 700;
  color: var(--c-red, #e5484d);
}

/* ── Party block ── */
.cal-party {
  position: absolute;
  padding: 4px 7px;
  border-radius: 9px;
  border-left: 3px solid;
  overflow: hidden;
  cursor: pointer;
  font-size: 0.72rem;
  line-height: 1.25;
  z-index: 2;
  transition: transform 0.12s, box-shadow 0.12s, filter 0.12s;
}

.cal-party:hover,
.cal-party:focus-visible {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(0,0,0,0.18);
  z-index: 5;
  outline: none;
  filter: brightness(1.04);
}

.cal-party-time { font-weight: 700; opacity: 0.85; font-size: 0.68rem; }
.cal-party-name { font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-party-meta { display: flex; gap: 0.5rem; opacity: 0.85; font-size: 0.67rem; margin-top: 1px; }
.cal-party-room {
  font-size: 0.63rem;
  opacity: 0.8;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Day view blocks have room to breathe. */
.cal-party-wide { padding: 7px 11px; font-size: 0.8rem; border-radius: 11px; }
.cal-party-wide .cal-party-name { font-size: 0.95rem; }
.cal-party-row { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }

.cal-paid { font-weight: 700; }

/* ── Status palette ──
   One vocabulary shared by blocks, chips, legend dots and the editor badge. */
.status-upcoming    { background: var(--c-blue-bg);   border-color: var(--c-blue);   color: var(--c-blue); }
.status-running     { background: var(--c-green-bg);  border-color: var(--c-green);  color: var(--c-green); }
.status-done        { background: var(--surface-hover); border-color: var(--border); color: var(--muted); }
.status-unscheduled { background: var(--c-amber-bg);  border-color: var(--c-amber);  color: var(--c-amber); }

.cal-party.status-done { opacity: 0.72; }
.cal-party.status-done .cal-party-name { font-weight: 600; }
.cal-party.is-actual-time { opacity:.62; border-left-style:dashed; outline:1px dashed color-mix(in srgb,var(--muted) 42%,transparent); outline-offset:-2px; }
.cal-party.is-actual-time .cal-party-time::after { content:" actual"; font-size:.58rem; font-weight:600; text-transform:uppercase; letter-spacing:.04em; }

/* Live pulse — the one piece of motion on the page, reserved for "right now". */
.cal-live {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.65rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.cal-live-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: currentColor;
  animation: cal-pulse 1.8s ease-in-out infinite;
}

@keyframes cal-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.35; transform: scale(0.8); }
}

@media (prefers-reduced-motion: reduce) {
  .cal-live-dot { animation: none; }
}

/* ── Unscheduled tray ── */
.cal-unscheduled { padding: 0.5rem; border-top: 1px dashed var(--border); }

.cal-unscheduled-head {
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 0.35rem;
}

.cal-chiprow { display: flex; flex-wrap: wrap; gap: 0.4rem; }

.cal-chip {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  width: 100%;
  margin-bottom: 0.3rem;
  padding: 0.35rem 0.55rem;
  border: 1px solid;
  border-left-width: 3px;
  border-radius: 8px;
  font-size: 0.72rem;
  text-align: left;
  cursor: pointer;
  transition: transform 0.12s;
}

.cal-chiprow .cal-chip { width: auto; margin-bottom: 0; }
.cal-chip:hover { transform: translateY(-1px); }
.cal-chip-name { font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-chip-meta { margin-left: auto; opacity: 0.8; white-space: nowrap; }

/* ── Day summary ── */
.cal-daystats { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-bottom: 1rem; }

.cal-daystat {
  display: flex;
  align-items: baseline;
  gap: 0.4rem;
  padding: 0.5rem 0.9rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 999px;
  box-shadow: var(--shadow-card);
}

.cal-daystat-value { font-size: 1.15rem; font-weight: 800; color: var(--text); }
.cal-daystat-label { font-size: 0.75rem; color: var(--muted); }
.cal-daystat.is-live { border-color: var(--c-green); }
.cal-daystat.is-live .cal-daystat-value { color: var(--c-green); }

/* ── Legend ── */
.cal-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.9rem;
  margin-top: 0.85rem;
  font-size: 0.72rem;
  color: var(--muted);
}

.cal-legend-item { display: inline-flex; align-items: center; gap: 0.35rem; }
.cal-legend-sep { width: 1px; height: 14px; background: var(--border); }

.cal-dot {
  width: 10px; height: 10px;
  border-radius: 3px;
  border-left: 3px solid;
}

/* ── Empty day ── */
.cal-empty {
  text-align: center;
  padding: 3.5rem 1rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--cal-radius);
  box-shadow: var(--shadow-card);
}

.cal-empty-art {
  font-size: 2.6rem;
  color: var(--brand);
  opacity: 0.35;
  margin-bottom: 0.75rem;
}

/* ── Party editor ── */
.party-summary {
  padding: 0.75rem 0.9rem;
  margin-bottom: 1rem;
  background: var(--surface-hover);
  border-radius: 10px;
}

.party-summary-main { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.party-summary-name { font-weight: 700; font-size: 1rem; }

.party-summary-status {
  padding: 0.15rem 0.5rem;
  border-radius: 999px;
  border-left: 3px solid;
  font-size: 0.68rem;
  font-weight: 700;
  white-space: nowrap;
}

.party-summary-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.85rem;
  margin-top: 0.3rem;
  font-size: 0.78rem;
  color: var(--muted);
}

.party-summary-notes {
  margin-top: 0.5rem;
  padding-top: 0.5rem;
  border-top: 1px solid var(--border);
  font-size: 0.78rem;
  color: var(--muted);
  font-style: italic;
}

.party-lengths { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem; }

.party-length {
  padding: 0.4rem 0.85rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--muted);
  font-size: 0.82rem;
  font-weight: 600;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}

.party-length:hover:not(:disabled) { background: var(--surface-hover); color: var(--text); }

.party-length.active {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
}

.party-length-custom { width: 82px; }

@media (max-width: 575.98px) {
  .cal-toolbar { flex-direction: column; align-items: stretch; }
  .cal-toolbar-right { justify-content: space-between; }
  .cal-range { font-size: 1rem; }
}

/* ═══════════════════════════════════════════════════════════════════
   6. TODAY (home dashboard)
   Staff-facing, no financials. Big targets, high contrast, readable
   from a step back — this lives on a counter tablet all day.
   ═══════════════════════════════════════════════════════════════════ */

.today-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.25rem;
}

.today-greet { font-size: 1.6rem; font-weight: 800; margin: 0; color: var(--text); }
.today-date  { margin: 0.15rem 0 0; color: var(--muted); font-size: 0.9rem; }

.today-pills { display: flex; flex-wrap: wrap; gap: 0.6rem; }

.today-pill {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 92px;
  padding: 0.55rem 1rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: var(--shadow-card);
}

.today-pill-value { font-size: 1.5rem; font-weight: 800; line-height: 1; color: var(--text); }
.today-pill-label { font-size: 0.68rem; color: var(--muted); margin-top: 0.2rem; text-align: center; }

.today-pill.is-live { border-color: var(--c-green); background: var(--c-green-bg); }
.today-pill.is-live .today-pill-value { color: var(--c-green); }

/* ── Quick actions ──
   The three or four things staff do every shift, one tap away. Sized for a
   thumb on a tablet, not a mouse on a desktop. */
.quickrow {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 0.7rem;
  margin-bottom: 1.25rem;
}

.quick {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.85rem 1rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: var(--shadow-card);
  text-decoration: none;
  color: var(--text);
  transition: transform 0.14s, box-shadow 0.14s, border-color 0.14s;
}

.quick:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-premium, 0 10px 26px rgba(0,0,0,0.16));
  border-color: var(--brand);
  color: var(--text);
}

.quick-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 42px; height: 42px;
  border-radius: 12px;
  background: var(--surface-hover);
  color: var(--brand);
  font-size: 1.05rem;
}

.quick-primary .quick-icon { background: var(--brand); color: #fff; }
.quick-primary { border-color: color-mix(in srgb, var(--brand) 40%, var(--border)); }

.quick-text  { display: flex; flex-direction: column; min-width: 0; }
.quick-title { font-weight: 700; font-size: 0.9rem; }
.quick-sub   { font-size: 0.72rem; color: var(--muted); }

/* ── Section heads ── */
.today-sect {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 0.75rem;
}

/* ── Party rows ── */
.partyrow {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  padding: 0.7rem 0.85rem;
  margin-bottom: 0.5rem;
  border-radius: 12px;
  border-left: 4px solid;
  background: var(--surface-hover);
}

.partyrow:last-child { margin-bottom: 0; }

.partyrow-hero { width:86px; aspect-ratio:4/3; flex:none; overflow:hidden; border-radius:11px; background:var(--surface); }
.partyrow-hero img { width:100%; height:100%; object-fit:cover; }
.partyrow.is-big .partyrow-hero { width:112px; }
.party-status { display:inline-flex; align-items:center; gap:.25rem; padding:.15rem .35rem; border-radius:6px; background:var(--surface); color:var(--muted); font-size:.62rem; }
.party-status.is-purchased { color:var(--c-green); background:var(--c-green-bg); }
.party-status.is-unpurchased { color:var(--c-amber); background:var(--c-amber-bg); }
.party-status.is-sent { color:var(--c-blue); background:var(--c-blue-bg); }
.party-status.is-opened,.party-status.is-delivered { color:var(--c-green); background:var(--c-green-bg); }
.party-status.is-bounced { color:var(--c-amber); background:var(--c-amber-bg); }
.party-status.is-failed { color:var(--c-red); background:var(--c-red-bg); }
.party-status.is-upload { color:var(--c-violet); background:var(--c-violet-bg); }

.partyrow.status-upcoming    { border-left-color: var(--c-blue);  }
.partyrow.status-running     { border-left-color: var(--c-green); background: var(--c-green-bg); }
.partyrow.status-done        { border-left-color: var(--border); opacity: 0.7; }
.partyrow.status-unscheduled { border-left-color: var(--c-amber); background: var(--c-amber-bg); }

.partyrow-when { flex: 0 0 auto; min-width: 74px; display: flex; flex-direction: column; }
.partyrow-time { font-weight: 800; font-size: 0.9rem; color: var(--text); white-space: nowrap; }
.partyrow-notime { color: var(--c-amber); font-size: 0.78rem; }
.partyrow-until { font-size: 0.68rem; color: var(--muted); }

.partyrow-main { flex: 1 1 auto; min-width: 0; }
.partyrow-name { font-weight: 700; font-size: 0.95rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.partyrow-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin-top: 0.1rem;
  font-size: 0.72rem;
  color: var(--muted);
}

.partyrow-code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; opacity: 0.8; }

.partyrow-note {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 240px;
  font-style: italic;
}
.partyrow-notes { display:flex; align-items:flex-start; gap:.45rem; width:100%; margin-top:.55rem; padding-top:.5rem; border-top:1px solid var(--border); color:var(--muted); font-size:.72rem; line-height:1.4; }
.partyrow-notes i { flex:none; margin-top:.12rem; color:var(--c-amber); }
.today-finished-card { background:var(--surface-hover); }
.today-finished-card .partyrow { background:color-mix(in srgb,var(--surface) 75%,var(--surface-hover)); }

.partyrow-photos { flex: 0 0 auto; text-align: right; }
.partyrow-photocount { display: block; font-weight: 800; font-size: 1.05rem; line-height: 1; color: var(--text); }
.partyrow-photolabel { font-size: 0.68rem; color: var(--muted); }

.partyrow.is-big { padding: 0.95rem 1rem; }
.partyrow.is-big .partyrow-name { font-size: 1.1rem; }
.partyrow.is-big .partyrow-photocount { font-size: 1.6rem; }

.today-done { margin-top: 0.85rem; }
.today-done summary {
  cursor: pointer;
  font-size: 0.78rem;
  color: var(--muted);
  padding: 0.35rem 0;
}
.today-done[open] summary { margin-bottom: 0.5rem; }

/* ── Empty states ──
   A venue with no parties booked is a normal Tuesday, not an error. */
.today-empty { text-align: center; padding: 1.75rem 1rem; }
.today-empty-art { font-size: 2rem; color: var(--brand); opacity: 0.3; margin-bottom: 0.5rem; }

/* ── Photo wall ──
   This is a photo product; the home screen should look like one. */
.photowall {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(88px, 1fr));
  gap: 5px;
}

.photowall-item {
  position: relative;
  display: block;
  aspect-ratio: 1 / 1;
  border-radius: 10px;
  overflow: hidden;
  background: var(--surface-hover);
  transition: transform 0.16s, box-shadow 0.16s;
}

.photowall-item:hover {
  transform: scale(1.04);
  box-shadow: 0 6px 18px rgba(0,0,0,0.22);
  z-index: 2;
}

.photowall-item img { width: 100%; height: 100%; object-fit: cover; display: block; }

.gallery-shortcuts { display:flex; flex-direction:column; gap:.55rem; padding-top:.35rem; }
.gallery-shortcut { display:flex; align-items:center; gap:.85rem; min-height:68px; padding:.55rem .7rem; border-radius:12px; background:var(--surface-hover); color:var(--text); text-decoration:none; }
.gallery-shortcut:hover { color:var(--brand); transform:translateX(2px); }
.gallery-shortcut > span:last-child { min-width:0; }
.gallery-shortcut strong,.gallery-shortcut small { display:block; }
.gallery-shortcut strong { font-size:.78rem; }
.gallery-shortcut small { margin-top:.18rem; color:var(--muted); font-size:.64rem; }
.gallery-stack { position:relative; width:74px; height:52px; flex:none; }
.gallery-stack img { position:absolute; left:calc(var(--stack) * 8px); top:calc(var(--stack) * 2px); width:54px; height:48px; object-fit:cover; border:2px solid var(--surface); border-radius:8px; box-shadow:0 3px 8px rgba(0,0,0,.2); }
.gallery-stack img:nth-child(1) { z-index:3; }.gallery-stack img:nth-child(2){z-index:2}.gallery-stack img:nth-child(3){z-index:1}
.today-communications { margin-bottom:1rem; }
.ops-feed > a,.ops-feed > div { display:flex; align-items:center; gap:.65rem; padding:.65rem .9rem; border-bottom:1px solid var(--border); color:var(--text); text-decoration:none; }
.ops-feed > :last-child { border-bottom:0; }
.ops-feed > a:hover { background:var(--surface-hover); }
.ops-feed > * > span:nth-child(2) { flex:1; min-width:0; }
.ops-feed strong,.ops-feed small { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.ops-statuses { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:.25rem; }
.ops-feed strong { font-size:.74rem; }.ops-feed small{margin-top:.12rem;color:var(--muted);font-size:.62rem}
.ops-icon { display:grid; place-items:center; width:30px; height:30px; flex:none; border-radius:9px; background:var(--c-blue-bg); color:var(--c-blue); }
.ops-empty { margin:0; padding:1rem; color:var(--muted); font-size:.72rem; }
.today-history { margin-top:1rem; overflow:hidden; }
.today-loading { min-height:620px; }
.today-live-note{display:inline-flex;align-items:center;gap:.4rem;color:var(--muted);font-size:.7rem}
.today-skeleton-head,.today-skeleton-actions,.today-skeleton-grid { display:grid; gap:.75rem; margin-bottom:1rem; }
.today-skeleton-head { grid-template-columns:1fr 340px; }
.today-skeleton-head span,.today-skeleton-actions span,.today-skeleton-grid section,.today-skeleton-grid i { display:block; border-radius:14px; background:linear-gradient(100deg,var(--surface-hover) 30%,var(--surface) 45%,var(--surface-hover) 60%); background-size:220% 100%; animation:today-shimmer 1.35s infinite linear; }
.today-skeleton-head span { height:74px; }.today-skeleton-actions{grid-template-columns:repeat(5,1fr)}.today-skeleton-actions span{height:76px}.today-skeleton-grid{grid-template-columns:7fr 5fr}.today-skeleton-grid section{min-height:340px;padding:1rem}.today-skeleton-grid i{height:64px;margin-bottom:.7rem;opacity:.7}
.today.is-refreshing { position:relative; pointer-events:none; }
.today.is-refreshing::after { content:"Refreshing today…"; position:fixed; z-index:1050; right:1rem; bottom:1rem; padding:.55rem .75rem; border:1px solid var(--border); border-radius:10px; color:var(--text); background:var(--surface); box-shadow:var(--shadow-premium); font-size:.7rem; font-weight:750; }
.today.has-refresh-error::before { content:"Today could not refresh. We’ll try again in a minute."; display:block; margin-bottom:.75rem; padding:.55rem .75rem; border-radius:10px; color:var(--c-amber); background:var(--c-amber-bg); font-size:.7rem; }
@keyframes today-shimmer { to { background-position:-220% 0; } }
.page-load-skeleton { min-height:620px; padding-top:.25rem; }
.page-load-notice { position:sticky; top:.5rem; z-index:30; display:flex; align-items:center; justify-content:center; gap:.5rem; width:max-content; max-width:100%; margin:0 auto .75rem; padding:.55rem .9rem; border:1px solid var(--border); border-radius:999px; background:var(--surface); color:var(--muted); box-shadow:var(--shadow); font-size:.72rem; }
.page-load-title,.page-load-tools,.page-load-columns section,.page-load-columns i { background:linear-gradient(100deg,var(--surface-hover) 30%,var(--surface) 45%,var(--surface-hover) 60%); background-size:220% 100%; animation:today-shimmer 1.35s infinite linear; }
.page-load-title{width:min(420px,70%);height:50px;border-radius:13px;margin-bottom:1rem}.page-load-tools{height:68px;border-radius:15px;margin-bottom:1rem}.page-load-columns{display:grid;grid-template-columns:2fr 1fr;gap:1rem}.page-load-columns section{min-height:390px;padding:1rem;border-radius:16px}.page-load-columns i{display:block;height:70px;margin-bottom:.7rem;border-radius:11px;opacity:.72}
@media(max-width:767.98px){.page-load-columns{grid-template-columns:1fr}.page-load-columns section:last-child{display:none}.today-skeleton-head,.today-skeleton-grid{grid-template-columns:1fr}.today-skeleton-actions{grid-template-columns:repeat(2,1fr)}}
@media(max-width:767.98px){.metric-skeleton.two{grid-template-columns:1fr}.history-metrics{grid-template-columns:1fr}.history-metrics>div{border-right:0;border-bottom:1px solid var(--border)}.history-metrics>div:last-child{border-bottom:0}}
.history-metrics { display:grid; grid-template-columns:repeat(3,1fr); }
.history-metrics > div { padding:1rem; border-right:1px solid var(--border); }
.history-metrics > div:last-child { border-right:0; }
.history-metrics strong,.history-metrics span { display:block; }.history-metrics strong{color:var(--text);font-size:1.35rem}.history-metrics span{color:var(--muted);font-size:.67rem}
.history-chart-scroll{overflow-x:auto;border-top:1px solid var(--border);background:var(--surface-hover)}
.history-day-chart{position:relative;display:grid;grid-template-columns:repeat(30,minmax(28px,1fr));gap:.35rem;min-width:900px;height:185px;padding:1.3rem 1.1rem .75rem}
.history-trend-line{position:absolute;z-index:2;top:1.3rem;left:1.1rem;width:calc(100% - 2.2rem);height:108px;overflow:visible;pointer-events:none}.history-trend-line polyline{fill:none;stroke:var(--brand);stroke-width:1.1;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.history-trend-line circle{fill:var(--surface);stroke:var(--brand);stroke-width:1.2;vector-effect:non-scaling-stroke}
.history-day{position:relative;z-index:3;display:grid;grid-template-rows:108px auto;gap:.4rem;min-width:0;text-align:center;outline:none}.history-day-bar{align-self:end;justify-self:center;display:flex;flex-direction:column-reverse;width:72%;min-height:2px;overflow:hidden;border-radius:4px 4px 1px 1px;background:var(--surface)}.history-day-bar>i{display:block;width:100%;min-height:0}.history-day-bar .history-purchased{background:var(--c-green)}.history-day-bar .history-not-purchased{background:var(--c-amber);border-top:1px solid rgba(255,255,255,.45)}.history-day small{color:var(--muted);font-size:.56rem;line-height:1.2;white-space:nowrap}.history-day:nth-of-type(even) small{visibility:hidden}
.history-hover{position:absolute;z-index:8;bottom:calc(100% - 10px);left:50%;display:none;min-width:145px;padding:.65rem .75rem;transform:translateX(-50%);border:1px solid var(--border);border-radius:9px;background:var(--surface);box-shadow:var(--shadow-md);color:var(--text);text-align:left;white-space:nowrap}.history-day:hover .history-hover,.history-day:focus .history-hover{display:grid;gap:.3rem}.history-hover strong{font-size:.75rem}.history-hover span{display:flex;align-items:center;gap:.4rem;color:var(--muted);font-size:.67rem}.history-hover i{width:8px;height:8px;border-radius:2px}.history-hover .is-purchased{background:var(--c-green)}.history-hover .is-not-purchased{background:var(--c-amber)}
.history-chart-note{margin:0;padding:.7rem 1.15rem;color:var(--muted);font-size:.67rem}.history-chart-note i{margin-right:.3rem;color:var(--c-blue)}
.setting-switch-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;padding:.2rem 0}.setting-switch-row+.setting-switch-row{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--border)}.setting-switch-row.compact{align-items:center}.setting-title{margin:0 0 .2rem;color:var(--text);font-size:.9rem;font-weight:700}.setting-switch{display:inline-flex;flex:0 0 auto;align-items:center;gap:.55rem;cursor:pointer}.setting-switch input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.setting-switch-track{position:relative;width:44px;height:24px;border:1px solid var(--border-strong);border-radius:999px;background:var(--surface-hover);transition:.2s ease}.setting-switch-track:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--muted);box-shadow:0 1px 3px rgba(0,0,0,.25);transition:.2s ease}.setting-switch input:checked+.setting-switch-track{border-color:var(--brand);background:var(--brand)}.setting-switch input:checked+.setting-switch-track:after{left:23px;background:#fff}.setting-switch input:focus-visible+.setting-switch-track{outline:3px solid var(--brand-soft);outline-offset:2px}.setting-switch-state{min-width:20px;color:var(--muted);font-size:.72rem;font-weight:700}.setting-impact{display:flex;gap:.55rem;margin-top:1rem;padding:.75rem .85rem;border-radius:9px;background:var(--brand-soft);color:var(--text);font-size:.74rem;line-height:1.5}.setting-impact i{margin-top:.15rem;color:var(--brand)}[hidden]{display:none!important}@media(max-width:575.98px){.setting-switch-row{gap:.8rem}.setting-switch{flex-direction:column;gap:.2rem}.setting-switch-state{font-size:.64rem}}
.zero-party-attention>div{min-width:0}.zero-party-links{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.4rem}.zero-party-links a{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .5rem;border:1px solid rgba(233,119,38,.24);border-radius:999px;color:var(--text);background:var(--surface);font-size:.72rem;font-weight:700}.zero-party-links a:hover{border-color:var(--c-amber);color:var(--c-amber)}.zero-party-links small{color:var(--muted);font-size:.62rem;font-weight:500}
.metric-skeleton{margin-top:1rem}.metric-skeleton.two{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.metric-skeleton i{display:block;height:250px;border-radius:16px;background:linear-gradient(100deg,var(--surface-hover) 30%,var(--surface) 45%,var(--surface-hover) 60%);background-size:220% 100%;animation:today-shimmer 1.35s infinite linear}

/* ── Who am I (topbar) ── */
.topbar-whoami {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;
  line-height: 1.15;
  margin-right: 0.35rem;
}

.topbar-whoami-name { font-size: 0.8rem; font-weight: 700; }
.topbar-whoami-role { font-size: 0.66rem; opacity: 0.7; }
.theme-toggle { padding:0; border:0; background:none; }
.theme-toggle:hover { color:var(--brand)!important; }

/* Learning center + friendly release notes. */
.help-feature { display:flex; align-items:center; justify-content:space-between; gap:2rem; margin-bottom:1rem; padding:1.25rem 1.4rem; overflow:hidden; border-radius:18px; background:linear-gradient(125deg,var(--brand),var(--c-violet)); color:#fff; box-shadow:var(--shadow-premium); }
.help-feature h2 { margin:0 0 .35rem; color:#fff; font-size:1.35rem; }
.help-feature p { margin:0; max-width:62ch; color:rgba(255,255,255,.82); font-size:.8rem; }
.help-feature .page-kicker { color:rgba(255,255,255,.7); }
.help-feature > i { font-size:3.5rem; opacity:.18; transform:rotate(-8deg); }
.help-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.75rem; }
.help-section{margin-bottom:1rem;overflow:hidden;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-card)}
.help-topic-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--border)}
.help-topic-grid>a{display:grid;grid-template-columns:48px minmax(0,1fr) auto;grid-template-rows:auto auto;gap:.2rem .8rem;align-items:center;padding:1rem;color:var(--text);background:var(--surface);transition:background .15s,transform .15s}
.help-topic-grid>a:hover{color:var(--brand);background:var(--surface-hover)}.help-topic-grid>a>.help-icon{grid-row:1/3}.help-topic-grid>a>strong{align-self:end;font-size:.84rem}.help-topic-grid>a>small{align-self:start;color:var(--muted);font-size:.68rem}.help-topic-grid>a>i{grid-column:3;grid-row:1/3;color:var(--muted)}
.help-back{display:inline-flex;align-items:center;gap:.4rem;margin-bottom:1rem;color:var(--muted);font-size:.72rem;font-weight:700}.help-back:hover{color:var(--brand)}
.help-guide{max-width:980px;margin-inline:auto}.guide-hero-icon{display:grid;place-items:center;width:64px;height:64px;flex:none;border-radius:18px;color:var(--brand);background:var(--brand-soft);font-size:1.5rem}
.guide-steps{display:grid;gap:.8rem}.guide-steps>section{display:grid;grid-template-columns:46px minmax(0,1fr);gap:1rem;padding:1.1rem;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-card)}.guide-steps>section>b{display:grid;place-items:center;align-self:start;width:42px;height:42px;border-radius:50%;color:#fff;background:var(--brand);font-size:1rem}.guide-steps h2{margin:.1rem 0 .4rem;color:var(--text);font-size:1rem}.guide-steps p{margin:0 0 .65rem;color:var(--muted);font-size:.78rem;line-height:1.6}.guide-steps p:last-child{margin-bottom:0}
.guide-outcome{display:grid;grid-template-columns:56px minmax(0,1fr);gap:1rem;margin-bottom:1rem;padding:1.25rem;border:1px solid var(--border);border-radius:18px;background:linear-gradient(135deg,var(--brand-soft),var(--surface));box-shadow:var(--shadow-card)}.guide-outcome>span{display:grid;place-items:center;width:52px;height:52px;border-radius:16px;color:var(--brand);background:var(--surface);font-size:1.2rem}.guide-outcome h2{margin:0 0 .4rem;color:var(--text);font-size:1.1rem}.guide-outcome p{margin:0 0 .45rem;color:var(--muted);font-size:.8rem;line-height:1.65}.guide-explainer{margin-bottom:1rem}.room-flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:.8rem;padding:1rem}.room-flow>span{display:grid;justify-items:center;gap:.2rem;padding:1rem;text-align:center;border-radius:14px;background:var(--surface-hover)}.room-flow>span>i{margin-bottom:.3rem;color:var(--brand);font-size:1.3rem}.room-flow strong{color:var(--text);font-size:.82rem}.room-flow small{color:var(--muted);font-size:.67rem}.room-flow>i{color:var(--muted)}.room-workflows{margin:0 0 1rem;padding:0}.room-workflows section{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-card)}.room-workflows h2{margin:.35rem 0 .5rem;color:var(--text);font-size:1rem}.room-workflows p,.room-workflows li{color:var(--muted);font-size:.75rem;line-height:1.55}.room-workflows ul{padding-left:1.15rem}
.help-card { overflow:hidden; border:1px solid var(--border); border-radius:15px; background:var(--surface); box-shadow:var(--shadow-card); }
.help-card-wide { grid-column:1/-1; }
.help-card summary { display:flex; align-items:center; gap:.75rem; padding:1rem; cursor:pointer; list-style:none; }
.help-card summary::-webkit-details-marker { display:none; }
.help-card summary > span:nth-child(2) { flex:1; min-width:0; }
.help-card summary strong,.help-card summary small { display:block; }
.help-card summary strong { color:var(--text); font-size:.84rem; }
.help-card summary small { margin-top:.18rem; color:var(--muted); font-size:.68rem; }
.help-card summary > i { color:var(--muted); transition:transform .2s; }
.help-card[open] summary > i { transform:rotate(180deg); }
.help-icon { display:grid; place-items:center; width:40px; height:40px; flex:none; border-radius:12px; background:var(--c-violet-bg); color:var(--c-violet); }
.help-steps { padding:0 1rem 1rem; border-top:1px solid var(--border); color:var(--text); font-size:.76rem; line-height:1.55; }
.help-steps > ol { margin:.9rem 0 0; padding-left:1.25rem; }
.help-steps li { margin:.45rem 0; padding-left:.2rem; }
.workflow-compare { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; padding-top:1rem; }
.workflow-compare section { padding:1rem; border-radius:12px; background:var(--surface-hover); }
.workflow-compare h3 { margin:.25rem 0 .35rem; color:var(--text); font-size:.9rem; }
.workflow-compare p { color:var(--muted); }
.workflow-label { color:var(--brand); font-size:.64rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.help-callout { display:flex; gap:.65rem; margin-top:1rem; padding:.75rem; border-radius:10px; background:var(--c-amber-bg); color:var(--text); }
.help-callout i { color:var(--c-amber); }
.whats-new { margin:0 0 1rem; overflow:hidden; border:1px solid var(--border); border-radius:16px; background:var(--surface); box-shadow:var(--shadow-card); }
.whats-new .panel-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.whats-new-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); }
.whats-new-grid article { padding:1rem; border-right:1px solid var(--border); }
.whats-new-grid article:last-child { border-right:0; }
.whats-new-icon { display:grid; place-items:center; width:46px; height:46px; margin-bottom:.75rem; border-radius:13px; font-size:1.1rem; }
.whats-new-icon i { margin:0; }
.whats-new-icon.is-calendar { color:var(--c-blue); background:var(--c-blue-bg); }
.whats-new-icon.is-text { color:var(--c-green); background:var(--c-green-bg); }
.whats-new-icon.is-email { color:var(--c-violet); background:var(--c-violet-bg); }
.whats-new-icon.is-party { color:var(--c-amber); background:var(--c-amber-bg); }
.whats-new-grid strong { color:var(--text); font-size:.78rem; }
.whats-new-grid p { margin:.25rem 0 0; color:var(--muted); font-size:.68rem; line-height:1.5; }

/* User-facing release notes. */
.release-page { max-width:980px; margin:0 auto; }
.release-hero { display:flex; align-items:center; gap:1rem; margin-bottom:1rem; padding:1.3rem 1.4rem; border:1px solid var(--border); border-radius:18px; background:linear-gradient(130deg,var(--surface),var(--c-violet-bg)); box-shadow:var(--shadow-card); }
.release-hero-icon { display:grid; place-items:center; width:54px; height:54px; flex:none; border-radius:16px; color:var(--c-violet); background:var(--surface); box-shadow:var(--shadow-card); font-size:1.25rem; }
.release-hero h1 { margin:0; color:var(--text); font-size:1.65rem; }
.release-hero p { margin:.3rem 0 0; color:var(--muted); font-size:.78rem; }
.release-list { display:grid; gap:1rem; }
.release-card { overflow:hidden; border:1px solid var(--border); border-radius:16px; background:var(--surface); box-shadow:var(--shadow-card); }
.release-card-head { padding:1rem 1.15rem; border-bottom:1px solid var(--border); background:var(--surface-hover); }
.release-card-head time { display:block; color:var(--brand); font-size:.66rem; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.release-card-head h2 { margin:.2rem 0 0; color:var(--text); font-size:1rem; }
.release-entry { display:grid; grid-template-columns:36px minmax(0,1fr) auto; gap:.8rem; align-items:start; padding:1rem 1.15rem; border-bottom:1px solid var(--border); }
.release-entry:last-child { border-bottom:0; }
.release-entry-icon { display:grid; place-items:center; width:36px; height:36px; border-radius:10px; color:var(--brand); background:var(--brand-soft); }
.release-entry h3 { margin:0; color:var(--text); font-size:.82rem; }
.release-entry p { margin:.25rem 0 0; color:var(--muted); font-size:.72rem; line-height:1.55; }
.release-label { padding:.25rem .48rem; border-radius:999px; color:var(--c-green); background:var(--c-green-bg); font-size:.6rem; font-weight:800; white-space:nowrap; }
.release-label.is-smooth { color:var(--c-blue); background:var(--c-blue-bg); }
.release-label.is-new { color:var(--c-violet); background:var(--c-violet-bg); }
.profile-form{display:grid;gap:1rem}.profile-contact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.profile-form .panel-body{padding:1rem 1.15rem}.profile-form .form-actions{display:flex;justify-content:flex-end;gap:.5rem}.billing-alert{border-left-width:4px;box-shadow:var(--shadow-card)}
.account-disabled-alert{margin-bottom:1rem;border-left-width:4px;box-shadow:var(--shadow-card)}.account-disabled-alert .notice-body p{margin:.2rem 0 0}.account-disabled-alert a{font-weight:800}
#account>.d-flex,#account>.toolBar{padding:1rem 1.15rem;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-card)}
#account .mainBox,#account .formbox{border:1px solid var(--border)!important;border-radius:16px!important;background:var(--surface)!important;box-shadow:var(--shadow-card)!important}

@media (max-width:575.98px) {
  .profile-contact-grid{grid-template-columns:1fr}
  .whats-new .panel-head { align-items:flex-start; }
  .whats-new .panel-head .btn { padding:.35rem .5rem; font-size:.65rem; }
  .release-hero { align-items:flex-start; padding:1rem; }
  .release-hero-icon { width:44px; height:44px; border-radius:13px; }
  .release-entry { grid-template-columns:36px minmax(0,1fr); }
  .release-label { grid-column:2; width:max-content; }
  .help-topic-grid{grid-template-columns:1fr}.guide-steps>section{grid-template-columns:36px minmax(0,1fr);gap:.7rem;padding:.9rem}.guide-steps>section>b{width:34px;height:34px}.guide-hero-icon{display:none}
}
.iphone-qr { display:grid; grid-template-columns:190px 1fr; gap:1rem; align-items:center; margin:1rem 0; padding:1rem; border-radius:12px; background:var(--surface-hover); }
#iphoneSigninQr { display:grid; place-items:center; width:190px; min-height:190px; padding:7px; border-radius:10px; background:#fff; }
.iphone-qr strong { color:var(--text); }.iphone-qr p{color:var(--muted)}
.customer-search-hero { display:grid; grid-template-columns:auto minmax(260px,1fr) auto; align-items:center; gap:.65rem; width:min(850px,100%); margin:0 auto 1rem; padding:.8rem; }
.customer-search-hero > i { margin-left:.45rem; color:var(--muted); }.customer-search-hero .form-control{display:block!important;width:100%!important;min-width:260px!important}.customer-search-hero .btn{white-space:nowrap}
.customer-search-state{grid-column:2/-1;color:var(--muted);font-size:.7rem}.customer-search-state .fa-spin{color:var(--brand);margin-right:.25rem}.customer-result-skeleton{display:grid;gap:.75rem;padding:1rem}.customer-result-skeleton i{display:block;height:72px;border-radius:12px;background:linear-gradient(100deg,var(--surface-hover) 30%,var(--surface) 45%,var(--surface-hover) 60%);background-size:220% 100%;animation:today-shimmer 1.35s infinite linear}
.customer-results article { display:grid; grid-template-columns:minmax(220px,1fr) minmax(180px,280px) auto auto; align-items:center; gap:1rem; padding:.85rem 1rem; border-bottom:1px solid var(--border); }
.customer-results article:last-child{border-bottom:0}.customer-result-main{display:flex;align-items:center;gap:.7rem;min-width:0}.customer-result-main>div{min-width:0}.customer-result-main strong,.customer-result-main span,.customer-result-main small{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.customer-result-main strong{color:var(--text);font-size:.8rem}.customer-result-main span,.customer-result-main small{color:var(--muted);font-size:.66rem;margin-top:.12rem}
.customer-result-stats { display:flex; align-items:center; gap:.35rem; }.customer-result-stats>span{padding:.3rem .45rem;border-radius:7px;background:var(--surface-hover);color:var(--muted);font-size:.64rem;white-space:nowrap}.customer-result-stats strong{color:var(--text)}.customer-result-stats .is-purchased{color:var(--c-green);background:var(--c-green-bg)}
.customer-result-actions{display:flex;gap:.4rem}
.customer-photo-preview{display:flex;align-items:center;min-width:0;height:58px;color:var(--muted);text-decoration:none}.customer-photo-preview img{width:52px;height:52px;object-fit:cover;border:2px solid var(--surface);border-radius:9px;box-shadow:0 2px 8px rgba(15,23,42,.12)}.customer-photo-preview img+img{margin-left:-9px}.customer-photo-preview>span{display:grid;place-items:center;width:44px;height:44px;margin-left:-7px;border:2px solid var(--surface);border-radius:9px;background:var(--surface-hover);font-size:.65rem;font-weight:800}.customer-photo-preview.is-empty{gap:.4rem;font-size:.66rem}.customer-photo-preview.is-empty i{display:grid;place-items:center;width:42px;height:42px;border-radius:9px;background:var(--surface-hover)}
.customer-advanced-search{max-width:920px;margin:1rem auto 0;overflow:hidden}.customer-advanced-search summary{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;cursor:pointer;list-style:none}.customer-advanced-search summary::-webkit-details-marker{display:none}.customer-advanced-search summary>span{display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:.65rem}.customer-advanced-search summary>span>i{grid-row:1/3;color:var(--brand)}.customer-advanced-search summary strong{color:var(--text);font-size:.76rem}.customer-advanced-search summary small{color:var(--muted);font-size:.65rem}.customer-advanced-search[open] summary{border-bottom:1px solid var(--border)}.customer-advanced-search[open] summary>.fa-chevron-down{transform:rotate(180deg)}.customer-photo-filter{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;padding:1rem}.customer-photo-filter>label{display:grid;gap:.25rem;color:var(--muted);font-size:.65rem;font-weight:750}.customer-photo-filter fieldset{display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:.45rem;margin:0;padding:0;border:0}.customer-photo-filter legend{grid-column:1/-1;margin:0;color:var(--muted);font-size:.65rem;font-weight:750}.customer-photo-filter fieldset>span{padding-bottom:.6rem;color:var(--muted);font-size:.65rem}.customer-photo-filter>.btn{grid-column:1/-1;justify-self:end}
.slideshow-party-card>header,.slideshow-party-card>footer,.slideshow-party-contact,.slideshow-room-control{display:flex;align-items:center;gap:.45rem}.slideshow-party-card>header{justify-content:space-between}.slideshow-party-card>header h3{margin:.15rem 0 0}.slideshow-party-card>footer{flex-wrap:wrap;margin-top:.65rem}.slideshow-party-contact{align-items:flex-start;justify-content:space-between;gap:.6rem;margin:.55rem 0}.slideshow-party-contact>span:first-child{min-width:0;overflow:hidden;color:var(--muted);font-size:.64rem;text-overflow:ellipsis;white-space:nowrap}.slideshow-room-control{margin:.6rem 0}.slideshow-room-control label{flex:1;color:var(--muted);font-size:.62rem;font-weight:750}.slideshow-room-control .form-select{margin-top:.2rem}.slideshow-party-time{margin-top:.4rem!important}.photo-count-badge{padding:.3rem .45rem;border-radius:8px;background:var(--brand-soft);color:var(--brand);font-size:.63rem;font-weight:800;white-space:nowrap}

/* Product-page typography shared by Photos and Delivery. */
.page-kicker {
  display:block; margin-bottom:.35rem; color:var(--brand); font-size:.7rem;
  font-weight:800; letter-spacing:.11em; text-transform:uppercase;
}

/* ── Party photo library ── */
.library-summary { display:grid; grid-template-columns:150px 150px minmax(280px,1fr); gap:.75rem; margin-bottom:1rem; }
.library-summary > div { display:flex; flex-direction:column; justify-content:center; min-height:82px; padding:.85rem 1rem; border:1px solid var(--border); border-radius:14px; background:var(--surface); box-shadow:var(--shadow-card); }
.library-summary strong { color:var(--text); font-size:1.55rem; line-height:1.05; font-variant-numeric:tabular-nums; }
.library-summary span { color:var(--muted); font-size:.72rem; margin-top:.25rem; }
.library-summary .library-summary-tip { flex-direction:row; align-items:center; justify-content:flex-start; gap:.75rem; }
.library-summary-tip i { display:grid; place-items:center; width:38px; height:38px; flex:none; border-radius:11px; color:var(--c-amber); background:var(--c-amber-bg); }
.library-summary-tip span { margin:0; max-width:52ch; font-size:.78rem; }
.library-panel { overflow:visible; }
.library-toolbar { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.8rem 1rem; border-bottom:1px solid var(--border); }
.library-toolbar-actions { display:flex; align-items:flex-end; justify-content:flex-end; flex-wrap:wrap; gap:.5rem; }
.bulk-selection-copy { display:flex; flex-direction:column; min-width:120px; }
.bulk-selection-copy strong { color:var(--text); font-size:.78rem; }
.bulk-selection-copy small { color:var(--muted); font-size:.66rem; margin-top:.08rem; }
.compact-field { display:flex; flex-direction:column; gap:.18rem; margin:0; color:var(--muted); font-size:.62rem; font-weight:750; letter-spacing:.04em; text-transform:uppercase; }
.compact-field .form-select,.compact-field .form-control { min-width:140px; color:var(--text); font-size:.75rem; letter-spacing:normal; text-transform:none; }
.dt .check { width:1%; padding-right:.25rem; text-align:center; }
.dt tbody tr:has(.form-check-input:checked) { background:var(--brand-soft); }
.modern-pagination { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:.65rem; padding:1rem 0; color:var(--muted); font-size:.72rem; }
.modern-pagination .pager-filters { display:flex; gap:.2rem; }

/* Bootstrap-backed tables elsewhere use the same visual grammar while their
   views are progressively moved onto .dt. This removes boxed-in grey grids
   from Staff, Payments, Reports and Settings without altering their markup. */
.singular-app .table { --bs-table-bg:transparent; --bs-table-color:var(--text); --bs-table-border-color:var(--border); margin-bottom:0; color:var(--text); font-size:.78rem; vertical-align:middle; }
.singular-app .table > :not(caption) > * > * { padding:.72rem .8rem; border-bottom-width:1px; box-shadow:none; }
.singular-app .table thead th { color:var(--muted); background:var(--surface-hover); font-size:.65rem; font-weight:800; letter-spacing:.055em; text-transform:uppercase; white-space:nowrap; }
.singular-app .table-hover > tbody > tr:hover > * { --bs-table-accent-bg:var(--row-hover); color:var(--text); }
.singular-app .table tbody tr:last-child > * { border-bottom:0; }
.library-search { position:relative; flex:1; max-width:480px; }
.library-search > i { position:absolute; left:.8rem; top:50%; z-index:2; transform:translateY(-50%); color:var(--muted); pointer-events:none; }
.library-search .form-control { padding-left:2.35rem!important; }
.library-toolbar .form-select { width:auto; min-width:180px; }
.party-cell,.recipient-cell { display:flex; align-items:center; gap:.7rem; color:var(--text); text-decoration:none; min-width:220px; }
.party-cell:hover,.recipient-cell:hover { color:var(--brand); text-decoration:none; }
.party-cell strong,.party-cell small,.recipient-cell strong,.recipient-cell small { display:block; }
.party-cell small,.recipient-cell small { color:var(--muted); font-size:.68rem; margin-top:.12rem; font-weight:400; }
.party-avatar,.recipient-avatar { display:grid; place-items:center; width:38px; height:38px; flex:none; border-radius:11px; background:var(--c-violet-bg); color:var(--c-violet); }
.code-copy { display:inline-flex; align-items:center; gap:.45rem; padding:.35rem .5rem; border:0; border-radius:8px; background:transparent; color:var(--text); }
.code-copy:hover { background:var(--surface-hover); color:var(--brand); }
.code-copy.is-copied { color:var(--c-green); }
.code-copy i { color:var(--muted); font-size:.7rem; }
.photo-count-badge { display:inline-grid; place-items:center; min-width:2.2rem; padding:.25rem .45rem; border-radius:999px; background:var(--surface-hover); color:var(--text); font-weight:750; }
.slideshow-activity-filter{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem 1rem;margin-bottom:1rem}.slideshow-activity-filter>div:first-child{display:grid;gap:.15rem}.slideshow-activity-filter small{color:var(--muted);font-size:.68rem}.slideshow-activity-actions{display:flex;gap:.45rem;flex-wrap:wrap}.slideshow-activity-actions .btn span{display:inline-grid;place-items:center;min-width:1.35rem;height:1.35rem;margin-left:.25rem;padding:0 .3rem;border-radius:999px;background:rgba(127,127,127,.16)}.activity-live-dot{font-size:.48rem;color:var(--c-green);animation:photo-activity-pulse 1.8s ease-in-out infinite}.party-photo-activity{display:flex;align-items:center;gap:.35rem;margin-top:.55rem!important;padding:.38rem .5rem;border-radius:8px;background:var(--surface-hover);font-weight:750}.party-photo-activity.is-recent{background:color-mix(in srgb,var(--c-green) 14%,var(--surface));color:var(--c-green)!important}.party-photo-activity.is-recent i{font-size:.45rem;animation:photo-activity-pulse 1.8s ease-in-out infinite}.party-photo-activity.is-none{color:var(--muted)!important}.slideshow-party-card.photo-state-recent{border-color:color-mix(in srgb,var(--c-green) 48%,var(--border));box-shadow:0 0 0 1px color-mix(in srgb,var(--c-green) 12%,transparent),var(--shadow-card)}@keyframes photo-activity-pulse{50%{opacity:.35;transform:scale(.82)}}@media (max-width:767.98px){.slideshow-activity-filter{align-items:flex-start;flex-direction:column}}

/* ── Provider-backed email delivery ── */
.delivery-overview { grid-template-columns:repeat(5,minmax(0,1fr)); }
.delivery-stat { min-width:0; }
.delivery-stat.is-clicked .delivery-icon { color:var(--c-violet); background:var(--c-violet-bg); }
.delivery-definition { display:flex; align-items:flex-start; gap:.45rem; margin:-.25rem 0 1rem; color:var(--muted); font-size:.72rem; }
.delivery-definition i { color:var(--c-blue); margin-top:.12rem; }
.delivery-live-search { position:relative; }
.delivery-search-state { position:absolute; right:.7rem; top:50%; color:var(--muted); font-size:.62rem; transform:translateY(-50%); pointer-events:none; }
.delivery-live-search .form-control { padding-right:5rem!important; }
.delivery-load-sentinel { display:flex; align-items:center; justify-content:center; gap:.55rem; min-height:84px; color:var(--muted); font-size:.72rem; }
.delivery-definition strong { color:var(--text); }
.delivery-toolbar { padding:.85rem 1rem; border-bottom:1px solid var(--border); }
.delivery-periods { margin-bottom:.75rem; }
.delivery-range-form { display:flex; align-items:flex-end; flex-wrap:wrap; gap:.65rem; padding:.25rem 0 .9rem; }
.delivery-range-form label { display:grid; gap:.25rem; color:var(--muted); font-size:.78rem; font-weight:700; }
.delivery-range-form .form-control { min-width:10.5rem; }
.delivery-searches { display:grid; grid-template-columns:repeat(2,minmax(260px,420px)); gap:.75rem; }
.delivery-search { display:flex; position:relative; }
.delivery-search > i { position:absolute; z-index:2; left:.8rem; top:50%; transform:translateY(-50%); color:var(--muted); }
.delivery-search .form-control { padding-left:2.25rem!important; border-radius:var(--radius-input) 0 0 var(--radius-input)!important; }
.delivery-search .btn { border-radius:0 var(--radius-input) var(--radius-input) 0!important; }
.recipient-avatar { border-radius:50%; background:var(--c-blue-bg); color:var(--c-blue); font-size:.78rem; font-weight:800; }
.party-code-link { display:block; width:max-content; color:var(--text); font-weight:700; text-decoration:none; }
.party-code-link:hover { color:var(--brand); }
.cell-primary,.cell-sub { display:block; }
.cell-primary { color:var(--text); font-size:.78rem; }
.cell-sub { color:var(--muted); font-size:.66rem; margin-top:.15rem; }
.cell-sub.is-danger { color:var(--c-red); }
.engagement-flags { display:flex; gap:.35rem; }
.engagement-flag { display:inline-flex; align-items:center; gap:.3rem; padding:.25rem .45rem; border-radius:7px; color:var(--muted); background:var(--surface-hover); font-size:.65rem; opacity:.55; }
.engagement-flag.is-on { color:var(--c-violet); background:var(--c-violet-bg); opacity:1; }
.delivery-table td { height:64px; }
.delivery-table .chip { max-width:180px; overflow:hidden; text-overflow:ellipsis; }
.delivery-journey-panel .panel-body { padding:1.1rem 1.25rem 1.25rem; }
.delivery-timeline { display:grid; grid-template-columns:repeat(5,1fr); list-style:none; margin:0; padding:0; }
.delivery-timeline li { position:relative; display:flex; flex-direction:column; align-items:center; gap:.5rem; text-align:center; color:var(--muted); }
.delivery-timeline li::before { content:""; position:absolute; top:18px; left:-50%; width:100%; height:2px; background:var(--border); }
.delivery-timeline li:first-child::before { display:none; }
.delivery-timeline li.is-complete::before { background:var(--c-green); }
.timeline-icon { position:relative; z-index:1; display:grid; place-items:center; width:38px; height:38px; border:2px solid var(--border); border-radius:50%; background:var(--surface); color:var(--muted); }
.delivery-timeline .is-complete .timeline-icon { border-color:var(--c-green); background:var(--c-green-bg); color:var(--c-green); }
.delivery-timeline strong,.delivery-timeline small { display:block; }
.delivery-timeline strong { color:var(--text); font-size:.72rem; }
.delivery-timeline small { margin-top:.15rem; color:var(--muted); font-size:.62rem; }
.delivery-timeline .is-waiting { opacity:.55; }
.delivery-issue { display:flex; gap:.8rem; align-items:flex-start; margin-top:1.25rem; padding:.85rem 1rem; border-radius:11px; background:var(--c-red-bg); color:var(--c-red); }
.delivery-issue > i { margin-top:.2rem; }
.delivery-issue strong,.delivery-issue p,.delivery-issue span { display:block; }
.delivery-issue p { margin:.15rem 0; color:var(--text); font-size:.75rem; }
.delivery-issue span { font-size:.65rem; opacity:.85; }
.detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
.detail-grid > div { padding:.9rem 1rem; border-bottom:1px solid var(--border); }
.detail-grid > div:nth-child(odd) { border-right:1px solid var(--border); }
.detail-grid > div:nth-last-child(-n+2) { border-bottom:0; }
.detail-grid span,.detail-grid strong { display:block; }
.detail-grid span { margin-bottom:.25rem; color:var(--muted); font-size:.65rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; }
.detail-grid strong { color:var(--text); font-size:.8rem; overflow-wrap:anywhere; }
.aside-copy { margin:0 0 1rem; color:var(--muted); font-size:.76rem; line-height:1.55; }

/* ── Individual photo detail ── */
.photo-stage { background:var(--surface); }
.photo-stage > a { display:flex; align-items:center; justify-content:center; min-height:420px; padding:1.25rem; background:radial-gradient(circle at 50% 45%,var(--surface-hover),transparent 70%); }
.photo-stage img { display:block; max-width:100%; max-height:70vh; border-radius:10px; box-shadow:0 18px 55px rgba(0,0,0,.28); }
.photo-stage-foot { display:flex; justify-content:space-between; gap:1rem; padding:.7rem 1rem; border-top:1px solid var(--border); color:var(--muted); font-size:.68rem; }
.detail-stack > div { padding:.75rem 1rem; border-bottom:1px solid var(--border); }
.detail-stack > div:last-child { border-bottom:0; }
.detail-stack span,.detail-stack strong { display:block; }
.detail-stack span { color:var(--muted); font-size:.64rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; }
.detail-stack strong { margin-top:.2rem; color:var(--text); font-size:.78rem; }
.break-word { overflow-wrap:anywhere; }
.danger-zone { border-color:color-mix(in srgb,var(--c-red) 35%,var(--border)); }
.danger-zone .panel-body { display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.danger-zone strong { color:var(--text); font-size:.78rem; }
.danger-zone p { margin:.15rem 0 0; color:var(--muted); font-size:.68rem; }

/* ── Photo organizer ── */
.photo-organizer { padding-bottom: 5rem; }
.photo-head { align-items: flex-end; }
.photo-crumbs { display:flex; align-items:center; gap:.55rem; margin-bottom:.55rem; color:var(--muted); font-size:.75rem; }
.photo-crumbs a { color:var(--brand); font-weight:700; text-decoration:none; }
.photo-crumbs i { font-size:.55rem; opacity:.5; }
.photo-toolbar { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.7rem 1rem; margin-bottom:1rem; position:sticky; top:56px; z-index:10; }
.photo-toolbar-left,.photo-toolbar-right { display:flex; align-items:center; gap:.8rem; }
.photo-select-all { display:flex; align-items:center; gap:.45rem; font-weight:700; cursor:pointer; }
.photo-select-all input { width:1.1rem; height:1.1rem; accent-color:var(--brand); }
.photo-selected { color:var(--muted); font-size:.78rem; }
.photo-toolbar .form-select { width:auto; min-width:145px; }
.photo-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(var(--photo-thumb-size,190px),1fr)); gap:1rem; }
.photo-source-pane{display:grid;grid-template-columns:minmax(0,1fr) 250px;align-items:start;gap:1rem}.photo-source-pane>.pane-heading{grid-column:1/-1}.photo-source-pane>.photo-grid,.photo-source-pane>.photo-load-sentinel{grid-column:1}.party-stat-rail{grid-column:2;grid-row:2/span 2;position:sticky;top:1rem;padding:1rem;border:1px solid var(--border);border-radius:15px;background:var(--surface);box-shadow:var(--shadow-card)}.party-stat-rail h3{margin:0 0 .75rem;color:var(--text);font-size:.95rem}.party-stat-rail dl{margin:0}.party-stat-rail dl>div{display:flex;justify-content:space-between;gap:1rem;padding:.55rem 0;border-bottom:1px solid var(--border)}.party-stat-rail dl>div:last-child{border:0}.party-stat-rail dt{color:var(--muted);font-size:.68rem}.party-stat-rail dd{margin:0;color:var(--text);font-size:.72rem;font-weight:750}.photo-view-toggle{display:flex;gap:.2rem}.photo-view-toggle .active{color:#fff;background:var(--brand)}.photo-size-control{display:flex;align-items:center;gap:.35rem;color:var(--muted)}.photo-size-control input{width:90px}.selected-source-preview{margin-top:1rem}.selected-source-preview>div{display:grid;grid-template-columns:repeat(4,1fr);gap:.35rem;margin-top:.45rem}.selected-source-preview img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:7px}.photo-organizer.is-list-view .photo-grid{display:block}.photo-organizer.is-list-view .photo-card{display:grid;grid-template-columns:110px minmax(0,1fr);margin-bottom:.55rem}.photo-organizer.is-list-view .photo-preview{grid-row:1;aspect-ratio:4/3}.photo-organizer.is-list-view .photo-info{grid-column:2;grid-row:1}.photo-organizer.is-list-view .photo-check{z-index:3}
.photo-two-up { display:block; }
.photo-source-pane,.photo-destination-pane { min-width:0; }
.photo-organizer { position:relative; padding-right:270px; }
.photo-source-pane { display:block; }
.party-stat-rail { position:absolute; right:0; top:110px; width:250px; }
.party-delivery-final{margin-top:.65rem;color:var(--text);font-size:.7rem;font-weight:750}.party-purchase-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--border)}.party-purchase-actions>div{display:flex;align-items:center;gap:.4rem;width:100%;color:var(--text);font-size:.7rem}
.photo-destination-pane { position:fixed; z-index:160; top:0; right:0; width:min(440px,100vw); height:100dvh; overflow-y:auto; padding:1.25rem; border-left:1px solid var(--border); background:var(--surface); box-shadow:-24px 0 70px rgba(0,0,0,.28); transform:translateX(105%); visibility:hidden; transition:transform .25s ease,visibility 0s linear .25s; }
.photo-destination-pane.is-open { transform:translateX(0); visibility:visible; transition:transform .25s ease; }
.destination-drawer-open::after { content:''; position:fixed; z-index:150; inset:0; background:rgba(5,10,24,.46); backdrop-filter:blur(2px); }
.destination-drawer-head { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; margin-bottom:1.25rem; }
.destination-drawer-head h2 { margin:0; color:var(--text); font-size:1.1rem; }
.destination-drawer-actions { position:sticky; bottom:-1.25rem; display:flex; justify-content:flex-end; gap:.5rem; margin:1rem -1.25rem -1.25rem; padding:1rem 1.25rem; border-top:1px solid var(--border); background:var(--surface); }
.destination-party-card { display:flex; align-items:center; gap:.7rem; width:100%; text-align:left; }
.destination-party-card strong,.destination-party-card small { display:block; }.destination-party-card strong{color:var(--text)}.destination-party-card small{color:var(--muted);font-size:.68rem;margin-top:.12rem}
.destination-facts { display:grid; grid-template-columns:1fr 1fr; width:100%; gap:.65rem; margin:1rem 0; text-align:left; }
.destination-facts div { min-width:0; padding:.65rem; border-radius:10px; background:var(--surface-hover); }.destination-facts dt{color:var(--muted);font-size:.6rem;text-transform:uppercase}.destination-facts dd{overflow:hidden;margin:.2rem 0 0;color:var(--text);font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}
.destination-statuses { display:flex; flex-wrap:wrap; gap:.4rem; width:100%; }
.destination-notes { display:flex; align-items:flex-start; gap:.45rem; width:100%; margin-top:.8rem; padding:.65rem; border-radius:10px; color:var(--muted); background:var(--c-amber-bg); text-align:left; font-size:.7rem; }.destination-notes i{color:var(--c-amber);margin-top:.1rem}
.pane-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; margin-bottom:.85rem; }
.pane-heading h2 { margin:0; color:var(--text); font-size:1rem; }
.pane-heading > span { color:var(--muted); font-size:.68rem; text-align:right; }
.destination-empty { display:grid; place-items:center; align-content:center; min-height:325px; padding:1.5rem; text-align:center; color:var(--muted); }
.destination-empty h2 { margin:.8rem 0 .35rem; color:var(--text); font-size:1rem; }
.destination-empty p { max-width:34ch; margin:0; font-size:.74rem; line-height:1.55; }
.destination-art { display:grid; place-items:center; width:52px; height:52px; border-radius:15px; background:var(--c-violet-bg); color:var(--c-violet); font-size:1.2rem; }
.destination-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.5rem; }
.destination-thumb { position:relative; overflow:hidden; border-radius:10px; background:var(--surface-hover); }
.destination-thumb img { display:block; width:100%; aspect-ratio:4/3; object-fit:cover; }
.destination-thumb span { display:block; overflow:hidden; padding:.35rem .45rem; color:var(--text); font-size:.62rem; white-space:nowrap; text-overflow:ellipsis; }
.destination-thumb.is-hidden { opacity:.5; }
.destination-thumb.is-hidden::after { content:'Hidden'; position:absolute; top:.35rem; right:.35rem; padding:.15rem .3rem; border-radius:5px; background:rgba(8,15,30,.72); color:#fff; font-size:.55rem; }
.destination-note { margin:.8rem 0 0; color:var(--muted); font-size:.65rem; }
.photo-hidden-badge { position:absolute; top:.6rem; right:.6rem; padding:.25rem .45rem; border-radius:7px; background:rgba(8,15,30,.78); color:#fff; font-size:.62rem; }
.party-bulkbar { display:none; align-items:center; justify-content:space-between; gap:1rem; padding:.75rem 1rem; border-top:1px solid var(--border); background:var(--surface-hover); }
.party-bulkbar.is-visible { display:flex; }
.party-bulkbar strong { color:var(--text); font-size:.75rem; }
.party-bulkbar > div { display:flex; gap:.5rem; }
.photo-card { position:relative; overflow:hidden; background:var(--surface); border:2px solid transparent; border-radius:16px; box-shadow:var(--shadow-card); transition:transform .18s,border-color .18s,box-shadow .18s; }
.photo-card:hover { transform:translateY(-3px); box-shadow:var(--shadow-premium); }
.photo-card.is-selected { border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-shadow); }
.photo-check { position:absolute; z-index:3; top:.65rem; left:.65rem; cursor:pointer; }
.photo-check input { position:absolute; opacity:0; }
.photo-check span { display:grid; place-items:center; width:29px; height:29px; border:2px solid #fff; border-radius:9px; color:transparent; background:rgba(8,15,30,.42); box-shadow:0 2px 8px rgba(0,0,0,.25); }
.photo-check input:checked + span { color:#fff; background:var(--brand); border-color:var(--brand); }
.photo-preview { display:block; position:relative; aspect-ratio:4/3; overflow:hidden; background:var(--surface-hover); }
.photo-preview img { width:100%; height:100%; object-fit:contain; transition:transform .3s; }
.photo-card:hover .photo-preview img { transform:scale(1.035); }
.photo-open { position:absolute; right:.6rem; bottom:.6rem; width:30px; height:30px; display:grid; place-items:center; border-radius:9px; background:rgba(8,15,30,.55); color:#fff; opacity:0; transition:opacity .18s; }
.photo-card:hover .photo-open { opacity:1; }
.photo-info { padding:.8rem .9rem .9rem; }
.photo-name { color:var(--text); font-size:.85rem; font-weight:750; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.photo-meta { color:var(--muted); font-size:.68rem; margin-top:.15rem; }
.photo-rename-btn { border:0; padding:.35rem 0 0; background:none; color:var(--brand); font-size:.72rem; font-weight:700; }
.photo-actionbar { position:fixed; z-index:100; left:50%; bottom:1.25rem; transform:translate(-50%,calc(100% + 3rem)); width:min(900px,calc(100% - 2rem)); display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:.85rem 1rem; border:1px solid var(--border); border-radius:16px; background:var(--surface); box-shadow:0 16px 48px rgba(0,0,0,.3); opacity:0; transition:transform .22s,opacity .22s; }
.photo-actionbar.is-visible { transform:translate(-50%,0); opacity:1; }
.photo-actionbar > div:first-child span { display:block; font-size:.68rem; color:var(--muted); }
.photo-move-controls { display:flex; align-items:center; gap:.65rem; flex:1; justify-content:flex-end; }
.photo-move-controls label { white-space:nowrap; font-size:.75rem; font-weight:700; }
.photo-move-controls .form-select { max-width:330px; }
.photo-pagination { display:flex; align-items:center; justify-content:center; gap:1rem; color:var(--muted); padding:1.25rem; font-size:.78rem; }
.photo-pagination form { margin:0; }
.photo-pagination strong { color:var(--text); }
.photo-load-sentinel { display:flex; align-items:center; justify-content:center; gap:.55rem; min-height:90px; color:var(--muted); font-size:.75rem; }

/* ── Email delivery overview ── */
.delivery-overview { display:grid; grid-template-columns:repeat(4,1fr); gap:.75rem; margin:0 0 1rem; }
.delivery-stat { display:flex; align-items:center; gap:.75rem; padding:.9rem 1rem; border:1px solid var(--border); border-radius:14px; background:var(--surface); box-shadow:var(--shadow-card); }
.delivery-stat .delivery-icon { display:grid; place-items:center; width:38px; height:38px; flex:0 0 auto; border-radius:11px; background:var(--surface-hover); color:var(--brand); }
.delivery-stat strong,.delivery-stat small { display:block; }
.delivery-stat strong { color:var(--text); font-size:1.25rem; line-height:1.1; }
.delivery-stat small { color:var(--muted); font-size:.68rem; margin-top:.15rem; }
.delivery-stat.is-delivered .delivery-icon { color:var(--c-green); background:var(--c-green-bg); }
.delivery-stat.is-bounced .delivery-icon { color:var(--color-danger); background:rgba(239,68,68,.1); }
.delivery-stat.is-opened .delivery-icon { color:var(--c-blue); background:var(--c-blue-bg); }
.delivery-chip { display:inline-flex; align-items:center; gap:.3rem; }
.delivery-chip.is-delivered { color:var(--c-green); background:var(--c-green-bg); }
.delivery-chip.is-bounced { color:var(--color-danger); background:rgba(239,68,68,.1); }

@media (max-width: 767.98px) {
  .help-grid,.workflow-compare { grid-template-columns:1fr; }
  .help-card-wide { grid-column:auto; }
  .whats-new-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .whats-new-grid article:nth-child(2) { border-right:0; }
  .whats-new-grid article:nth-child(-n+2) { border-bottom:1px solid var(--border); }
  .customer-search-hero{grid-template-columns:auto minmax(0,1fr)}.customer-search-hero .form-control{min-width:0!important}.customer-search-hero .btn{grid-column:1/-1;width:100%}.customer-search-state{grid-column:1/-1;padding-left:2.2rem}
  .customer-results article { grid-template-columns:1fr; }.customer-result-stats{flex-wrap:wrap}.customer-result-actions .btn{flex:1}
  .page-head { align-items:stretch; }
  .page-actions { width:100%; }
  .page-actions .btn { min-width:0; }
  .photo-head > .btn { width:100%; }
  .photo-toolbar { position:static; flex-direction:column; align-items:stretch; }
  .photo-toolbar-left { justify-content:space-between; }
  .photo-toolbar-right { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); width:100%; }
  .photo-toolbar .form-select { width:100%; min-width:0; }
  .photo-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:.65rem; }
  .photo-destination-pane { width:100vw; }
  .destination-empty { min-height:245px; }
  .photo-actionbar { align-items:flex-start; }
  .photo-move-controls { flex-wrap:wrap; }
  .photo-move-controls label { display:none; }
  .photo-move-controls .form-select { flex:1 1 180px; }
  .delivery-overview { grid-template-columns:repeat(2,1fr); }
  .library-summary { grid-template-columns:1fr 1fr; }
  .library-summary-tip { grid-column:1/-1; }
  .library-toolbar { align-items:stretch; flex-direction:column; }
  .library-toolbar-actions { align-items:stretch; justify-content:flex-start; }
  .library-toolbar-actions .btn,.compact-field,.compact-field .form-select,.compact-field .form-control { width:100%; }
  .library-search { max-width:none; }
  .library-toolbar .form-select { width:100%; }
  .library-table thead { display:none; }
  .library-table,.library-table tbody,.library-table tr,.library-table td { display:block; width:100%; }
  .library-table tr { position:relative; padding:.75rem 1rem; border-bottom:1px solid var(--border); }
  .library-table td { display:none; padding:0; border:0; }
  .library-table td:first-child { display:block; position:absolute; left:1rem; top:1rem; width:auto; z-index:2; }
  .library-table td:nth-child(2) { display:block; padding-left:2rem; }
  .library-table td:nth-child(3) { display:block; position:absolute; right:1rem; top:1rem; width:auto; }
  .library-table td:last-child { display:block; margin-top:.65rem; }
  .library-table td:last-child .btn { width:100%; }
  .delivery-searches { grid-template-columns:1fr; }
  .delivery-timeline { grid-template-columns:1fr; gap:0; }
  .delivery-timeline li { min-height:58px; flex-direction:row; text-align:left; }
  .delivery-timeline li::before { top:-50%; left:18px; width:2px; height:100%; }
  .delivery-timeline li span:last-child { padding-bottom:.65rem; }
  .delivery-table thead { display:none; }
  .delivery-table,.delivery-table tbody,.delivery-table tr,.delivery-table td { display:block; width:100%; }
  .delivery-table tr { position:relative; padding:.8rem 1rem; border-bottom:1px solid var(--border); }
  .delivery-table td { display:flex; justify-content:space-between; align-items:center; gap:1rem; height:auto; min-height:38px; padding:.35rem 0; border:0; text-align:right; }
  .delivery-table td::before { content:attr(data-label); color:var(--muted); font-size:.65rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; text-align:left; }
  .delivery-table td:first-child { display:block; padding-right:2.75rem; text-align:left; }
  .delivery-table td:first-child::before,.delivery-table .row-action::before { display:none; }
  .delivery-table .row-action { position:absolute; right:.65rem; top:1rem; width:auto; min-height:0; padding:0; }
  .engagement-flags { justify-content:flex-end; }
  .delivery-table td:not(:first-child) > :last-child { max-width:68%; min-width:0; }
  .delivery-table .chip { max-width:68%; white-space:normal; justify-content:flex-end; text-align:right; }
  .pager { align-items:flex-start; }
  .pager-filters { width:100%; flex-wrap:nowrap; overflow-x:auto; overscroll-behavior-inline:contain; scrollbar-width:thin; padding-bottom:.25rem; }
  .pager-filters > * { flex:0 0 auto; }
  .pager-group { max-width:100%; }
  .photo-stage > a { min-height:260px; padding:.75rem; }
  .photo-stage-foot { flex-direction:column; gap:.25rem; }
  .party-bulkbar { align-items:stretch; flex-direction:column; }
  .party-bulkbar > div { display:grid; grid-template-columns:1fr 1fr; }
  .party-bulkbar .btn-danger { grid-column:1/-1; }
}

@media (max-width: 420px) {
  .page-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.5rem; }
  .page-actions .btn:only-child { grid-column:1/-1; }
  .photo-grid { grid-template-columns:1fr; }
  .delivery-overview { grid-template-columns:1fr 1fr; gap:.5rem; }
  .delivery-stat { padding:.7rem; }
  .delivery-stat .delivery-icon { display:none; }
}

@media (max-width: 575.98px) {
  .today-greet { font-size: 1.3rem; }
  .today-head { align-items:stretch; }
  .today-pills { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }
  .today-pill { min-width: 78px; padding: 0.45rem 0.75rem; }
  .today-pill-value { font-size: 1.25rem; }
  .quickrow { grid-template-columns:1fr; }
  .partyrow-note { display: none; }
  .partyrow { align-items:flex-start; flex-wrap:wrap; }
  .partyrow-hero { width:70px!important; }
  .partyrow-when { min-width:64px; }
  .partyrow-main { flex:1 1 calc(100% - 140px); }
  .partyrow-photos { margin-left:auto; }
  .history-metrics { grid-template-columns:1fr; }
  .history-metrics > div { border-right:0; border-bottom:1px solid var(--border); }
  .iphone-qr { grid-template-columns:1fr; }.iphone-qr #iphoneSigninQr{margin:auto}
}

@media print { #topbar,.singular-nav,.help-feature,.help-card:not([open]),.whats-new,.singular-footer{display:none!important}.help-card[open]{border:0;box-shadow:none}.iphone-qr{display:grid!important;grid-template-columns:190px 1fr!important} }

/* ═══════════════════════════════════════════════════════════════════
   7. UPLOADER / SETUP / STAFF
   ═══════════════════════════════════════════════════════════════════ */

/* ── Uploader ── */
.uploader-step {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px; height: 22px;
  margin-right: 0.35rem;
  border-radius: 50%;
  background: var(--brand);
  color: #fff;
  font-size: 0.72rem;
  font-weight: 800;
}

.dropzone {
  padding: 2.25rem 1rem;
  text-align: center;
  border: 2px dashed var(--border);
  border-radius: 16px;
  background: var(--surface-hover);
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
}

.dropzone:hover,
.dropzone:focus-visible,
.dropzone.is-over {
  border-color: var(--brand);
  background: color-mix(in srgb, var(--brand) 7%, transparent);
  outline: none;
}

.dropzone-art { font-size: 2.2rem; color: var(--brand); opacity: 0.5; margin-bottom: 0.5rem; }
.dropzone-title { font-weight: 700; font-size: 1rem; }
.dropzone-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center; }

.uploadlist { display: flex; flex-direction: column; gap: 0.4rem; }

.uploadrow {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0.5rem 0.7rem;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: var(--surface);
}

.uploadrow-thumb {
  flex: 0 0 auto;
  width: 42px; height: 42px;
  border-radius: 8px;
  overflow: hidden;
  background: var(--surface-hover);
  display: flex; align-items: center; justify-content: center;
  color: var(--muted);
}

.uploadrow-thumb img { width: 100%; height: 100%; object-fit: cover; }
.uploadrow-main { flex: 1 1 auto; min-width: 0; }
.uploadrow-name { font-size: 0.85rem; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uploadrow-size { font-size: 0.72rem; color: var(--muted); }
.uploadrow-error { font-size: 0.72rem; color: var(--color-danger); margin-top: 0.15rem; }
.uploadrow-state { flex: 0 0 auto; font-size: 1.15rem; }

.uploadrow.is-ok   { border-color: var(--border-success); }
.uploadrow.is-ok   .uploadrow-state { color: var(--color-success); }
.uploadrow.is-fail { border-color: var(--border-danger); }
.uploadrow.is-fail .uploadrow-state { color: var(--color-danger); }

.uploader-summary {
  display: flex;
  align-items: center;
  margin-top: 0.85rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--border);
  font-size: 0.85rem;
  color: var(--muted);
}

/* ── Setup hub ── */
.setup-crumb {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.78rem;
  color: var(--muted);
  margin-bottom: 0.75rem;
}

.setup-crumb a { color: var(--muted); text-decoration: none; }
.setup-crumb a:hover { color: var(--text); }
.setup-crumb i { font-size: 0.6em; opacity: 0.6; }

.setup-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 0.7rem;
}

.setup-card {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  padding: 1rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: var(--shadow-card);
  text-decoration: none;
  color: var(--text);
  transition: transform 0.14s, border-color 0.14s;
}

.setup-card:hover { transform: translateY(-2px); border-color: var(--brand); color: var(--text); }

.setup-card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 44px; height: 44px;
  border-radius: 12px;
  background: var(--surface-hover);
  color: var(--brand);
  font-size: 1.1rem;
}

.setup-card-body { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
.setup-card-title { font-weight: 700; font-size: 0.95rem; }
.setup-card-sub { font-size: 0.75rem; color: var(--muted); }
.setup-card-go { color: var(--muted); font-size: 0.8rem; }

/* ── Online Sales preview ── */
.online-sales-page,.sales-report-page{display:grid;gap:1rem}.sales-setting-title{font-size:1.05rem}.sales-master-panel{border-color:color-mix(in srgb,var(--brand) 35%,var(--border))}.sales-connection-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.sales-connection-card{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem;padding:1.1rem}.sales-connection-card>div:nth-child(2){flex:1}.sales-connection-card p{margin:.35rem 0 0;color:var(--muted);font-size:.78rem;line-height:1.55}.sales-connection-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--brand-soft);color:var(--brand);font-size:1.05rem}.sales-product-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding:1rem}.sales-product-card{display:grid;grid-template-columns:130px 1fr;min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:14px;background:var(--surface)}.sales-product-art{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.45rem;min-height:220px;color:#fff}.sales-product-art.print{background:linear-gradient(145deg,#7048e8,#9b74ff)}.sales-product-art.digital{background:linear-gradient(145deg,#1677c8,#30a9e8)}.sales-product-art span{padding:.2rem .55rem;border:1px solid rgba(255,255,255,.5);border-radius:999px;font-size:.68rem;font-weight:800;letter-spacing:.08em}.sales-product-art i{font-size:2.2rem}.sales-product-content{display:flex;flex-direction:column;padding:1rem}.sales-product-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.sales-product-heading h3{margin:.1rem 0;font-size:1rem;color:var(--text)}.sales-product-type{color:var(--brand);font-size:.65rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.sales-product-content>p{color:var(--muted);font-size:.76rem;line-height:1.5}.sales-product-content>small{margin-top:.55rem;color:var(--muted);font-size:.66rem}.sales-price-field{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:auto;padding-top:.75rem;border-top:1px solid var(--border);color:var(--text);font-size:.75rem;font-weight:700}.sales-price-input{position:relative;display:flex;align-items:center}.sales-price-input b{position:absolute;left:.65rem;z-index:1;color:var(--muted)}.sales-price-input input{width:105px;padding-left:1.45rem;font-weight:800}.sales-range-panel{display:flex;align-items:end;justify-content:space-between;gap:1rem;padding:.8rem 1rem}.sales-range-presets{display:flex;gap:.25rem;flex-wrap:wrap}.sales-range-presets a{padding:.52rem .75rem;border-radius:8px;color:var(--muted);font-size:.75rem;font-weight:700;text-decoration:none}.sales-range-presets a:hover,.sales-range-presets a.active{background:var(--brand-soft);color:var(--brand)}.sales-custom-range{display:flex;align-items:end;gap:.55rem}.sales-custom-range label{display:grid;gap:.2rem;color:var(--muted);font-size:.65rem;font-weight:700}.sales-custom-range .form-control{min-width:135px}.sales-report-kpis{grid-template-columns:repeat(5,minmax(0,1fr));margin:0}.sales-report-empty{padding:4rem 1rem}.sales-report-empty>i{margin-bottom:.7rem;color:var(--brand);font-size:2rem}.sales-report-empty .btn{margin-top:.7rem}
@media(max-width:1000px){.sales-connection-grid{grid-template-columns:1fr}.sales-product-grid{grid-template-columns:1fr}.sales-report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.sales-product-card{grid-template-columns:1fr}.sales-product-art{min-height:120px}.sales-range-panel,.sales-custom-range{align-items:stretch;flex-direction:column}.sales-custom-range .form-control{width:100%}.sales-report-kpis{grid-template-columns:1fr}}
.sales-connection-grid:has(.sales-connection-card:nth-child(4)){grid-template-columns:repeat(4,minmax(0,1fr))}.sales-rule-summary{display:flex;align-items:flex-start;gap:.5rem;margin-top:auto;padding:.7rem;border-radius:10px;background:var(--brand-soft);color:var(--muted);font-size:.7rem;line-height:1.4}.sales-rule-summary i{margin-top:.1rem;color:var(--brand)}.sales-rules-wrap{overflow:auto;padding:1rem}.sales-rules-table{width:100%;min-width:820px;border-collapse:separate;border-spacing:0 .4rem}.sales-rules-table th{padding:0 .45rem;color:var(--muted);font-size:.64rem;text-align:left}.sales-rules-table td{padding:.2rem .45rem}.sales-rules-table .form-control{min-width:95px}.sales-rules-table .sales-price-input{width:120px}.sales-rules-table .sales-price-input input{width:100%}.sales-rule-note{display:flex;align-items:flex-start;gap:.55rem;margin:0 1rem 1rem;padding:.75rem;border-radius:10px;background:var(--surface-hover);color:var(--muted);font-size:.68rem}.sales-rule-note i{color:var(--brand)}.sales-subpage{max-width:1180px;margin:0 auto}.sales-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding:1rem}.sales-settings-grid>label,.sales-secret-fields>label{display:grid;gap:.35rem;color:var(--text);font-size:.7rem;font-weight:700}.sales-settings-grid .form-control,.sales-secret-fields .form-control{width:100%}.sales-secret-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding:0 1rem 1rem}.setting-checkbox{display:flex!important;align-items:flex-start;gap:.6rem;padding:.7rem;border:1px solid var(--border);border-radius:10px;background:var(--surface-hover)}.setting-checkbox input{margin-top:.15rem}.setting-checkbox span{display:grid}.setting-checkbox small{color:var(--muted);font-weight:400}.receipt-builder-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(420px,1.1fr);gap:1rem}.receipt-preview-shell>.panel-head>span{color:var(--muted);font-size:.65rem}.receipt-preview{max-width:580px;margin:1.5rem auto;overflow:hidden;border:1px solid var(--border);border-radius:14px;background:#fff;box-shadow:var(--shadow-card);color:#172033}.receipt-preview-bar{height:9px}.receipt-preview-body{padding:2rem}.receipt-preview-brand{display:block;margin-bottom:1.5rem;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}.receipt-preview-body h2{margin:0 0 1rem;font-size:1.5rem}.receipt-preview-body p{white-space:pre-line;color:#596274;font-size:.78rem;line-height:1.55}.receipt-order{margin:1.5rem 0;border:1px solid #e6e8ed;border-radius:10px}.receipt-order>div{display:flex;justify-content:space-between;padding:.7rem .85rem;font-size:.75rem}.receipt-order>div+div{border-top:1px solid #e6e8ed}.receipt-order .receipt-total{font-size:.85rem}.receipt-support{font-size:.7rem!important}.receipt-fields textarea{min-height:95px}.receipt-fields input[type=color]{height:42px;padding:.25rem}.form-span-2{grid-column:span 2}
@media(max-width:1200px){.sales-connection-grid:has(.sales-connection-card:nth-child(4)){grid-template-columns:repeat(2,minmax(0,1fr))}.receipt-builder-grid{grid-template-columns:1fr}}@media(max-width:650px){.sales-settings-grid,.sales-secret-fields{grid-template-columns:1fr}.form-span-2{grid-column:auto}.sales-connection-grid:has(.sales-connection-card:nth-child(4)){grid-template-columns:1fr}.receipt-preview-body{padding:1.25rem}}

/* ── Staff list ── */
.stafflist { display: flex; flex-direction: column; gap: 0.6rem; }

.staffcard {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  padding: 0.85rem 1rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: var(--shadow-card);
}

.staffcard.is-off { opacity: 0.6; }

.staffcard-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 42px; height: 42px;
  border-radius: 50%;
  background: var(--brand);
  color: #fff;
  font-weight: 800;
}

.staffcard-main { flex: 1 1 auto; min-width: 0; }
.staffcard-name { font-weight: 700; display: flex; align-items: center; gap: 0.4rem; }
.staffcard-email { font-size: 0.8rem; color: var(--muted); }
.staffcard-meta { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-top: 0.2rem; font-size: 0.72rem; }

.staffcard-role {
  padding: 0.1rem 0.5rem;
  border-radius: 999px;
  font-weight: 700;
}

.role-manager   { background: var(--c-purple-bg); color: var(--c-purple); }
.role-staff     { background: var(--c-blue-bg);   color: var(--c-blue); }
.role-scheduler { background: var(--c-teal-bg);   color: var(--c-teal); }
.role-host      { background: var(--c-amber-bg);  color: var(--c-amber); }

/* ── Role picker ── */
.rolepicker { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0.5rem; }

.rolecard {
  position: relative;
  display: block;
  padding: 0.75rem 0.85rem;
  border: 1px solid var(--border);
  border-radius: 12px;
  cursor: pointer;
  transition: border-color 0.14s, background 0.14s;
}

.rolecard input { position: absolute; opacity: 0; pointer-events: none; }
.rolecard:hover { background: var(--surface-hover); }

.rolecard:has(input:checked) {
  border-color: var(--brand);
  background: color-mix(in srgb, var(--brand) 8%, transparent);
}

.rolecard-title { display: block; font-weight: 700; font-size: 0.9rem; }
.rolecard-desc  { display: block; font-size: 0.73rem; color: var(--muted); margin-top: 0.15rem; }

/* ── Capability preview ── */
.caplist { display: flex; flex-wrap: wrap; gap: 0.35rem; }

.capchip {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  font-size: 0.72rem;
  background: var(--surface-hover);
  color: var(--muted);
  opacity: 0.65;
}

.capchip.is-on { background: var(--c-green-bg); color: var(--c-green); opacity: 1; font-weight: 600; }
.capchip.is-pinned { box-shadow: inset 0 0 0 1px currentColor; }
.capchip em { font-style: normal; opacity: 0.7; }

.staff-advanced summary { cursor: pointer; font-size: 0.85rem; font-weight: 600; color: var(--muted); }
.staff-advanced summary:hover { color: var(--text); }

.capgrid { display: flex; flex-direction: column; gap: 0.3rem; }

.caprow {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.4rem 0.6rem;
  border-radius: 9px;
  background: var(--surface-hover);
  font-size: 0.82rem;
}

.caprow-label { flex: 1 1 auto; }
.caprow-toggle { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 0.75rem; color: var(--muted); margin: 0; }

@media (max-width: 575.98px) {
  .staffcard { flex-wrap: wrap; }
  .staffcard-actions { width: 100%; }
  .staffcard-actions .btn { width: 100%; }
}

.communication-performance{margin-bottom:1rem}.communication-funnels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding:1rem}.communication-funnels>article{overflow:hidden;border:1px solid var(--border);border-radius:12px;background:var(--surface-hover)}.communication-funnels header{display:flex;align-items:center;gap:.7rem;padding:.85rem 1rem;border-bottom:1px solid var(--border)}.communication-funnels header>i{display:grid;width:34px;height:34px;place-items:center;border-radius:9px;background:var(--brand-soft);color:var(--brand)}.communication-funnels header div{display:grid}.communication-funnels header strong{color:var(--text);font-size:.9rem}.communication-funnels header span{color:var(--muted);font-size:.68rem}.communication-stages{display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}.communication-stages>div{display:grid;gap:.15rem;padding:.85rem .6rem;text-align:center}.communication-stages>div+div{border-left:1px solid var(--border)}.communication-stages strong{color:var(--text);font-size:1.05rem}.communication-stages span{color:var(--muted);font-size:.62rem}.communication-stages .is-failed strong{color:var(--c-red)}
@media(max-width:767.98px){.communication-funnels{grid-template-columns:1fr}.communication-stages{overflow-x:auto}.communication-stages>div{min-width:64px}}

.singular-nav-section{display:grid;gap:.25rem;margin-top:.45rem;padding-top:.65rem;border-top:1px solid var(--border)}.singular-nav-section>span{padding:0 .75rem;color:var(--muted);font-size:.56rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.primary-nav-collapsed .singular-nav-section>span{display:none}.account-tabs{display:flex;flex-wrap:wrap;gap:.35rem;padding:.3rem;border:1px solid var(--border);border-radius:12px;background:var(--surface-hover)}.account-tabs a{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .72rem;border-radius:9px;color:var(--muted);font-size:.72rem;font-weight:700}.account-tabs a:hover{background:var(--surface);color:var(--text);text-decoration:none}.account-tabs a.active{background:var(--brand);color:#fff;box-shadow:var(--shadow-sm)}
.billing-page .page-head,.payment-methods-page .page-head,.account-users-page .page-head{align-items:flex-end}.billing-usage-panel{margin-bottom:1rem}.billing-usage-kpis{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--border)}.billing-usage-kpis article{display:grid;gap:.15rem;padding:1rem 1.15rem}.billing-usage-kpis article+article{border-left:1px solid var(--border)}.billing-usage-kpis span{color:var(--muted);font-size:.68rem}.billing-usage-kpis strong{color:var(--text);font-size:1.45rem}.billing-usage-kpis small{color:var(--muted);font-size:.62rem}.billing-usage-kpis .has-overage strong{color:var(--c-amber)}.usage-stack{display:flex;height:30px;margin:1.25rem 1.15rem .75rem;overflow:hidden;border:1px solid var(--border);border-radius:999px;background:var(--surface-hover)}.usage-stack>span{display:block;height:100%;transition:width .25s ease}.usage-included{background:var(--brand)}.usage-remaining{background:var(--surface-active)}.usage-additional{background:var(--c-amber)}.usage-legend{display:flex;flex-wrap:wrap;gap:1rem;padding:0 1.15rem}.usage-legend span{display:flex;align-items:center;gap:.35rem;color:var(--muted);font-size:.66rem}.usage-legend i{width:10px;height:10px;border-radius:3px}.billing-usage-note{margin:0;padding:1rem 1.15rem;color:var(--muted);font-size:.68rem;line-height:1.5}.billing-usage-note i{margin-right:.35rem;color:var(--brand)}.billing-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:1rem}.billing-plan-body{display:grid;grid-template-columns:repeat(2,1fr);gap:0;border-top:1px solid var(--border)}.billing-plan-body>div{display:grid;gap:.2rem;padding:1rem}.billing-plan-body>div:nth-child(even){border-left:1px solid var(--border)}.billing-plan-body>div:nth-child(n+3){border-top:1px solid var(--border)}.billing-plan-body span{color:var(--muted);font-size:.65rem}.billing-plan-body strong{color:var(--text);font-size:1rem}.billing-plan-body>p{grid-column:1/-1;margin:0;padding:.85rem 1rem;border-top:1px solid var(--border);color:var(--muted);font-size:.67rem;line-height:1.5}.billing-statement{margin-bottom:1rem}.account-contact-list{display:grid;gap:.1rem;padding:.75rem 1rem}.account-contact-list p{display:flex;align-items:center;gap:.7rem;margin:0;padding:.55rem;border-radius:9px}.account-contact-list p:hover{background:var(--surface-hover)}.account-contact-list p>i{width:28px;color:var(--brand);text-align:center}.account-contact-list p>span{display:grid;color:var(--text);font-size:.75rem}.account-contact-list small{color:var(--muted);font-size:.6rem}.billing-qr{display:grid;grid-template-columns:170px 1fr;align-items:center;gap:1rem;padding:1rem}.billing-qr p{color:var(--muted);font-size:.73rem;line-height:1.55}.payment-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem;padding:1rem}.payment-card{overflow:hidden;border:1px solid var(--border);border-radius:14px;background:var(--surface-hover)}.payment-card.is-default{border-color:var(--brand)}.payment-card.is-disabled{opacity:.72}.payment-card header{display:flex;align-items:center;gap:.7rem;padding:1rem}.payment-brand{display:grid;width:40px;height:40px;place-items:center;border-radius:11px;background:var(--brand-soft);color:var(--brand)}.payment-card header>div:nth-child(2){display:grid;min-width:0;margin-right:auto}.payment-card header strong{color:var(--text);font-size:.82rem}.payment-card header span{color:var(--muted);font-size:.65rem}.payment-badges{display:flex!important;flex-direction:row!important;gap:.25rem}.payment-meta{display:grid;grid-template-columns:1fr 2fr;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.payment-meta>span{display:grid;gap:.2rem;padding:.75rem;color:var(--text);font-size:.7rem}.payment-meta>span+span{border-left:1px solid var(--border)}.payment-meta small{color:var(--muted);font-size:.58rem}.payment-card footer{display:flex;justify-content:flex-end;gap:.4rem;padding:.75rem}.account-user-list{display:grid}.account-user-list article{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.8rem;padding:1rem}.account-user-list article+article{border-top:1px solid var(--border)}.account-user-list article>div:nth-child(2){display:grid}.account-user-list strong{color:var(--text);font-size:.8rem}.account-user-list span,.account-user-list small{color:var(--muted);font-size:.67rem}.account-user-actions{display:flex;gap:.35rem}
@media(max-width:767.98px){.billing-summary-grid{grid-template-columns:1fr}.billing-usage-kpis{grid-template-columns:1fr}.billing-usage-kpis article+article{border-top:1px solid var(--border);border-left:0}.billing-qr{grid-template-columns:1fr;justify-items:center;text-align:center}.account-user-list article{grid-template-columns:auto 1fr}.account-user-actions{grid-column:1/-1}.account-user-actions .btn{flex:1}.account-tabs{width:100%;overflow-x:auto;flex-wrap:nowrap}.account-tabs a{white-space:nowrap}}

.account-surface{display:grid;gap:1rem}.account-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem}.account-page-head h1{margin:.15rem 0;color:var(--text);font-size:1.7rem}.account-page-head p{margin:0;color:var(--muted);font-size:.76rem}.account-eyebrow{color:var(--brand)!important;font-size:.62rem!important;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.account-security-note{display:flex;align-items:flex-start;gap:.75rem;padding:1rem;border:1px solid var(--c-green);border-radius:14px;background:var(--c-green-bg);color:var(--text);font-size:.74rem}.account-security-note>i{margin-top:.1rem;color:var(--c-green);font-size:1rem}.account-security-note span{color:var(--muted)}.payment-entry-form{display:grid;gap:1rem}.account-panel{overflow:hidden;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-sm)}.account-panel-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.15rem;border-bottom:1px solid var(--border)}.account-panel-head>div{display:flex;align-items:center;gap:.65rem}.account-panel-head h2{margin:0;color:var(--text);font-size:1rem}.account-panel-head p{max-width:480px;margin:0;color:var(--muted);font-size:.68rem;text-align:right}.account-step{display:grid;width:28px;height:28px;place-items:center;border-radius:9px;background:var(--brand-soft);color:var(--brand);font-size:.72rem;font-weight:800}.account-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding:1.15rem}.account-form-grid .form-group{display:grid;align-content:start;gap:.35rem;margin:0}.account-form-grid label{margin:0;color:var(--text);font-size:.7rem;font-weight:700}.account-form-grid .optional{color:var(--muted);font-size:.58rem;font-weight:500}.form-span-2{grid-column:span 2}.account-form-grid .form-control{width:100%;height:42px;border-color:var(--border);border-radius:10px;background:var(--surface-hover);color:var(--text);font-size:.76rem}.account-form-grid .form-control:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.field-message{min-height:.85rem;color:var(--c-red);font-size:.61rem}.payment-expiry-fields,.payment-name-fields{display:flex;align-items:center;gap:.5rem}.payment-expiry-fields input{min-width:0}.payment-name-fields>*{flex:1;min-width:0}.account-form-actions{display:flex;align-items:center;justify-content:flex-end;gap:.6rem;padding-bottom:1rem}.payment-saving{display:flex;align-items:center;gap:.45rem;color:var(--muted);font-size:.72rem}.payment-saving[hidden]{display:none}.payment-failure{max-width:760px;margin:1rem auto}.payment-failure .account-panel{padding:1.4rem}.payment-failure-icon{display:grid;width:52px;height:52px;margin-bottom:1rem;place-items:center;border-radius:15px;background:var(--c-red-bg);color:var(--c-red);font-size:1.2rem}.payment-failure h1{margin:0 0 .4rem;color:var(--text);font-size:1.4rem}.payment-failure>section>p{color:var(--muted);font-size:.76rem}.payment-failure-list{margin:1rem 0;padding:1rem 1rem 1rem 2rem;border:1px solid var(--c-red);border-radius:12px;background:var(--c-red-bg);color:var(--text);font-size:.72rem}.payment-failure-actions{display:flex;gap:.5rem}
@media(max-width:767.98px){.account-page-head,.account-panel-head{align-items:flex-start;flex-direction:column}.account-panel-head p{text-align:left}.account-form-grid{grid-template-columns:1fr}.form-span-2{grid-column:auto}.account-form-actions{flex-wrap:wrap}.account-form-actions .btn{flex:1;white-space:nowrap}}

.purchase-switch{flex-direction:row!important;min-width:150px;justify-content:flex-end}.purchase-switch-label{min-width:82px;color:var(--muted);font-size:.76rem;font-weight:700}.purchase-switch-label .is-on{display:none;color:var(--c-green)}.purchase-switch input:checked~.purchase-switch-label .is-off{display:none}.purchase-switch input:checked~.purchase-switch-label .is-on{display:inline}.purchase-toggle .setting-switch-track{width:44px!important;height:24px!important;min-width:44px;border-radius:999px!important}.purchase-toggle .setting-switch-track:after{width:16px!important;height:16px!important;border-radius:50%!important}

.guide-outcome>i{display:grid;place-items:center;width:52px;height:52px;border-radius:16px;color:var(--brand);background:var(--surface);font-size:1.2rem}.guide-outcome>div>strong{display:block;margin:0 0 .4rem;color:var(--text);font-size:1.05rem}.guide-action{color:var(--text)!important}.guide-checkpoint{display:flex;align-items:flex-start;gap:.5rem;margin-top:.75rem!important;padding:.65rem .75rem;border-radius:9px;background:var(--surface-hover);color:var(--muted)!important}.guide-checkpoint>i{flex:0 0 auto;margin-top:.15rem;color:var(--brand)}.detailed-workflows ol{display:grid;gap:.55rem;padding:0;list-style:none;counter-reset:workflow}.detailed-workflows li{position:relative;display:grid;gap:.15rem;padding:.7rem .7rem .7rem 2.55rem;border:1px solid var(--border);border-radius:10px;background:var(--surface-hover);counter-increment:workflow}.detailed-workflows li:before{content:counter(workflow);position:absolute;top:.7rem;left:.7rem;display:grid;width:24px;height:24px;place-items:center;border-radius:50%;background:var(--brand);color:#fff;font-size:.68rem;font-weight:800}.detailed-workflows li strong{color:var(--text);font-size:.76rem}.detailed-workflows li span{color:var(--muted);font-size:.69rem;line-height:1.45}.guide-ready{display:flex;align-items:flex-start;gap:.8rem;margin-top:1rem;padding:1rem;border:1px solid var(--c-green);border-radius:14px;background:var(--c-green-bg)}.guide-ready>i{margin-top:.15rem;color:var(--c-green);font-size:1.1rem}.guide-ready strong{display:block;color:var(--text)}.guide-ready p{margin:.2rem 0 0;color:var(--muted);font-size:.75rem;line-height:1.5}

.brand-palette{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.65rem;padding:1rem}.brand-swatch-card{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.65rem;min-height:72px;padding:.75rem;border:1px solid var(--border);border-radius:12px;background:var(--surface-hover);cursor:pointer;transition:transform .15s,border-color .15s,background .15s}.brand-swatch-card:hover{transform:translateY(-1px);border-color:var(--swatch)}.brand-swatch-card input{position:absolute;opacity:0;pointer-events:none}.brand-swatch-card:has(input:focus-visible){outline:3px solid var(--brand-soft);outline-offset:2px}.brand-swatch-card:has(input:checked){border-color:var(--swatch);background:color-mix(in srgb,var(--swatch) 10%,var(--surface))}.brand-swatch{width:28px;height:42px;border-radius:9px;background:var(--swatch);box-shadow:inset 0 0 0 1px rgba(255,255,255,.2),0 5px 14px color-mix(in srgb,var(--swatch) 32%,transparent)}.brand-swatch-card>span:nth-child(3){display:grid;gap:.15rem}.brand-swatch-card strong{color:var(--text);font-size:.7rem}.brand-swatch-card small{color:var(--muted);font-size:.57rem;line-height:1.25}.brand-swatch-card>i{color:var(--swatch);font-size:.8rem;opacity:0}.brand-swatch-card:has(input:checked)>i{opacity:1}.brand-swatch-purple{--swatch:#7c3aed}.brand-swatch-blue{--swatch:#007fae}.brand-swatch-teal{--swatch:#008f8c}.brand-swatch-berry{--swatch:#c0266d}.brand-swatch-coral{--swatch:#f05a47}.brand-impact-note,.brand-schema-note{display:flex;align-items:flex-start;gap:.5rem;margin:0;padding:.8rem 1rem;border-top:1px solid var(--border);color:var(--muted);font-size:.65rem}.brand-impact-note i{color:var(--brand)}.brand-schema-note{color:var(--c-amber)}
@media(max-width:1100px){.brand-palette{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:575.98px){.brand-palette{grid-template-columns:1fr}.brand-swatch-card{min-height:64px}}
