/**
 * TuMicha Go portal — soft white theme with charcoal actions (no teal tint).
 * Loaded after brand.css so portal overrides shared gold/brown styling.
 */

@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Syne:wght@600;700;800&display=swap");

:root {
  --bg: #f3f3f4;
  --panel: #ffffff;
  --surface: #ffffff;
  --mist: #fafafa;
  --cream-soft: #ececee;
  --sidebar: #ffffff;
  --sidebar-text: #6a6a6e;
  --text: #121212;
  --ink: #121212;
  --muted: #6a6a6e;
  --border: rgba(18, 18, 18, 0.08);
  --soft-press: rgba(18, 18, 18, 0.06);
  --primary: #121212;
  --primary-dark: #0d0d0d;
  --primary-soft: rgba(18, 18, 18, 0.08);
  --accent: #121212;
  --accent-dark: #0d0d0d;
  --accent-soft: rgba(18, 18, 18, 0.08);
  --danger: #b44a3f;
  --danger-bg: #fee4e2;
  --success: #15803d;
  --success-bg: #dcfce7;
  --shadow: 0 1px 3px rgba(18, 18, 18, 0.08);
  --shadow-lift: 0 8px 24px rgba(18, 18, 18, 0.1);
  --radius: 16px;
  --radius-lg: 20px;
  --font-brand: "DM Sans", system-ui, -apple-system, sans-serif;
  --font-display: "Syne", "DM Sans", sans-serif;

  /* Remap shared brand tokens used across portal markup */
  --tumicha-gold: var(--ink);
  --tumicha-gold-light: #2a2a2a;
  --tumicha-gold-dark: #0d0d0d;
  --tumicha-cream: var(--panel);
  --tumicha-cream-muted: var(--muted);
  --tumicha-brown: var(--ink);
  --tumicha-brown-deep: var(--bg);
  --tumicha-brown-mid: var(--mist);
  --tumicha-brown-warm: var(--cream-soft);
  --tumicha-surface-auth: var(--panel);
  --tumicha-surface-dark: var(--bg);
  --tumicha-border-warm: var(--border);
  --tumicha-text-light: var(--text);
  --tumicha-text-muted-light: var(--muted);
  --tumicha-ink: var(--ink);
  --tumicha-muted: var(--muted);
  --tumicha-border: var(--border);
  --tumicha-shadow: var(--shadow);
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: var(--font-brand);
  color: var(--text);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
}

.hidden { display: none !important; }

/* Auth — light premium card (override dark brand auth) */
.auth-screen,
.login-screen {
  min-height: 100vh;
  min-height: 100dvh;
  display: grid;
  place-items: center;
  padding: 24px;
  padding-bottom: max(72px, calc(24px + env(safe-area-inset-bottom, 0px)));
  box-sizing: border-box;
  background: transparent !important;
}

.auth-screen::before,
.login-screen::before {
  display: none !important;
}

.auth-card,
.login-card {
  width: min(460px, 100%);
  background: var(--panel) !important;
  border: 1px solid var(--border) !important;
  border-radius: 24px !important;
  padding: 32px;
  box-shadow: var(--shadow) !important;
  overflow: hidden;
}

.auth-card::before,
.login-card::before {
  display: none !important;
}

/* Exact landing .site-header banner colors */
.brand-banner {
  --landing-paper: #f5f5f6;
  --landing-banner-bg: rgba(12, 12, 14, 0.88);
  --landing-banner-line: rgba(245, 245, 246, 0.16);
  background: var(--landing-banner-bg);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--landing-banner-line);
  color: var(--landing-paper);
}

.auth-brand-block.brand-banner {
  margin: -32px -32px 28px;
  padding: 18px 24px 16px;
  text-align: center;
  border-radius: 24px 24px 0 0;
}

.auth-brand-block .logo {
  justify-content: center;
  margin: 0 auto 10px;
  color: var(--landing-paper);
}

.auth-brand-block .brand-wordmark {
  color: var(--landing-paper);
}

.auth-brand-block p {
  color: rgba(245, 245, 246, 0.62) !important;
  font-size: 0.92rem;
  letter-spacing: 0.01em;
  margin: 0;
}

.auth-card label,
.login-card label,
.auth-form label {
  color: var(--text) !important;
}

.auth-card input,
.auth-card textarea,
.auth-form input,
.auth-form textarea,
.login-card input {
  background: var(--mist) !important;
  color: var(--text) !important;
  border-color: var(--border) !important;
}

.auth-card input::placeholder,
.auth-form input::placeholder,
.login-card input::placeholder {
  color: rgba(106, 106, 110, 0.7) !important;
}

/* Exact landing header .logo treatment */
.logo {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  text-decoration: none;
  color: #f5f5f6;
  flex-shrink: 0;
}

.logo img,
.brand-logo,
.brand-logo-lg {
  width: 40px;
  height: 40px;
  border-radius: 10px !important;
  object-fit: contain;
  background: rgba(245, 245, 246, 0.08) !important;
  padding: 4px !important;
  border: 0 !important;
  box-shadow: none !important;
  flex-shrink: 0;
}

.brand-wordmark {
  display: block;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.15rem;
  letter-spacing: -0.03em;
  line-height: 1.1;
  color: #f5f5f6;
}

.brand-wordmark .brand-name,
.brand-wordmark .brand-go {
  font-weight: 700;
  color: inherit;
}

.brand-wordmark .brand-go {
  margin-left: 0.28em;
}

.account-type-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  margin-bottom: 16px;
  padding: 4px;
  border-radius: 14px;
  background: var(--mist);
  border: 1px solid var(--border);
}

.account-type-btn {
  min-height: 38px;
  border-radius: 10px;
  border: 1px solid transparent;
  background: transparent;
  color: var(--muted);
  font-weight: 600;
  font-size: 0.82rem;
  line-height: 1.2;
  padding: 8px 10px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.account-type-btn .service-tab-icon {
  display: grid;
  place-items: center;
  width: 1.15rem;
  height: 1.15rem;
  flex-shrink: 0;
}

.account-type-btn .service-tab-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

.account-type-btn.active {
  background: var(--panel);
  color: var(--ink);
  border-color: rgba(18, 18, 18, 0.12);
  box-shadow: 0 1px 3px rgba(18, 18, 18, 0.08);
}

.account-type-hint {
  margin: 0 0 14px;
  font-size: 0.88rem;
  line-height: 1.45;
  color: var(--muted);
}

.signup-individual-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.account-strip .account-phone {
  display: none;
}

@media (max-width: 520px) {
  .signup-individual-fields {
    grid-template-columns: 1fr;
  }

  .auth-tabs .tab-btn,
  .account-type-tabs .account-type-btn {
    white-space: nowrap !important;
    font-size: 0.8rem;
    padding: 8px 6px;
  }

  .auth-form .primary-btn {
    white-space: nowrap;
  }
}

/* Segmented Sign in / Create account — same on desktop, mobile, and Expo Go WebView */
.auth-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  margin-bottom: 20px;
  padding: 4px;
  border-radius: 14px;
  background: var(--mist);
  border: 1px solid var(--border);
}

.tab-btn {
  min-height: 38px;
  background: transparent;
  color: var(--muted);
  border: 1px solid transparent;
  border-radius: 10px;
  padding: 8px 10px;
  cursor: pointer;
  font-weight: 600;
  font-size: 0.82rem;
  line-height: 1.2;
  white-space: nowrap;
  box-shadow: none;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}

.tab-btn.active {
  background: var(--panel) !important;
  color: var(--ink) !important;
  border-color: rgba(18, 18, 18, 0.12) !important;
  box-shadow: 0 1px 3px rgba(18, 18, 18, 0.08) !important;
}

label {
  display: block;
  margin-bottom: 14px;
  font-size: 14px;
  font-weight: 600;
}

input, textarea, select, button {
  font: inherit;
}

input, textarea {
  width: 100%;
  margin-top: 6px;
  padding: 11px 12px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--mist);
  color: var(--text);
}

textarea { min-height: 90px; resize: vertical; }

button { cursor: pointer; }

.primary-btn {
  background: var(--ink) !important;
  color: #ffffff !important;
  border: 1px solid var(--ink) !important;
  border-radius: 12px;
  padding: 10px 14px;
  font-weight: 600;
  font-size: 0.95rem;
  letter-spacing: -0.01em;
  line-height: 1.2;
  white-space: nowrap;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}

.primary-btn:hover {
  background: #2a2a2a !important;
  border-color: #2a2a2a !important;
}

.primary-btn:active {
  background: var(--primary-dark) !important;
  border-color: var(--primary-dark) !important;
  transform: scale(0.985);
}

.secondary-btn {
  background: var(--mist) !important;
  color: var(--text) !important;
  border: 1px solid var(--border) !important;
  border-radius: 12px;
  padding: 12px 16px;
  font-weight: 600;
}

.auth-link {
  background: none;
  border: none;
  color: var(--accent-dark);
  padding: 0;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.auth-helper {
  margin: 10px 0;
  font-size: 0.9rem;
  color: var(--muted);
}

.error-text {
  color: var(--danger);
  margin-top: 12px;
  font-size: 0.92rem;
}

/* App shell */
.app {
  --portal-sidebar-width: 320px;
  display: grid;
  grid-template-columns: var(--portal-sidebar-width) minmax(0, 1fr);
  min-height: 100vh;
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
}

.sidebar {
  --sidebar-pad-x: 14px;
  background:
    linear-gradient(180deg, #ffffff 0%, #fafafa 48%, #f7f7f8 100%) !important;
  color: var(--text);
  padding: 20px var(--sidebar-pad-x) 16px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  border-right: 1px solid rgba(18, 18, 18, 0.06) !important;
  border-top-right-radius: 20px;
  box-shadow: 1px 0 0 rgba(255, 255, 255, 0.8) inset, 4px 0 24px rgba(18, 18, 18, 0.03);
  min-width: 0;
  /* Pin to the viewport on desktop. Banner + account stay put; tabs scroll. */
  position: fixed;
  top: 0;
  left: 0;
  width: var(--portal-sidebar-width, 320px);
  height: 100vh;
  height: 100dvh;
  max-height: 100vh;
  max-height: 100dvh;
  overflow-x: hidden;
  overflow-y: hidden;
  box-sizing: border-box;
  z-index: 20;
}

.sidebar::-webkit-scrollbar {
  display: none;
  width: 0;
  height: 0;
}

.sidebar::before {
  display: none !important;
}

.sidebar-brand.brand-banner {
  order: 1;
  display: block;
  margin: -20px calc(-1 * var(--sidebar-pad-x)) 8px;
  padding: 0;
  flex-shrink: 0;
}

.sidebar .brand {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  min-height: 72px;
  margin: 0;
  padding: 0 16px;
  border-bottom: none;
  box-sizing: border-box;
}

.sidebar .brand-copy {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.sidebar .brand-copy .brand-wordmark {
  color: #f5f5f6;
  font-size: 1.15rem;
  font-weight: 700;
}

.sidebar .brand-tagline {
  color: rgba(245, 245, 246, 0.62);
  margin-top: 4px;
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.11em;
  text-transform: uppercase;
  opacity: 1;
}

.account-strip {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  align-items: center;
  column-gap: 12px;
  row-gap: 0;
  color: var(--text) !important;
  background:
    linear-gradient(145deg, rgba(255, 255, 255, 0.92), rgba(248, 248, 249, 0.88)) !important;
  border: 1px solid rgba(18, 18, 18, 0.08) !important;
  border-radius: 16px !important;
  order: 2;
  flex-shrink: 0;
  margin: 10px 2px 2px !important;
  padding: 12px !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.8) inset,
    0 8px 20px rgba(18, 18, 18, 0.05);
  backdrop-filter: blur(10px);
  min-width: 0;
  box-sizing: border-box;
}

.account-strip-logo-wrap {
  position: relative;
  flex: 0 0 auto;
  width: 48px;
  height: 48px;
  border-radius: 14px;
  overflow: hidden;
  background:
    linear-gradient(145deg, #1c1c1e 0%, #3a3a3c 100%);
  box-shadow: 0 4px 12px rgba(18, 18, 18, 0.14);
}

.account-strip-logo,
.account-strip-logo-fallback {
  display: block;
  width: 100%;
  height: 100%;
}

.account-strip-logo {
  object-fit: cover;
}

.account-strip-logo.hidden {
  display: none;
}

.account-strip-logo-fallback {
  display: grid;
  place-items: center;
  color: #f5f5f6;
  font-family: var(--font-brand, inherit);
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: -0.02em;
}

.account-strip-logo-wrap.has-logo .account-strip-logo-fallback {
  display: none;
}

.account-strip-copy {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-content: center;
  min-width: 0;
  min-height: 48px;
}

.account-strip strong,
.account-strip .account-strip-name {
  display: block;
  color: var(--text);
  font-size: 0.92rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.25;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Company card shows logo + name only (desktop and mobile). */
.account-strip .account-strip-detail,
.account-strip .account-phone,
.account-strip .account-kind-pill {
  display: none !important;
}

.account-kind-pill {
  display: none;
}

.nav {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 14px;
  flex: 1;
  min-width: 0;
}

.nav-primary {
  flex: 1 1 auto;
  order: 3;
  min-height: 0;
  padding: 4px 2px 8px;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  /* Scroll the tabs only — no visible scrollbar. */
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.nav-primary::-webkit-scrollbar {
  display: none;
  width: 0;
  height: 0;
}

.nav-secondary {
  margin-top: 0;
  flex: 0 0 auto;
  order: 4;
  padding: 10px 2px 0;
  border-top: 1px solid rgba(18, 18, 18, 0.06);
}

/* Account + Settings + Sign out stay pinned below the scrolling app list. */
.portal-sidebar-footer {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 0 0 auto;
  order: 5;
  margin-top: auto;
  min-width: 0;
}

.portal-sidebar-footer .account-strip,
.portal-sidebar-footer .nav-secondary,
.portal-sidebar-footer .logout-btn {
  order: unset;
}

.portal-sidebar-footer .nav-secondary {
  margin: 0;
  padding: 0;
  border-top: none;
}

.portal-sidebar-footer .account-strip {
  margin: 4px 0 0 !important;
}

.portal-sidebar-footer .logout-btn {
  margin-top: 0;
  justify-content: flex-start;
  text-align: left;
}

.nav-label-short {
  display: none;
}

/* More is a mobile bottom-bar control only — keep it out of the desktop sidebar. */
.nav-more-trigger {
  display: none;
}

/* Overflow destinations only appear inside the mobile More sheet. */
.portal-more-apps {
  display: none;
}

.portal-more,
.portal-more-panel {
  display: contents;
}

.portal-more-backdrop,
.portal-more-handle {
  display: none;
}

.nav-btn {
  display: flex;
  align-items: center;
  gap: 11px;
  position: relative;
  background: transparent;
  color: var(--sidebar-text);
  border: none;
  text-align: left;
  padding: 9px 10px;
  border-radius: 12px;
  font-size: 0.9rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  cursor: pointer;
  transition:
    background 160ms ease,
    color 160ms ease,
    box-shadow 160ms ease,
    transform 160ms ease;
}

.nav-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  flex: 0 0 auto;
  color: currentColor;
  border-radius: 9px;
  background: rgba(18, 18, 18, 0.04);
  transition: background 160ms ease, color 160ms ease;
}

.nav-icon svg {
  width: 1.05rem;
  height: 1.05rem;
  display: block;
}

.nav-label {
  min-width: 0;
  flex: 1 1 auto;
}

.nav-app-lock {
  display: inline-grid;
  place-items: center;
  width: 1.15rem;
  height: 1.15rem;
  flex: 0 0 auto;
  color: var(--muted);
  opacity: 0.92;
}

.nav-app-lock svg {
  width: 0.92rem;
  height: 0.92rem;
  display: block;
}

.nav-app-lock.is-unlocked {
  color: var(--success, #15803d);
}

.nav-app-lock.is-locked {
  color: var(--muted);
}

.nav-btn.is-app-locked {
  opacity: 0.96;
}

.nav-btn.is-app-locked .nav-group-chevron {
  opacity: 0.35;
}

.nav-btn:hover:not(.active) {
  background: rgba(18, 18, 18, 0.045) !important;
  color: var(--ink) !important;
}

.nav-btn:hover:not(.active) .nav-icon {
  background: rgba(18, 18, 18, 0.07);
}

.nav-btn.active {
  background: var(--ink) !important;
  color: #fff !important;
  box-shadow: 0 6px 16px rgba(18, 18, 18, 0.14);
}

.nav-btn.active .nav-icon {
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
}

.nav-btn.active .nav-badge {
  background: #fff;
  color: var(--ink);
}

.nav-btn:focus-visible {
  outline: 2px solid rgba(18, 18, 18, 0.35);
  outline-offset: 2px;
}

.nav-group {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.nav-group-parent.is-section-active:not(.active) {
  background: rgba(18, 18, 18, 0.045);
  color: var(--ink);
}

.nav-group-parent.is-section-active:not(.active) .nav-icon {
  background: rgba(18, 18, 18, 0.07);
  color: var(--ink);
}

.nav-group-children {
  display: none;
  flex-direction: column;
  gap: 2px;
  margin: 0 0 2px;
  padding: 2px 0 2px 18px;
  position: relative;
}

.nav-group.is-open > .nav-group-children {
  display: flex;
}

.nav-group-children::before {
  content: "";
  position: absolute;
  top: 6px;
  bottom: 6px;
  left: 20px;
  width: 2px;
  border-radius: 999px;
  background: rgba(18, 18, 18, 0.1);
}

.nav-sub-btn {
  gap: 10px;
  min-height: 0;
  padding: 6px 10px 6px 14px;
  font-size: 0.84rem;
  font-weight: 600;
  color: var(--muted);
}

.nav-sub-btn .portal-app-icon {
  width: 26px;
  height: 26px;
  border-radius: 8px;
  font-size: 13px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.22);
}

.nav-sub-btn:hover:not(.active) {
  color: var(--ink);
}

.nav-sub-btn.active {
  background: rgba(18, 18, 18, 0.08) !important;
  color: var(--ink) !important;
  box-shadow: none;
}

.nav-sub-btn.active .portal-app-icon {
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.22),
    0 0 0 1px rgba(18, 18, 18, 0.08);
}

.nav-group-parent {
  width: 100%;
}

.nav-group-parent .nav-label {
  flex: 1 1 auto;
  min-width: 0;
}

.nav-group-chevron {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.35rem;
  height: 1.35rem;
  margin-left: auto;
  flex: 0 0 auto;
  border-radius: 8px;
  color: var(--muted);
  transition: transform 160ms ease, color 160ms ease, background 160ms ease;
}

.nav-group-chevron svg {
  width: 0.95rem;
  height: 0.95rem;
}

.nav-group.is-open > .nav-group-parent .nav-group-chevron {
  transform: rotate(90deg);
  color: var(--ink);
}

.nav-group-parent:hover .nav-group-chevron {
  background: rgba(18, 18, 18, 0.05);
  color: var(--ink);
}

.nav-group.is-open .nav-group-parent {
  margin-bottom: 0;
}

.logout-btn {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 11px;
  margin-top: 0;
  flex-shrink: 0;
  order: 5;
  width: 100%;
  background: transparent !important;
  color: var(--muted) !important;
  border: 1px solid transparent !important;
  border-radius: 12px;
  padding: 10px 10px;
  font-weight: 600;
  font-size: 0.9rem;
  letter-spacing: -0.01em;
  text-align: left;
  cursor: pointer;
  transition: background 160ms ease, color 160ms ease, border-color 160ms ease;
}

.logout-btn .nav-label {
  flex: 0 1 auto;
  text-align: left;
}

.logout-btn .nav-icon {
  background: rgba(18, 18, 18, 0.04);
}

.logout-btn:hover {
  background: rgba(18, 18, 18, 0.045) !important;
  color: var(--text) !important;
  border-color: rgba(18, 18, 18, 0.06) !important;
}

.logout-btn:hover .nav-icon {
  background: rgba(18, 18, 18, 0.07);
}

.main {
  /* Stay in the right grid track while the sidebar is position:fixed. */
  grid-column: 2;
  padding: 24px;
  min-width: 0;
  max-width: 100%;
  overflow-x: hidden;
}

.topbar {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 20px;
}

.topbar-end {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.5rem;
  flex: 0 0 auto;
  margin-left: auto;
}

/* Section-drawer toggle lives in the topbar; mobile-only. */
.business-mobile-drawer-toggle {
  display: none;
}

.topbar-heading {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  min-width: 0;
}

.topbar-heading-copy {
  display: grid;
  gap: 0.15rem;
  min-width: 0;
}

.topbar-title-row {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  min-width: 0;
}

.topbar-title-row h2 {
  margin: 0;
  min-width: 0;
}

.view-info.team-info {
  flex-shrink: 0;
}

.settings-heading-row {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  min-width: 0;
  margin: 0 0 16px;
}

.settings-heading-row h3 {
  margin: 0;
}

.settings-heading-row .team-info {
  margin-top: 0.1rem;
}

.admin-access-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin: 0 0 16px;
  padding: 12px 14px;
  border-radius: 12px;
  background: rgba(90, 86, 82, 0.1);
  border: 1px solid var(--border);
  color: var(--text);
  font-size: 0.92rem;
}

.test-mode-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin: 0 0 16px;
  padding: 12px 14px;
  border-radius: 12px;
  background:
    linear-gradient(135deg, rgba(180, 120, 40, 0.12), rgba(180, 120, 40, 0.04));
  border: 1px solid rgba(180, 120, 40, 0.28);
  color: var(--text);
  font-size: 0.92rem;
}

.business-verification-status-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin: 0 0 16px;
  padding: 12px 14px;
  border-radius: 12px;
  background:
    linear-gradient(135deg, rgba(180, 74, 63, 0.12), rgba(180, 74, 63, 0.04));
  border: 1px solid rgba(180, 74, 63, 0.28);
  color: var(--text);
  font-size: 0.92rem;
}

.business-verification-status-banner[data-status="pending"] {
  background:
    linear-gradient(135deg, rgba(180, 120, 40, 0.14), rgba(180, 120, 40, 0.04));
  border-color: rgba(180, 120, 40, 0.3);
}

.business-verification-status-banner[data-status="rejected"] {
  background:
    linear-gradient(135deg, rgba(180, 74, 63, 0.16), rgba(180, 74, 63, 0.05));
  border-color: rgba(180, 74, 63, 0.34);
}

.business-verification-status-copy {
  display: grid;
  gap: 2px;
  min-width: 0;
  flex: 1 1 220px;
}

.business-verification-status-copy strong {
  font-size: 0.95rem;
  letter-spacing: -0.01em;
}

.business-verification-status-copy span {
  color: var(--muted);
  line-height: 1.4;
}

.test-mode-banner .secondary-btn,
.admin-access-banner .secondary-btn,
.business-verification-status-banner .secondary-btn {
  padding: 8px 12px;
  font-size: 0.85rem;
  flex: 0 0 auto;
}

.topbar h2 {
  margin: 0 0 4px;
  font-size: 1.65rem;
  letter-spacing: -0.03em;
}

.topbar-title-row h2 {
  margin: 0;
}

.topbar p {
  margin: 0;
  color: var(--muted);
}

/* Tab headings: left-align across personal + business (matches drawer chrome). */
body.personal-account .topbar {
  position: relative;
  justify-content: space-between;
  align-items: flex-start;
}

body.personal-account .topbar-heading {
  justify-content: flex-start;
  width: auto;
  text-align: left;
}

body.personal-account .topbar > div:first-child {
  text-align: left;
  width: auto;
}

.table-wrap, .panel-form, .info-box {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 1px 2px rgba(18, 18, 18, 0.04);
}

.table-wrap { overflow: auto; }
.panel-form, .info-box { padding: 24px; max-width: 760px; margin-inline: auto; }

.info-box p { margin: 0; color: var(--muted); line-height: 1.5; }

table { width: 100%; border-collapse: collapse; }
th, td {
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
  text-align: left;
  vertical-align: top;
}
th {
  font-size: 12px;
  color: var(--muted);
  background: var(--mist);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.badge {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  background: var(--cream-soft);
  color: var(--muted);
}

.badge-arrived {
  background: rgba(90, 140, 160, 0.14);
  color: #3d6570;
}

.live-tracking-banner {
  margin-bottom: 14px;
  padding: 12px 14px;
  border-radius: 12px;
  background: var(--accent-soft);
  color: var(--accent-dark);
  font-weight: 600;
  font-size: 0.92rem;
}

.live-trip-stage {
  position: relative;
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  width: 100%;
  overflow: hidden;
  background: var(--bg);
  border-radius: 18px;
  border: 1px solid var(--border);
}

.live-trip-map {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100% !important;
  min-height: 100% !important;
  border: 0;
  border-radius: 0;
  background: #ebe8e3;
  pointer-events: auto;
  touch-action: manipulation;
  z-index: 1;
}

.live-trip-chip {
  position: absolute;
  z-index: 4;
  top: max(12px, env(safe-area-inset-top, 0px));
  left: max(12px, env(safe-area-inset-left, 0px));
  right: max(12px, env(safe-area-inset-right, 0px));
  display: grid;
  gap: 2px;
  max-width: 420px;
  padding: 10px 12px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.94);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-lift);
  pointer-events: none;
}

.live-trip-chip-kind {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}

.live-trip-chip strong {
  font-size: 0.98rem;
  color: var(--text);
}

.live-trip-chip-status {
  font-size: 0.86rem;
  color: var(--muted);
}

.live-trip-driver-pill {
  position: absolute;
  z-index: 4;
  left: max(12px, env(safe-area-inset-left, 0px));
  right: max(12px, env(safe-area-inset-right, 0px));
  bottom: calc(72px + env(safe-area-inset-bottom, 0px) + var(--live-keyboard-inset, 0px));
  max-width: 420px;
  padding: 12px 14px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.96);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  pointer-events: none;
}

.live-trip-driver-label {
  margin: 0 0 4px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}

.live-trip-driver-name {
  display: block;
  font-size: 1.02rem;
  color: var(--text);
}

.live-trip-driver-plate,
.live-trip-driver-eta,
.live-trip-driver-status {
  margin: 4px 0 0;
  font-size: 0.88rem;
  color: var(--muted);
}

.live-trip-driver-eta {
  font-weight: 600;
  color: var(--text);
}

.live-trip-driver-status {
  font-weight: 600;
  color: var(--text);
}

.live-trip-chat {
  position: absolute;
  z-index: 5;
  right: max(12px, env(safe-area-inset-right, 0px));
  bottom: calc(16px + env(safe-area-inset-bottom, 0px) + var(--live-keyboard-inset, 0px));
  left: auto;
  width: min(360px, calc(100% - 24px));
  pointer-events: none;
}

.live-trip-chat-toggle,
.live-trip-chat-sheet {
  pointer-events: auto;
}

.live-trip-chat-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 16px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: #fff;
  box-shadow: var(--shadow-lift);
  font: inherit;
  font-weight: 700;
  color: var(--text);
  cursor: pointer;
  float: right;
}

.live-trip-chat-toggle:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.live-trip-chat.is-collapsed .live-trip-chat-sheet {
  display: none;
}

.live-trip-chat.is-open .live-trip-chat-toggle {
  display: none;
}

.live-trip-stage:has(.live-trip-chat.is-open) .live-trip-driver-pill {
  opacity: 0;
  visibility: hidden;
}

.live-trip-chat-sheet {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-height: min(46vh, 420px);
  border-radius: 16px;
  border: 1px solid var(--border);
  background: rgba(255, 255, 255, 0.98);
  box-shadow: var(--shadow-lift);
  overflow: hidden;
}

.live-trip-chat-sheet-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--border);
}

.live-trip-chat-sheet-head .secondary-btn {
  min-height: 36px;
  padding: 0 12px;
}

.live-trip-chat-messages {
  flex: 1;
  min-height: 120px;
  overflow: auto;
  padding: 12px;
  display: grid;
  gap: 8px;
  background: #f7f5f2;
}

.live-trip-chat-bubble {
  max-width: 85%;
  padding: 8px 10px;
  border-radius: 12px;
  font-size: 0.92rem;
  line-height: 1.35;
  word-break: break-word;
}

.live-trip-chat-bubble--customer {
  margin-left: auto;
  background: var(--accent-soft);
  color: var(--text);
}

.live-trip-chat-bubble--driver {
  margin-right: auto;
  background: #fff;
  border: 1px solid var(--border);
  color: var(--text);
}

.live-trip-chat-form {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  padding: 10px;
  padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
  border-top: 1px solid var(--border);
  background: #fff;
}

.live-trip-chat-form input {
  margin: 0;
  min-height: 44px;
}

.live-trip-chat-form .primary-btn {
  min-width: 72px;
  min-height: 44px;
}

.app.has-live-trip .main {
  display: flex;
  flex-direction: column;
  min-height: 0;
}

.app.has-live-trip .topbar,
.app.has-live-trip .admin-access-banner,
.app.has-live-trip #live-tracking-banner,
.app.has-live-trip #deliveries-table-wrap,
.app.has-live-trip #activity-trip-list {
  display: none !important;
}

.app.has-live-trip #deliveries-view {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding-bottom: 0;
}

.app.has-live-trip .live-trip-stage {
  flex: 1;
  min-height: 0;
  border-radius: 0;
  border: 0;
}

@media (max-width: 900px) {
  body:not(.business-account) .app.has-live-trip {
    /* Keep bottom tab bar visible; map fills remaining space above it. */
    padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px));
  }

  body.business-account .app.has-live-trip {
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }

  .app.has-live-trip .main {
    flex: 1;
    min-height: 0;
    padding: 0;
  }

  .app.has-live-trip .live-trip-stage {
    min-height: 0;
    height: 100%;
  }

  .live-trip-chip {
    right: max(12px, env(safe-area-inset-right, 0px));
    max-width: none;
  }

  .live-trip-driver-pill {
    max-width: none;
    bottom: calc(76px + env(safe-area-inset-bottom, 0px) + var(--live-keyboard-inset, 0px));
  }

  .live-trip-chat {
    left: max(12px, env(safe-area-inset-left, 0px));
    right: max(12px, env(safe-area-inset-right, 0px));
    width: auto;
    bottom: calc(12px + env(safe-area-inset-bottom, 0px) + var(--live-keyboard-inset, 0px));
  }

  .live-trip-chat-sheet {
    max-height: min(42vh, 360px);
  }

  .app.has-live-trip .gm-bundled-control,
  .app.has-live-trip .gmnoprint {
    margin-bottom: calc(88px + env(safe-area-inset-bottom, 0px) + var(--live-keyboard-inset, 0px)) !important;
  }
}

.toolbar { margin-bottom: 14px; }
.toolbar-stack { display: flex; gap: 10px; flex-wrap: wrap; }

.integrations-shell {
  display: grid;
  gap: 18px;
  width: 100%;
  max-width: 760px;
  min-width: 0;
  margin-inline: auto;
}

.integrations-panel .settings-card {
  max-width: none;
}

#integrations-mode-tabs.account-type-tabs {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-bottom: 0;
}

.integrations-panel {
  min-width: 0;
}

.integrations-layout {
  display: grid;
  gap: 18px;
  width: 100%;
  max-width: 960px;
  min-width: 0;
  margin-inline: auto;
}

.integrations-locked {
  width: 100%;
  max-width: 560px;
  margin-inline: auto;
  padding: 28px 24px;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: var(--panel);
  box-shadow: var(--shadow);
}

.integrations-locked h3 {
  margin: 0 0 8px;
}

.integrations-locked p {
  margin: 0;
  color: var(--muted);
  line-height: 1.55;
}

.integrations-layout .settings-card {
  max-width: none;
}

.integration-guide-card {
  display: grid;
  gap: 14px;
}

.integration-guide-card h3 {
  margin: 0;
}

.integration-guide-card .settings-intro {
  margin: 0;
}

.integration-guide-card .integration-guide-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  margin-top: 0;
}

.integrations-controls {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: 18px;
  align-items: start;
  min-width: 0;
}

.integrations-keys-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

.integrations-keys-header > div {
  flex: 1;
  min-width: 0;
}

.integrations-keys-header .settings-heading-row {
  margin: 0;
}

.empty-state-copy {
  display: inline;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
  line-height: 1.45;
}

.integrations-keys-header h3 {
  margin: 0;
}

.integrations-keys-header .primary-btn {
  flex-shrink: 0;
  width: auto;
  max-width: none;
  align-self: flex-start;
}

.integrations-keys-card .table-wrap {
  margin: 14px 0 0;
  max-width: none;
  border: 0;
  background: transparent;
  box-shadow: none;
  overflow: visible;
}

.integrations-keys-card .action-group .secondary-btn {
  width: auto;
  max-width: none;
}

.action-group {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.action-group .secondary-btn {
  padding: 8px 12px;
  border-radius: 10px;
  font-size: 0.9rem;
  line-height: 1.2;
}

.secondary-btn.danger-btn {
  color: var(--danger) !important;
  border-color: rgba(180, 74, 63, 0.35) !important;
}

.secondary-btn.danger-btn:hover {
  background: rgba(180, 74, 63, 0.08) !important;
}

@media (max-width: 860px) {
  .integrations-controls {
    grid-template-columns: 1fr;
  }
}

.inline-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.address-block {
  margin-bottom: 8px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border);
}

.address-block:last-of-type { border-bottom: 0; }

.toast {
  position: fixed;
  right: 16px;
  bottom: 16px;
  left: 16px;
  margin: 0 auto;
  background: var(--text);
  color: #ffffff;
  padding: 12px 16px;
  border-radius: 12px;
  box-shadow: var(--shadow);
  z-index: 50;
  max-width: min(360px, calc(100vw - 32px));
}

.modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(42, 41, 39, 0.35);
  display: grid;
  place-items: center;
  z-index: 40;
  padding: 16px;
}

.modal {
  width: min(480px, 100%);
  max-width: 100%;
  background: var(--panel);
  border-radius: 20px;
  padding: 20px;
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  box-sizing: border-box;
}

.modal.modal--app-about {
  width: min(440px, 100%);
  max-height: min(88vh, 640px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 16px 16px 12px;
}

.modal.modal--app-about > #modal-title {
  flex: 0 0 auto;
  margin: 0 0 10px;
  font-family: var(--font-brand);
  font-size: 1.12rem;
  font-weight: 700;
  letter-spacing: -0.015em;
  line-height: 1.25;
}

.modal.modal--app-about > #modal-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  padding-right: 2px;
}

.modal.modal--app-about > .modal-actions {
  flex: 0 0 auto;
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid var(--border);
}

.modal.modal--app-about > #modal-close-actions {
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
  gap: 0.45rem;
}

.modal.modal--app-about #modal-app-subscribe-actions:not(.hidden) {
  display: grid;
  gap: 0.4rem;
  width: 100%;
  order: 0;
}

.modal.modal--app-about #modal-app-subscribe-actions .app-tile-action {
  width: 100%;
}

.modal.modal--app-about #modal-close-btn {
  width: 100%;
  order: 1;
}

.modal-actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  flex-wrap: wrap;
  margin-top: 18px;
}

.order-id-hint {
  margin: -6px 0 14px;
  font-size: 0.84rem;
  color: var(--muted);
}

.ride-booking-intro {
  margin: 0 0 18px;
  color: var(--muted);
  line-height: 1.5;
}

.trip-form {
  max-width: 640px;
  padding: 18px;
}

.trip-form .account-type-tabs {
  margin-bottom: 18px;
}

.trip-form .address-block {
  margin-bottom: 4px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--border);
}

.trip-form .address-block:last-of-type {
  border-bottom: 0;
  padding-bottom: 4px;
}

.trip-form .address-map-picker {
  margin-bottom: 10px;
}

.trip-form .address-map-picker-status:empty {
  display: none;
  min-height: 0;
  margin: 0;
}

.trip-form .address-map-picker-canvas {
  height: min(280px, 42vh);
}

.trip-form .address-map-selected {
  margin-top: 0;
  margin-bottom: 10px;
}

.trip-form .address-map-selected input {
  margin-top: 0;
}

.trip-form #notes-label {
  margin-top: 8px;
}

.trip-fare-card {
  margin: 0 0 1rem;
  padding: 0.85rem 1rem;
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(20, 90, 70, 0.08), rgba(20, 90, 70, 0.02));
  border: 1px solid rgba(20, 90, 70, 0.16);
}

.trip-fare-card .status-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  margin-bottom: 0.35rem;
}

.trip-fare-card .status-row strong {
  font-size: 1.15rem;
}

.drivers-nearby-banner {
  margin: 0.65rem 0 0;
  padding: 0.65rem 0.75rem;
  border-radius: 10px;
  font-size: 0.92rem;
  line-height: 1.35;
}

.drivers-nearby-banner.is-ok {
  background: rgba(20, 90, 70, 0.1);
  color: #0f3d30;
}

.drivers-nearby-banner.is-warn {
  background: rgba(160, 70, 20, 0.12);
  color: #6b2d0c;
  border: 1px solid rgba(160, 70, 20, 0.22);
}

.trip-form #create-submit-btn {
  margin-top: 14px;
  width: 100%;
}

.cancel-ride-btn {
  padding: 8px 12px;
  font-size: 0.85rem;
}

.actions-cell {
  white-space: nowrap;
}

.service-type-pill {
  display: inline-block;
  padding: 3px 8px;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

.service-type-ride {
  background: var(--accent-soft);
  color: var(--accent-dark);
}

.service-type-delivery {
  background: var(--primary-soft);
  color: var(--muted);
}

body.personal-account .business-only-field {
  display: none !important;
}

#personal-service-tabs {
  margin-bottom: 14px;
}

/* Mobile menu button — business drawer only (shown under 900px). Personal keeps bottom tabs. */
.nav-drawer-toggle,
.nav-drawer-fab,
.nav-drawer-backdrop {
  display: none;
}

.nav-drawer-toggle-icon {
  display: inline-grid;
  place-items: center;
  width: 1.35rem;
  height: 1.35rem;
}

.nav-drawer-toggle-icon svg {
  width: 100%;
  height: 100%;
}

@media (max-width: 900px) {
  .app {
    display: flex;
    flex-direction: column;
    grid-template-columns: none;
    width: 100%;
    /* 100vw includes scrollbar gutters and can force a horizontal scroller. */
    max-width: 100%;
    overflow-x: hidden;
    overflow-y: hidden;
    min-height: 100vh;
    min-height: 100dvh;
    height: 100dvh;
    max-height: 100dvh;
    padding-bottom: env(safe-area-inset-bottom, 0px);
    box-sizing: border-box;
  }

  /* Personal (and non-business): reserve space for the bottom tab bar. */
  body:not(.business-account):not(.business-drawer-nav) {
    --portal-nav-h: calc(64px + env(safe-area-inset-bottom, 0px));
    --nav-h: var(--portal-nav-h);
  }

  body:not(.business-account):not(.business-drawer-nav) .app {
    padding-bottom: var(--portal-nav-h);
  }

  /* Shell is viewport-locked; page content scrolls inside .main only. */
  .main {
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  html.nav-drawer-lock,
  html.nav-drawer-lock body {
    overflow: hidden;
  }

  /* ── Apps drawer (business + personal) ── */
  body.business-drawer-nav .nav-drawer-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 2.5rem;
    height: 2.5rem;
    margin: 0;
    padding: 0;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: #fff;
    color: var(--ink);
    box-shadow: 0 1px 2px rgba(18, 18, 18, 0.04);
    cursor: pointer;
  }

  body.business-drawer-nav .nav-drawer-fab {
    display: none;
    position: fixed;
    top: calc(10px + env(safe-area-inset-top, 0px));
    left: 10px;
    z-index: 45;
    width: 2.65rem;
    height: 2.65rem;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.96);
    color: var(--ink);
    box-shadow: 0 8px 24px rgba(18, 18, 18, 0.12);
    cursor: pointer;
  }

  body.business-drawer-nav .app.shop-surface .nav-drawer-fab {
    display: inline-flex;
  }

  body.business-drawer-nav .nav-drawer-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 55;
    border: 0;
    background: rgba(42, 41, 39, 0.34);
    cursor: pointer;
  }

  body.business-drawer-nav .nav-drawer-backdrop.is-open,
  body.business-drawer-nav .app.nav-drawer-open .nav-drawer-backdrop,
  body.business-drawer-nav.nav-drawer-open .nav-drawer-backdrop {
    display: block;
  }

  body.business-drawer-nav .sidebar {
    --sidebar-pad-x: 14px;
    order: 0;
    position: relative;
    top: auto;
    left: auto;
    bottom: auto;
    right: auto;
    z-index: 5;
    width: var(--portal-drawer-width, min(20rem, 86vw));
    max-width: none;
    height: auto;
    max-height: none;
    align-self: stretch;
    overflow-x: hidden;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -ms-overflow-style: none;
    flex-direction: column;
    gap: 6px;
    padding: 16px var(--sidebar-pad-x) calc(16px + env(safe-area-inset-bottom, 0px));
    border-right: 1px solid rgba(18, 18, 18, 0.08) !important;
    border-top: none !important;
    border-bottom: none !important;
    border-top-right-radius: 0;
    background:
      linear-gradient(180deg, #ffffff 0%, #fafafa 48%, #f7f7f8 100%) !important;
    box-shadow: none;
    transform: none;
    transition: none;
    overscroll-behavior: contain;
  }

  body.business-drawer-nav .app.nav-drawer-open .sidebar,
  body.business-drawer-nav.nav-drawer-open .sidebar {
    transform: none;
  }

  body.business-drawer-nav .nav-drawer-backdrop,
  body.business-drawer-nav .nav-drawer-backdrop.is-open,
  body.business-drawer-nav .app.nav-drawer-open .nav-drawer-backdrop,
  body.business-drawer-nav.nav-drawer-open .nav-drawer-backdrop {
    display: none !important;
  }

  body.business-drawer-nav .sidebar-brand,
  body.business-drawer-nav .sidebar-brand.brand-banner {
    display: block !important;
    margin: -16px calc(-1 * var(--sidebar-pad-x)) 8px;
  }

  body.business-drawer-nav .nav-primary {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 2px;
    margin: 0;
    padding: 4px 0 8px;
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }

  body.business-drawer-nav .nav-primary::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
  }

  body.business-drawer-nav .nav-group {
    flex: 0 0 auto;
    min-width: 0;
    width: 100%;
  }

  body.business-drawer-nav .nav-group-children {
    display: none;
  }

  body.business-drawer-nav .nav-group.is-open > .nav-group-children {
    display: flex;
  }

  body.business-drawer-nav .nav-group-parent {
    width: 100%;
    height: auto;
  }

  body.business-drawer-nav .nav-primary .nav-btn {
    flex: 0 0 auto;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    gap: 11px;
    text-align: left;
    padding: 9px 10px;
    border-radius: 12px;
    font-size: 0.9rem;
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
    min-width: 0;
    width: 100%;
    position: relative;
    letter-spacing: -0.01em;
    box-shadow: none;
  }

  body.business-drawer-nav .nav-primary .nav-icon {
    width: 2rem;
    height: 2rem;
    background: rgba(18, 18, 18, 0.04);
    border-radius: 10px;
  }

  body.business-drawer-nav .nav-primary .nav-icon svg {
    width: 1.05rem;
    height: 1.05rem;
  }

  body.business-drawer-nav .nav-primary .nav-label {
    display: block;
    flex: 1 1 auto;
    max-width: none;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  body.business-drawer-nav .nav-primary .nav-badge {
    position: static;
    margin-left: auto;
  }

  body.business-drawer-nav .nav-primary .nav-btn.active {
    background: rgba(18, 18, 18, 0.06) !important;
    color: var(--text) !important;
    box-shadow: none;
  }

  body.business-drawer-nav .nav-primary .nav-btn.active .nav-icon {
    background: rgba(18, 18, 18, 0.08);
    color: currentColor;
  }

  body.business-drawer-nav .nav-primary .nav-group-parent.is-section-active {
    background: rgba(18, 18, 18, 0.045) !important;
    color: var(--text) !important;
    box-shadow: none;
  }

  body.business-drawer-nav .nav-primary .nav-group-parent.is-section-active .nav-icon {
    background: rgba(18, 18, 18, 0.07);
    color: currentColor;
  }

  body.business-drawer-nav .nav-primary .nav-btn.active .nav-badge {
    background: var(--primary);
    color: #fff;
  }

  body.business-drawer-nav .nav-primary .nav-btn:hover:not(.active) {
    background: rgba(42, 41, 39, 0.03) !important;
  }

  body.business-drawer-nav .nav-primary .nav-btn:hover:not(.active) .nav-icon {
    background: rgba(18, 18, 18, 0.06);
  }

  body.business-drawer-nav .nav-more-trigger {
    display: none !important;
  }

  body.business-drawer-nav .portal-more,
  body.business-drawer-nav .portal-more-panel {
    display: contents !important;
  }

  body.business-drawer-nav .portal-more-backdrop,
  body.business-drawer-nav .portal-more-handle,
  body.business-drawer-nav .portal-more-apps {
    display: none !important;
  }

  body.business-drawer-nav #nav-applications .nav-label-full,
  body.business-drawer-nav #nav-deliveries .nav-label-full,
  body.business-drawer-nav #nav-integrations .nav-label-full,
  body.business-drawer-nav #nav-sell-products .nav-label-full,
  body.business-drawer-nav #nav-sell-services .nav-label-full {
    display: inline;
  }

  body.business-drawer-nav #nav-applications .nav-label-short,
  body.business-drawer-nav #nav-deliveries .nav-label-short,
  body.business-drawer-nav #nav-integrations .nav-label-short,
  body.business-drawer-nav #nav-sell-products .nav-label-short,
  body.business-drawer-nav #nav-sell-services .nav-label-short {
    display: none;
  }

  body.business-drawer-nav .nav-primary > .nav-mobile-overflow {
    display: flex !important;
  }

  body.business-drawer-nav .nav-secondary {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin: 8px 0 0;
    padding: 10px 0 0;
    border-top: 1px solid rgba(18, 18, 18, 0.06);
  }

  body.business-drawer-nav .logout-btn {
    margin-top: 4px;
    width: 100%;
  }

  /* ── Personal / driver-style: fixed bottom tab bar ── */
  body:not(.business-account):not(.business-drawer-nav) .nav-drawer-toggle,
  body:not(.business-account):not(.business-drawer-nav) .nav-drawer-fab,
  body:not(.business-account):not(.business-drawer-nav) .nav-drawer-backdrop {
    display: none !important;
  }

  body:not(.business-account):not(.business-drawer-nav) .sidebar {
    --sidebar-pad-x: 0;
    order: 2;
    position: fixed;
    top: auto;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 40;
    width: 100%;
    max-width: 100%;
    height: var(--portal-nav-h, calc(64px + env(safe-area-inset-bottom, 0px)));
    max-height: var(--portal-nav-h, calc(64px + env(safe-area-inset-bottom, 0px)));
    align-self: auto;
    overflow: hidden;
    flex-direction: column;
    gap: 0;
    padding: 0 0 env(safe-area-inset-bottom, 0px);
    border-right: none !important;
    border-bottom: none !important;
    border-top: 1px solid var(--border) !important;
    border-top-right-radius: 0;
    background: #fff !important;
    box-shadow: 0 -8px 24px rgba(42, 41, 39, 0.06);
    backdrop-filter: none;
    transform: none !important;
    transition: none !important;
    inset-inline: 0;
  }

  /* Keep the personal bottom bar mounted unless a thread intentionally covers it. */
  

  body:not(.business-account):not(.business-drawer-nav) .sidebar-brand,
  body:not(.business-account):not(.business-drawer-nav) .sidebar-brand.brand-banner {
    display: none !important;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary {
    display: flex;
    flex-direction: row;
    align-items: stretch;
    justify-content: flex-start;
    gap: 0;
    margin: 0;
    padding: 0;
    flex: 0 0 auto;
    min-height: 64px;
    overflow: visible;
  }

  /* Personal bottom bar shop tools (Home/Search/Cart) — always available. */
  body:not(.business-account):not(.business-drawer-nav) .nav-primary > .nav-shop-tool {
    display: none;
  }

  body.personal-account:not(.business-drawer-nav) .nav-primary > .nav-shop-tool:not(.hidden) {
    display: flex;
    flex: 1 1 0;
    width: auto;
    min-width: 0;
    max-width: none;
    padding-inline: 4px;
  }

  /*
   * Personal mobile bottom bar order:
   * Home → Search → Cart → Trip → Account (far right).
   */
  body.personal-account:not(.business-drawer-nav) #nav-shop-home-btn {
    order: 0;
  }

  body.personal-account:not(.business-drawer-nav) #nav-shop-search-btn {
    order: 1;
  }

  body.personal-account:not(.business-drawer-nav) #nav-shop-cart-btn {
    order: 2;
  }

  body.personal-account:not(.business-drawer-nav) #nav-create:not(.nav-mobile-overflow) {
    order: 3;
  }

  body.personal-account:not(.business-drawer-nav) #nav-shop-home-btn.is-active,
  body.personal-account:not(.business-drawer-nav) #nav-shop-search-btn.is-active {
    color: var(--text) !important;
    box-shadow: inset 0 -2px 0 var(--primary);
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-group {
    flex: 1 1 0;
    min-width: 0;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-group-children {
    display: none !important;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-group-parent {
    width: 100%;
    height: 100%;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary .nav-btn {
    flex: 1 1 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    text-align: center;
    padding: 8px 4px;
    border-radius: 0;
    font-size: 11px;
    font-weight: 650;
    line-height: 1.2;
    white-space: nowrap;
    min-width: 0;
    width: auto;
    position: relative;
    letter-spacing: 0;
    box-shadow: none;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary .nav-icon {
    width: 1.35rem;
    height: 1.35rem;
    background: transparent;
    border-radius: 0;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary .nav-icon svg {
    width: 100%;
    height: 100%;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary .nav-label {
    display: block;
    flex: none;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary .nav-badge {
    position: absolute;
    top: 6px;
    right: max(6px, calc(50% - 22px));
    margin-left: 0;
    min-width: 1.1rem;
    height: 1.1rem;
    font-size: 0.62rem;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary .nav-btn.active {
    background: transparent !important;
    color: var(--text) !important;
    box-shadow: inset 0 -2px 0 var(--primary);
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary .nav-btn.active .nav-icon {
    background: transparent;
    color: currentColor;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary .nav-group-parent.is-section-active {
    background: transparent !important;
    color: var(--text) !important;
    box-shadow: inset 0 -2px 0 var(--primary);
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary .nav-group-parent.is-section-active .nav-icon {
    background: transparent;
    color: currentColor;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary .nav-btn.active .nav-badge {
    background: var(--primary);
    color: #fff;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary .nav-btn:hover:not(.active) {
    background: rgba(42, 41, 39, 0.03) !important;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary .nav-btn:hover:not(.active) .nav-icon {
    background: transparent;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-more-trigger {
    display: flex;
  }

  /* Personal mobile: Account stays on the far right of the bottom bar. */
  body:not(.business-account):not(.business-drawer-nav) .nav-primary > .nav-more-trigger {
    order: 99;
    flex: 1 1 0;
    width: auto;
    min-width: 0;
    max-width: none;
    margin-left: 0;
    padding-inline: 4px;
  }

  body.personal-account:not(.business-drawer-nav) .nav-primary > .nav-more-trigger .nav-badge {
    right: 10px;
  }

  body:not(.business-account):not(.business-drawer-nav) #nav-applications .nav-label-full,
  body:not(.business-account):not(.business-drawer-nav) #nav-deliveries .nav-label-full,
  body:not(.business-account):not(.business-drawer-nav) #nav-integrations .nav-label-full,
  body:not(.business-account):not(.business-drawer-nav) #nav-sell-products .nav-label-full,
  body:not(.business-account):not(.business-drawer-nav) #nav-sell-services .nav-label-full {
    display: none;
  }

  body:not(.business-account):not(.business-drawer-nav) #nav-applications .nav-label-short,
  body:not(.business-account):not(.business-drawer-nav) #nav-deliveries .nav-label-short,
  body:not(.business-account):not(.business-drawer-nav) #nav-integrations .nav-label-short,
  body:not(.business-account):not(.business-drawer-nav) #nav-sell-products .nav-label-short,
  body:not(.business-account):not(.business-drawer-nav) #nav-sell-services .nav-label-short {
    display: inline;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-more-trigger.is-active {
    color: var(--text) !important;
    box-shadow: inset 0 -2px 0 var(--primary);
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-primary > .nav-mobile-overflow {
    display: none !important;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more {
    display: none;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more.is-open {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 50;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-backdrop {
    display: block;
    position: absolute;
    inset: 0;
    border: 0;
    background: rgba(42, 41, 39, 0.28);
    cursor: pointer;
  }

  /*
   * Personal Account sheet: one list rhythm end-to-end.
   * Avoid mixed 12px panel / 6px row / 4px logout gaps and footer margin-top:auto
   * which made some rows look farther apart than others.
   */
  body:not(.business-account):not(.business-drawer-nav) .portal-more-panel {
    --portal-more-list-gap: 8px;
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    flex: none;
    gap: var(--portal-more-list-gap);
    max-height: min(78vh, 640px);
    overflow: auto;
    padding: 10px 16px calc(18px + env(safe-area-inset-bottom, 0px));
    border-radius: 22px 22px 0 0;
    background: #fff;
    border: 1px solid var(--border);
    border-bottom: none;
    box-shadow: 0 -12px 40px rgba(42, 41, 39, 0.12);
    animation: portalMoreIn 220ms ease;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-handle {
    display: block;
    width: 40px;
    height: 4px;
    margin: 2px auto 0;
    border-radius: 999px;
    background: var(--cream-soft);
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-panel .portal-sidebar-footer {
    margin-top: 0;
    gap: var(--portal-more-list-gap);
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-panel .account-strip {
    margin: 0 !important;
    padding: 14px !important;
    border-radius: 14px !important;
    box-shadow: none;
    backdrop-filter: none;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-apps {
    display: flex;
    flex-direction: column;
    gap: var(--portal-more-list-gap);
    margin: 0;
    padding: 0;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-apps.hidden,
  body:not(.business-account):not(.business-drawer-nav) .portal-more-apps:empty {
    display: none;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-apps-label {
    margin: 0;
    padding: 0 2px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--muted);
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-apps .nav-btn,
  body:not(.business-account):not(.business-drawer-nav) .nav-secondary .nav-btn,
  body:not(.business-account):not(.business-drawer-nav) .portal-more-panel .logout-btn {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    gap: 11px;
    width: 100%;
    text-align: left;
    padding: 14px 14px;
    border-radius: 14px;
    background: var(--panel);
    border: 1px solid var(--border);
    box-shadow: none;
    color: var(--text) !important;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-apps .nav-label,
  body:not(.business-account):not(.business-drawer-nav) .nav-secondary .nav-label {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-apps .nav-btn.active,
  body:not(.business-account):not(.business-drawer-nav) .nav-secondary .nav-btn.active {
    background: var(--ink) !important;
    color: #fff !important;
  }

  body:not(.business-account):not(.business-drawer-nav) .nav-secondary {
    display: flex;
    flex-direction: column;
    gap: var(--portal-more-list-gap);
    margin: 0;
    padding: 0;
    border-top: none;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-apps .nav-icon,
  body:not(.business-account):not(.business-drawer-nav) .nav-secondary .nav-icon,
  body:not(.business-account):not(.business-drawer-nav) .portal-more-panel .logout-btn .nav-icon {
    width: 2rem;
    height: 2rem;
    border-radius: 9px;
    background: rgba(18, 18, 18, 0.04);
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-apps .nav-icon svg,
  body:not(.business-account):not(.business-drawer-nav) .nav-secondary .nav-icon svg,
  body:not(.business-account):not(.business-drawer-nav) .portal-more-panel .logout-btn .nav-icon svg {
    width: 1.05rem;
    height: 1.05rem;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-apps .nav-btn.active .nav-icon,
  body:not(.business-account):not(.business-drawer-nav) .nav-secondary .nav-btn.active .nav-icon {
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-apps .nav-badge {
    margin-left: auto;
  }

  body:not(.business-account):not(.business-drawer-nav) .portal-more-panel .logout-btn {
    margin-top: 0;
    width: 100%;
  }

  /* Shop already has its own browse/menu chrome — drop the portal Shop header on phones. */
  .app.shop-surface .topbar {
    display: none !important;
  }

  .main {
    order: 1;
    grid-column: auto;
    width: 100%;
    max-width: 100%;
    padding: 14px 12px 28px;
    overflow-x: hidden;
    overflow-y: auto;
    min-height: 0;
    flex: 1 1 auto;
  }

  .app.shop-surface .main {
    padding: 10px 10px 24px;
  }

  body.business-account .app.shop-surface .main {
    padding-top: calc(10px + 2.8rem);
  }

  .auth-card,
  .login-card {
    margin-bottom: 12px;
  }

  body.business-account .topbar {
    flex-direction: row;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
  }

  /* Drawer chrome: keep headings left so the menu button sits cleanly. */
  body.portal-app.business-drawer-nav .topbar,
  body.business-account .topbar,
  body.personal-account .topbar {
    align-items: center;
  }

  body.portal-app.business-drawer-nav .topbar-heading,
  body.business-account .topbar-heading,
  body.personal-account .topbar-heading {
    justify-content: flex-start;
    width: auto;
    text-align: left;
    gap: 10px;
  }

  body:not(.business-account):not(.business-drawer-nav) .topbar {
    flex-direction: column;
    align-items: stretch;
  }

  .portal-app.shop-surface .topbar-heading,
  .portal-app .app.shop-surface .topbar-heading,
  body.personal-account.shop-surface .topbar-heading,
  body.personal-account .app.shop-surface .topbar-heading {
    justify-content: flex-start;
    text-align: left;
    width: auto;
  }

  .account-type-tabs .account-type-btn,
  .auth-tabs .tab-btn,
  .catalogue-section-tab,
  .catalogue-app-tab,
  .catalogue-app-tab-copy {
    text-align: center;
  }

  .catalogue-app-tab {
    justify-content: center;
  }

  .catalogue-app-tab-copy {
    align-items: center;
  }

  .team-role-btn.account-type-btn {
    text-align: center;
    justify-content: center;
    align-items: center;
  }

  .topbar h2 {
    font-size: 1.35rem;
  }

  .topbar .secondary-btn,
  .primary-btn,
  .secondary-btn {
    width: 100%;
  }

  /* Keep shop chrome compact — don't stretch toolbar controls full-width. */
  .shop-storefront .shop-toolbar .secondary-btn,
  .shop-storefront .shop-toolbar .primary-btn,
  .shop-storefront .shop-toolbar .shop-back-btn,
  .shop-storefront .shop-toolbar .shop-cart-btn,
  .shop-storefront .shop-toolbar .shop-layout-btn {
    width: auto;
  }

  .panel-form,
  .info-box,
  .table-wrap {
    max-width: 100%;
    width: 100%;
    padding: 16px;
    box-sizing: border-box;
  }

  .integrations-keys-header {
    flex-direction: column;
    align-items: stretch;
  }

  .integrations-keys-card .table-wrap {
    padding: 0;
    width: 100%;
  }

  .inline-fields {
    grid-template-columns: 1fr;
  }

  .table-wrap {
    -webkit-overflow-scrolling: touch;
    overflow-x: hidden;
    max-width: 100%;
  }

  .responsive-table,
  .portal-app .responsive-table {
    min-width: 0 !important;
    width: 100% !important;
    max-width: 100%;
  }

  .portal-app .responsive-table thead {
    display: none;
  }

  .portal-app .responsive-table tbody,
  .portal-app .responsive-table tr,
  .portal-app .responsive-table td {
    display: block;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
  }

  .portal-app .responsive-table tr {
    margin-bottom: 12px;
    padding: 12px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: var(--panel);
  }

  .portal-app .responsive-table td {
    display: grid;
    grid-template-columns: minmax(72px, 32%) minmax(0, 1fr);
    gap: 8px 10px;
    align-items: start;
    padding: 8px 0;
    border-bottom: 1px solid var(--border);
    word-break: break-word;
    overflow-wrap: anywhere;
  }

  .portal-app .responsive-table td::before {
    content: attr(data-label);
    font-weight: 700;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--muted);
  }

  .portal-app .responsive-table td:last-child {
    border-bottom: 0;
  }

  .portal-app .responsive-table tr.empty-row td,
  .portal-app .responsive-table tr.empty-row td[colspan] {
    display: block;
    width: 100%;
    max-width: 100%;
    grid-template-columns: none;
    text-align: left;
    color: var(--muted);
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
    line-height: 1.45;
    padding: 0.35rem 0;
    border-bottom: 0;
  }

  .portal-app .responsive-table tr.empty-row td::before {
    content: none;
    display: none;
  }

  .portal-app .delivery-map,
  .portal-app .delivery-map iframe,
  .portal-app .tracking-content,
  .portal-app .route-cell,
  .portal-app .tracking-cell {
    max-width: 100%;
    min-width: 0 !important;
    overflow: hidden;
  }

  .portal-app .delivery-map iframe {
    width: 100% !important;
  }

  .modal-actions {
    flex-direction: column-reverse;
  }

  .modal-actions .primary-btn,
  .modal-actions .secondary-btn {
    width: 100%;
  }

  body:not(.business-account) .shop-floating-cart {
    bottom: calc(76px + env(safe-area-inset-bottom, 0px));
  }

  body.business-account .shop-floating-cart {
    bottom: calc(20px + env(safe-area-inset-bottom, 0px));
  }

  body:not(.business-account) .shop-storefront {
    padding-bottom: 88px;
  }

  body.business-account .shop-storefront {
    padding-bottom: 28px;
  }

  body:not(.business-account) .toast {
    bottom: calc(76px + env(safe-area-inset-bottom, 0px));
  }

  body.business-account .toast {
    bottom: calc(20px + env(safe-area-inset-bottom, 0px));
  }
}

@keyframes portalMoreIn {
  from {
    opacity: 0.6;
    transform: translateY(18px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

html,
body.portal-app {
  overflow-x: clip;
  max-width: 100%;
}

.portal-app img,
.portal-app table,
.portal-app .panel-form,
.portal-app .info-box,
.portal-app .settings-layout,
.portal-app .address-map-picker,
.portal-app .address-map-picker-canvas-wrap {
  max-width: 100%;
}

.portal-app .address-map-search {
  max-width: calc(100% - 24px);
}

/*
 * Soft-white auth chrome for ALL viewports (desktop browser + phone + Expo Go).
 * Previously these lived only in min-width:769px, so Expo Go looked like an older login.
 */
.portal-app .auth-card,
.portal-app .login-card {
  background: var(--panel) !important;
  border: 1px solid var(--border) !important;
  box-shadow: var(--shadow) !important;
}

.portal-app .auth-card input,
.portal-app .auth-card textarea,
.portal-app .auth-form input,
.portal-app .auth-form textarea,
.portal-app .login-card input {
  background: var(--mist) !important;
  color: var(--text) !important;
  border-color: var(--border) !important;
}

.portal-app .auth-tabs {
  gap: 6px !important;
  padding: 4px !important;
  border-radius: 14px !important;
  background: var(--mist) !important;
  border: 1px solid var(--border) !important;
}

.portal-app .tab-btn,
.portal-app .account-type-btn {
  background: transparent !important;
  color: var(--muted) !important;
  border: 1px solid transparent !important;
  border-radius: 10px !important;
  white-space: nowrap !important;
  font-size: 0.82rem !important;
  font-weight: 600 !important;
  padding: 8px 10px !important;
  line-height: 1.2 !important;
  min-height: 38px !important;
  box-shadow: none !important;
}

.portal-app .tab-btn.active,
.portal-app .account-type-btn.active {
  background: var(--panel) !important;
  color: var(--ink) !important;
  border-color: rgba(18, 18, 18, 0.12) !important;
  box-shadow: 0 1px 3px rgba(18, 18, 18, 0.08) !important;
}

.portal-app .primary-btn,
.portal-app .auth-card button[type="submit"],
.portal-app .login-card button[type="submit"] {
  background: var(--ink) !important;
  color: #ffffff !important;
  border: 1px solid var(--ink) !important;
}

.portal-app .primary-btn:hover,
.portal-app .auth-card button[type="submit"]:hover,
.portal-app .login-card button[type="submit"]:hover {
  background: #2a2a2a !important;
  border-color: #2a2a2a !important;
}

.portal-app .primary-btn:active,
.portal-app .auth-card button[type="submit"]:active,
.portal-app .login-card button[type="submit"]:active {
  background: var(--primary-dark) !important;
  border-color: var(--primary-dark) !important;
}

@media (min-width: 769px) {
  .portal-app .main {
    background: transparent !important;
  }

  .portal-app .panel-form,
  .portal-app .table-wrap,
  .portal-app .info-box {
    background: var(--panel) !important;
    box-shadow: 0 1px 2px rgba(42, 41, 39, 0.04) !important;
  }
}

/* Soften shared components that hardcode bright white */
.portal-app .settings-card input,
.portal-app .account-card input,
.portal-app .twofa-qr-wrap,
.portal-app .address-map-search,
.portal-app .pac-container {
  background: var(--mist) !important;
}

.portal-app .address-map-picker-canvas-wrap,
.portal-app .table-wrap,
.portal-app .panel-form,
.portal-app .info-box,
.portal-app .settings-card,
.portal-app .account-card,
.portal-app .modal {
  background: var(--panel);
}

.portal-app .settings-card--disabled {
  opacity: 0.72;
}

.portal-app .settings-card--disabled input:disabled,
.portal-app .settings-card--disabled button:disabled {
  cursor: not-allowed;
  opacity: 0.85;
}

.portal-app .account-layout {
  display: grid;
  gap: var(--space-md);
  max-width: 720px;
  margin-inline: auto;
}

.portal-app .account-card h3 {
  margin: 0 0 10px;
}

.portal-app .account-card > p {
  margin: 0 0 6px;
  font-size: 15px;
  line-height: 22px;
}

.portal-app .account-card > p.settings-intro,
.portal-app .account-card > p.muted-text {
  color: var(--muted);
}

.portal-app .account-card label {
  display: grid;
  gap: 6px;
  margin-bottom: 12px;
}

.portal-app .account-layout > .secondary-btn {
  justify-self: start;
}

.portal-app .main {
  background: transparent;
}

/* Marketplace */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.marketplace-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  margin-bottom: 18px;
}

.marketplace-search {
  flex: 1 1 220px;
  margin: 0;
}

.marketplace-search input {
  width: 100%;
}

.cart-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.cart-count {
  display: inline-grid;
  place-items: center;
  min-width: 1.5rem;
  height: 1.5rem;
  padding: 0 6px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.2);
  font-size: 0.78rem;
  font-weight: 700;
}

.product-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 16px;
}

.catalogue-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 16px;
}

.catalogue-card {
  text-align: left;
  cursor: pointer;
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(42, 41, 39, 0.04);
  display: flex;
  flex-direction: column;
  padding: 0;
  font: inherit;
  color: inherit;
}

.catalogue-card:hover {
  border-color: rgba(18, 18, 18, 0.16);
  box-shadow: var(--shadow-lift);
}

.catalogue-header {
  margin-bottom: 16px;
  padding: 14px 16px;
  border-radius: 14px;
  background: var(--panel);
  border: 1px solid var(--border);
}

.catalogue-header h3 {
  margin: 0 0 4px;
}

.shop-menu,
.shop-browse {
  min-height: 120px;
}

.product-card {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(42, 41, 39, 0.04);
  display: flex;
  flex-direction: column;
}

.product-media {
  aspect-ratio: 4 / 3;
  background: linear-gradient(145deg, var(--mist), var(--cream-soft));
  overflow: hidden;
}

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

.product-placeholder {
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  font-size: 2.4rem;
  font-weight: 700;
  color: var(--muted);
}

.product-body {
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1;
}

.product-seller {
  margin: 0;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}

.product-body h3 {
  margin: 0;
  font-size: 1.05rem;
  line-height: 1.25;
}

.product-desc {
  margin: 0;
  color: var(--muted);
  font-size: 0.9rem;
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  flex: 1;
}

.product-meta {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  align-items: baseline;
  font-size: 0.9rem;
}

.marketplace-empty {
  color: var(--muted);
  padding: 24px 4px;
}

.marketplace-split {
  display: grid;
  grid-template-columns: minmax(280px, 420px) 1fr;
  gap: 18px;
  align-items: start;
}

.marketplace-form h3 {
  margin: 0 0 12px;
}

.marketplace-form-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.muted-line {
  margin-top: 4px;
  color: var(--muted);
  font-size: 0.82rem;
}

#catalogue-app-tabs {
  margin: 0 0 14px;
}

#catalogue-app-tabs.hidden {
  display: none;
}

/* Nested Sell Products / Sell Services nav owns catalogue mode on all breakpoints. */
#catalogue-app-tabs {
  display: none !important;
}

.catalogue-app-tabs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 16px;
}

.catalogue-mobile-app-tabs .catalogue-app-tab {
  min-height: 0;
  padding: 10px 12px;
  border-radius: 12px;
  gap: 0;
}

.catalogue-app-tab {
  appearance: none;
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  min-height: 64px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: var(--panel, #fff);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  box-shadow: 0 1px 2px rgba(18, 18, 18, 0.04);
  transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

.catalogue-app-tab:hover {
  border-color: rgba(18, 18, 18, 0.18);
  box-shadow: 0 6px 16px rgba(18, 18, 18, 0.06);
}

.catalogue-app-tab.active {
  border-color: rgba(18, 18, 18, 0.28);
  box-shadow:
    0 0 0 1px rgba(18, 18, 18, 0.08),
    0 8px 20px rgba(18, 18, 18, 0.08);
}

.catalogue-app-tab.hidden {
  display: none;
}

.catalogue-app-tab-copy {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.catalogue-app-tab-copy strong {
  font-size: 0.95rem;
  letter-spacing: -0.02em;
}

.catalogue-app-tab-copy small {
  color: var(--muted);
  font-size: 0.75rem;
}

@media (max-width: 640px) {
  .catalogue-app-tabs {
    grid-template-columns: 1fr;
  }

  .catalogue-app-tab {
    justify-content: center;
    text-align: center;
  }

  .catalogue-app-tab-copy {
    align-items: center;
    text-align: center;
  }

  .catalogue-section-tab {
    flex: 1 1 calc(50% - 0px);
    font-size: 0.78rem;
    padding: 8px 6px 10px;
    text-align: center;
  }

  .branch-tab.shop-store-card {
    width: 148px;
    min-width: 148px;
    max-width: 148px;
  }

  .branch-tab .shop-store-cover {
    min-height: 64px;
  }

  .branch-tabs {
    gap: 10px;
    padding: 2px 6px 10px;
  }

  .branch-toolbar-actions {
    gap: 6px;
  }

  .catalogue-workspace {
    gap: 12px;
  }

  .catalogue-workspace-body {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .catalogue-workspace-body--flush {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
  }

  .catalogue-shop-strip {
    padding: 12px 12px 10px;
    gap: 10px;
  }

  .catalogue-shop-strip-head {
    align-items: center;
  }

  .catalogue-shop-strip-title {
    font-size: 0.9rem;
  }

  .catalogue-shop-chip {
    width: 96px;
  }

  .catalogue-shop-chip-name {
    font-size: 0.78rem;
  }

  .catalogue-shop-detail-modal {
    width: min(100%, 100%);
    margin: 0 12px;
    padding: 20px 16px 16px;
  }

  .catalogue-branch-bar {
    padding: 10px 12px;
  }

  .catalogue-branch-bar-top {
    flex-direction: column;
    align-items: stretch;
  }

  .catalogue-branch-bar .branch-toolbar-actions {
    justify-content: flex-start;
    width: 100%;
  }

  .catalogue-branch-context {
    font-size: 0.8rem;
  }

  .catalogue-section-tabs--horizontal .catalogue-section-tab,
  .catalogue-section-tabs--branch-scoped .catalogue-section-tab {
    font-size: 0.74rem;
    padding: 8px 6px 10px;
  }

  .catalogue-side-rail {
    position: static;
    max-height: none;
    overflow: visible;
  }

  .catalogue-side-rail .branch-toolbar-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
  }

  .branch-tabs--vertical {
    flex-direction: row;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x proximity;
    max-height: none;
    padding-bottom: 10px;
  }

  .branch-tabs--vertical .branch-tab.shop-store-card {
    width: 148px;
    min-width: 148px;
    max-width: 148px;
  }

  .catalogue-tile-form {
    max-width: none !important;
  }

  .catalogue-sticky-chrome {
    /* Keep List/Settings/Add and the bottom nav reachable — don't pin a tall
       branch strip over most of the mobile viewport. */
    position: static;
    z-index: auto;
    background: transparent;
    padding-bottom: 0;
  }
}

.marketplace-order-tabs {
  margin-bottom: 16px;
}

.cart-modal {
  width: min(560px, 100%);
  max-height: min(90vh, 820px);
  overflow: auto;
}

.cart-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 12px 0 18px;
}

.cart-row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border);
}

.cart-row p {
  margin: 4px 0 0;
  color: var(--muted);
  font-size: 0.86rem;
}

.cart-qty {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.cart-qty button[data-action='cart-inc'],
.cart-qty button[data-action='cart-dec'] {
  width: 30px;
  height: 30px;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--mist, #f5efe6);
  cursor: pointer;
  font-size: 1rem;
}

.checkout-form h4 {
  margin: 0 0 10px;
}

.payment-methods {
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 12px 14px;
  margin: 0 0 12px;
}

.payment-methods legend {
  padding: 0 6px;
  font-weight: 600;
}

.payment-option {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 6px 0;
}

.checkout-total {
  margin: 0 0 8px;
  font-weight: 600;
}

.nav-badge {
  display: inline-grid;
  place-items: center;
  min-width: 1.25rem;
  height: 1.25rem;
  margin-left: 8px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--primary);
  color: #fff;
  font-size: 0.68rem;
  font-weight: 700;
  line-height: 1;
}

.nav-btn:not(.nav-group-parent) > .nav-badge {
  margin-left: auto;
}

.nav-group-parent > .nav-badge {
  margin-left: 8px;
  flex: 0 0 auto;
}

.orders-sync-hint {
  margin: 0 0 12px;
  color: var(--muted);
  font-size: 0.86rem;
}

.catalogue-manage {
  max-width: min(1120px, 100%);
  margin-inline: auto;
  width: 100%;
}

.catalogue-workspace {
  display: flex;
  flex-direction: column;
  gap: 14px;
  align-items: stretch;
  width: 100%;
}

.catalogue-branch-chrome,
.catalogue-shop-chrome {
  display: flex;
  flex-direction: column;
  gap: 0;
  width: 100%;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  overflow: visible;
}

.catalogue-shop-strip {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 14px 16px 12px;
}

.catalogue-shop-strip-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.catalogue-shop-strip-copy {
  min-width: 0;
}

.catalogue-shop-strip-kicker {
  display: none;
}

.catalogue-shop-strip-title {
  margin: 0;
  font-family: var(--font-brand);
  font-size: 0.95rem;
  font-weight: 650;
  letter-spacing: -0.02em;
  color: var(--ink);
  line-height: 1.2;
}

.catalogue-shop-strip-active {
  margin: 4px 0 0;
  font-family: var(--font-brand);
  font-size: 0.82rem;
  color: var(--muted);
  line-height: 1.3;
}

.catalogue-shop-strip-active[hidden] {
  display: none !important;
}

.catalogue-shop-rail-shell {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.35rem;
  margin: 0 -4px;
  padding: 0 4px;
}

.catalogue-shop-rail-arrow {
  width: 2.15rem;
  height: 2.15rem;
  display: none;
  place-items: center;
  margin: 0;
  padding: 0;
  border: 1px solid rgba(18, 18, 18, 0.1);
  border-radius: 999px;
  background: #fff;
  color: var(--ink, #111);
  box-shadow: 0 1px 2px rgba(18, 18, 18, 0.06);
  cursor: pointer;
  font-size: 1.35rem;
  line-height: 1;
  flex: 0 0 auto;
  transition: background 140ms ease, border-color 140ms ease, opacity 140ms ease;
}

.catalogue-shop-rail-arrow span {
  display: block;
  transform: translateY(-0.05em);
}

.catalogue-shop-rail-shell.has-shop-rail-overflow .catalogue-shop-rail-arrow {
  display: inline-grid;
}

.catalogue-shop-rail-arrow:hover:not(:disabled) {
  border-color: color-mix(in srgb, var(--ink, #111) 28%, var(--border));
  background: color-mix(in srgb, var(--mist, #f5f4f2) 55%, #fff);
}

.catalogue-shop-rail-arrow:disabled {
  opacity: 0.35;
  cursor: default;
}

.catalogue-shop-rail {
  display: flex;
  flex-wrap: nowrap;
  gap: 12px;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 2px 2px 10px;
  scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  min-width: 0;
}

.catalogue-shop-rail::-webkit-scrollbar {
  display: none;
  width: 0;
  height: 0;
}

.catalogue-shop-rail-empty {
  margin: 0;
  padding: 16px 12px;
  border: 1px dashed rgba(18, 18, 18, 0.12);
  border-radius: 14px;
  background: transparent;
  color: var(--muted);
  font-family: var(--font-brand);
  font-size: 0.86rem;
  text-align: center;
}

/* Floating shop tiles — match customer shop product cards */
.catalogue-shop-chip {
  appearance: none;
  position: relative;
  flex: 0 0 auto;
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: auto auto;
  gap: 0.4rem;
  width: 108px;
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--text);
  font-family: var(--font-brand);
  text-align: left;
  cursor: pointer;
  scroll-snap-align: start;
  box-shadow: none;
  transition: transform 140ms ease;
}

.catalogue-shop-chip:hover {
  transform: translateY(-2px);
}

.catalogue-shop-chip-media {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 5 / 4;
  border-radius: 14px;
  overflow: hidden;
  background: var(--mist, #f5f4f2);
  box-shadow: 0 8px 22px rgba(18, 18, 18, 0.08);
  border: 2px solid transparent;
  transition: border-color 140ms ease, box-shadow 140ms ease;
}

.catalogue-shop-chip.is-active .catalogue-shop-chip-media {
  border-color: var(--ink);
  box-shadow: 0 10px 24px rgba(18, 18, 18, 0.12);
}

.catalogue-shop-chip.is-hidden-branch:not(.is-active) .catalogue-shop-chip-media {
  opacity: 0.72;
  filter: grayscale(0.25);
}

.catalogue-shop-chip-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.catalogue-shop-chip-initial {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  font-family: var(--font-brand);
  font-size: 1.35rem;
  font-weight: 650;
  letter-spacing: -0.02em;
  color: var(--muted);
  background: linear-gradient(145deg, var(--mist), var(--cream-soft));
}

.catalogue-shop-chip-name {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: calc(1.25em * 2);
  padding: 0 2px;
  font-family: var(--font-brand);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1.25;
  color: var(--text);
}

.catalogue-shop-chip.is-active .catalogue-shop-chip-name {
  color: var(--ink);
}

.catalogue-shop-chip-status {
  position: absolute;
  top: 8px;
  right: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.92);
  box-shadow: 0 1px 4px rgba(18, 18, 18, 0.12);
}

.catalogue-shop-chip-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #a8a29e;
}

.catalogue-shop-chip-status.is-live .catalogue-shop-chip-dot {
  background: #22c55e;
}

.catalogue-shop-chip-status.is-hidden .catalogue-shop-chip-dot {
  background: #a8a29e;
}

.catalogue-shop-chip-index {
  display: none;
}

.catalogue-shop-detail-backdrop {
  z-index: 80;
}

.catalogue-shop-detail-modal {
  position: relative;
  width: min(100%, 420px);
  padding: 22px 20px 18px;
  border-radius: 20px;
  background: #fff;
  box-shadow: var(--shadow-lift);
}

.catalogue-shop-detail-close {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 34px;
  height: 34px;
  border: 0;
  border-radius: 10px;
  background: var(--cream-soft, #ececee);
  color: var(--ink);
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
}

.catalogue-shop-detail-close:hover {
  background: #e2e2e5;
}

.catalogue-shop-detail-index {
  margin: 0 0 6px;
  font-family: var(--font-brand);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}

.catalogue-shop-detail-index[hidden] {
  display: none !important;
}

.catalogue-shop-detail-modal h3 {
  margin: 0 36px 8px 0;
  font-family: var(--font-brand);
  font-size: 1.2rem;
  font-weight: 650;
  letter-spacing: -0.02em;
  line-height: 1.25;
}

.catalogue-shop-detail-status {
  display: inline-flex;
  align-items: center;
  margin: 0 0 16px;
  padding: 5px 10px;
  border-radius: 999px;
  background: #f3f0e8;
  color: #7a6540;
  font-size: 0.76rem;
  font-weight: 700;
}

.catalogue-shop-detail-status.is-live {
  background: var(--success-bg);
  color: var(--success);
}

.catalogue-shop-detail-meta {
  display: grid;
  gap: 12px;
  margin: 0 0 18px;
}

.catalogue-shop-detail-meta > div {
  display: grid;
  gap: 2px;
}

.catalogue-shop-detail-meta dt {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}

.catalogue-shop-detail-meta dd {
  margin: 0;
  font-size: 0.92rem;
  color: var(--text);
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.catalogue-shop-detail-actions {
  width: 100%;
}

.catalogue-branch-bar {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 12px 14px 12px;
  background: color-mix(in srgb, var(--mist, #f5f4f2) 72%, #fff);
  border-bottom: 1px solid var(--border);
}

.catalogue-branch-bar-top {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px 14px;
}

.catalogue-branch-bar-label {
  margin: 0 0 2px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}

.catalogue-branch-context {
  margin: 0;
  max-width: 42rem;
  font-size: 0.84rem;
  line-height: 1.35;
  color: var(--muted);
}

.catalogue-branch-context strong {
  color: var(--ink, #111);
  font-weight: 700;
}

.catalogue-branch-bar .branch-toolbar-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 4px;
}

.catalogue-compact-actions {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.catalogue-compact-btn {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-height: 30px;
  padding: 5px 11px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: var(--cream-soft, #ececee);
  color: var(--text);
  font: inherit;
  font-size: 0.74rem;
  font-weight: 650;
  letter-spacing: -0.015em;
  line-height: 1.15;
  white-space: nowrap;
  cursor: pointer;
  box-shadow: none;
  transition:
    background 140ms ease,
    border-color 140ms ease,
    color 140ms ease,
    transform 120ms ease,
    box-shadow 140ms ease;
}

.catalogue-compact-btn:hover:not(:disabled) {
  background: #e2e2e5;
  transform: translateY(-1px);
}

.catalogue-compact-btn:active:not(:disabled) {
  transform: translateY(0);
}

.catalogue-compact-btn:disabled {
  opacity: 0.42;
  cursor: not-allowed;
  transform: none;
}

.catalogue-compact-btn--edit {
  background: rgba(18, 18, 18, 0.07);
  color: var(--ink);
}

.catalogue-compact-btn--edit:hover:not(:disabled) {
  background: rgba(18, 18, 18, 0.12);
  color: var(--ink);
}

.catalogue-compact-btn--show,
.catalogue-compact-btn--live {
  background: var(--success-bg);
  color: var(--success);
}

.catalogue-compact-btn--show:hover:not(:disabled),
.catalogue-compact-btn--live:hover:not(:disabled) {
  background: #c7f0d4;
  color: #146c34;
}

.catalogue-compact-btn--hide {
  background: #f3f0e8;
  color: #7a6540;
}

.catalogue-compact-btn--hide:hover:not(:disabled) {
  background: #ebe5d8;
  color: #654f2f;
}

.catalogue-compact-btn--primary {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
  box-shadow: 0 1px 2px rgba(18, 18, 18, 0.12);
}

.catalogue-compact-btn--primary:hover:not(:disabled) {
  background: #2a2a2a;
  border-color: #2a2a2a;
  color: #fff;
  box-shadow: 0 4px 12px rgba(18, 18, 18, 0.16);
}

.catalogue-compact-btn--danger {
  background: var(--danger-bg);
  border-color: transparent;
  color: var(--danger);
}

.catalogue-compact-btn--danger:hover:not(:disabled) {
  background: #fcd9d5;
  border-color: transparent;
  color: #9a3b32;
}

.catalogue-branch-bar .branch-toolbar-actions .catalogue-compact-btn {
  min-height: 30px;
}

.catalogue-bulk-actions.catalogue-compact-actions {
  margin-left: auto;
}

.catalogue-item-actions.catalogue-compact-actions {
  justify-content: flex-end;
}

.catalogue-branch-bar .branch-toolbar-actions .branch-visibility-btn,
.catalogue-branch-bar .branch-toolbar-actions .branch-add-btn,
.catalogue-branch-bar .branch-toolbar-actions .branch-delete-btn {
  width: auto;
  justify-content: center;
  min-height: 34px;
  padding: 6px 10px;
  font-size: 0.8rem;
}

.catalogue-section-tabs--branch-scoped {
  margin: 0;
  padding: 0 2px;
  border-bottom: 1px solid var(--border);
  background: transparent;
}

.catalogue-section-tabs--branch-scoped .catalogue-section-tab {
  border-bottom-width: 2px;
}

.catalogue-section-tabs--horizontal {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  gap: 0;
  width: 100%;
  margin: 0;
  padding: 0 2px;
  border-bottom: 1px solid var(--border);
  background: transparent;
  flex-shrink: 0;
}

.catalogue-section-tabs--horizontal .catalogue-section-tab {
  flex: 1 1 0;
  min-width: 0;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding: 10px 12px 12px;
}

.catalogue-workspace-body {
  display: grid;
  grid-template-columns: minmax(180px, 220px) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
  width: 100%;
}

.catalogue-workspace-body--flush {
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
}

.catalogue-side-rail {
  position: sticky;
  top: 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
  max-height: calc(100vh - 24px);
  max-height: calc(100dvh - 24px);
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: #fff;
  box-shadow: var(--shadow);
  overflow: hidden;
  align-self: start;
}

.catalogue-workspace-main {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
  align-items: stretch;
}

.catalogue-workspace-main > .catalogue-panel {
  align-self: center;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.catalogue-rail-label {
  margin: 0 0 6px;
  padding: 0 2px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}

.catalogue-side-rail .branch-toolbar-actions {
  display: grid;
  grid-template-columns: 1fr;
  gap: 6px;
  width: 100%;
}

.catalogue-side-rail .branch-toolbar-actions .branch-visibility-btn,
.catalogue-side-rail .branch-toolbar-actions .branch-add-btn,
.catalogue-side-rail .branch-toolbar-actions .branch-delete-btn {
  width: 100%;
  justify-content: center;
}

.catalogue-tile-form {
  max-width: min(680px, 100%) !important;
  width: 100%;
  align-self: center;
  height: auto;
  max-height: none;
  margin-inline: auto !important;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 18px !important;
  box-sizing: border-box;
}

.catalogue-tile-form label {
  margin-bottom: 0;
  min-width: 0;
}

.catalogue-workspace-main .catalogue-tile-form.catalogue-focus-form {
  max-width: min(680px, 100%) !important;
}

.catalogue-workspace-main .catalogue-storefront-card.catalogue-tile-form {
  max-width: min(760px, 100%) !important;
}

.catalogue-tile-form > label,
.catalogue-tile-form > .catalogue-field-row,
.catalogue-tile-form > .catalogue-tile-columns,
.catalogue-tile-form > .catalogue-branch-visibility,
.catalogue-tile-form > .catalogue-editor-header,
.catalogue-tile-form > .catalogue-duration-field,
.catalogue-tile-form > .service-schedule-block,
.catalogue-tile-form > .marketplace-form-actions,
.catalogue-tile-form > .media-preview-row,
.catalogue-tile-form > .address-block,
.catalogue-tile-form > .category-hint {
  margin: 0;
}

.catalogue-tile-form .category-hint {
  margin: -4px 0 0;
}

.catalogue-tile-columns {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
  align-items: start;
  width: 100%;
}

.catalogue-tile-col {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}

.catalogue-tile-span {
  width: 100%;
  min-width: 0;
}

.catalogue-field-row {
  display: grid;
  gap: 12px;
  width: 100%;
  min-width: 0;
}

.catalogue-field-row--2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.catalogue-field-row--3 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.catalogue-duration-field {
  display: grid;
  gap: 8px;
  width: 100%;
  min-width: 0;
  padding: 12px 14px;
  border: 1px solid var(--border, rgba(18, 18, 18, 0.1));
  border-radius: 12px;
  background: color-mix(in srgb, var(--surface, #fff) 88%, var(--bg, #f3f3f4));
}

.catalogue-duration-legend {
  font-size: 0.84rem;
  font-weight: 600;
  color: var(--text);
}

.catalogue-duration-inputs {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.catalogue-duration-inputs label {
  display: grid;
  gap: 4px;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--muted);
}

.catalogue-duration-inputs input {
  width: 100%;
  min-width: 0;
  padding: 8px 10px;
  font-size: 0.95rem;
  font-variant-numeric: tabular-nums;
}

.catalogue-bulk-edit-panel .catalogue-duration-field {
  margin-top: 4px;
}

.catalogue-tile-form .media-preview-row.catalogue-media-compact {
  grid-template-columns: 88px minmax(0, 1fr);
  align-items: start;
  gap: 12px;
  margin: 0;
}

.catalogue-tile-form .catalogue-media-compact .media-preview {
  width: 88px;
  height: 88px;
  flex-shrink: 0;
}

.catalogue-media-stack {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  margin: 0;
}

.catalogue-media-stack .media-preview {
  width: min(100%, 220px);
  aspect-ratio: 1 / 1;
  height: auto;
  border-radius: 14px;
}

.catalogue-tile-form .address-block {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 0;
  padding: 0;
  border: 0;
}

.catalogue-tile-form .address-block .address-map-field-label {
  margin: 0;
}

.catalogue-tile-form .address-block .catalogue-field-row {
  margin: 0;
}

.catalogue-tile-form .marketplace-form-actions {
  margin-top: 4px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

@media (max-width: 900px) {
  .catalogue-tile-columns,
  .catalogue-field-row--2,
  .catalogue-field-row--3 {
    grid-template-columns: 1fr;
  }

  .catalogue-duration-inputs {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.catalogue-sticky-chrome {
  position: sticky;
  top: 0;
  z-index: 30;
  padding-bottom: 2px;
  background: linear-gradient(
    180deg,
    var(--bg, #f3f3f4) 0%,
    var(--bg, #f3f3f4) 82%,
    rgba(243, 243, 244, 0) 100%
  );
}

.catalogue-sticky-chrome .branch-toolbar {
  margin-bottom: 10px;
  box-shadow: none;
}

.catalogue-layout {
  align-items: stretch;
}

.catalogue-editor-column {
  display: flex;
  flex-direction: column;
  gap: 16px;
  position: sticky;
  top: 12px;
  align-self: start;
}

.catalogue-editor,
.catalogue-storefront-card {
  position: static;
}

.catalogue-section-tabs {
  display: flex;
  flex-wrap: nowrap;
  gap: 0;
  width: 100%;
  margin: 0;
  padding: 0 2px;
  border-bottom: 1px solid var(--border);
  background: transparent;
  flex-shrink: 0;
}

.catalogue-section-tab {
  appearance: none;
  position: relative;
  flex: 1 1 0;
  min-width: 0;
  min-height: 40px;
  padding: 8px 10px 10px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 0.84rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  cursor: pointer;
  text-align: center;
  transition: color 140ms ease;
}

.catalogue-section-tab:hover {
  color: var(--text);
}

.catalogue-section-tab.active {
  color: var(--text);
}

.catalogue-section-tab.active::after {
  content: '';
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: -1px;
  height: 2px;
  border-radius: 999px;
  background: var(--ink, #111);
}

.catalogue-panel-tabs {
  display: none;
}

.catalogue-panel.hidden {
  display: none;
}

.catalogue-focus-form {
  max-width: 520px !important;
  width: 100%;
  padding: 14px !important;
  box-shadow: none;
}

.catalogue-focus-form .settings-intro,
.catalogue-focus-form .category-hint {
  margin-top: 0;
  margin-bottom: 10px;
}

.catalogue-focus-form .catalogue-editor-header h3 {
  font-size: 1.02rem;
}

.catalogue-media-compact .media-preview {
  width: 64px;
  height: 64px;
  border-radius: 10px;
}

.catalogue-map-compact {
  width: 100%;
  min-width: 0;
  border-radius: 12px;
}

.catalogue-map-compact.address-map-picker,
.catalogue-map-compact .address-map-picker {
  margin: 0;
}

.catalogue-map-compact .address-map-picker-canvas-wrap {
  margin: 0;
}

.catalogue-map-compact .address-map-picker-canvas {
  height: 220px;
}

.catalogue-map-compact .address-map-picker-status {
  margin: 8px 0 0;
  min-height: 1.2em;
}

.catalogue-map-compact .address-map-fallback-panel {
  padding: 0.75rem 1rem;
}

.catalogue-map-compact .address-map-fallback-title {
  font-size: 0.9rem;
}

.catalogue-map-compact .address-map-fallback-copy {
  font-size: 0.8rem;
}

.branch-toolbar {
  display: grid;
  gap: 10px;
  margin-bottom: 14px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.branch-toolbar-row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
  flex-wrap: wrap;
}

.branch-toolbar-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  width: 100%;
}

.branch-toolbar-copy h3 {
  margin: 0 0 2px;
  font-size: 1.05rem;
}

.branch-tabs-shell {
  position: relative;
  width: 100%;
  min-width: 0;
  margin: 0 -2px;
}

.branch-tabs-shell::before,
.branch-tabs-shell::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 10px;
  width: 28px;
  pointer-events: none;
  z-index: 2;
  opacity: 0;
  transition: opacity 160ms ease;
}

.branch-tabs-shell::before {
  left: 0;
  background: linear-gradient(90deg, var(--bg, #f3f3f4), rgba(243, 243, 244, 0));
}

.branch-tabs-shell::after {
  right: 0;
  background: linear-gradient(270deg, var(--bg, #f3f3f4), rgba(243, 243, 244, 0));
}

.branch-tabs-shell--vertical {
  display: flex;
  flex-direction: column;
  min-height: 0;
  flex: 1 1 auto;
  margin: 0;
}

.branch-tabs-shell--vertical::before,
.branch-tabs-shell--vertical::after {
  display: none;
}

.branch-tabs--vertical {
  flex-direction: column;
  gap: 10px;
  overflow-x: hidden;
  overflow-y: auto;
  padding: 2px 2px 8px;
  scroll-snap-type: y proximity;
  max-height: none;
  height: 100%;
}

.branch-tabs--vertical .branch-tab.shop-store-card {
  width: 100%;
  min-width: 0;
  max-width: none;
  scroll-snap-align: start;
}

.branch-tabs--vertical .branch-tab .shop-store-cover {
  min-height: 72px;
  aspect-ratio: 16 / 9;
}

.branch-tabs--vertical .branch-tab-body .shop-store-name {
  -webkit-line-clamp: 2;
}

.branch-tabs--vertical .branch-tab-body .shop-store-location {
  -webkit-line-clamp: 2;
}

.branch-tabs {
  display: flex;
  flex-wrap: nowrap;
  gap: 12px;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 2px 8px 12px;
  margin: 0;
  scrollbar-width: thin;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
}

.branch-tabs::-webkit-scrollbar {
  height: 6px;
}

.branch-tabs::-webkit-scrollbar-thumb {
  background: rgba(18, 18, 18, 0.16);
  border-radius: 999px;
}

/* Catalogue shops rail: arrows instead of a visible scrollbar. */
.catalogue-shop-rail-shell.branch-tabs-shell {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.35rem;
  margin: 0;
  padding: 0;
}

.catalogue-shop-rail-shell.branch-tabs-shell::before,
.catalogue-shop-rail-shell.branch-tabs-shell::after {
  display: none;
}

.catalogue-shop-rail.branch-tabs {
  padding: 2px 2px 10px;
  scrollbar-width: none;
}

.catalogue-shop-rail.branch-tabs::-webkit-scrollbar {
  display: none;
  width: 0;
  height: 0;
}

.catalogue-branch-bar .branch-tabs-shell {
  margin: 0;
}

.catalogue-branch-bar .branch-tabs {
  gap: 8px;
  padding: 0 0 2px;
  scroll-snap-type: x proximity;
}

.branch-tabs--text {
  flex-wrap: nowrap;
}

.branch-tab.branch-tab--text {
  position: relative;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  max-width: min(100%, 18rem);
  min-height: 36px;
  padding: 6px 12px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #fff;
  color: var(--text);
  font: inherit;
  font-size: 0.86rem;
  font-weight: 650;
  line-height: 1.2;
  text-align: left;
  cursor: pointer;
  scroll-snap-align: start;
  transition: border-color 140ms ease, box-shadow 140ms ease, background 140ms ease, color 140ms ease;
}

.branch-tab.branch-tab--text:hover {
  border-color: rgba(18, 18, 18, 0.22);
  background: #fff;
  color: var(--ink, #111);
}

.branch-tab.branch-tab--text.is-active {
  border-color: var(--ink, #111);
  background: color-mix(in srgb, var(--ink, #111) 92%, #fff);
  color: #fff;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08);
}

.branch-tab.branch-tab--text.is-hidden-branch:not(.is-active) {
  opacity: 0.78;
}

.branch-tab.branch-tab--text .branch-tab-name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.branch-tab.branch-tab--text .branch-tab-badge {
  position: static;
  flex: 0 0 auto;
  top: auto;
  right: auto;
  padding: 2px 7px;
  font-size: 0.62rem;
}

.branch-tab.branch-tab--text.is-active .branch-tab-badge.is-live {
  color: #14532d;
  background: rgba(220, 252, 231, 0.96);
}

.branch-tab.branch-tab--text.is-active .branch-tab-badge.is-hidden {
  color: #44403c;
  background: rgba(245, 245, 244, 0.96);
}

.branch-tab.shop-store-card {
  flex: 0 0 auto;
  width: 176px;
  max-width: 176px;
  min-width: 176px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: #fff;
  color: inherit;
  font: inherit;
  text-align: left;
  overflow: hidden;
  box-shadow: var(--shadow);
  cursor: pointer;
  scroll-snap-align: start;
  transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
}

.branch-tab.shop-store-card:hover {
  transform: translateY(-2px);
  border-color: rgba(18, 18, 18, 0.14);
  box-shadow: var(--shadow-lift);
  background: #fff;
}

.branch-tab.shop-store-card.is-active {
  border-color: rgba(18, 18, 18, 0.28);
  box-shadow:
    0 0 0 2px rgba(18, 18, 18, 0.88),
    var(--shadow-lift);
  background: #fff;
}

.branch-tab.shop-store-card.is-hidden-branch:not(.is-active) {
  opacity: 0.78;
}

.branch-tab .shop-store-cover {
  min-height: 72px;
  aspect-ratio: 16 / 9;
}

.branch-tab .shop-store-kind {
  top: 8px;
  left: 8px;
  padding: 3px 7px;
  font-size: 0.62rem;
}

.branch-tab .shop-store-initial {
  width: 2.15rem;
  height: 2.15rem;
  border-radius: 10px;
  font-size: 0.95rem;
}

.branch-tab-body {
  padding: 8px 10px 10px;
  gap: 2px;
}

.branch-tab-body .shop-store-name {
  font-size: 0.86rem;
  line-height: 1.25;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.branch-tab-body .shop-store-location {
  margin: 0;
  font-size: 0.7rem;
  line-height: 1.3;
  color: var(--muted);
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.branch-tab-badge {
  position: absolute;
  top: 8px;
  right: 8px;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  width: fit-content;
  padding: 3px 7px;
  border-radius: 999px;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  background: rgba(18, 18, 18, 0.82);
  color: #fff;
}

.branch-tab-badge.is-live {
  color: #166534;
  background: rgba(220, 252, 231, 0.95);
}

.branch-tab-badge.is-hidden {
  color: #57534e;
  background: rgba(255, 255, 255, 0.92);
  border: 1px solid rgba(18, 18, 18, 0.08);
}

.branch-tab-status {
  font-weight: 600;
  opacity: 0.85;
}

.branch-visibility-btn,
.branch-add-btn,
.branch-delete-btn {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 36px;
  padding: 7px 12px;
  border-radius: 10px;
  border: 1px solid var(--border);
  background: var(--panel);
  color: var(--text);
  font: inherit;
  font-size: 0.82rem;
  font-weight: 650;
  letter-spacing: -0.01em;
  cursor: pointer;
  box-shadow: none;
  transition: background 140ms ease, border-color 140ms ease, color 140ms ease, opacity 140ms ease;
}

.branch-visibility-btn:hover:not(:disabled),
.branch-add-btn:hover,
.branch-delete-btn:hover {
  background: var(--mist);
  border-color: rgba(18, 18, 18, 0.14);
}

.branch-visibility-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.branch-visibility-btn.is-branch-hidden {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
}

.branch-visibility-btn.is-branch-hidden:hover:not(:disabled) {
  background: var(--primary-dark);
  border-color: var(--primary-dark);
  color: #fff;
}

.branch-add-btn {
  color: var(--muted);
}

.branch-add-icon {
  display: inline-grid;
  place-items: center;
  width: 1.1rem;
  height: 1.1rem;
  border-radius: 999px;
  background: rgba(18, 18, 18, 0.06);
  color: var(--text);
  font-size: 0.85rem;
  font-weight: 700;
  line-height: 1;
}

.branch-delete-btn {
  color: var(--danger);
  border-color: rgba(180, 74, 63, 0.22);
  background: #fff;
}

.branch-delete-btn:hover {
  background: var(--danger-bg);
  border-color: rgba(180, 74, 63, 0.35);
}

.portal-app-icon {
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  color: #fff;
  border-radius: 12px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.22);
}

.portal-app-icon svg {
  width: 1em;
  height: 1em;
}

.portal-app-icon--sm {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  font-size: 14px;
}

.portal-app-icon--md {
  width: 40px;
  height: 40px;
  border-radius: 12px;
  font-size: 20px;
}

.portal-app-icon--lg {
  width: 44px;
  height: 44px;
  border-radius: 13px;
  font-size: 22px;
}

.portal-app-icon.hidden {
  display: none;
}

.topbar-app-icons {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
}

.catalogue-branch-visibility {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  flex-wrap: wrap;
  margin: 0 0 14px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--mist, #f5f4f2);
}

.catalogue-branch-visibility h4 {
  margin: 0 0 2px;
  font-size: 0.92rem;
}

.catalogue-branch-visibility .muted-line {
  margin: 0;
}

.branch-golive-checklist {
  margin-top: 6px !important;
  color: #8a4b00 !important;
  font-weight: 600;
}

.catalogue-item-sku {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: 0.02em;
}

.catalogue-editor-header h3 {
  margin: 0 0 4px;
}

.category-hint {
  margin: -6px 0 14px;
}

.media-preview-row {
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: 14px;
  align-items: start;
  margin-bottom: 14px;
}

.catalogue-media-compact {
  grid-template-columns: 64px 1fr;
  gap: 10px;
  margin-bottom: 10px;
}

.media-preview {
  width: 96px;
  height: 96px;
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid var(--border);
  background: var(--mist);
}

.media-preview.is-empty {
  background:
    linear-gradient(160deg, #fff, var(--mist));
}

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

.media-fields {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
}

.file-upload-label input[type="file"] {
  display: block;
  width: 100%;
  margin-top: 6px;
  font: inherit;
}

.shop-store-name {
  margin: 0;
  font-family: var(--font-brand, "DM Sans", system-ui, -apple-system, sans-serif);
  font-size: 1.08rem;
  font-weight: 700;
  letter-spacing: -0.03em;
  color: var(--text);
}

.shop-menu-section {
  margin: 0;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}

.catalogue-price-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.price-input-wrap {
  display: flex;
  align-items: stretch;
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
  background: var(--mist, #f5efe6);
}

.price-prefix {
  display: grid;
  place-items: center;
  min-width: 2.4rem;
  padding: 0 8px;
  background: var(--primary-soft);
  color: var(--primary-dark);
  font-weight: 700;
  border-right: 1px solid var(--border);
}

.price-input-wrap input {
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.catalogue-list-panel {
  background: transparent;
  border: none;
  border-radius: 0;
  padding: 0;
  min-height: 0;
  box-shadow: none;
}

.catalogue-list-header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  margin-bottom: 14px;
}

.catalogue-count-label {
  margin: 0;
  color: var(--muted);
  font-size: 0.88rem;
  line-height: 1.35;
  max-width: 36rem;
}

.catalogue-menu-search {
  display: block;
  margin: 0 0 12px;
}

.catalogue-menu-search input {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: 11px 14px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--panel);
  font: inherit;
  font-size: 0.9rem;
  box-shadow: none;
}

.catalogue-menu-search input:focus {
  outline: 2px solid rgba(18, 18, 18, 0.12);
  outline-offset: 1px;
  background: #fff;
  border-color: rgba(18, 18, 18, 0.16);
}

.catalogue-page-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: 0 0 12px;
}

.catalogue-page-nav[hidden] {
  display: none !important;
}

.catalogue-page-arrow {
  appearance: none;
  width: 36px;
  height: 34px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--panel, #fff);
  color: var(--ink, #111);
  font: inherit;
  font-size: 1.05rem;
  line-height: 1;
  cursor: pointer;
}

.catalogue-page-arrow:hover:not(:disabled) {
  background: var(--mist, #f5f4f2);
}

.catalogue-page-arrow:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

.catalogue-page-label {
  margin: 0;
  flex: 1 1 auto;
  text-align: center;
  font-size: 0.82rem;
  color: var(--muted);
}

.catalogue-bulk-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
  margin: 0 0 12px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--panel);
  box-shadow: none;
}

.catalogue-bulk-bar.hidden {
  display: none;
}

.catalogue-bulk-select-all {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.84rem;
  font-weight: 600;
}

.catalogue-bulk-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-left: auto;
}

.catalogue-bulk-actions .secondary-btn {
  padding: 5px 9px;
  font-size: 0.78rem;
}

.catalogue-bulk-edit-panel {
  margin: 0 0 12px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: var(--panel, #fff);
  box-shadow: var(--shadow);
}

.catalogue-bulk-edit-panel.hidden {
  display: none;
}

.catalogue-bulk-edit-panel h4 {
  margin: 0 0 4px;
  font-size: 0.95rem;
}

.catalogue-item-list {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: var(--panel);
  overflow: hidden;
  box-shadow: none;
}

.catalogue-item-card {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  gap: 14px 16px;
  align-items: center;
  margin: 0;
  padding: 14px 16px;
  border: 0;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  transition: background-color 0.15s ease;
}

.catalogue-item-card:last-child {
  border-bottom: 0;
}

.catalogue-item-card:has(.catalogue-item-select) {
  grid-template-columns: 18px 56px minmax(0, 1fr);
}

.catalogue-item-card:hover {
  background: rgba(18, 18, 18, 0.022);
}

.catalogue-item-select {
  display: grid;
  place-items: center;
  margin: 0;
  align-self: center;
}

.catalogue-item-select input {
  width: 15px;
  height: 15px;
  margin: 0;
  accent-color: var(--ink);
}

.catalogue-item-number {
  display: none;
}

.catalogue-item-card.is-hidden-item {
  opacity: 0.72;
}

.catalogue-item-card.is-hidden-item .catalogue-item-media {
  filter: grayscale(0.4);
}

.catalogue-item-media {
  width: 56px;
  height: 56px;
  border-radius: 12px;
  overflow: hidden;
  background: linear-gradient(145deg, var(--mist), var(--cream-soft));
  border: 1px solid rgba(18, 18, 18, 0.06);
  flex: 0 0 auto;
}

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

.catalogue-item-fallback {
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  font-family: var(--font-brand);
  font-size: 1.05rem;
  font-weight: 650;
  color: var(--muted);
  letter-spacing: -0.02em;
}

.catalogue-item-copy {
  display: flex;
  flex-direction: column;
  gap: 0;
  min-width: 0;
}

.catalogue-item-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px 20px;
  align-items: center;
}

.catalogue-item-title-block {
  min-width: 0;
  flex: 1 1 auto;
}

.catalogue-item-heading {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.catalogue-item-copy h4 {
  margin: 0;
  font-family: var(--font-brand);
  font-size: 0.98rem;
  font-weight: 650;
  letter-spacing: -0.015em;
  line-height: 1.3;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

.catalogue-item-meta-line {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 0.76rem;
  line-height: 1.3;
}

.catalogue-meta-tag {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  padding: 3px 8px;
  border-radius: 8px;
  background: var(--mist);
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.catalogue-item-sku {
  font-variant-numeric: tabular-nums;
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 0.7rem;
}

.catalogue-item-side {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 10px;
  flex: 0 0 auto;
  min-width: 7.5rem;
}

.catalogue-item-actions {
  gap: 4px;
  justify-content: flex-end;
}

.catalogue-item-actions .catalogue-compact-btn {
  min-height: 28px;
  padding: 4px 10px;
  font-size: 0.72rem;
}

.catalogue-item-price {
  white-space: nowrap;
  color: var(--text);
  font-family: var(--font-brand);
  font-size: 0.98rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
}

.catalogue-item-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 12px;
  align-items: center;
  color: var(--muted);
  font-size: 0.84rem;
}

.catalogue-status-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 2px 8px 2px 6px;
  border-radius: 999px;
  background: var(--primary-soft);
  color: var(--primary-dark);
  font-weight: 600;
  font-size: 0.66rem;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  flex: 0 0 auto;
}

.catalogue-status-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.85;
  flex: 0 0 auto;
}

.catalogue-status-pill.is-live {
  background: var(--success-bg);
  color: var(--success);
}

.catalogue-status-pill.is-hidden {
  background: rgba(18, 18, 18, 0.05);
  color: var(--muted);
}

.catalogue-empty-state {
  display: block;
  list-style: none;
  margin: 0;
  padding: 40px 20px;
  border: 0;
  border-radius: 0;
  background: transparent;
  text-align: center;
  color: var(--muted);
}

.catalogue-item-list:has(> .catalogue-empty-state:only-child) {
  box-shadow: none;
  background: var(--mist);
}

.catalogue-empty-state h4 {
  margin: 0 0 6px;
  color: var(--text);
  font-family: var(--font-brand);
  font-size: 1.02rem;
  font-weight: 650;
  letter-spacing: -0.02em;
}

.catalogue-empty-state p {
  margin: 0 auto;
  max-width: 28rem;
  font-size: 0.88rem;
  line-height: 1.45;
}

.bookings-board-panel {
  padding: 0;
}

.service-schedule-block {
  margin: 0.5rem 0 0.75rem;
  padding: 10px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: color-mix(in srgb, var(--surface, #fff) 92%, var(--bg, #f3f3f4));
}

.service-schedule-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.6rem;
  margin-bottom: 0.5rem;
  flex-wrap: wrap;
}

.service-schedule-head h4 {
  margin: 0;
  font-size: 0.9rem;
}

.service-schedule-head .muted-line {
  font-size: 0.78rem;
}

.service-schedule-week-nav {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.service-schedule-week-nav .secondary-btn {
  min-height: 30px;
  padding: 4px 8px;
  font-size: 0.8rem;
}

.service-schedule-week-label {
  margin: 0;
  min-width: 8.5rem;
  text-align: center;
  font-size: 0.8rem;
  font-weight: 600;
}

.service-schedule-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 12px;
  margin: 0 0 8px;
  font-size: 0.72rem;
  color: var(--muted);
}

.service-schedule-legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.service-slot-swatch {
  display: inline-block;
  width: 0.6rem;
  height: 0.6rem;
  border-radius: 3px;
  border: 1px solid rgba(18, 18, 18, 0.12);
}

.service-slot-swatch.is-available {
  background: #dcfce7;
  border-color: #86efac;
}

.service-slot-swatch.is-unavailable {
  background: #f5f5f4;
}

.service-slot-swatch.is-booked {
  background: #ffedd5;
  border-color: #fdba74;
}

.service-schedule-grid {
  overflow: auto;
  max-height: min(38vh, 280px);
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #fff;
}

.service-schedule-grid-inner {
  min-width: 520px;
}

.service-schedule-row {
  display: grid;
  grid-template-columns: 48px repeat(var(--schedule-days, 7), minmax(0, 1fr));
  gap: 3px;
  padding: 2px 4px;
  border-bottom: 1px solid rgba(18, 18, 18, 0.05);
}

.service-schedule-row--head {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #fff;
  border-bottom: 1px solid var(--border);
  padding-top: 5px;
  padding-bottom: 5px;
}

.service-schedule-time-label {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding-right: 3px;
  font-size: 0.62rem;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.service-schedule-day-head {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  font-size: 0.66rem;
  color: var(--muted);
}

.service-schedule-day-head strong {
  color: var(--text);
  font-size: 0.72rem;
}

.service-schedule-cell {
  appearance: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  min-height: 30px;
  padding: 3px 2px;
  border: 1px solid rgba(18, 18, 18, 0.08);
  border-radius: 6px;
  background: #fafaf9;
  color: var(--muted);
  font: inherit;
  cursor: pointer;
  transition: background 120ms ease, border-color 120ms ease, color 120ms ease;
}

.service-schedule-cell-time {
  display: none;
  font-size: 0.62rem;
}

.service-schedule-cell-state {
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.service-schedule-cell.is-unavailable:hover {
  border-color: rgba(18, 18, 18, 0.18);
  background: #f5f5f4;
  color: var(--text);
}

.service-schedule-cell.is-available {
  background: #ecfdf3;
  border-color: #86efac;
  color: #166534;
}

.service-schedule-cell.is-available:hover {
  background: #dcfce7;
}

.service-schedule-cell.is-booked {
  background: #ffedd5;
  border-color: #fdba74;
  color: #9a3412;
  cursor: not-allowed;
  opacity: 0.95;
}

.service-schedule-cell.is-past {
  background: #f5f5f4;
  border-color: rgba(18, 18, 18, 0.06);
  color: #a8a29e;
  cursor: not-allowed;
  opacity: 0.7;
}

.service-schedule-cell.is-past .service-schedule-cell-state {
  font-weight: 600;
}

.service-schedule-staff-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin: 0 0 0.5rem;
}

.service-schedule-staff-tabs.hidden {
  display: none;
}

.service-schedule-staff-tab {
  appearance: none;
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0;
  min-width: 5.5rem;
  padding: 0.3rem 0.5rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--panel, #fff);
  color: var(--text);
  font: inherit;
  cursor: pointer;
}

.service-schedule-staff-tab:hover {
  border-color: rgba(18, 18, 18, 0.22);
}

.service-schedule-staff-tab.is-active {
  border-color: var(--ink, #111);
  box-shadow: inset 0 0 0 1px var(--ink, #111);
}

.service-schedule-staff-tab span:first-child {
  font-size: 0.78rem;
  font-weight: 650;
}

.service-schedule-staff-tab-meta {
  font-size: 0.64rem;
  color: var(--muted);
}

.service-staff-block {
  margin: 0 0 12px;
  padding: 0 0 12px;
  border-bottom: 1px solid var(--border);
  display: grid;
  gap: 8px;
}

.service-staff-head h4 {
  margin: 0 0 2px;
  font-size: 0.9rem;
}

.service-staff-head .muted-line {
  font-size: 0.78rem;
}

.service-staff-list {
  display: grid;
  gap: 6px;
}

.service-staff-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--mist, #f5f4f2);
}

.service-staff-card-copy {
  display: grid;
  gap: 1px;
  min-width: 0;
}

.service-staff-card-copy strong {
  font-size: 0.84rem;
}

.service-staff-card-copy span {
  font-size: 0.74rem;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.service-staff-card .secondary-btn {
  min-height: 30px;
  padding: 4px 8px;
  font-size: 0.78rem;
}

.service-staff-form {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr)) auto;
  gap: 8px;
  align-items: end;
}

.service-staff-form label {
  margin: 0;
  font-size: 0.8rem;
}

.service-staff-form input {
  padding: 8px 10px;
  font-size: 0.86rem;
}

.service-staff-form .secondary-btn {
  min-height: 36px;
  padding: 6px 10px;
  font-size: 0.82rem;
}

@media (max-width: 900px) {
  .service-staff-form {
    grid-template-columns: 1fr;
  }

  .service-staff-form .secondary-btn {
    width: 100%;
  }
}

.book-service-staff {
  border: 0;
  margin: 0 0 0.85rem;
  padding: 0;
}

.book-service-staff legend {
  font-weight: 700;
  font-size: 0.95rem;
  margin-bottom: 0.45rem;
  color: var(--ink, #111);
}

.book-service-staff-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
}

.book-service-staff-option {
  appearance: none;
  border: 1px solid var(--border, #d6d3d1);
  border-radius: 12px;
  background: var(--panel, #fff);
  color: var(--text);
  font: inherit;
  font-size: 0.9rem;
  font-weight: 650;
  padding: 0.65rem 0.9rem;
  min-height: 2.75rem;
  cursor: pointer;
}

.book-service-staff-option.is-selected {
  border-color: var(--ink, #111);
  box-shadow: inset 0 0 0 1px var(--ink, #111);
  background: color-mix(in srgb, var(--ink, #111) 6%, #fff);
}

.service-schedule-list {
  display: none;
}

.bookings-board-list {
  display: grid;
  gap: 0.75rem;
  padding: 0.85rem 1rem 1.1rem;
}

.booking-board-card {
  display: grid;
  gap: 0.35rem;
  padding: 0.9rem 1rem;
  border: 1px solid color-mix(in srgb, var(--border, #d6d3d1) 85%, transparent);
  border-radius: 12px;
  background: color-mix(in srgb, var(--surface, #fff) 92%, var(--accent, #0f766e) 8%);
}

.booking-board-card h4 {
  margin: 0;
  font-size: 1rem;
}

.booking-board-card .booking-board-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.85rem;
  font-size: 0.86rem;
  color: var(--muted, #6b7280);
}

.booking-board-card .booking-board-customer {
  font-size: 0.9rem;
}

.book-service-modal {
  width: min(26rem, 100%);
  max-height: min(92vh, 46rem);
  overflow: auto;
  padding: 1rem 1rem 1.1rem;
}

.book-service-modal .panel-form {
  max-width: none;
  margin: 0;
  padding: 0;
  border: 0;
  box-shadow: none;
  background: transparent;
}

.book-service-modal-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.55rem;
  margin-bottom: 0.75rem;
}

.book-service-modal-head h3 {
  margin: 0;
  font-size: 1.15rem;
  letter-spacing: -0.02em;
}

.book-service-step-label {
  margin: 0 0 0.45rem;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--ink, #111);
  letter-spacing: -0.01em;
}

.book-service-slots {
  border: 0;
  margin: 0 0 1rem;
  padding: 0.85rem 0.85rem 0.95rem;
  border-radius: 16px;
  background: color-mix(in srgb, var(--mist, #f5f4f2) 88%, #fff);
  border: 1px solid var(--border, rgba(18, 18, 18, 0.08));
}

.book-service-slots legend {
  font-weight: 700;
  font-size: 1rem;
  margin-bottom: 0.25rem;
  padding: 0;
  color: var(--ink, #111);
}

.book-service-slots-hint {
  margin: 0 0 0.65rem;
  font-size: 0.78rem;
  line-height: 1.35;
}

.book-service-slot-filters {
  display: grid;
  gap: 0.55rem;
  margin-bottom: 0.75rem;
}

.book-service-range-tabs {
  display: none;
}

.book-service-range-tabs.hidden,
.book-service-range-tabs[hidden] {
  display: none !important;
}

.book-service-range-tab {
  appearance: none;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 0.76rem;
  font-weight: 600;
  min-height: 28px;
  cursor: pointer;
}

.book-service-range-tab.active {
  background: var(--panel, #fff);
  color: var(--ink, #111);
}

.book-service-period-nav {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 0.4rem;
  align-items: center;
}

.book-service-period-nav .secondary-btn {
  min-width: 4.6rem;
  min-height: 2.4rem;
  padding: 0.35rem 0.65rem;
  font-size: 0.82rem;
  font-weight: 650;
  border-radius: 10px;
}

.book-service-period-nav .secondary-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

.book-service-period-label {
  margin: 0;
  text-align: center;
  font-size: 0.84rem;
  font-weight: 650;
  color: var(--text);
  line-height: 1.25;
}

.book-service-day-chips {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 0.35rem;
  overflow: visible;
  padding: 0;
}

.book-service-day-chips.hidden {
  display: none;
}

.book-service-day-chip {
  appearance: none;
  flex: none;
  display: grid;
  gap: 0.08rem;
  justify-items: center;
  width: 100%;
  min-width: 0;
  min-height: 4.4rem;
  padding: 0.45rem 0.15rem 0.4rem;
  border: 1px solid var(--border, #d6d3d1);
  border-radius: 12px;
  background: #fff;
  color: var(--text);
  font: inherit;
  text-align: center;
  cursor: pointer;
}

.book-service-day-chip:hover:not(:disabled) {
  border-color: rgba(18, 18, 18, 0.28);
  transform: translateY(-1px);
}

.book-service-day-chip.is-active {
  border-color: var(--ink, #111);
  box-shadow: inset 0 0 0 1px var(--ink, #111);
  background: color-mix(in srgb, var(--ink, #111) 92%, #fff);
  color: #fff;
}

.book-service-day-chip.is-active .book-service-day-chip-meta {
  color: rgba(255, 255, 255, 0.82);
}

.book-service-day-chip.is-empty,
.book-service-day-chip:disabled {
  opacity: 0.48;
  cursor: not-allowed;
  background: color-mix(in srgb, var(--mist, #f5f4f2) 70%, #fff);
}

.book-service-day-chip-weekday {
  font-size: 0.68rem;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: 0.01em;
  text-transform: uppercase;
}

.book-service-day-chip-date {
  font-size: 0.78rem;
  font-weight: 700;
  line-height: 1.15;
}

.book-service-day-chip-label {
  font-size: 0.72rem;
  font-weight: 600;
  line-height: 1.15;
}

.book-service-day-chip-meta {
  font-size: 0.62rem;
  color: var(--muted);
  line-height: 1.15;
  font-weight: 600;
}

.book-service-slot-day-label {
  margin: 0 0 0.45rem;
  font-size: 0.88rem;
  font-weight: 650;
  color: var(--ink, #111);
}

.book-service-slot-day-label.is-prompt {
  color: var(--muted);
  font-weight: 560;
}

.book-service-slot-list {
  display: grid;
  gap: 0.4rem;
  max-height: none;
  overflow: visible;
  padding: 0;
}

.book-service-slot-list--times,
.book-service-slot-calendar {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.4rem;
  max-height: none;
  overflow: visible;
}

.book-service-slot {
  display: grid;
  gap: 0.12rem;
  align-content: center;
  justify-items: center;
  width: 100%;
  min-height: 3.35rem;
  text-align: center;
  border: 1px solid color-mix(in srgb, var(--line) 88%, transparent);
  border-radius: 12px;
  padding: 0.45rem 0.3rem;
  background: color-mix(in srgb, var(--panel) 94%, #dcfce7);
  color: var(--ink);
  font: inherit;
  cursor: pointer;
}

.book-service-slot.service-schedule-cell {
  display: grid;
  gap: 0.12rem;
  min-height: 3.35rem;
  padding: 0.45rem 0.3rem;
}

.book-service-slot-day {
  font-size: 0.58rem;
  font-weight: 600;
  color: var(--muted);
  line-height: 1.1;
}

.book-service-slot-time {
  font-size: 0.95rem;
  font-weight: 750;
  letter-spacing: -0.02em;
  line-height: 1.15;
}

.book-service-slot:hover:not(:disabled) {
  border-color: color-mix(in srgb, var(--brand) 42%, var(--line));
  background: color-mix(in srgb, var(--panel) 88%, #bbf7d0);
}

.book-service-slot.is-selected {
  border-color: color-mix(in srgb, var(--brand) 55%, var(--line));
  background: color-mix(in srgb, var(--brand) 18%, var(--panel));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--brand) 35%, transparent);
}

.book-service-slot.is-booked,
.book-service-slot:disabled {
  opacity: 1;
  cursor: not-allowed;
  background: color-mix(in srgb, var(--panel) 92%, #fecaca);
  border-color: color-mix(in srgb, #f87171 35%, var(--line));
  color: color-mix(in srgb, var(--ink) 70%, #7f1d1d);
}

.book-service-slot .service-schedule-cell-state {
  font-size: 0.68rem;
  font-weight: 650;
}

#book-service-slots-empty {
  margin: 0.45rem 0 0;
  font-size: 0.86rem;
  font-weight: 600;
  color: var(--ink, #111);
}

.book-service-details {
  display: grid;
  gap: 0.65rem;
  margin-bottom: 0.35rem;
}

.book-service-name-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.65rem;
}

.book-service-total {
  margin: 0.35rem 0 0.75rem;
  font-weight: 650;
}

@media (max-width: 720px) {
  .book-service-modal {
    width: min(100%, 100vw - 1rem);
    max-height: min(94vh, 52rem);
    margin: 0.4rem auto;
    border-radius: 18px;
  }

  .book-service-day-chips {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .book-service-day-chip {
    min-height: 4.1rem;
  }

  .book-service-slot-list--times,
  .book-service-slot-calendar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .book-service-name-row {
    grid-template-columns: 1fr;
  }

  .service-schedule-head {
    flex-direction: column;
  }
}

@media (max-width: 380px) {
  .book-service-day-chips {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Seller catalogues: Apps-style row list (Products / Services tabs) */
.catalogue-manage .catalogue-item-list {
  display: flex;
  flex-direction: column;
  gap: 0;
  justify-content: stretch;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: var(--panel);
  box-shadow: none;
  overflow: hidden;
  padding: 0;
  width: 100%;
}

.catalogue-manage .catalogue-list-panel {
  width: 100%;
  max-width: min(920px, 100%);
  margin-inline: auto;
}

.catalogue-manage .catalogue-item-card,
.catalogue-manage .catalogue-item-card:has(.catalogue-item-select) {
  position: relative;
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr);
  grid-template-rows: auto;
  gap: 0.75rem 0.85rem;
  align-items: center;
  margin: 0;
  padding: 0.7rem 0.85rem;
  border: 0;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.catalogue-manage .catalogue-item-card:last-child {
  border-bottom: 0;
}

.catalogue-manage .catalogue-item-card:hover {
  background: rgba(42, 41, 39, 0.035);
}

.catalogue-manage .catalogue-item-card:has(.catalogue-item-select) .catalogue-item-select {
  position: static;
  top: auto;
  left: auto;
  z-index: auto;
  grid-column: auto;
  grid-row: auto;
  padding: 0;
  width: auto;
  height: auto;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.catalogue-manage .catalogue-item-card:has(.catalogue-item-select) .catalogue-item-media,
.catalogue-manage .catalogue-item-card:has(.catalogue-item-select) .catalogue-item-copy {
  grid-column: auto;
  grid-row: auto;
}

.catalogue-manage .catalogue-item-media {
  order: 0;
  width: 52px;
  height: 52px;
  aspect-ratio: auto;
  border-radius: 13px;
  border: 1px solid rgba(18, 18, 18, 0.06);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.22);
  background: var(--mist, #f5f4f2);
}

.catalogue-manage .catalogue-item-copy {
  gap: 0.12rem;
  min-height: 0;
  min-width: 0;
}

.catalogue-manage .catalogue-item-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.75rem 0.85rem;
  align-items: center;
}

.catalogue-manage .catalogue-item-heading {
  flex-wrap: wrap;
  gap: 6px;
}

.catalogue-manage .catalogue-item-copy h4 {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 650;
  letter-spacing: -0.015em;
  white-space: nowrap;
  display: block;
  -webkit-line-clamp: unset;
  -webkit-box-orient: unset;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.25;
  min-height: 0;
}

.catalogue-manage .catalogue-item-meta-line {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.15rem;
}

.catalogue-manage .catalogue-status-pill {
  flex: 0 0 auto;
  margin-left: 0;
  padding: 0.12rem 0.45rem;
  font-size: 0.62rem;
}

.catalogue-manage .catalogue-item-side {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.35rem;
  width: auto;
  min-width: 0;
}

.catalogue-manage .catalogue-item-price {
  font-size: 0.84rem;
  font-weight: 750;
  text-align: right;
  white-space: nowrap;
}

.catalogue-manage .catalogue-item-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  width: auto;
  gap: 0.35rem;
}

.catalogue-manage .catalogue-item-actions .catalogue-compact-btn {
  appearance: none;
  width: auto;
  min-height: 0;
  min-width: 3.4rem;
  padding: 0.38rem 0.85rem;
  border: 0;
  border-radius: 999px;
  background: rgba(18, 18, 18, 0.06);
  color: var(--ink);
  font-size: 0.78rem;
  font-weight: 750;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  justify-content: center;
  box-shadow: none;
}

.catalogue-manage .catalogue-item-actions .catalogue-compact-btn:hover {
  background: rgba(18, 18, 18, 0.1);
}

.catalogue-manage .catalogue-item-actions .catalogue-compact-btn--danger {
  background: rgba(185, 28, 28, 0.08);
  color: #b91c1c;
}

.catalogue-manage .catalogue-item-list:has(> .catalogue-empty-state:only-child) {
  display: flex;
  background: var(--panel);
  box-shadow: none;
}

.catalogue-manage .catalogue-empty-state {
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  padding: 0.9rem 0.95rem;
}

@media (max-width: 720px) {
  .catalogue-manage .catalogue-item-card,
  .catalogue-manage .catalogue-item-card:has(.catalogue-item-select) {
    grid-template-columns: auto auto minmax(0, 1fr);
  }

  .catalogue-manage .catalogue-item-top {
    grid-template-columns: 1fr;
    gap: 0.45rem;
  }

  .catalogue-manage .catalogue-item-side {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    width: 100%;
  }

  .catalogue-manage .catalogue-item-copy h4 {
    font-size: 0.9rem;
  }
}

/* —— Customer shop — bright white storefront —— */
.app.shop-surface .topbar {
  margin-bottom: 10px;
  align-items: center;
}

.app.shop-surface .topbar .secondary-btn {
  display: none;
}

.app.shop-surface .topbar h2 {
  margin: 0;
  font-size: 1.25rem;
  letter-spacing: -0.03em;
}

.app.shop-surface #view-subtitle {
  font-size: 0.86rem;
  margin: 2px 0 0;
}

.shop-storefront {
  position: relative;
  padding-bottom: 16px;
  animation: shopFadeIn 360ms ease;
}

@keyframes shopFadeIn {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.shop-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-bottom: 12px;
  position: sticky;
  top: 8px;
  z-index: 5;
  padding: 8px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.92);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  backdrop-filter: blur(10px);
}

.shop-toolbar--browse {
  flex-wrap: nowrap;
  gap: 0.55rem;
  justify-content: space-between;
}

.shop-toolbar--browse.is-search-open {
  justify-content: flex-start;
}

.shop-icon-btn {
  appearance: none;
  position: relative;
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  width: 2.55rem;
  height: 2.55rem;
  margin: 0;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #fff;
  color: var(--text);
  cursor: pointer;
  box-shadow: 0 1px 2px rgba(18, 18, 18, 0.05);
}

.shop-icon-btn:hover {
  background: var(--mist);
}

.shop-icon-btn:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--ink, #111) 28%, transparent);
  outline-offset: 2px;
}

.shop-icon-btn .shop-icon {
  display: grid;
  place-items: center;
  width: 1.2rem;
  height: 1.2rem;
}

.shop-icon-btn .shop-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

.shop-toolbar--browse .shop-search-field--expandable {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
}

/* Desktop / non-personal: always show the search field; hide the icon toggle. */
.shop-toolbar--browse .shop-search-toggle {
  display: none;
}

.shop-toolbar--browse.is-search-open .shop-search-toggle {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}

.shop-cart-btn.shop-icon-btn {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}

.shop-cart-btn.shop-icon-btn:hover {
  background: #2a2a2a;
}

.shop-cart-count {
  position: absolute;
  top: -0.2rem;
  right: -0.2rem;
  min-width: 1.15rem;
  height: 1.15rem;
  padding: 0 0.28rem;
  border-radius: 999px;
  background: #fff;
  color: var(--ink);
  border: 1px solid rgba(18, 18, 18, 0.12);
  font-size: 0.68rem;
  font-weight: 700;
  line-height: 1.15rem;
  text-align: center;
}

.shop-cart-btn.shop-icon-btn .shop-cart-count {
  background: #fff;
  color: var(--ink);
}

.banner-shop-icon-btn {
  appearance: none;
  position: relative;
  display: none;
  place-items: center;
  flex: 0 0 auto;
  width: 2.45rem;
  height: 2.45rem;
  margin: 0;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: inherit;
  cursor: pointer;
}

.banner-shop-icon-btn.hidden {
  display: none !important;
}

.banner-shop-icon {
  display: grid;
  place-items: center;
  width: 1.25rem;
  height: 1.25rem;
}

.banner-shop-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

.banner-shop-cart-count {
  position: absolute;
  top: -0.15rem;
  right: -0.1rem;
  min-width: 1.05rem;
  height: 1.05rem;
  padding: 0 0.25rem;
  border-radius: 999px;
  background: var(--ink, #121212);
  color: #fff;
  font-size: 0.64rem;
  font-weight: 700;
  line-height: 1.05rem;
  text-align: center;
}

.banner-shop-cart-count.hidden {
  display: none;
}

.banner-shop-tools {
  display: none;
  align-items: center;
  gap: 0.65rem 0.85rem;
  min-width: 0;
}

.banner-shop-tools.hidden {
  display: none !important;
}

.banner-shop-title {
  display: none;
  flex: 0 0 auto;
  margin: 0;
  color: #f5f5f6;
  font-family: var(--font-display, inherit);
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.1;
  white-space: nowrap;
}

.banner-shop-search-field {
  display: none;
  flex: 0 1 14rem;
  width: 14rem;
  max-width: min(14rem, 28vw);
  margin: 0;
  min-width: 0;
}

.banner-shop-search-field.hidden {
  display: none !important;
}

.banner-shop-search-field input {
  width: 100%;
  margin: 0;
  padding: 0.5rem 0.75rem;
  border: 1px solid rgba(245, 245, 246, 0.22);
  border-radius: 10px;
  background: rgba(245, 245, 246, 0.08);
  color: #f5f5f6;
  font: inherit;
  font-size: 0.88rem;
  line-height: 1.2;
  box-sizing: border-box;
}

.banner-shop-search-field input::placeholder {
  color: rgba(245, 245, 246, 0.48);
}

.banner-shop-search-field input:focus {
  outline: none;
  border-color: rgba(245, 245, 246, 0.4);
  background: rgba(245, 245, 246, 0.12);
}

/* Personal desktop Shop: search + cart sit left of personal icon tabs */
body.personal-account.shop-ribbon-desktop .banner-shop-tools:not(.hidden) {
  position: static;
  left: auto;
  top: auto;
  transform: none;
  display: inline-flex;
  flex: 0 0 auto;
  justify-content: flex-end;
  align-items: center;
  z-index: auto;
  max-width: none;
  margin-left: auto;
}

body.personal-account.shop-ribbon-desktop .banner-shop-title {
  /* Section label lives on the Shop ribbon tab. */
  display: none;
}

body.personal-account.shop-ribbon-desktop .banner-shop-search-field:not(.hidden) {
  display: block;
}

body.personal-account.shop-ribbon-desktop .banner-shop-cart-btn:not(.hidden) {
  display: inline-grid;
  color: #f5f5f6;
  background: rgba(245, 245, 246, 0.08);
  border-color: rgba(245, 245, 246, 0.18);
}

body.personal-account.shop-ribbon-desktop .banner-shop-cart-btn:hover,
body.personal-account.shop-ribbon-desktop .banner-shop-cart-btn:focus-visible {
  background: rgba(245, 245, 246, 0.14);
  border-color: rgba(245, 245, 246, 0.3);
  outline: none;
}

body.personal-account.shop-ribbon-desktop .banner-shop-cart-count:not(.hidden) {
  background: #f5f5f6;
  color: #121212;
}

body.personal-account.shop-ribbon-desktop .topbar {
  display: none;
}

body.personal-account.shop-ribbon-desktop .shop-browse .shop-toolbar--browse {
  display: none;
}

body.personal-account.shop-ribbon-desktop .shop-menu .shop-menu-toolbar {
  display: none;
}

/* Personal Shop: leave stores via browser/history back — hide the in-menu Back control. */
body.personal-account.shop-surface .shop-back-btn {
  display: none !important;
}

.shop-location-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 12px;
  margin: -4px 0 12px;
  padding: 0 2px;
}

/* All stores mode (opened via Search): hide discovery chrome. */
.shop-browse[data-browse-segment='all'] #shop-popular,
.shop-browse[data-browse-segment='all'] #shop-browse-banner,
.shop-browse[data-browse-segment='all'] #shop-type-collections {
  display: none !important;
}

.shop-location-status {
  margin: 0;
  flex: 1 1 180px;
  color: var(--muted);
  font-size: 0.82rem;
  line-height: 1.35;
}

.shop-location-btn {
  flex: 0 0 auto;
  border: 1px solid var(--border);
  background: var(--mist);
  color: var(--text);
  border-radius: 999px;
  padding: 6px 12px;
  font: inherit;
  font-size: 0.78rem;
  font-weight: 650;
  cursor: pointer;
}

.shop-location-btn:hover {
  background: var(--cream-soft);
}

.shop-location-btn:disabled {
  opacity: 0.7;
  cursor: wait;
}

.shop-location-prompt {
  position: fixed;
  inset: 0;
  z-index: 12000;
  display: grid;
  place-items: center;
  padding: 1.25rem;
}

.shop-location-prompt-backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  margin: 0;
  padding: 0;
  background: rgba(18, 18, 18, 0.42);
  cursor: pointer;
}

.shop-location-prompt-card {
  position: relative;
  z-index: 1;
  width: min(100%, 22rem);
  padding: 1.15rem 1.15rem 1rem;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 18px 48px rgba(18, 18, 18, 0.22);
  color: var(--text, #121212);
}

.shop-location-prompt-title {
  margin: 0;
  font-size: 1.1rem;
  font-weight: 750;
  letter-spacing: -0.02em;
}

.shop-location-prompt-copy {
  margin: 0.55rem 0 0;
  color: var(--muted, #5c5c63);
  font-size: 0.92rem;
  line-height: 1.45;
}

.shop-location-prompt-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 0.55rem;
  margin-top: 1.1rem;
}

.shop-location-prompt-actions .primary-btn,
.shop-location-prompt-actions .secondary-btn {
  min-height: 2.5rem;
}

.shop-store-meta {
  margin: 0;
  font-size: 0.78rem;
  font-weight: 650;
  color: var(--text);
  line-height: 1.3;
}

.shop-menu-more {
  grid-column: 1 / -1;
  display: grid;
  justify-items: center;
  gap: 8px;
  padding: 8px 4px 4px;
}

.shop-menu-more-copy {
  margin: 0;
  color: var(--muted);
  font-size: 0.82rem;
}

.shop-menu-more-btn {
  min-width: 10rem;
}

.shop-search-field {
  flex: 1 1 200px;
  margin: 0;
}

.shop-search-field input {
  width: 100%;
  border-radius: 11px;
  border: 1px solid var(--border);
  background: var(--mist);
  padding: 9px 12px;
  color: var(--text);
  font-size: 0.9rem;
}

.shop-search-field input:focus {
  outline: none;
  background: #fff;
  border-color: rgba(18, 18, 18, 0.28);
  box-shadow: 0 0 0 3px var(--primary-soft);
}

.shop-cart-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  border: 1px solid var(--border);
  background: var(--ink);
  color: #fff;
  border-radius: 11px;
  padding: 8px 12px;
  font: inherit;
  font-size: 0.86rem;
  font-weight: 600;
  cursor: pointer;
  box-shadow: var(--shadow);
}

.shop-cart-btn:hover {
  background: #2a2a2a;
}

.shop-cart-btn .cart-count {
  background: rgba(255, 255, 255, 0.18);
  color: #fff;
}

.shop-back-btn {
  border: 0;
  background: var(--mist);
  color: var(--text);
  font: inherit;
  font-size: 0.86rem;
  font-weight: 600;
  padding: 8px 10px;
  border-radius: 10px;
  cursor: pointer;
  white-space: nowrap;
}

.shop-back-btn:hover {
  background: var(--cream-soft);
}

.shop-menu-title {
  margin: 0;
  /* Ecosystem brand face (DM Sans) — same as store names across TuMicha surfaces. */
  font-family: var(--font-brand, "DM Sans", system-ui, -apple-system, sans-serif);
  font-size: clamp(1.55rem, 2.4vw, 2.15rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  color: #fff;
  min-width: 0;
  line-height: 1.12;
  text-wrap: balance;
}

.shop-menu-banner {
  --shop-banner-ink: #f7f7f8;
  --shop-banner-muted: rgba(247, 247, 248, 0.78);
  position: relative;
  display: block;
  isolation: isolate;
  margin: 0 0 16px;
  min-height: 220px;
  border-radius: 18px;
  overflow: hidden;
  border: 0;
  background: #1c1c1f;
  box-shadow: none;
  animation: shopMenuBannerIn 480ms cubic-bezier(0.22, 1, 0.36, 1);
}

.shop-menu-banner-media,
.shop-browse-banner-media {
  position: absolute;
  inset: 0;
  overflow: hidden;
  container-type: size;
}

.shop-menu-banner-video,
.shop-menu-banner-youtube {
  position: absolute;
  border: 0;
  z-index: 1;
  background: #0f0f11;
}

.shop-menu-banner-video {
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

/* Scale 16:9 YouTube embeds to cover the banner (no side/top letterboxing). */
.shop-menu-banner-youtube {
  top: 50%;
  left: 50%;
  width: max(100cqw, calc(100cqh * 16 / 9));
  height: max(100cqh, calc(100cqw * 9 / 16));
  transform: translate(-50%, -50%);
  pointer-events: none;
}

.shop-menu-banner-video.hidden,
.shop-menu-banner-youtube.hidden {
  display: none;
}

.shop-menu-banner-tumicha-ad {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: grid;
  place-items: end start;
  padding: 22px;
  background:
    radial-gradient(120% 90% at 18% 12%, rgba(255, 255, 255, 0.2), transparent 52%),
    linear-gradient(145deg, #0f766e 0%, #115e59 42%, #0b1220 100%);
  overflow: hidden;
}

.shop-menu-banner-tumicha-ad.hidden {
  display: none;
}

.shop-menu-banner-tumicha-ad-glow {
  position: absolute;
  width: 58%;
  height: 70%;
  right: -8%;
  top: -18%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 255, 255, 0.28), transparent 68%);
  animation: shopMenuTumichaGlow 7s ease-in-out infinite;
}

.shop-menu-banner-tumicha-ad-copy {
  position: relative;
  z-index: 1;
  color: #f7f7f8;
  max-width: 16rem;
  animation: shopMenuTumichaCopy 700ms cubic-bezier(0.22, 1, 0.36, 1);
}

.shop-menu-banner-tumicha-kicker {
  margin: 0 0 0.3rem;
  font-size: 0.72rem;
  font-weight: 750;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  opacity: 0.82;
}

.shop-menu-banner-tumicha-title {
  margin: 0;
  font-family: var(--font-display, inherit);
  font-size: clamp(1.35rem, 3.6vw, 1.9rem);
  font-weight: 750;
  letter-spacing: -0.04em;
  line-height: 1.1;
}

.shop-menu-banner-ad-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 3;
  padding: 0.22rem 0.5rem;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.45);
  color: rgba(255, 255, 255, 0.92);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.shop-menu-banner-ad-badge.hidden {
  display: none;
}

@keyframes shopMenuTumichaGlow {
  0%,
  100% {
    transform: translate(0, 0) scale(1);
    opacity: 0.85;
  }
  50% {
    transform: translate(-6%, 8%) scale(1.08);
    opacity: 1;
  }
}

@keyframes shopMenuTumichaCopy {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes shopMenuBannerIn {
  from {
    opacity: 0;
    transform: translateY(10px) scale(0.985);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.shop-menu-banner-cover {
  position: absolute;
  inset: 0;
  z-index: 0;
  min-height: 100%;
  background:
    radial-gradient(120% 90% at 12% 18%, rgba(255, 255, 255, 0.18), transparent 55%),
    linear-gradient(155deg, #2a2a2e 0%, #141416 58%, #0f0f11 100%);
  background-size: cover;
  background-position: center;
  transform: scale(1.02);
  transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}

.shop-menu-banner.has-video .shop-menu-banner-cover,
.shop-menu-banner.has-tumicha-ad .shop-menu-banner-cover {
  opacity: 0.28;
}

.shop-menu-banner.has-cover .shop-menu-banner-cover,
.shop-menu-banner-cover.has-image {
  min-height: 100%;
}

.shop-menu-banner:hover .shop-menu-banner-cover.has-image {
  transform: scale(1.05);
}

.shop-menu-banner-scrim {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(12, 12, 14, 0.08) 0%, rgba(12, 12, 14, 0.18) 38%, rgba(12, 12, 14, 0.78) 100%),
    linear-gradient(90deg, rgba(12, 12, 14, 0.42) 0%, rgba(12, 12, 14, 0.08) 58%, transparent 100%);
}

.shop-menu-banner-initial {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-family: var(--font-display, inherit);
  font-size: clamp(2.8rem, 8vw, 4.5rem);
  font-weight: 750;
  letter-spacing: -0.06em;
  color: rgba(247, 247, 248, 0.28);
}

.shop-menu-banner-body {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 14px 16px;
  align-items: end;
  min-height: 220px;
  padding: 22px 22px 20px;
  background: transparent;
}

.shop-menu-banner-copy {
  min-width: 0;
  display: grid;
  gap: 0.35rem;
  color: var(--shop-banner-ink);
}

.shop-menu-banner-kicker {
  margin: 0;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--shop-banner-muted);
}

.shop-menu-banner-kicker.hidden {
  display: none;
}

.shop-menu-banner-meta {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.35;
  color: var(--shop-banner-muted);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.shop-menu-banner-meta.hidden {
  display: none;
}

.shop-menu-banner-meta.muted-line {
  color: var(--shop-banner-muted);
}

.shop-menu-toolbar .shop-search-field-compact {
  flex: 1 1 180px;
  min-width: 0;
}

.shop-menu-toolbar .shop-search-field--expandable {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
}

.shop-menu-logo {
  flex: 0 0 auto;
  width: 76px;
  height: 76px;
  margin: 0;
  border-radius: 18px;
  overflow: hidden;
  border: 2px solid rgba(255, 255, 255, 0.88);
  background: #fff;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28);
  align-self: end;
  z-index: 2;
}

.shop-menu-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  display: block;
  background: #fff;
  padding: 5px;
  box-sizing: border-box;
}

.shop-menu-logo.hidden {
  display: none;
}

.shop-menu-banner:not(.has-cover) .shop-menu-banner-cover {
  display: block;
}

.shop-menu-banner:not(.has-logo) .shop-menu-banner-body {
  grid-template-columns: minmax(0, 1fr);
}

.shop-menu-banner:not(.has-logo) .shop-menu-logo {
  display: none;
}

.catalogue-logo-preview,
.catalogue-tile-form .catalogue-logo-preview {
  width: 72px;
  height: 72px;
  border-radius: 14px;
}

.catalogue-logo-row .category-hint {
  margin: -2px 0 0;
}

.shop-store-grid {
  display: grid;
  /* All stores directory: three storefronts per row. */
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.shop-popular {
  position: relative;
  margin: 0 0 14px;
  padding: 2px 0 4px;
}

.shop-popular.hidden {
  display: none !important;
}

/* Shop front (browse): platform Video adverts from Admin → Video adverts */
.shop-browse-banner {
  position: relative;
  display: block;
  isolation: isolate;
  margin: 0 0 16px;
  min-height: 160px;
  max-height: 220px;
  aspect-ratio: 21 / 9;
  border-radius: 18px;
  overflow: hidden;
  background: #1c1c1f;
  animation: shopMenuBannerIn 480ms cubic-bezier(0.22, 1, 0.36, 1);
}

.shop-browse-banner.hidden {
  display: none !important;
}

.shop-browse-banner .shop-menu-banner-ad-badge {
  z-index: 3;
}

.shop-popular-ribbon,
.shop-popular-ribbon.hidden {
  display: none !important;
}

.shop-popular-nav {
  display: none;
  position: absolute;
  top: 0;
  right: 2px;
  z-index: 1;
  align-items: center;
  gap: 6px;
}

@media (hover: hover) and (pointer: fine) {
  .shop-popular.has-popular-overflow .shop-popular-nav {
    display: inline-flex;
  }
}

.shop-popular-viewport {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
  scroll-snap-type: x proximity;
  scrollbar-width: none;
  touch-action: pan-x pan-y;
  margin: 0 -2px;
  padding: 2px 2px 4px;
}

.shop-popular-viewport::-webkit-scrollbar {
  display: none;
  width: 0;
  height: 0;
}

.shop-popular-track {
  display: flex;
  gap: 8px;
  width: max-content;
  align-items: flex-start;
  padding: 2px 2px 4px;
}

.shop-popular-bubble {
  flex: 0 0 auto;
  width: 4.25rem;
  display: grid;
  justify-items: center;
  gap: 0.35rem;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
  scroll-snap-align: start;
  text-align: center;
}

.shop-popular-bubble:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--ink, #111) 35%, transparent);
  outline-offset: 3px;
  border-radius: 12px;
}

.shop-popular-avatar {
  width: 4rem;
  height: 4rem;
  border-radius: 999px;
  display: grid;
  place-items: center;
  overflow: hidden;
  background: var(--mist, #f5f4f2);
  border: 2px solid color-mix(in srgb, var(--ink, #121212) 78%, #d4a853);
  box-shadow: 0 3px 10px rgba(18, 18, 18, 0.08);
}

.shop-popular-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: inherit;
}

.shop-popular-initial {
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: -0.03em;
  color: color-mix(in srgb, var(--ink, #111) 55%, transparent);
}

.shop-popular-name {
  margin: 0;
  width: 100%;
  font-size: 0.68rem;
  font-weight: 650;
  line-height: 1.2;
  color: var(--text);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.shop-store-card {
  display: flex;
  flex-direction: column;
  text-align: left;
  border: 1px solid var(--border);
  padding: 0;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: #fff;
  box-shadow: var(--shadow);
  cursor: pointer;
  font: inherit;
  color: inherit;
  transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.shop-store-card:hover {
  transform: translateY(-3px);
  border-color: rgba(18, 18, 18, 0.14);
  box-shadow: var(--shadow-lift);
}

.shop-store-kind {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 1;
  padding: 4px 8px;
  border-radius: 999px;
  background: rgba(18, 18, 18, 0.82);
  color: #fff;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.shop-store-cover {
  position: relative;
  display: block;
  width: 100%;
  flex: 0 0 auto;
  /* Keep a real height on mobile WebKit: aspect-ratio alone can collapse to 0
     inside flex <button> cards when the only child is position:absolute. */
  aspect-ratio: 4 / 3;
  min-height: 140px;
  height: auto;
  background: linear-gradient(160deg, #ffffff 0%, var(--mist) 52%, var(--cream-soft) 100%);
  background-size: cover;
  background-position: center;
  overflow: hidden;
}

.shop-store-cover-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
  object-position: center;
  display: block;
}

.shop-store-initial {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: grid;
  place-items: center;
  width: 2.6rem;
  height: 2.6rem;
  border-radius: 12px;
  background: #fff;
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--ink);
  letter-spacing: -0.03em;
  z-index: 1;
}

.shop-store-body {
  padding: 10px 12px 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  background: #fff;
}

.shop-store-title-row {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: baseline;
}

.shop-store-title-row h3 {
  margin: 0;
  font-size: 0.95rem;
  letter-spacing: -0.03em;
  color: var(--text);
}

.shop-store-from {
  white-space: nowrap;
  color: var(--ink);
  font-weight: 700;
  font-size: 0.9rem;
}

.shop-store-meta,
.shop-store-location {
  margin: 0;
  color: var(--muted);
  font-size: 0.78rem;
  line-height: 1.3;
}

.shop-store-location {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.shop-category-chips {
  display: flex;
  flex-wrap: nowrap;
  gap: 6px;
  margin: 0 0 12px;
  overflow-x: auto;
  padding-bottom: 2px;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}

.shop-collections {
  display: grid;
  gap: 1rem;
  margin: 0 0 1rem;
  /* Keep the last rows clear of the floating cart / bottom nav while scrolling. */
  padding-bottom: 4.5rem;
}

.shop-collections.hidden {
  display: none;
}

/* Browse: type-grouped storefront rows reuse collection chrome + store cards. */
.shop-type-collections {
  padding-bottom: 1.25rem;
}

.shop-type-collections .shop-type-collection-track {
  align-items: stretch;
}

/* Match in-store collection card share so more storefronts peek in the row. */
.shop-type-collections .shop-store-card {
  flex: 0 0 auto;
  width: var(--ps-card-width, 9.5rem);
  max-width: none;
  scroll-snap-align: start;
  box-sizing: border-box;
}

.shop-collection-row {
  display: grid;
  gap: 0.45rem;
}

.shop-collection-row-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}

.shop-collection-row-head h3 {
  margin: 0;
  font-size: 1.05rem;
  letter-spacing: -0.02em;
}

.shop-collection-nav {
  display: none;
  align-items: center;
  gap: 0.35rem;
  flex: 0 0 auto;
}

.shop-collection-arrow {
  width: 2.15rem;
  height: 2.15rem;
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #fff;
  color: var(--ink, #111);
  box-shadow: 0 1px 2px rgba(18, 18, 18, 0.06);
  cursor: pointer;
  padding: 0;
  font-size: 1.35rem;
  line-height: 1;
  transition: background 140ms ease, border-color 140ms ease, opacity 140ms ease;
}

.shop-collection-arrow span {
  display: block;
  transform: translateY(-0.05em);
}

.shop-collection-arrow:hover:not(:disabled) {
  border-color: color-mix(in srgb, var(--ink, #111) 28%, var(--border));
  background: color-mix(in srgb, var(--mist, #f5f4f2) 55%, #fff);
}

.shop-collection-arrow:disabled {
  opacity: 0.35;
  cursor: default;
}

@media (hover: hover) and (pointer: fine) {
  .shop-collection-nav {
    display: inline-flex;
  }
}

.shop-collection-viewport {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
  scroll-snap-type: x proximity;
  scrollbar-width: none;
  background: transparent;
  border: none;
  border-radius: 0;
  padding: 0.15rem 0 0.35rem;
  margin: 0 -0.15rem;
  /* pan-x alone blocks vertical page scroll when a gesture starts on a row.
     Allow pan-y so users can scroll down through multiple collection rows. */
  touch-action: pan-x pan-y;
}

.shop-collection-viewport::-webkit-scrollbar {
  display: none;
  width: 0;
  height: 0;
}

.shop-collection-track {
  display: flex;
  gap: 0.75rem;
  width: max-content;
  padding: 0.15rem 0.15rem 0.25rem;
  align-items: stretch;
}

.shop-collection-card {
  flex: 0 0 auto;
  width: var(--ps-card-width, 9.5rem);
  height: 100%;
  display: grid;
  grid-template-rows: auto 1fr;
  gap: 0.45rem;
  padding: var(--ps-card-padding, 0);
  border-radius: var(--ps-card-radius, 0);
  background: var(--ps-card-bg, transparent);
  border: var(--ps-card-border, none);
  box-shadow: var(--ps-card-shadow, none);
  scroll-snap-align: start;
  box-sizing: border-box;
}

.shop-collection-card-media {
  aspect-ratio: var(--ps-media-aspect, 1);
  width: 100%;
  border-radius: var(--ps-media-radius, 14px);
  overflow: hidden;
  background: var(--mist, #f5f4f2);
  display: grid;
  place-items: center;
  font-weight: 700;
  color: var(--muted);
  box-shadow: var(--ps-media-shadow, 0 8px 22px rgba(18, 18, 18, 0.08));
}

.shop-collection-card-media .shop-menu-media-btn,
.shop-collection-card-media .shop-menu-fallback {
  width: 100%;
  height: 100%;
  border-radius: inherit;
}

.shop-collection-card-media .shop-menu-media-btn img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.shop-collection-card-copy {
  display: grid;
  grid-template-rows: minmax(calc(1.25em * 2), auto) auto auto;
  gap: 0.25rem;
  align-content: start;
  min-height: 5.6rem;
}

.shop-collection-card-copy h4 {
  margin: 0;
  font-size: var(--ps-title-size, 0.86rem);
  line-height: 1.25;
  min-height: calc(1.25em * 2);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.shop-collection-card-copy strong {
  font-size: var(--ps-price-size, 0.84rem);
}

.shop-collection-card-copy .shop-add-btn {
  width: 100%;
  min-height: 2rem;
  padding: 0.35rem 0.5rem;
  font-size: 0.8rem;
}

@keyframes shop-collection-search-bounce {
  0%,
  100% {
    transform: translateY(0) scale(1);
  }
  18% {
    transform: translateY(-12px) scale(1.06);
  }
  36% {
    transform: translateY(0) scale(1);
  }
  54% {
    transform: translateY(-7px) scale(1.03);
  }
  72% {
    transform: translateY(0) scale(1);
  }
}

.shop-collection-card.is-search-hit {
  position: relative;
  z-index: 3;
  animation: shop-collection-search-bounce 0.95s cubic-bezier(0.34, 1.4, 0.64, 1);
  filter: drop-shadow(0 10px 18px rgba(18, 18, 18, 0.18));
}

@media (prefers-reduced-motion: reduce) {
  .shop-collection-card.is-search-hit {
    animation: none;
    outline: 2px solid color-mix(in srgb, var(--ink, #111) 55%, transparent);
    outline-offset: 3px;
  }
}

.catalogue-collections-panel {
  display: grid;
  gap: 0.85rem;
  width: 100%;
  max-width: min(760px, 100%);
  margin-inline: auto;
}

.catalogue-collections-list {
  display: grid;
  gap: 0.65rem;
  justify-items: stretch;
}

.catalogue-collection-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.85rem 0.95rem;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: #fff;
}

.catalogue-collection-card h4 {
  margin: 0 0 0.2rem;
}

.catalogue-collection-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.catalogue-collection-form {
  display: grid;
  gap: 0.85rem;
  padding: 1rem;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: color-mix(in srgb, var(--mist, #f5f4f2) 55%, #fff);
  width: 100%;
  max-width: min(680px, 100%);
  margin-inline: auto;
  box-sizing: border-box;
}

.catalogue-collection-form.hidden {
  display: none;
}

.catalogue-collection-items {
  border: 0;
  margin: 0;
  padding: 0;
}

.catalogue-collection-items legend {
  font-weight: 700;
  margin-bottom: 0.25rem;
}

.catalogue-collection-item-picker {
  display: grid;
  gap: 0.4rem;
  max-height: 16rem;
  overflow: auto;
  margin-top: 0.5rem;
}

.catalogue-collection-pick {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 0.55rem;
  align-items: center;
  padding: 0.55rem 0.65rem;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
}

.catalogue-collection-pick span {
  min-width: 0;
}

.shop-category-chips::-webkit-scrollbar {
  display: none;
}

.shop-chip {
  flex: 0 0 auto;
  border: 1px solid var(--border);
  background: #fff;
  color: var(--text);
  border-radius: 999px;
  padding: 6px 11px;
  font: inherit;
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  box-shadow: var(--shadow);
}

.shop-chip:hover {
  background: var(--mist);
}

.shop-chip.active {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
  box-shadow: none;
}

.shop-menu-list,
.shop-menu-results.shop-menu-layout-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.shop-menu-results.shop-menu-layout-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 12px;
  align-items: stretch;
  justify-content: stretch;
  width: 100%;
}

/* Floating storefront tiles — fill the row (Collections keep their own carousel) */
#shop-grid.ps-floating,
#shop-grid.ps-floating.shop-menu-layout-grid,
#shop-grid.ps-floating.shop-menu-layout-list,
#shop-grid.ps-floating.shop-menu-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 0.75rem;
  justify-content: stretch;
  align-items: start;
  width: 100%;
}

#shop-grid.ps-floating .shop-menu-item,
#shop-grid.ps-floating.shop-menu-layout-grid .shop-menu-item,
#shop-grid.ps-floating.shop-menu-layout-list .shop-menu-item {
  grid-template-columns: 1fr;
  grid-template-rows: auto 1fr;
  gap: 0.45rem;
  width: 100%;
  max-width: none;
  min-width: 0;
  height: auto;
  min-height: 0;
  padding: var(--ps-card-padding, 0);
  border-radius: var(--ps-card-radius, 0);
  background: var(--ps-card-bg, transparent);
  border: var(--ps-card-border, none);
  box-shadow: var(--ps-card-shadow, none);
  overflow: visible;
  box-sizing: border-box;
}

#shop-grid.ps-floating .shop-menu-item:hover {
  border-color: transparent;
  box-shadow: none;
}

#shop-grid.ps-floating .shop-menu-media,
#shop-grid.ps-floating.shop-menu-layout-grid .shop-menu-media {
  order: -1;
  width: 100%;
  height: auto;
  aspect-ratio: var(--ps-media-aspect, 1);
  border-radius: var(--ps-media-radius, 14px);
  border: 0;
  box-shadow: var(--ps-media-shadow, 0 8px 22px rgba(18, 18, 18, 0.08));
  background: var(--mist, #f5f4f2);
  overflow: hidden;
}

#shop-grid.ps-floating .shop-menu-copy,
#shop-grid.ps-floating.shop-menu-layout-grid .shop-menu-copy {
  padding: 0;
  gap: 0.25rem;
  height: auto;
  min-height: 5.6rem;
  display: grid;
  grid-template-rows: minmax(calc(1.25em * 2), auto) auto;
  align-content: start;
}

#shop-grid.ps-floating .shop-menu-copy h3,
#shop-grid.ps-floating.shop-menu-layout-grid .shop-menu-copy h3 {
  font-size: var(--ps-title-size, 0.86rem);
  line-height: 1.25;
  min-height: calc(1.25em * 2);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

#shop-grid.ps-floating .shop-menu-desc,
#shop-grid.ps-floating .shop-menu-section {
  display: none;
}

#shop-grid.ps-floating .shop-menu-foot,
#shop-grid.ps-floating.shop-menu-layout-grid .shop-menu-foot {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.25rem;
  margin-top: 0;
  align-items: stretch;
}

#shop-grid.ps-floating .shop-menu-foot strong,
#shop-grid.ps-floating.shop-menu-layout-grid .shop-menu-foot strong {
  font-size: var(--ps-price-size, 0.84rem);
}

#shop-grid.ps-floating .shop-menu-foot > span {
  display: none;
}

#shop-grid.ps-floating .shop-add-btn,
#shop-grid.ps-floating.shop-menu-layout-grid .shop-add-btn {
  width: 100%;
  min-height: 2rem;
  padding: 0.35rem 0.5rem;
  font-size: 0.8rem;
}

.shop-layout-toggle {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  flex: 0 0 auto;
  padding: 3px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--mist);
}

.shop-layout-btn {
  appearance: none;
  min-height: 30px;
  padding: 5px 10px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 0.76rem;
  font-weight: 650;
  letter-spacing: -0.01em;
  cursor: pointer;
}

.shop-layout-btn:hover {
  color: var(--text);
}

.shop-layout-btn.is-active {
  background: #fff;
  color: var(--ink);
  box-shadow: var(--shadow);
}

.shop-menu-item {
  display: grid;
  grid-template-columns: 1fr var(--ps-media-size, 88px);
  gap: 12px;
  align-items: center;
  padding: var(--ps-card-padding, 10px 12px);
  border-radius: var(--ps-card-radius, 12px);
  background: var(--ps-card-bg, #fff);
  border: var(--ps-card-border, 1px solid var(--border));
  box-shadow: var(--ps-card-shadow, var(--shadow));
  transition: border-color 160ms ease, box-shadow 160ms ease;
  min-height: calc(var(--ps-media-size, 88px) + 20px);
  box-sizing: border-box;
  width: 100%;
}

.shop-menu-layout-grid .shop-menu-item {
  grid-template-columns: 1fr;
  grid-template-rows: auto 1fr;
  gap: 0;
  align-items: stretch;
  padding: 0;
  overflow: hidden;
  height: 100%;
  min-height: 0;
  width: 100%;
  box-sizing: border-box;
}

.shop-menu-item:hover {
  border-color: rgba(18, 18, 18, 0.14);
  box-shadow: var(--shadow-lift);
}

.shop-menu-copy {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.shop-menu-layout-grid .shop-menu-copy {
  padding: 8px 10px 10px;
  gap: 3px;
  flex: 1 1 auto;
  min-height: 0;
  height: 100%;
}

.shop-menu-copy h3 {
  margin: 0;
  font-size: var(--ps-title-size, 0.95rem);
  letter-spacing: -0.02em;
  color: var(--text);
}

.shop-menu-layout-grid .shop-menu-copy h3 {
  font-size: 0.86rem;
  line-height: 1.25;
  min-height: calc(1.25em * 2);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.shop-menu-desc {
  margin: 0;
  color: var(--muted);
  font-size: 0.82rem;
  line-height: 1.35;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.shop-menu-layout-grid .shop-menu-desc {
  font-size: 0.74rem;
  line-height: 1.3;
  min-height: 1.3em;
  -webkit-line-clamp: 1;
}

.shop-menu-foot {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  margin-top: 6px;
}

.shop-menu-layout-grid .shop-menu-foot {
  margin-top: auto;
  padding-top: 0;
  gap: 4px 8px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  min-height: 4.25rem;
  align-content: end;
}

.shop-menu-layout-grid .shop-menu-foot > span {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.shop-menu-layout-grid .shop-menu-foot .shop-add-btn {
  grid-column: 1 / -1;
}

.shop-menu-foot strong {
  color: var(--ink);
  font-size: var(--ps-price-size, 0.92rem);
  font-weight: 700;
}

.shop-menu-layout-grid .shop-menu-foot strong {
  font-size: 0.86rem;
}

.shop-menu-foot span {
  color: var(--muted);
  font-size: 0.76rem;
}

.shop-add-btn {
  margin-left: auto;
  min-width: 64px;
  padding: 7px 11px;
  border-radius: 10px;
  font-size: 0.82rem;
}

.shop-menu-layout-grid .shop-add-btn {
  width: 100%;
  margin-left: 0;
  min-width: 0;
  padding: 6px 8px;
  font-size: 0.78rem;
}

.shop-menu-media {
  width: var(--ps-media-size, 88px);
  height: var(--ps-media-size, 88px);
  border-radius: var(--ps-media-radius, 12px);
  overflow: hidden;
  background: linear-gradient(160deg, #fff, var(--mist));
  border: 1px solid var(--border);
}

.shop-menu-layout-grid .shop-menu-media {
  order: -1;
  width: 100%;
  height: auto;
  aspect-ratio: var(--ps-media-aspect, 4 / 3);
  border-radius: 0;
  border: 0;
  border-bottom: 1px solid var(--border);
  flex: 0 0 auto;
}

.shop-menu-media-btn {
  display: block;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: zoom-in;
}

.shop-menu-media-btn:focus-visible {
  outline: 2px solid var(--ink);
  outline-offset: 2px;
}

.shop-menu-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.menu-image-backdrop {
  background: rgba(18, 18, 18, 0.72);
  padding: 20px;
  z-index: 55;
}

.menu-image-viewer {
  width: min(720px, 100%);
  max-height: min(92vh, 900px);
  display: flex;
  flex-direction: column;
  gap: 14px;
  background: #fff;
  border-radius: 22px;
  padding: 16px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.28);
}

.menu-image-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.menu-image-toolbar h3 {
  margin: 0;
  font-size: 1.05rem;
  letter-spacing: -0.02em;
  color: var(--text);
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.menu-image-close {
  flex-shrink: 0;
  border: 1px solid var(--border);
  background: #fff;
  color: var(--ink);
  border-radius: 999px;
  padding: 8px 14px;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}

.menu-image-full {
  display: block;
  width: 100%;
  max-height: min(74vh, 720px);
  object-fit: contain;
  border-radius: 16px;
  background: linear-gradient(160deg, #f7f7f8, #ebebed);
}

.shop-menu-fallback {
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--muted);
}

.shop-empty-state {
  padding: 56px 20px;
  text-align: center;
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  background: #fff;
  color: var(--muted);
  box-shadow: var(--shadow);
}

.shop-empty-state h4 {
  margin: 0 0 6px;
  color: var(--text);
  letter-spacing: -0.02em;
}

.shop-empty-state p {
  margin: 0;
}

.shop-floating-cart {
  position: fixed;
  left: 50%;
  bottom: 20px;
  transform: translateX(-50%);
  z-index: 30;
  display: flex;
  align-items: center;
  gap: 12px;
  border: 0;
  border-radius: 999px;
  padding: 13px 20px;
  background: var(--ink);
  color: #fff;
  box-shadow: var(--shadow-lift);
  font: inherit;
  font-weight: 600;
  cursor: pointer;
  animation: shopCartIn 280ms ease;
}

@keyframes shopCartIn {
  from {
    opacity: 0;
    transform: translate(-50%, 10px);
  }
  to {
    opacity: 1;
    transform: translate(-50%, 0);
  }
}

.shop-floating-cart strong {
  color: #fff;
}

.shop-floating-cart .cart-count {
  background: rgba(255, 255, 255, 0.18);
  color: #fff;
}

@media (max-width: 960px) {
  .marketplace-split {
    grid-template-columns: 1fr;
  }

  .catalogue-editor,
  .catalogue-editor-column {
    position: static;
  }

  .media-preview-row {
    grid-template-columns: 1fr;
  }

  .media-preview-row:not(.catalogue-media-stack) .media-preview {
    width: min(100%, 160px);
    aspect-ratio: 1 / 1;
    height: auto;
  }

  .catalogue-media-stack .media-preview {
    width: min(100%, 200px);
    aspect-ratio: 1 / 1;
    height: auto;
  }

  .catalogue-price-row {
    grid-template-columns: 1fr;
  }

  .catalogue-bulk-actions {
    margin-left: 0;
    width: 100%;
  }

  .catalogue-sticky-chrome {
    position: static;
    z-index: auto;
    background: transparent;
    padding-bottom: 0;
  }

  .catalogue-item-top {
    align-items: flex-start;
  }

  .catalogue-list-header {
    align-items: flex-start;
    flex-wrap: wrap;
  }

  .catalogue-focus-form {
    max-width: none;
  }

  /* —— Mobile customer shop: free vertical space, stop chrome covering products —— */
  .app.shop-surface .main {
    padding-top: 8px;
  }

  .app.shop-surface #view-subtitle {
    display: none;
  }

  .shop-toolbar {
    position: static;
    top: auto;
    z-index: auto;
    gap: 8px;
    margin-bottom: 12px;
    padding: 8px;
  }

  .shop-menu-toolbar {
    flex-wrap: nowrap;
    gap: 6px;
    padding: 6px 8px;
    margin-bottom: 10px;
  }

  .shop-menu-toolbar .shop-layout-toggle {
    display: none;
  }

  .shop-menu-toolbar .shop-cart-btn,
  .shop-browse .shop-toolbar .shop-cart-btn {
    display: inline-flex;
    padding: 8px 12px;
    font-size: 0.84rem;
  }

  .shop-back-btn {
    padding: 8px 10px;
    font-size: 0.84rem;
  }

  .shop-search-field input {
    padding: 10px 12px;
    font-size: 0.9rem;
    border-radius: 12px;
  }

  .shop-browse-banner {
    margin: 0 0 14px;
    min-height: 132px;
    max-height: 180px;
    border-radius: 14px;
  }

  .shop-menu-banner {
    margin: 0 0 14px;
    min-height: 176px;
    border-radius: 16px;
  }

  .shop-menu-banner-cover,
  .shop-menu-banner.has-cover .shop-menu-banner-cover,
  .shop-menu-banner-cover.has-image {
    min-height: 100%;
  }

  .shop-menu-banner-body {
    grid-template-columns: auto minmax(0, 1fr);
    gap: 12px;
    min-height: 176px;
    padding: 16px 14px 14px;
  }

  .shop-menu-title {
    font-size: clamp(1.3rem, 6vw, 1.65rem);
    white-space: normal;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  .shop-menu-banner-kicker {
    font-size: 0.68rem;
  }

  .shop-menu-banner-meta {
    font-size: 0.8rem;
    -webkit-line-clamp: 2;
  }

  .shop-menu-logo {
    width: 60px;
    height: 60px;
    margin: 0;
    border-radius: 15px;
    border-width: 2px;
  }

  .shop-menu-logo img {
    padding: 4px;
  }

  .shop-menu-banner:not(.has-logo) .shop-menu-banner-body {
    grid-template-columns: minmax(0, 1fr);
  }

  .shop-category-chips {
    gap: 6px;
    margin-bottom: 10px;
  }

  .shop-store-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
  }

  .shop-store-cover {
    min-height: 112px;
    aspect-ratio: 4 / 3;
  }

  .shop-store-body {
    padding: 8px 9px 10px;
    gap: 2px;
  }

  .shop-store-name {
    font-size: 0.88rem;
  }

  .shop-store-meta,
  .shop-store-location {
    font-size: 0.72rem;
  }

  .shop-store-kind {
    top: 8px;
    left: 8px;
    padding: 3px 6px;
    font-size: 0.62rem;
  }

  .shop-menu-layout-list .shop-menu-item,
  .shop-menu-list .shop-menu-item {
    grid-template-columns: 1fr 72px;
    gap: 10px;
    padding: 10px;
  }

  .shop-menu-layout-list .shop-menu-media,
  .shop-menu-list .shop-menu-media {
    width: 72px;
    height: 72px;
  }

  .shop-menu-layout-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
  }

  #shop-grid.ps-floating,
  #shop-grid.ps-floating.shop-menu-layout-grid,
  #shop-grid.ps-floating.shop-menu-layout-list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.55rem;
    justify-content: stretch;
    width: 100%;
  }

  #shop-grid.ps-floating .shop-menu-item,
  #shop-grid.ps-floating.shop-menu-layout-grid .shop-menu-item {
    width: 100%;
    max-width: none;
    min-width: 0;
    padding: var(--ps-card-padding, 0);
  }

  #shop-grid.ps-floating .shop-menu-media,
  #shop-grid.ps-floating.shop-menu-layout-grid .shop-menu-media {
    aspect-ratio: var(--ps-media-aspect, 1);
    border-radius: var(--ps-media-radius, 14px);
    box-shadow: var(--ps-media-shadow, 0 8px 22px rgba(18, 18, 18, 0.08));
  }

  #shop-grid.ps-floating .shop-menu-copy,
  #shop-grid.ps-floating.shop-menu-layout-grid .shop-menu-copy {
    padding: 0;
  }

  .shop-menu-layout-grid .shop-menu-media {
    height: auto;
    aspect-ratio: 4 / 3;
  }

  .shop-menu-layout-grid .shop-menu-copy {
    padding: 6px 8px 8px;
    gap: 2px;
  }

  .shop-menu-layout-grid .shop-menu-copy h3 {
    font-size: 0.82rem;
  }

  .shop-menu-layout-grid .shop-menu-desc {
    -webkit-line-clamp: 1;
    font-size: 0.7rem;
  }

  .shop-menu-layout-grid .shop-menu-foot strong {
    font-size: 0.82rem;
  }

  .shop-menu-layout-grid .shop-add-btn {
    width: 100%;
    padding: 6px 8px;
    font-size: 0.76rem;
    min-height: 0;
  }

  .shop-layout-toggle {
    margin-left: auto;
  }

  .shop-add-btn {
    margin-left: 0;
  }
}

/* Native app shop/catalogue WebView — hide portal nav chrome (native tab bar is outside). */
html.native-shop-shell,
body.native-shop-shell {
  background: var(--bg, #ebe8e3);
}

body.native-shop-shell .sidebar,
body.native-shop-shell #portal-more,
body.native-shop-shell .portal-more {
  display: none !important;
}

/* Native shop WebView already has app chrome — hide duplicate portal Shop header. */
body.native-shop-shell.app.shop-surface .topbar,
body.native-shop-shell .app.shop-surface .topbar {
  display: none !important;
}

body.native-shop-shell .main {
  width: 100%;
  max-width: 100%;
  min-height: 100vh;
  min-height: 100dvh;
  padding-top: max(10px, env(safe-area-inset-top, 0px));
}

body.native-shop-shell .shop-floating-cart {
  bottom: max(16px, env(safe-area-inset-bottom, 0px));
}

body.native-shop-shell .shop-storefront {
  padding-bottom: 72px;
}

body.native-shop-shell .app {
  display: block !important;
  grid-template-columns: none !important;
  min-height: 100vh;
  min-height: 100dvh;
  padding-bottom: 0 !important;
  width: 100%;
  max-width: 100%;
}

body.native-shop-shell .auth-screen {
  /* If session injection failed, auth still fills the shell. */
  min-height: 100vh;
  min-height: 100dvh;
}

/* TuMicha Go auth WebView — same card as browser /portal/, no extra chrome. */
html.auth-only-shell,
body.auth-only-shell {
  background: var(--bg, #f3f3f4) !important;
}

body.auth-only-shell #app {
  display: none !important;
}

body.auth-only-shell .auth-screen {
  min-height: 100vh;
  min-height: 100dvh;
  padding: 16px;
  padding-bottom: max(24px, calc(16px + env(safe-area-inset-bottom, 0px)));
}

/* Hide topbar Refresh on mobile / coarse touch — pull down to refresh instead. */
@media (max-width: 900px) {
  #refresh-btn {
    display: none !important;
  }
}

@media (hover: none) and (pointer: coarse) {
  #refresh-btn {
    display: none !important;
  }
}

/* TuMicha Go app: hide topbar Refresh — pull down to refresh instead. */
body.native-bridge #refresh-btn,
html.native-bridge #refresh-btn,
body.native-shop-shell #refresh-btn,
html.native-shop-shell #refresh-btn {
  display: none !important;
}

.native-pull-refresh {
  position: fixed;
  top: max(10px, env(safe-area-inset-top, 0px));
  left: 50%;
  transform: translateX(-50%) translateY(-8px);
  z-index: 80;
  padding: 8px 14px;
  border-radius: 999px;
  background: rgba(18, 18, 18, 0.88);
  color: #fff;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s ease, transform 0.15s ease;
  box-shadow: 0 4px 16px rgba(18, 18, 18, 0.18);
}

.native-pull-refresh.is-visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* Personal Activity — compact trip cards (details open in delivery popup) */
.activity-trip-list {
  width: 100%;
  min-width: 0;
}

.activity-trip-stack {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.activity-trip-empty {
  padding: 28px 20px;
  border-radius: 18px;
  border: 1px dashed var(--border);
  background: var(--panel);
  text-align: center;
}

.activity-trip-empty strong {
  display: block;
  font-size: 1.05rem;
  letter-spacing: -0.02em;
  margin-bottom: 6px;
}

.activity-trip-empty p {
  margin: 0;
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.45;
}

.activity-trip-card {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 14px 14px 14px 16px;
  border-radius: 16px;
  border: 1px solid var(--border);
  background: var(--panel);
  box-shadow: 0 1px 2px rgba(18, 18, 18, 0.04);
  cursor: pointer;
  text-align: left;
  position: relative;
  overflow: hidden;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}

.activity-trip-card::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: rgba(18, 18, 18, 0.18);
}

.activity-trip-card--ride::before {
  background: #121212;
}

.activity-trip-card--delivery::before,
.activity-trip-card--order::before {
  background: rgba(18, 18, 18, 0.35);
}

.activity-trip-card:hover,
.activity-trip-card:focus-visible {
  border-color: rgba(18, 18, 18, 0.16);
  box-shadow: 0 6px 18px rgba(18, 18, 18, 0.08);
  outline: none;
}

.activity-trip-card:active {
  transform: scale(0.995);
}

.activity-trip-card-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.activity-trip-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.activity-trip-card-status {
  flex-shrink: 0;
}

.activity-trip-card-status .status-badge,
.activity-trip-card-status .badge {
  font-size: 0.72rem;
}

.activity-trip-card-route {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--text);
  line-height: 1.35;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.activity-trip-card-meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}

.activity-trip-card-fare {
  font-size: 0.92rem;
  letter-spacing: -0.02em;
  color: var(--ink);
}

.activity-trip-card-when {
  font-size: 0.78rem;
  color: var(--muted);
  white-space: nowrap;
}

.activity-trip-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 2px;
}

.activity-trip-chip-btn {
  min-height: 34px !important;
  padding: 6px 12px !important;
  font-size: 0.82rem !important;
  border-radius: 10px !important;
  width: auto !important;
}

.activity-trip-card-chevron {
  flex-shrink: 0;
  width: 1.25rem;
  height: 1.25rem;
  display: grid;
  place-items: center;
  color: var(--muted);
  font-size: 1.35rem;
  font-weight: 500;
  line-height: 1;
  opacity: 0.7;
}

@media (max-width: 900px) {
  .activity-trip-card {
    padding: 12px 12px 12px 14px;
    border-radius: 14px;
  }

  .activity-trip-card-route {
    font-size: 0.9rem;
  }
}

/* PayFast amount confirmation (shown before redirect) */
.payfast-confirm-modal {
  max-width: 420px;
  text-align: center;
}

.payfast-confirm-amount {
  margin: 12px 0 8px;
  font-size: 2rem;
  font-weight: 750;
  letter-spacing: -0.03em;
  color: var(--text, #2a2927);
  line-height: 1.2;
}

/* Searching-for-driver popup (Activity after paid trip) */
.searching-driver-modal {
  max-height: min(72vh, 72dvh, 520px);
}

.searching-driver-panel {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 10px;
  padding: 8px 8px 4px;
}

.searching-driver-eyebrow {
  margin: 0;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}

.searching-driver-panel h3 {
  margin: 0;
  font-size: 1.35rem;
  font-weight: 750;
  letter-spacing: -0.02em;
  color: var(--text, #2a2927);
}

.searching-driver-copy {
  margin: 0;
  max-width: 28rem;
  font-size: 0.92rem;
  line-height: 1.45;
  color: var(--muted);
}

.searching-driver-route {
  margin: 4px 0 0;
  max-width: 28rem;
  font-size: 0.84rem;
  line-height: 1.4;
  color: var(--text, #2a2927);
}

.searching-driver-radar {
  position: relative;
  width: 168px;
  height: 168px;
  margin: 10px 0 4px;
}

.searching-driver-radar-ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 2px solid rgba(42, 41, 39, 0.12);
  animation: searching-driver-pulse 2.2s ease-out infinite;
}

.searching-driver-radar-ring:nth-child(2) {
  animation-delay: 0.55s;
}

.searching-driver-radar-ring:nth-child(3) {
  animation-delay: 1.1s;
}

.searching-driver-radar-core {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 54px;
  height: 54px;
  margin: -27px 0 0 -27px;
  border-radius: 50%;
  background: var(--mist, #f3f3f4);
  border: 1px solid var(--border);
  display: grid;
  place-items: center;
  box-shadow: 0 6px 18px rgba(18, 18, 18, 0.08);
  animation: searching-driver-bob 1.6s ease-in-out infinite;
}

.searching-driver-radar-core span {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--text, #2a2927);
}

.searching-driver-dots {
  display: inline-flex;
  gap: 5px;
  align-items: center;
  min-height: 1em;
}

.searching-driver-dots i {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--text, #2a2927);
  opacity: 0.25;
  animation: searching-driver-dot 1.2s ease-in-out infinite;
}

.searching-driver-dots i:nth-child(2) {
  animation-delay: 0.2s;
}

.searching-driver-dots i:nth-child(3) {
  animation-delay: 0.4s;
}

.searching-driver-footer .sales-popup-actions {
  width: 100%;
}

.searching-driver-footer .sales-popup-action {
  width: 100%;
}

@keyframes searching-driver-pulse {
  0% {
    transform: scale(0.35);
    opacity: 0.7;
  }
  70% {
    opacity: 0.15;
  }
  100% {
    transform: scale(1);
    opacity: 0;
  }
}

@keyframes searching-driver-bob {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-4px);
  }
}

@keyframes searching-driver-dot {
  0%,
  100% {
    opacity: 0.2;
    transform: translateY(0);
  }
  50% {
    opacity: 0.85;
    transform: translateY(-2px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .searching-driver-radar-ring,
  .searching-driver-radar-core,
  .searching-driver-dots i {
    animation: none;
  }

  .searching-driver-radar-ring {
    opacity: 0.25;
  }

  .searching-driver-radar-ring:nth-child(2) {
    transform: scale(0.7);
  }

  .searching-driver-radar-ring:nth-child(3) {
    transform: scale(0.45);
  }
}

/* Shop team settings — cleaner mirror of admin Team access (isolated team-* namespace) */
.team-board.settings-card {
  padding: 16px;
}

.team-section-heading .team-heading-row,
.team-field-label-row {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  min-width: 0;
}

.team-section-heading .team-heading-row h3 {
  margin: 0;
}

.team-field-label-row .team-role-label,
.team-field-label-row .team-permission-group-title {
  margin: 0;
}

.team-info {
  position: relative;
  flex: 0 0 auto;
  display: inline-grid;
  place-items: center;
  width: 1.05rem;
  height: 1.05rem;
  margin: 0;
  padding: 0;
  border: 1px solid rgba(18, 18, 18, 0.16);
  border-radius: 999px;
  background: #fff;
  color: var(--muted);
  font: inherit;
  font-size: 0.68rem;
  font-weight: 750;
  line-height: 1;
  cursor: help;
  z-index: 2;
}

.team-info:hover,
.team-info:focus-visible,
.team-info.is-open {
  color: var(--ink);
  border-color: rgba(18, 18, 18, 0.28);
  outline: none;
}

.team-info-tooltip {
  position: fixed;
  z-index: 10060;
  max-width: min(18rem, calc(100vw - 1.25rem));
  padding: 0.55rem 0.65rem;
  border-radius: 10px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  background: #121212;
  color: #fff;
  font-family: var(--font-brand, inherit);
  font-size: 0.75rem;
  font-weight: 550;
  line-height: 1.4;
  text-align: left;
  box-shadow: 0 12px 28px rgba(18, 18, 18, 0.28);
  pointer-events: none;
}

.team-info-tooltip[hidden] {
  display: none !important;
}

.team-member-form {
  display: grid;
  gap: 0.85rem;
  margin: 0;
  width: 100%;
  max-width: none;
}

.team-member-form label {
  display: grid;
  gap: 0.3rem;
  width: 100%;
  margin: 0;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--ink);
}

.team-member-form input {
  width: 100%;
  min-width: 0;
  margin: 0;
  margin-bottom: 0;
  padding: 11px 12px;
  border-radius: 12px;
  box-sizing: border-box;
  font-weight: 500;
  background: var(--mist);
}

.team-name-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.65rem;
}

.team-role-field,
.team-permissions-panel {
  width: 100%;
}

.team-role-field {
  display: grid;
  gap: 0.4rem;
  margin-top: 0;
}

.team-role-label {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--ink);
}

.team-role-picker.account-type-tabs {
  margin: 0;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  padding: 3px;
  border-radius: 10px;
  background: var(--mist);
  border: 1px solid var(--border);
}

.team-role-btn.account-type-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  min-height: 36px !important;
  padding: 0.4rem 0.6rem !important;
  font-size: 0.84rem !important;
  font-weight: 600 !important;
  white-space: nowrap !important;
  line-height: 1.2 !important;
  transform: none !important;
}

.team-role-btn.account-type-btn.is-disabled,
.team-role-btn.account-type-btn:disabled {
  opacity: 0.42;
  cursor: not-allowed;
  transform: none !important;
}

.team-role-hint {
  margin: 0;
  font-size: 0.74rem;
  line-height: 1.35;
  color: var(--muted);
}

.team-permissions-panel {
  display: grid;
  gap: 0.45rem;
}

.team-permissions-groups {
  display: grid;
  gap: 0.7rem;
}

.team-permission-group {
  display: grid;
  gap: 0.55rem;
  padding: 0.7rem 0.75rem;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: color-mix(in srgb, var(--mist, #f5f4f2) 55%, #fff);
}

.team-permission-group-head {
  display: grid;
  gap: 0;
}

.team-permission-group-title {
  margin: 0;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--ink);
}

.team-permission-group-hint {
  display: none;
}

.team-permission-group-note {
  margin: 0;
  padding: 0.45rem 0.55rem;
  border-radius: 10px;
  background: rgba(18, 18, 18, 0.04);
  font-size: 0.72rem;
  line-height: 1.35;
  color: var(--muted);
}

.team-permissions-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.4rem;
}

.team-member-editor .team-permissions-groups {
  margin-bottom: 0;
}

.team-permission-chip {
  display: flex;
  align-items: flex-start;
  gap: 0.4rem;
  margin: 0 !important;
  padding: 0.45rem 0.55rem;
  border-radius: 9px;
  border: 1px solid var(--border);
  background: var(--panel);
  cursor: pointer;
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--ink);
}

.team-permission-chip:has(input:checked) {
  border-color: rgba(18, 18, 18, 0.24);
  background: rgba(18, 18, 18, 0.045);
  box-shadow: none;
}

.team-permission-chip input {
  margin: 0.12rem 0 0 !important;
  margin-bottom: 0 !important;
  padding: 0 !important;
  width: auto;
  min-height: auto;
  accent-color: var(--ink);
}

.team-permission-chip span {
  line-height: 1.25;
  display: grid;
  gap: 0.08rem;
  min-width: 0;
}

.team-permission-chip strong {
  font-size: inherit;
  font-weight: 600;
  color: var(--ink);
}

.team-permission-chip small {
  font-size: 0.68rem;
  font-weight: 400;
  color: var(--muted);
}

.team-invite-submit {
  width: 100%;
  max-width: none;
  margin-top: 0.15rem;
  margin-bottom: 0;
}

.team-invite-hint {
  margin: 0.15rem 0 0.65rem;
  font-size: 0.92rem;
  line-height: 1.45;
  opacity: 0.82;
}

.team-member-list {
  display: grid;
  gap: 0;
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
  background: var(--panel, #fff);
}

.team-member-list > .muted-text {
  margin: 0;
  padding: 1rem;
}

.team-member-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 0.5rem 0.75rem;
  align-items: center;
  padding: 0.65rem 0.85rem;
  border-top: 1px solid var(--border);
}

.team-member-row:first-child {
  border-top: 0;
}

.team-member-row strong,
.team-member-row small {
  display: block;
}

.team-member-row strong {
  font-size: 0.9rem;
  line-height: 1.25;
}

.team-member-row small {
  margin-top: 0.1rem;
  font-size: 0.74rem;
  line-height: 1.3;
  opacity: 0.72;
}

.team-member-meta {
  min-width: 0;
}

.team-member-perms {
  font-weight: 500 !important;
  opacity: 0.85 !important;
}

.team-member-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  justify-content: flex-end;
}

.team-member-actions .secondary-btn,
.team-member-actions .primary-btn {
  padding: 0.35rem 0.55rem;
  font-size: 0.75rem;
  min-height: 0;
  width: auto;
  max-width: none;
}

.team-member-editor {
  grid-column: 1 / -1;
  display: grid;
  gap: 0.55rem;
  padding: 0.65rem;
  border-radius: 10px;
  background: var(--mist);
  border: 1px solid var(--border);
}

@media (max-width: 720px) {
  .team-permissions-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .team-name-row {
    grid-template-columns: 1fr;
  }

  .team-member-row {
    grid-template-columns: 1fr;
    align-items: start;
  }

  .team-member-actions {
    justify-content: flex-start;
  }

  .team-permissions-grid {
    grid-template-columns: 1fr;
  }
}

/* Deliveries: Request / Delivery Live Track / History */
#deliveries-mode-tabs.account-type-tabs {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

/* Settings: Password / Logo / Operation / Verification / Security / Help */
#settings-mode-tabs.account-type-tabs {
  max-width: 760px;
  margin-inline: auto;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

#settings-mode-tabs.account-type-tabs[data-visible-count="3"] {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

#settings-mode-tabs.account-type-tabs[data-visible-count="4"] {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

#settings-mode-tabs.account-type-tabs[data-visible-count="5"] {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

#settings-mode-tabs.account-type-tabs[data-visible-count="6"] {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

#settings-mode-tabs.account-type-tabs[data-visible-count="7"] {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.branding-logo-row {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  flex-wrap: wrap;
}

.branding-logo-preview {
  flex: 0 0 auto;
  width: 88px;
  height: 88px;
  border-radius: 20px;
  overflow: hidden;
  background: var(--mist);
  border: 1px solid var(--border);
  box-shadow: 0 8px 20px rgba(18, 18, 18, 0.06);
}

.branding-logo-preview.is-empty {
  background:
    linear-gradient(145deg, #1c1c1e 0%, #3a3a3c 100%);
}

.branding-logo-preview img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.branding-logo-fields {
  flex: 1 1 220px;
  display: grid;
  gap: 10px;
  min-width: 0;
}

.verification-banner {
  margin: 0 0 14px;
  padding: 12px 14px;
  border-radius: 12px;
  background: var(--mist);
  border: 1px solid var(--border);
  color: var(--text);
  font-size: 0.92rem;
  line-height: 1.45;
}

.verification-checklist {
  margin: 0 0 16px;
  font-size: 0.9rem;
  color: var(--muted);
}

.verification-form h4 {
  margin: 18px 0 6px;
  font-size: 1rem;
}

.verification-doc-row {
  display: grid;
  gap: 8px;
  margin: 0 0 16px;
  min-width: 0;
}

.verification-doc-row label {
  margin: 0;
}

.verification-doc-row input[type="file"] {
  margin: 0;
  width: 100%;
  max-width: 100%;
}

.verification-form .doc-status {
  display: block;
  margin: 0;
  font-size: 0.82rem;
  color: var(--muted);
}

.verification-form .doc-status.uploaded {
  color: var(--success, #15803d);
  font-weight: 600;
}

/* Override settings-card label/input rules that stretch checkboxes to full width */
.settings-card label.consent-check,
.verification-form label.consent-check {
  display: flex !important;
  align-items: flex-start !important;
  gap: 12px !important;
  margin: 4px 0 18px !important;
  font-weight: 500 !important;
  line-height: 1.4;
  cursor: pointer;
}

.settings-card .consent-check input[type="checkbox"],
.verification-form .consent-check input[type="checkbox"] {
  width: 1.15rem !important;
  height: 1.15rem !important;
  min-width: 1.15rem !important;
  max-width: 1.15rem !important;
  margin: 0.2rem 0 0 !important;
  padding: 0 !important;
  border-radius: 4px !important;
  flex: 0 0 auto;
  accent-color: var(--ink, #121212);
  cursor: pointer;
}

.settings-card .consent-check .consent-check-text,
.verification-form .consent-check .consent-check-text {
  flex: 1 1 auto;
  min-width: 0;
  font-weight: 500;
  color: var(--text);
}

.settings-panel {
  min-width: 0;
}

.deliveries-new-wrap {
  margin-top: 0.25rem;
}

.deliveries-new-wrap .trip-form {
  max-width: 720px;
  margin-inline: auto;
}

#live-trip-stage.is-create-hidden {
  display: none !important;
}

/* —— Business Applications catalogue —— */
.applications-shell {
  width: 100%;
  max-width: 920px;
  margin-inline: auto;
}

.applications-shell > #applications-mode-tabs {
  margin-bottom: 1rem;
}

.applications-search {
  display: block;
  margin: 0 0 1rem;
}

.applications-search input {
  width: 100%;
  margin: 0;
  padding: 0.75rem 0.9rem;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: color-mix(in srgb, var(--panel) 88%, var(--mist, #f3f1ee));
  color: var(--text);
  font: inherit;
}

.applications-search input:focus {
  outline: 2px solid color-mix(in srgb, var(--accent, #0f766e) 45%, transparent);
  outline-offset: 1px;
}

.applications-grid {
  display: flex;
  flex-direction: column;
  gap: 0;
  justify-content: stretch;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: var(--panel);
  overflow: hidden;
}

.app-tile {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.75rem 0.85rem;
  padding: 0.7rem 0.85rem;
  border: 0;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  cursor: pointer;
  transition: background 140ms ease;
}

.app-tile:last-child {
  border-bottom: 0;
}

.app-tile:hover {
  transform: none;
  border-color: transparent;
  background: rgba(42, 41, 39, 0.035);
}

.app-tile:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--ink) 55%, transparent);
  outline-offset: -2px;
}

.app-tile.is-installed {
  background: transparent;
}

.app-tile-icon {
  width: 52px;
  height: 52px;
  border-radius: 13px;
  display: grid;
  place-items: center;
  color: #fff;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.22),
    0 1px 2px rgba(18, 18, 18, 0.08);
}

.app-tile-icon svg {
  width: 24px;
  height: 24px;
}

.app-tile-icon--shop {
  background: linear-gradient(145deg, #b45309 0%, #92400e 55%, #78350f 100%);
}

.app-tile-icon--bookings {
  background: linear-gradient(145deg, #e11d48 0%, #be123c 55%, #9f1239 100%);
}

.app-tile-icon--catalogue {
  background: linear-gradient(145deg, #7c3aed 0%, #6d28d9 55%, #5b21b6 100%);
}

.app-tile-icon--sales {
  background: linear-gradient(145deg, #ea580c 0%, #c2410c 55%, #9a3412 100%);
}

.app-tile-icon--wallet {
  background: linear-gradient(145deg, #059669 0%, #047857 55%, #065f46 100%);
}

.app-tile-icon--deliveries {
  background: linear-gradient(145deg, #0f766e 0%, #115e59 55%, #134e4a 100%);
}

.app-tile-icon--integrations {
  background: linear-gradient(145deg, #1d4ed8 0%, #1e40af 55%, #172554 100%);
}

.app-tile-icon--team {
  background: linear-gradient(145deg, #be185d 0%, #9d174d 55%, #831843 100%);
}

.app-tile-icon--print {
  background: linear-gradient(145deg, #334155 0%, #1e293b 55%, #0f172a 100%);
}

.app-tile-icon--video-adverts {
  background: linear-gradient(145deg, #b45309 0%, #92400e 55%, #78350f 100%);
}

.video-adverts-business-list {
  display: grid;
  gap: 12px;
  margin-top: 0.75rem;
}

.video-advert-business-row {
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 14px;
  padding: 14px;
  background: #fff;
  display: grid;
  gap: 10px;
}

.video-advert-business-row .checkbox-field {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin-top: 1.55rem;
}

.print-shell {
  display: grid;
  gap: 18px;
  width: 100%;
  max-width: 760px;
  min-width: 0;
  margin-inline: auto;
}

.print-shell.print-shell--wide {
  max-width: min(100%, 1240px);
}

.print-shell .settings-card {
  max-width: none;
}

.print-board-card {
  width: 100%;
}

.print-board-table {
  width: 100%;
}

.print-board-table table {
  width: 100%;
  min-width: 58rem;
}

.print-panel {
  min-width: 0;
  display: grid;
  gap: 18px;
}

.print-compose {
  display: grid;
  gap: 1.15rem;
}

.print-compose-card .settings-intro {
  margin-bottom: 4px;
}

.print-upload-card {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 0.9rem 1rem;
  padding: 1.1rem 1.15rem;
  border: 1px dashed var(--border, rgba(18, 18, 18, 0.14));
  border-radius: 14px;
  background: var(--mist, #fafafa);
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease;
}

.print-upload-card:hover,
.print-upload-card.is-dragover {
  border-color: rgba(18, 18, 18, 0.28);
  background: #f3f3f4;
}

.print-upload-card.has-file {
  border-style: solid;
  border-color: rgba(18, 18, 18, 0.2);
  background: var(--panel, #fff);
}

.print-upload-input {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
}

.print-upload-visual {
  width: 2.75rem;
  height: 2.75rem;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: var(--ink, #121212);
  background: var(--panel, #fff);
  border: 1px solid var(--border, rgba(18, 18, 18, 0.08));
}

.print-upload-visual svg {
  width: 1.35rem;
  height: 1.35rem;
}

.print-upload-copy {
  min-width: 0;
}

.print-upload-copy strong {
  display: block;
  font-size: 0.98rem;
  letter-spacing: -0.01em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.print-upload-copy p {
  margin: 0.2rem 0 0;
  font-size: 0.86rem;
}

.print-upload-card .secondary-btn {
  position: relative;
  z-index: 1;
  width: auto;
  max-width: none;
  white-space: nowrap;
}

.print-option-block {
  display: grid;
  gap: 0.45rem;
}

.print-option-label,
.print-option-group legend,
.print-location-field > span {
  display: block;
  margin: 0;
  font-size: 0.84rem;
  font-weight: 600;
  color: var(--text, #121212);
}

.print-size-tabs {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.print-size-btn {
  flex-direction: column;
  gap: 2px;
  min-height: 54px;
  padding: 8px 6px;
}

.print-size-btn-name {
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.1;
}

.print-size-btn-meta {
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--muted, #6a6a6e);
}

.print-size-btn.active .print-size-btn-meta {
  color: var(--ink, #121212);
}

.print-options-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.9rem;
}

.print-option-group {
  margin: 0;
  padding: 0;
  border: 0;
  display: grid;
  gap: 0.45rem;
  min-width: 0;
}

.print-choice-tabs {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.print-choice {
  position: relative;
  margin: 0;
  font-weight: 600;
  cursor: pointer;
}

.print-choice input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.print-location-field {
  display: grid;
  gap: 0.45rem;
  margin: 0;
}

.print-location-field select,
#print-settings-form select {
  width: 100%;
  max-width: 100%;
  margin: 0 0 16px;
  padding: 12px 14px;
  border: 1px solid var(--border, #d7e0ec);
  border-radius: 10px;
  background: #fff;
  color: var(--text, #342820);
  font: inherit;
  box-sizing: border-box;
}

.print-location-field select {
  margin-bottom: 0;
}

.print-code-chip {
  display: inline-block;
  padding: 0.15rem 0.45rem;
  border-radius: 8px;
  background: var(--mist, #fafafa);
  border: 1px solid var(--border, rgba(18, 18, 18, 0.08));
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.86rem;
  letter-spacing: 0.08em;
}

.print-release-form {
  display: grid;
  gap: 0.35rem;
}

.print-release-code-input {
  width: 100%;
  max-width: 16rem;
  margin: 0 0 0.75rem !important;
  padding: 0.9rem 1rem !important;
  font-size: 1.45rem !important;
  font-weight: 700;
  letter-spacing: 0.28em;
  text-align: center;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

.print-release-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  margin-bottom: 0.75rem;
}

.print-release-actions .primary-btn,
.print-release-actions .secondary-btn {
  width: auto;
  max-width: none;
}

.print-release-preview {
  display: grid;
  gap: 0.55rem;
  padding: 0.95rem 1rem;
  border: 1px solid var(--border, rgba(18, 18, 18, 0.08));
  border-radius: 12px;
  background: var(--mist, #fafafa);
  margin-bottom: 0.5rem;
}

.print-release-preview-title {
  margin: 0;
  font-size: 1.02rem;
  font-weight: 700;
}

.print-release-preview-meta {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.35rem;
}

.print-release-preview-meta li {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  font-size: 0.9rem;
}

.print-release-preview-meta span {
  color: var(--muted, #6a6a6e);
}

.print-quote-card {
  display: grid;
  gap: 0.45rem;
  padding: 0.95rem 1rem;
  border: 1px solid var(--border, rgba(18, 18, 18, 0.08));
  border-radius: 12px;
  background: var(--mist, #fafafa);
}

.print-quote-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  font-size: 0.92rem;
}

.print-quote-row span {
  color: var(--muted, #6a6a6e);
}

.print-quote-total {
  margin-top: 0.15rem;
  padding-top: 0.55rem;
  border-top: 1px solid var(--border, rgba(18, 18, 18, 0.08));
  font-size: 1.05rem;
}

.print-quote-detail {
  margin: 0.15rem 0 0;
  font-size: 0.84rem;
}

.print-pricing-heading {
  margin: 1rem 0 0.35rem;
  font-size: 0.95rem;
}

.print-pricing-grid {
  display: grid;
  gap: 0.85rem;
  margin: 0 0 1rem;
}

.print-pricing-size {
  display: grid;
  grid-template-columns: auto repeat(2, minmax(0, 1fr));
  gap: 0.55rem 0.75rem;
  align-items: end;
  padding: 0.85rem;
  border: 1px solid var(--border, rgba(18, 18, 18, 0.08));
  border-radius: 12px;
  background: var(--mist, #fafafa);
}

.print-pricing-size strong {
  grid-column: 1 / -1;
}

.print-pricing-size label {
  display: grid;
  gap: 0.3rem;
  margin: 0;
  font-size: 0.78rem;
  font-weight: 600;
}

.print-pricing-size input {
  margin: 0 !important;
}

@media (max-width: 720px) {
  .print-pricing-size {
    grid-template-columns: 1fr 1fr;
  }
}

.print-compose-status {
  margin: 0;
  min-height: 1.2em;
  font-size: 0.9rem;
}

.print-compose-actions {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.print-compose-actions .primary-btn {
  width: 100%;
  max-width: none;
}

.print-queue-table {
  margin-top: 0.25rem;
}

.print-queue-empty {
  margin: 0.75rem 0 0;
}

.print-settings-status {
  margin: 0 0 0.75rem;
}

.print-settings-toolbar {
  margin: 0 0 0.85rem;
}

.print-settings-toolbar .secondary-btn {
  width: auto;
  max-width: none;
}

.print-probe-list {
  display: grid;
  gap: 0.5rem;
}

.print-probe-item {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  margin: 0;
  padding: 0.7rem 0.85rem;
  border: 1px solid var(--border, rgba(18, 18, 18, 0.08));
  border-radius: 12px;
  background: var(--mist, #fafafa);
  font-size: 0.9rem;
  font-weight: 500;
  cursor: pointer;
}

.print-probe-item input {
  width: auto;
  margin: 0;
  flex: 0 0 auto;
}

.print-probe-item:has(input:checked) {
  background: var(--panel, #fff);
  border-color: rgba(18, 18, 18, 0.2);
}

.print-queue-card .table-wrap {
  overflow-x: auto;
}

.print-queue-card table {
  width: 100%;
  border-collapse: collapse;
}

.print-queue-card th,
.print-queue-card td {
  padding: 0.7rem 0.55rem;
  text-align: left;
  border-bottom: 1px solid var(--border, rgba(18, 18, 18, 0.08));
  font-size: 0.88rem;
  vertical-align: middle;
}

.print-queue-card th {
  color: var(--muted, #6a6a6e);
  font-weight: 600;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.print-queue-card .secondary-btn,
.print-queue-card .ghost-btn {
  width: auto;
  max-width: none;
  min-height: 32px;
  padding: 0.35rem 0.7rem;
  font-size: 0.8rem;
}

@media (max-width: 720px) {
  .print-options-grid {
    grid-template-columns: 1fr;
  }

  .print-upload-card {
    grid-template-columns: auto 1fr;
  }

  .print-upload-card .secondary-btn {
    grid-column: 1 / -1;
    justify-self: start;
  }

  .print-size-btn-meta {
    display: none;
  }

  .print-size-btn {
    min-height: 42px;
  }
}

.team-shell {
  display: grid;
  gap: 18px;
  width: 100%;
  max-width: 760px;
  min-width: 0;
  margin-inline: auto;
}

.team-shell .settings-card {
  max-width: none;
}

.app-tile-includes {
  list-style: none;
  margin: 0.4rem 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.28rem;
}

.app-tile-includes li {
  margin: 0;
  padding: 0.12rem 0.45rem;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  color: var(--ink);
  background: rgba(42, 41, 39, 0.06);
  border: 1px solid rgba(42, 41, 39, 0.08);
}

.app-tile-body {
  min-width: 0;
}

.app-tile-body h4 {
  margin: 0;
  font-size: 0.95rem;
  letter-spacing: -0.015em;
  line-height: 1.25;
}

.app-tile-tagline {
  margin: 0.15rem 0 0;
  font-size: 0.78rem;
  line-height: 1.35;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.app-tile--marketplace .app-tile-tagline--hook {
  font-family: var(--font-display);
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--ink);
  white-space: normal;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.app-tile--marketplace .app-tile-tagline--detail {
  margin-top: 0.08rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  color: var(--muted);
}

.app-tile-meta {
  display: none;
}

.app-tile-price {
  display: none;
}

.app-tile-status {
  display: inline-flex;
  align-items: center;
  margin-top: 0.2rem;
  font-size: 0.68rem;
  font-weight: 650;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--muted);
}

.app-tile.is-installed .app-tile-status {
  color: #15803d;
}

.app-tile-actions {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-end;
  gap: 0.35rem;
  margin-top: 0;
}

.app-tile-action {
  width: 100%;
  margin-top: 0;
  padding: 0.45rem 0.65rem;
  font-size: 0.86rem;
}

.app-get-btn {
  appearance: none;
  border: 0;
  border-radius: 999px;
  min-width: 3.4rem;
  padding: 0.38rem 0.85rem;
  background: rgba(18, 18, 18, 0.06);
  color: var(--ink);
  font: inherit;
  font-size: 0.78rem;
  font-weight: 750;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background 140ms ease, color 140ms ease;
}

.app-get-btn:hover {
  background: rgba(18, 18, 18, 0.1);
}

.app-get-btn--open {
  background: var(--ink);
  color: #fff;
}

.app-get-btn--open:hover {
  background: color-mix(in srgb, var(--ink) 88%, #fff);
}

.app-get-btn.danger-btn,
.app-get-btn.app-get-btn--danger {
  background: rgba(185, 28, 28, 0.08);
  color: #b91c1c;
}

.app-get-btn.danger-btn:hover,
.app-get-btn.app-get-btn--danger:hover {
  background: rgba(185, 28, 28, 0.14);
}

/* —— Shared Apps-style lists (Team, Bookings, Collections, Keys, Wallet, …) —— */
.team-member-list,
.team-activity-list,
.catalogue-collections-list,
.bookings-board-list,
#api-keys-list,
.portal-list {
  display: flex;
  flex-direction: column;
  gap: 0;
  justify-content: stretch;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: var(--panel);
  overflow: hidden;
  box-shadow: none;
  padding: 0;
  margin: 0;
  list-style: none;
}

.team-activity-list {
  max-height: 520px;
  overflow-y: auto;
}

.team-member-list > .muted-text,
.team-member-list > .settings-intro,
.team-activity-list > .muted-text,
.catalogue-collections-list > .shop-empty-state,
.catalogue-collections-list > .muted-line,
.bookings-board-list > .muted-text,
#api-keys-list > .muted-text,
.portal-list > .muted-text {
  margin: 0;
  padding: 0.9rem 0.95rem;
  border: 0;
  background: transparent;
}

.team-member-row,
.team-activity-row,
.catalogue-collection-card,
.booking-board-card,
.api-key-row,
.portal-list-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.75rem 0.85rem;
  padding: 0.7rem 0.85rem;
  border: 0;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  margin: 0;
  transition: background 140ms ease;
}

.team-member-row:last-child,
.team-activity-row:last-child,
.catalogue-collection-card:last-child,
.booking-board-card:last-child,
.api-key-row:last-child,
.portal-list-row:last-child {
  border-bottom: 0;
}

.team-member-row:hover,
.team-activity-row:hover,
.catalogue-collection-card:hover,
.booking-board-card:hover,
.api-key-row:hover,
.portal-list-row:hover {
  background: rgba(42, 41, 39, 0.035);
}

.team-member-row > .app-tile-body,
.team-activity-row > .app-tile-body,
.catalogue-collection-card > .app-tile-body,
.booking-board-card > .app-tile-body,
.api-key-row > .app-tile-body,
.portal-list-row > .app-tile-body {
  min-width: 0;
}

.team-member-row .app-tile-body h4,
.team-activity-row .app-tile-body h4,
.catalogue-collection-card .app-tile-body h4,
.booking-board-card .app-tile-body h4,
.api-key-row .app-tile-body h4,
.portal-list-row .app-tile-body h4 {
  margin: 0;
  font-size: 0.95rem;
  letter-spacing: -0.015em;
  line-height: 1.25;
}

.team-member-actions,
.catalogue-collection-card-actions,
.api-key-row .app-tile-actions,
.portal-list-row .app-tile-actions {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.35rem;
  margin-top: 0;
}

.team-member-actions .secondary-btn,
.team-member-actions .primary-btn,
.catalogue-collection-card-actions .secondary-btn,
.api-key-row .secondary-btn {
  appearance: none;
  border: 0;
  border-radius: 999px;
  min-width: 3.4rem;
  min-height: 0;
  width: auto;
  max-width: none;
  padding: 0.38rem 0.85rem;
  background: rgba(18, 18, 18, 0.06);
  color: var(--ink);
  font: inherit;
  font-size: 0.78rem;
  font-weight: 750;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  box-shadow: none;
}

.team-member-actions .secondary-btn:hover,
.catalogue-collection-card-actions .secondary-btn:hover,
.api-key-row .secondary-btn:hover {
  background: rgba(18, 18, 18, 0.1);
}

.team-member-actions .primary-btn {
  background: var(--ink);
  color: #fff;
}

.team-member-actions .danger-btn,
.catalogue-collection-card-actions .danger-btn,
.api-key-row .danger-btn {
  background: rgba(185, 28, 28, 0.08);
  color: #b91c1c;
}

.team-member-editor {
  grid-column: 1 / -1;
}

.bookings-board-list {
  display: flex !important;
  flex-direction: column;
  gap: 0;
  padding: 0 !important;
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 16px;
  overflow: hidden;
}

.catalogue-collections-list {
  display: flex !important;
  flex-direction: column;
  gap: 0 !important;
  justify-items: stretch;
}

.catalogue-item-list {
  box-shadow: none;
}

.booking-board-meta {
  display: block;
  margin-top: 0.2rem;
  font-size: 0.68rem;
  font-weight: 650;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--muted);
}

.booking-board-customer {
  margin: 0.15rem 0 0;
  font-size: 0.78rem;
  line-height: 1.35;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.app-about-modal {
  display: grid;
  gap: 0.75rem;
  font-family: var(--font-brand);
}

.app-about-hero {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.app-about-hero .app-tile-icon {
  width: 48px;
  height: 48px;
  flex: 0 0 auto;
  border-radius: 14px;
}

.app-about-hero .app-tile-icon svg {
  width: 22px;
  height: 22px;
}

.app-about-hero-copy {
  min-width: 0;
}

.app-about-status-inline {
  margin: 0;
  font-family: var(--font-brand);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--muted);
}

.app-about-tagline {
  margin: 0.15rem 0 0;
  font-family: var(--font-brand);
  font-weight: 600;
  font-size: 0.88rem;
  line-height: 1.35;
  color: var(--muted);
}

.app-about-pitch {
  margin: 0;
  padding: 0.8rem 0.9rem;
  border-radius: 14px;
  background:
    linear-gradient(160deg, rgba(18, 18, 18, 0.045), rgba(18, 18, 18, 0.01)),
    var(--mist);
  border: 1px solid rgba(18, 18, 18, 0.08);
}

.app-about-pitch-hook {
  margin: 0;
  font-family: var(--font-brand);
  font-size: 0.98rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.3;
  color: var(--ink);
}

.app-about-pitch-points {
  margin: 0.55rem 0 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.app-about-pitch-points li {
  position: relative;
  padding-left: 1.05rem;
  font-family: var(--font-brand);
  font-size: 0.88rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.35;
  color: var(--ink);
}

.app-about-pitch-points li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.45em;
  width: 0.4rem;
  height: 0.4rem;
  border-radius: 999px;
  background: var(--ink);
}

.app-about-description {
  margin: 0;
  font-family: var(--font-brand);
  color: var(--muted);
  line-height: 1.45;
  font-size: 0.9rem;
  font-weight: 500;
}

.app-about-section h4 {
  margin: 0 0 0.4rem;
  font-family: var(--font-brand);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}

.app-about-bundle {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.app-about-bundle--compact {
  gap: 0.3rem;
}

.app-about-bundle--compact .app-about-module {
  padding: 0.4rem 0.55rem;
  border-radius: 10px;
}

.app-about-bundle--compact .app-about-module .app-tile-icon {
  width: 30px;
  height: 30px;
  border-radius: 8px;
}

.app-about-bundle--compact .app-about-module .app-tile-icon svg {
  width: 15px;
  height: 15px;
}

.app-about-bundle--compact .app-about-module-copy strong {
  font-size: 0.86rem;
}

.app-about-bundle--compact .app-about-module-copy small {
  font-size: 0.74rem;
}

.app-about-module {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 0.7rem;
  padding: 0.55rem 0.65rem;
  border-radius: 12px;
  border: 1px solid var(--border);
  background: var(--mist, rgba(42, 41, 39, 0.03));
}

.app-about-module .app-tile-icon {
  width: 36px;
  height: 36px;
  border-radius: 10px;
}

.app-about-module .app-tile-icon svg {
  width: 18px;
  height: 18px;
}

.app-about-module-copy {
  min-width: 0;
  display: grid;
  gap: 0.08rem;
}

.app-about-module-copy strong {
  font-family: var(--font-brand);
  font-size: 0.9rem;
  font-weight: 700;
  letter-spacing: -0.015em;
}

.app-about-module-copy small {
  font-family: var(--font-brand);
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 500;
  line-height: 1.3;
}

.app-about-pricing {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.45rem;
}

.app-about-pricing > div {
  display: grid;
  gap: 0.12rem;
  padding: 0.55rem 0.65rem;
  border-radius: 10px;
  border: 1px solid var(--border);
  background: var(--mist, rgba(42, 41, 39, 0.04));
}

.app-about-pricing strong {
  font-family: var(--font-brand);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}

.app-about-pricing span {
  font-family: var(--font-brand);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.app-about-billing-note {
  margin: 0.4rem 0 0;
  font-family: var(--font-brand);
  font-size: 0.78rem;
  font-weight: 500;
  line-height: 1.35;
  color: var(--muted);
}

.app-about-actions {
  display: grid;
  gap: 0.4rem;
}

.app-about-actions .app-tile-action {
  width: 100%;
}

.applications-bank-hint {
  margin: 0.75rem 0 0;
  line-height: 1.45;
}

.billing-card-form {
  display: grid;
  gap: 0.85rem;
  margin-top: 0.35rem;
}

.billing-card-form .field {
  display: grid;
  gap: 0.35rem;
}

.billing-card-form .field span {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--muted, #667085);
}

.billing-card-form input {
  width: 100%;
  border: 1px solid rgba(15, 23, 42, 0.12);
  border-radius: 10px;
  padding: 0.7rem 0.85rem;
  background: #fff;
  font: inherit;
  color: inherit;
}

.billing-card-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}

.billing-card-hint {
  margin: 0;
  font-size: 0.82rem;
  line-height: 1.45;
}

@media (max-width: 640px) {
  .billing-card-row {
    grid-template-columns: 1fr;
  }
}

.billing-card-panel {
  display: grid;
  gap: 1rem;
  margin: 0 0 1.25rem;
  padding: 1rem 1.1rem;
  border: 1px solid var(--border);
  border-radius: 16px;
  background:
    radial-gradient(120% 90% at 0% 0%, color-mix(in srgb, var(--ink, #121212) 6%, transparent), transparent 55%),
    var(--panel);
  box-shadow: var(--shadow);
}

.billing-card-copy h4 {
  margin: 0 0 0.25rem;
  font-size: 1rem;
}

.billing-card-copy p {
  margin: 0;
  max-width: 36rem;
  line-height: 1.45;
}

.billing-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.applications-empty {
  margin-top: 1rem;
}

.integrations-locked .primary-btn {
  margin-top: 1rem;
}

@media (max-width: 640px) {
  .applications-grid {
    border-radius: 14px;
  }

  .app-tile {
    padding: 0.65rem 0.75rem;
    gap: 0.65rem 0.7rem;
  }

  .app-tile-icon {
    width: 46px;
    height: 46px;
    border-radius: 12px;
  }

  .app-tile-icon svg {
    width: 22px;
    height: 22px;
  }

  .app-tile-body h4 {
    font-size: 0.9rem;
  }

  .app-get-btn {
    min-width: 3.1rem;
    padding: 0.34rem 0.75rem;
    font-size: 0.72rem;
  }
}

.team-shell {
  display: grid;
  gap: 1rem;
}

.team-shell .section-heading {
  margin: 0 0 12px;
}

.team-shell .section-heading h3 {
  margin: 0;
  font-size: 1.05rem;
  letter-spacing: -0.02em;
  color: var(--ink, var(--text));
}

.team-shell .section-heading p {
  margin: 4px 0 0;
  color: var(--muted);
  font-size: 0.9rem;
}

.team-activity-list {
  display: grid;
  gap: 0;
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
  background: var(--panel, #fff);
  max-height: 520px;
  overflow-y: auto;
}

.team-activity-list > .muted-text {
  margin: 0;
  padding: 0.9rem 1rem;
}

.team-activity-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.35rem 0.75rem;
  padding: 0.55rem 0.85rem;
  border-top: 1px solid var(--border);
}

.team-activity-row:first-child {
  border-top: 0;
}

.team-activity-row strong {
  display: block;
  font-size: 0.84rem;
  font-weight: 600;
  line-height: 1.3;
}

.team-activity-row small {
  display: block;
  margin-top: 0.12rem;
  font-size: 0.72rem;
  line-height: 1.3;
  color: var(--muted);
}

.team-activity-time {
  font-size: 0.7rem;
  color: var(--muted);
  white-space: nowrap;
  padding-top: 0.1rem;
}

@media (max-width: 640px) {
  .team-activity-row {
    grid-template-columns: 1fr;
  }
}

/* Business portal — landing ribbon at page top + push apps drawer */
body.portal-app.business-drawer-nav .app,
body.portal-app .app.business-drawer-nav {
  --portal-drawer-width: min(20rem, 86vw);
  --portal-sidebar-width: 0px;
  --header-h: calc(72px + env(safe-area-inset-top, 0px));
  display: grid;
  grid-template-columns: var(--portal-sidebar-width) minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1fr);
  transition: grid-template-columns 220ms ease;
  min-height: 100vh;
  min-height: 100dvh;
}

body.portal-app.business-drawer-nav.nav-drawer-open .app,
body.portal-app.business-drawer-nav .app.nav-drawer-open,
body.portal-app.nav-drawer-open.business-drawer-nav .app,
body.portal-app .app.business-drawer-nav.nav-drawer-open {
  --portal-sidebar-width: var(--portal-drawer-width);
}

body.portal-app.business-drawer-nav #nav-drawer-fab,
body.portal-app .app.business-drawer-nav #nav-drawer-fab,
body.portal-app.business-drawer-nav #nav-more-btn,
body.portal-app .app.business-drawer-nav #nav-more-btn,
body.portal-app.business-drawer-nav .business-home-btn,
body.portal-app.business-drawer-nav #home-view {
  display: none !important;
}

body.portal-app.business-drawer-nav .portal-top-ribbons,
body.portal-app .app.business-drawer-nav .portal-top-ribbons {
  grid-column: 1 / -1;
  grid-row: 1;
  order: 0;
}

body.portal-app.business-drawer-nav .main,
body.portal-app .app.business-drawer-nav .main {
  grid-column: 2;
  grid-row: 2;
  width: auto;
  max-width: 100%;
  min-width: 0;
  min-height: 0;
  flex: unset;
}

/* Apps drawer available at all widths for business */
body.portal-app.business-drawer-nav .nav-drawer-toggle,
body.portal-app .app.business-drawer-nav .nav-drawer-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 2.5rem;
  height: 2.5rem;
  margin: 0;
  padding: 0;
  border: 1px solid rgba(245, 245, 246, 0.2);
  border-radius: 12px;
  background: rgba(245, 245, 246, 0.08);
  color: #f5f5f6;
  box-shadow: none;
  cursor: pointer;
}

body.portal-app.business-drawer-nav .nav-drawer-backdrop,
body.portal-app .app.business-drawer-nav .nav-drawer-backdrop,
body.portal-app.business-drawer-nav .nav-drawer-fab,
body.portal-app .app.business-drawer-nav .nav-drawer-fab {
  display: none !important;
  grid-column: 1;
  grid-row: 1;
  width: 0;
  height: 0;
  margin: 0;
  padding: 0;
  border: 0;
  overflow: hidden;
  pointer-events: none;
}

body.portal-app.business-drawer-nav #portal-sidebar,
body.portal-app .app.business-drawer-nav #portal-sidebar {
  --sidebar-pad-x: 14px;
  position: relative;
  top: auto;
  left: auto;
  right: auto;
  bottom: auto;
  grid-column: 1;
  grid-row: 2;
  z-index: 5;
  width: var(--portal-drawer-width);
  max-width: none;
  height: auto;
  max-height: none;
  min-width: 0;
  min-height: 0;
  align-self: stretch;
  overflow-x: hidden;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  -ms-overflow-style: none;
  flex-direction: column;
  gap: 6px;
  padding: 16px var(--sidebar-pad-x) calc(16px + env(safe-area-inset-bottom, 0px));
  border-right: 1px solid rgba(18, 18, 18, 0.08) !important;
  border-top: none !important;
  border-bottom: none !important;
  border-top-right-radius: 0;
  background:
    linear-gradient(180deg, #ffffff 0%, #fafafa 48%, #f7f7f8 100%) !important;
  box-shadow: none;
  transform: none;
  transition: none;
  overscroll-behavior: contain;
}

body.portal-app.business-drawer-nav.nav-drawer-open #portal-sidebar,
body.portal-app.nav-drawer-open.business-drawer-nav #portal-sidebar,
body.portal-app .app.business-drawer-nav.nav-drawer-open #portal-sidebar,
body.portal-app .app.nav-drawer-open.business-drawer-nav #portal-sidebar {
  transform: none;
}

body.portal-app.business-drawer-nav .sidebar-brand,
body.portal-app.business-drawer-nav .sidebar-brand.brand-banner {
  display: block !important;
  margin: -16px calc(-1 * var(--sidebar-pad-x)) 8px;
}

body.portal-app.business-drawer-nav .nav-primary {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 2px;
  margin: 0;
  padding: 4px 0 8px;
  flex: 1 1 auto;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

body.portal-app.business-drawer-nav .nav-primary::-webkit-scrollbar {
  display: none;
  width: 0;
  height: 0;
}

body.portal-app.business-drawer-nav .nav-group {
  flex: 0 0 auto;
  min-width: 0;
  width: 100%;
}

/* Parents only in the apps drawer — subtabs stay inside each app. */
body.portal-app.business-drawer-nav .nav-group-children,
body.portal-app.business-drawer-nav .nav-group.is-open > .nav-group-children,
body.portal-app.business-drawer-nav .nav-group-chevron {
  display: none !important;
}

body.portal-app.business-drawer-nav #nav-applications .nav-label-full,
body.portal-app.business-drawer-nav #nav-deliveries .nav-label-full,
body.portal-app.business-drawer-nav #nav-integrations .nav-label-full,
body.portal-app.business-drawer-nav #nav-team .nav-label-full,
body.portal-app.business-drawer-nav #nav-sell-products .nav-label-full,
body.portal-app.business-drawer-nav #nav-sell-services .nav-label-full {
  display: inline;
}

body.portal-app.business-drawer-nav #nav-applications .nav-label-short,
body.portal-app.business-drawer-nav #nav-deliveries .nav-label-short,
body.portal-app.business-drawer-nav #nav-integrations .nav-label-short,
body.portal-app.business-drawer-nav #nav-team .nav-label-short,
body.portal-app.business-drawer-nav #nav-sell-products .nav-label-short,
body.portal-app.business-drawer-nav #nav-sell-services .nav-label-short {
  display: none;
}

body.portal-app.business-drawer-nav #portal-more,
body.portal-app.business-drawer-nav #portal-more .portal-more-panel {
  display: contents !important;
}

body.portal-app.business-drawer-nav #portal-more .portal-more-backdrop,
body.portal-app.business-drawer-nav #portal-more .portal-more-handle,
body.portal-app.business-drawer-nav #portal-more .portal-more-apps {
  display: none !important;
}

/* Pin account owners + Settings + Sign out to the bottom of the apps drawer. */
body.portal-app.business-drawer-nav #portal-sidebar-footer {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 0 0 auto;
  order: 10;
  margin-top: auto;
  padding-top: 10px;
  border-top: 1px solid rgba(18, 18, 18, 0.06);
}

body.portal-app.business-drawer-nav #portal-sidebar-footer .account-strip,
body.portal-app.business-drawer-nav #portal-sidebar-footer .nav-secondary,
body.portal-app.business-drawer-nav #portal-sidebar-footer .logout-btn {
  order: unset;
}

body.portal-app.business-drawer-nav #portal-more .account-strip {
  display: grid !important;
  order: unset;
  margin: 4px 0 0 !important;
  width: 100%;
  box-sizing: border-box;
}

body.portal-app.business-drawer-nav .nav-secondary {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 0;
  padding: 0;
  border-top: none;
}

body.portal-app.business-drawer-nav .nav-secondary .nav-btn,
body.portal-app.business-drawer-nav .logout-btn {
  width: 100%;
  justify-content: flex-start;
  text-align: left;
}

body.portal-app.business-drawer-nav .logout-btn {
  margin-top: 0;
}

.business-home-btn {
  display: inline-grid;
  place-items: center;
  width: 2.35rem;
  height: 2.35rem;
  margin: 0;
  padding: 0;
  border: 1px solid rgba(18, 18, 18, 0.1);
  border-radius: 12px;
  background: #fff;
  color: var(--ink);
  cursor: pointer;
  flex: 0 0 auto;
}

.business-home-btn.hidden {
  display: none !important;
}

.business-home-btn-icon {
  display: grid;
  place-items: center;
  width: 1.15rem;
  height: 1.15rem;
}

.business-home-btn-icon svg {
  width: 100%;
  height: 100%;
}

.topbar.is-business-home,
.topbar.is-overview {
  display: none;
}

.business-home {
  display: grid;
  gap: 1.35rem;
  max-width: 44rem;
  margin: 0 auto;
  padding: 0.35rem 0 1.5rem;
}

.business-home-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.15rem 0.75rem;
}

.business-home-tile {
  appearance: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.55rem;
  margin: 0;
  padding: 0.35rem 0.25rem;
  border: 0;
  background: transparent;
  color: var(--ink);
  cursor: pointer;
  font: inherit;
  text-align: center;
}

.business-home-tile:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--ink) 55%, transparent);
  outline-offset: 3px;
  border-radius: 14px;
}

.business-home-tile-icon {
  position: relative;
  width: 4.35rem;
  height: 4.35rem;
  border-radius: 1.2rem;
  display: grid;
  place-items: center;
  color: #fff;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.24),
    0 10px 22px rgba(18, 18, 18, 0.12);
  transition: transform 140ms ease;
}

.business-home-tile:hover .business-home-tile-icon,
.business-home-tile:active .business-home-tile-icon {
  transform: scale(0.96);
}

.business-home-tile-icon .nav-icon,
.business-home-tile-icon .portal-app-icon {
  display: grid;
  place-items: center;
  width: 1.55rem;
  height: 1.55rem;
  color: inherit;
}

.business-home-tile-icon svg {
  width: 1.55rem;
  height: 1.55rem;
}

.business-home-tile-badge {
  position: absolute;
  top: -0.25rem;
  right: -0.25rem;
  min-width: 1.15rem;
  height: 1.15rem;
  padding: 0 0.3rem;
  border-radius: 999px;
  background: #121212;
  color: #fff;
  font-size: 0.65rem;
  font-weight: 700;
  line-height: 1.15rem;
  box-shadow: 0 0 0 2px #f3f3f4;
}

.business-home-tile-label {
  font-size: 0.78rem;
  font-weight: 650;
  line-height: 1.25;
  max-width: 7.5rem;
}

@media (min-width: 901px) {
  .business-home-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1.35rem 1rem;
  }

  .business-home-tile-icon {
    width: 4.7rem;
    height: 4.7rem;
  }
}

@media (max-width: 420px) {
  .business-home-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem 0.45rem;
  }

  .business-home-tile-icon {
    width: 3.9rem;
    height: 3.9rem;
    border-radius: 1.05rem;
  }

  .business-home-tile-label {
    font-size: 0.72rem;
  }
}

/* Exact landing .site-header top ribbon (business portal) — flush to page top */
.portal-top-ribbons {
  position: sticky;
  top: 0;
  z-index: 70;
  flex: 0 0 auto;
  order: -1;
  width: 100%;
}

.business-portal-banner {
  --header-h: 72px;
  --landing-paper: #f5f5f6;
  --landing-banner-bg: rgba(12, 12, 14, 0.88);
  --landing-banner-line: rgba(245, 245, 246, 0.16);
  position: relative;
  top: auto;
  z-index: auto;
  height: auto;
  min-height: calc(var(--header-h) + env(safe-area-inset-top, 0px));
  width: 100%;
  margin: 0;
  padding-top: env(safe-area-inset-top, 0px);
  flex: 0 0 auto;
  order: 0;
  color: var(--landing-paper);
  background: var(--landing-banner-bg);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--landing-banner-line);
  box-sizing: border-box;
  overflow: visible;
}

.business-portal-banner.hidden {
  display: none !important;
}

.business-portal-banner-inner {
  display: flex;
  align-items: center;
  gap: 1rem 1.5rem;
  min-height: var(--header-h);
  height: auto;
  padding: 0.55rem 1.5rem;
  box-sizing: border-box;
}

.business-portal-banner .logo {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  text-decoration: none;
  color: var(--landing-paper);
  flex-shrink: 0;
  min-width: 0;
}

.business-portal-banner .logo img {
  width: 40px;
  height: 40px;
  border-radius: 10px !important;
  object-fit: contain;
  background: rgba(245, 245, 246, 0.08) !important;
  padding: 4px !important;
  border: 0 !important;
  box-shadow: none !important;
  flex-shrink: 0;
}

.business-portal-banner .logo > .business-portal-banner-wordmark {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 0.08rem;
  min-width: 0;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.15rem;
  letter-spacing: -0.03em;
  line-height: 1.1;
  white-space: normal;
  overflow: hidden;
}

.business-portal-banner-brand {
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

.business-portal-banner .logo-go {
  font-style: normal;
  font-weight: 600;
  opacity: 0.72;
  letter-spacing: -0.02em;
}

.business-portal-banner-portal {
  display: block;
  margin: 0;
  padding: 0;
  font-size: 0.72rem;
  font-weight: 650;
  letter-spacing: -0.01em;
  line-height: 1.15;
  opacity: 0.78;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

.business-portal-banner-tabs {
  display: flex;
  flex: 1 1 auto;
  flex-wrap: nowrap;
  align-items: center;
  align-self: stretch;
  gap: 0.15rem 0.95rem;
  min-width: 0;
  margin-left: 0.35rem;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}

.business-portal-banner-tabs.hidden {
  display: none;
}

.personal-portal-banner-tabs {
  display: none;
  flex: 0 0 auto;
  align-items: center;
  gap: 0.15rem;
  min-width: 0;
}

.personal-portal-banner-tabs.hidden {
  display: none !important;
}

.business-portal-banner-tab {
  appearance: none;
  flex: 0 0 auto;
  margin: 0;
  padding: 0.35rem 0;
  border: 0;
  background: transparent;
  color: rgba(245, 245, 246, 0.72);
  font-family: "Segoe UI", SegoeUI, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 0.84rem;
  font-weight: 400;
  letter-spacing: normal;
  line-height: 1.2;
  white-space: nowrap;
  cursor: pointer;
}

.business-portal-banner-tab:hover,
.business-portal-banner-tab:focus-visible {
  color: #ffffff;
  outline: none;
}

.business-portal-banner-tab.is-active {
  color: #ffffff;
  font-weight: 600;
}

.business-portal-banner-tab.hidden {
  display: none;
}

.business-portal-banner-logout {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  flex: 0 0 auto;
  margin-left: auto;
  padding: 0.42rem 0.9rem 0.42rem 0.72rem;
  border: 1px solid rgba(245, 245, 246, 0.12);
  border-radius: 999px;
  background: rgba(245, 245, 246, 0.08);
  color: rgba(245, 245, 246, 0.9);
  font-family: var(--font-display, "Segoe UI", SegoeUI, "Helvetica Neue", Helvetica, Arial, sans-serif);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1.2;
  white-space: nowrap;
  cursor: pointer;
  transition:
    background 160ms ease,
    border-color 160ms ease,
    color 160ms ease,
    transform 160ms ease;
}

.business-portal-banner-logout:hover,
.business-portal-banner-logout:focus-visible {
  background: rgba(245, 245, 246, 0.16);
  border-color: rgba(245, 245, 246, 0.28);
  color: #ffffff;
  outline: none;
}

.business-portal-banner-logout:active {
  transform: translateY(1px);
}

.business-portal-banner-logout-icon {
  display: inline-grid;
  place-items: center;
  width: 1rem;
  height: 1rem;
  flex: 0 0 auto;
  opacity: 0.92;
}

.business-portal-banner-logout-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

.business-portal-banner-logout-label {
  display: inline-block;
}

@media (max-width: 720px) {
  .business-portal-banner {
    height: auto;
    min-height: calc(var(--header-h) + env(safe-area-inset-top, 0px));
  }

  .business-portal-banner-inner {
    flex-wrap: nowrap;
    gap: 0.65rem 0.85rem;
    min-height: var(--header-h);
    padding: 0.45rem 0.85rem;
  }

  .business-portal-banner-tabs {
    margin-left: 0;
  }

  .business-portal-banner-logout {
    padding: 0.4rem 0.55rem;
  }

  .business-portal-banner-logout-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }

  .business-portal-banner .logo > .business-portal-banner-wordmark {
    font-size: 1.05rem;
  }

  .business-portal-banner-portal {
    font-size: 0.68rem;
  }
}

/* Business portal: top ribbon tabs, no apps sidebar/drawer. */
body.business-account:not(.business-drawer-nav) .app {
  --portal-sidebar-width: 0px;
  --header-h: calc(72px + env(safe-area-inset-top, 0px));
  display: flex;
  flex-direction: column;
  grid-template-columns: none;
  min-height: 100vh;
  min-height: 100dvh;
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
}

body.business-account:not(.business-drawer-nav) .portal-top-ribbons {
  order: -1;
  width: 100%;
}

body.business-account:not(.business-drawer-nav) #portal-sidebar,
body.business-account:not(.business-drawer-nav) .nav-drawer-toggle,
body.business-account:not(.business-drawer-nav) .nav-drawer-fab,
body.business-account:not(.business-drawer-nav) .nav-drawer-backdrop,
body.business-account:not(.business-drawer-nav) #nav-more-btn,
body.business-account:not(.business-drawer-nav) .business-home-btn,
body.business-account:not(.business-drawer-nav) #home-view {
  display: none !important;
}

body.business-account:not(.business-drawer-nav) .main {
  width: 100%;
  max-width: 100%;
  grid-column: auto;
  flex: 1 1 auto;
  min-width: 0;
}

body.business-account:not(.business-drawer-nav) .business-portal-banner-tabs:not(.hidden) {
  display: flex;
  flex: 1 1 auto;
  min-width: 0;
  margin-left: 0.35rem;
}

body.business-account:not(.business-drawer-nav) .business-portal-banner-logout:not(.hidden) {
  margin-left: 0.55rem;
}

@media (max-width: 900px) {
  body.business-account:not(.business-drawer-nav) .app {
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }

  body.business-account:not(.business-drawer-nav) .business-portal-banner-inner {
    gap: 0.55rem 0.75rem;
  }

  body.business-account:not(.business-drawer-nav) .business-portal-banner-tabs:not(.hidden) {
    margin-left: 0;
  }
}

/* Personal desktop: top ribbon tabs, no apps sidebar. */
@media (min-width: 901px) {
  body.personal-account:not(.business-drawer-nav) .app {
    --portal-sidebar-width: 0px;
    display: flex;
    flex-direction: column;
    grid-template-columns: none;
    min-height: 100vh;
    min-height: 100dvh;
  }

  body.personal-account:not(.business-drawer-nav) .portal-top-ribbons {
    order: -1;
  }

  body.personal-account:not(.business-drawer-nav) .business-portal-banner:not(.hidden) {
    display: block;
    --landing-paper: #17171a;
    --landing-banner-bg: #f2f2f4;
    --landing-banner-line: rgba(18, 18, 18, 0.1);
    color: var(--landing-paper);
    background: var(--landing-banner-bg);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  body.personal-account:not(.business-drawer-nav) .business-portal-banner-portal {
    display: none;
  }

  body.personal-account:not(.business-drawer-nav) .business-portal-banner .logo img {
    display: none !important;
  }

  /* Desktop personal: TuMicha Go wordmark only on Shop; tabs stay on every view. */
  body.personal-account:not(.business-drawer-nav):not(.shop-surface) .business-portal-banner .logo {
    display: none !important;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .business-portal-banner .logo {
    display: flex;
    gap: 0;
    color: inherit;
  }

  body.personal-account:not(.business-drawer-nav) .business-portal-banner-brand,
  body.personal-account:not(.business-drawer-nav) .business-portal-banner .logo-go {
    color: inherit;
  }

  body.personal-account:not(.business-drawer-nav) .nav-drawer-toggle {
    border-color: rgba(18, 18, 18, 0.12);
    background: rgba(18, 18, 18, 0.04);
    color: #17171a;
  }

  body.personal-account:not(.business-drawer-nav) #portal-sidebar,
  body.personal-account:not(.business-drawer-nav) .nav-drawer-toggle,
  body.personal-account:not(.business-drawer-nav) .nav-drawer-fab,
  body.personal-account:not(.business-drawer-nav) .nav-drawer-backdrop {
    display: none !important;
  }

  body.personal-account:not(.business-drawer-nav) .main {
    width: 100%;
    max-width: 100%;
    grid-column: auto;
    flex: 1 1 auto;
    min-width: 0;
  }

  body.personal-account:not(.business-drawer-nav) .business-portal-banner-tabs:not(.hidden) {
    display: flex;
    flex: 1 1 auto;
    min-width: 0;
  }

  body.personal-account:not(.business-drawer-nav) .personal-portal-banner-tabs:not(.hidden) {
    display: inline-flex;
    align-items: center;
    align-self: stretch;
    gap: 0.15rem;
    flex: 0 0 auto;
    min-width: 0;
    margin-left: 0;
  }

  body.personal-account:not(.business-drawer-nav)
    .banner-shop-tools.hidden
    + .personal-portal-banner-tabs:not(.hidden) {
    margin-left: auto;
  }

  body.personal-account:not(.business-drawer-nav) .business-portal-banner-logout:not(.hidden) {
    margin-left: 0.55rem;
  }

  body.personal-account:not(.business-drawer-nav) .personal-portal-banner-tab {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.18rem;
    min-width: 3.4rem;
    padding: 0.2rem 0.45rem;
    color: rgba(23, 23, 26, 0.58);
  }

  body.personal-account:not(.business-drawer-nav) .personal-portal-banner-tab:hover,
  body.personal-account:not(.business-drawer-nav) .personal-portal-banner-tab:focus-visible {
    color: #17171a;
  }

  body.personal-account:not(.business-drawer-nav) .personal-portal-banner-tab.is-active {
    color: #17171a;
  }

  body.personal-account:not(.business-drawer-nav) .personal-portal-banner-tab-icon {
    display: inline-grid;
    place-items: center;
    width: 1.35rem;
    height: 1.35rem;
  }

  body.personal-account:not(.business-drawer-nav) .personal-portal-banner-tab-icon svg {
    width: 100%;
    height: 100%;
    display: block;
  }

  body.personal-account:not(.business-drawer-nav) .personal-portal-banner-tab-label {
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: -0.01em;
    line-height: 1.1;
  }

  body.personal-account:not(.business-drawer-nav) .personal-portal-banner-tab.is-active .personal-portal-banner-tab-label {
    font-weight: 700;
  }

  body.personal-account:not(.business-drawer-nav) .business-portal-banner-logout:not(.hidden) {
    margin-left: 0.55rem;
    border-color: rgba(18, 18, 18, 0.12);
    background: rgba(18, 18, 18, 0.05);
    color: #17171a;
  }

  body.personal-account:not(.business-drawer-nav) .business-portal-banner-logout:hover,
  body.personal-account:not(.business-drawer-nav) .business-portal-banner-logout:focus-visible {
    background: rgba(18, 18, 18, 0.1);
    border-color: rgba(18, 18, 18, 0.2);
    color: #111114;
  }

  body.personal-account.shop-ribbon-desktop .banner-shop-search-field input {
    border-color: rgba(18, 18, 18, 0.14);
    background: rgba(18, 18, 18, 0.04);
    color: #17171a;
  }

  body.personal-account.shop-ribbon-desktop .banner-shop-search-field input::placeholder {
    color: rgba(23, 23, 26, 0.45);
  }

  body.personal-account.shop-ribbon-desktop .banner-shop-search-field input:focus {
    border-color: rgba(18, 18, 18, 0.28);
    background: rgba(18, 18, 18, 0.06);
  }

  body.personal-account.shop-ribbon-desktop .banner-shop-cart-btn:not(.hidden) {
    color: #17171a;
    background: rgba(18, 18, 18, 0.05);
    border-color: rgba(18, 18, 18, 0.12);
  }

  body.personal-account.shop-ribbon-desktop .banner-shop-cart-btn:hover,
  body.personal-account.shop-ribbon-desktop .banner-shop-cart-btn:focus-visible {
    background: rgba(18, 18, 18, 0.1);
    border-color: rgba(18, 18, 18, 0.22);
  }

  body.personal-account.shop-ribbon-desktop .banner-shop-cart-count:not(.hidden) {
    background: #17171a;
    color: #f5f5f6;
  }

  /* Center Shop page content under the ribbon; keep strip + cards left-aligned. */
  body.personal-account.shop-surface:not(.business-drawer-nav) .main {
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .business-workspace,
  body.personal-account.shop-surface:not(.business-drawer-nav) .business-workspace-body {
    width: 100%;
    max-width: 1320px;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) #shop-view.shop-storefront {
    width: 100%;
    max-width: 1320px;
    margin-inline: auto;
    text-align: left;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .shop-browse,
  body.personal-account.shop-surface:not(.business-drawer-nav) .shop-menu {
    width: 100%;
    margin-inline: 0;
    text-align: left;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .shop-popular {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
    text-align: left;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .shop-popular-track {
    justify-content: flex-start;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .shop-store-grid {
    width: 100%;
    justify-content: start;
    justify-items: stretch;
    gap: 14px;
  }
}

/* Desktop wide: All stores stays three storefronts per row. */
@media (min-width: 1025px) {
  body.personal-account.shop-surface:not(.business-drawer-nav) .shop-store-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Tablet portrait: about three storefronts and four menu items per row. */
@media (min-width: 701px) and (max-width: 1024px) {
  body.personal-account.shop-surface .shop-store-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
  }

  body.personal-account.shop-surface .shop-menu-results.shop-menu-layout-grid,
  body.personal-account.shop-surface #shop-grid.shop-menu-layout-grid,
  body.personal-account.shop-surface #shop-grid.ps-floating,
  body.personal-account.shop-surface #shop-grid.ps-floating.shop-menu-layout-grid,
  body.personal-account.shop-surface #shop-grid.ps-floating.shop-menu-layout-list {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
  }
}

/* Personal account: hide Personal Account subtitle on desktop ribbon. */
body.personal-account.business-drawer-nav .business-portal-banner:not(.hidden) {
  display: block;
}

body.personal-account.business-drawer-nav .business-portal-banner-portal {
  display: none;
}

/* Personal mobile: no banner chrome — centred TuMicha Go heading only on Shop. */
@media (max-width: 900px) {
  body.personal-account:not(.business-drawer-nav) .business-portal-banner {
    --header-h: 0px;
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border-bottom: 0;
    color: var(--text, #121212);
    min-height: env(safe-area-inset-top, 0px);
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .business-portal-banner {
    --header-h: 52px;
    min-height: calc(var(--header-h) + env(safe-area-inset-top, 0px));
  }

  body.personal-account:not(.business-drawer-nav) .business-portal-banner-inner {
    justify-content: center;
    min-height: 0;
    padding: 0;
    gap: 0;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .business-portal-banner-inner {
    min-height: var(--header-h);
    padding: 0.45rem 0.85rem;
    gap: 0.55rem;
  }

  body.personal-account:not(.business-drawer-nav) .nav-drawer-toggle,
  body.personal-account:not(.business-drawer-nav) .business-portal-banner-tabs,
  body.personal-account:not(.business-drawer-nav) .business-portal-banner-tab,
  body.personal-account:not(.business-drawer-nav) .business-portal-banner-logout,
  body.personal-account:not(.business-drawer-nav) .business-portal-banner .logo img,
  body.personal-account:not(.business-drawer-nav) .business-portal-banner-portal,
  body.personal-account:not(.business-drawer-nav):not(.shop-surface) .business-portal-banner .logo {
    display: none !important;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .business-portal-banner .logo {
    display: flex;
    justify-content: center;
    align-items: center;
    flex: 1 1 auto;
    width: auto;
    max-width: none;
    min-width: 0;
    gap: 0;
    color: inherit;
  }

  body.personal-account:not(.business-drawer-nav) .business-portal-banner .logo > .business-portal-banner-wordmark {
    align-items: center;
    text-align: center;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 1.15rem;
    letter-spacing: -0.03em;
    line-height: 1.1;
    overflow: visible;
  }

  body.personal-account:not(.business-drawer-nav) .business-portal-banner-brand {
    white-space: nowrap;
    overflow: visible;
    text-overflow: clip;
  }

  body.personal-account:not(.business-drawer-nav) .business-portal-banner .logo-go {
    font-style: normal;
    font-weight: 600;
    opacity: 0.72;
    letter-spacing: -0.02em;
  }

  /* Shop browse + in-shop menu: home/search/cart stay on the bottom bar; banner stays centred. */
  body.personal-account.shop-surface:not(.business-drawer-nav) .business-portal-banner-inner {
    justify-content: center;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .banner-shop-tools,
  body.personal-account.shop-surface:not(.business-drawer-nav) #banner-shop-search-btn,
  body.personal-account.shop-surface:not(.business-drawer-nav) .banner-shop-cart-btn {
    display: none !important;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .banner-shop-title {
    display: none !important;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .shop-browse .shop-toolbar--browse {
    display: none;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav) .shop-browse .shop-search-toggle {
    display: inline-grid;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav)
    .shop-browse
    .shop-toolbar--browse:not(.is-search-open)
    .shop-search-field--expandable {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
    pointer-events: none;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav).shop-search-open .shop-browse .shop-toolbar--browse {
    display: flex;
    margin: 0 0 10px;
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
    backdrop-filter: none;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav).shop-search-open .shop-browse .shop-search-toggle,
  body.personal-account.shop-surface:not(.business-drawer-nav).shop-search-open .shop-browse .shop-cart-btn {
    display: none;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav).shop-search-open
    .shop-browse
    .shop-search-field--expandable {
    position: static;
    width: auto;
    height: auto;
    margin: 0;
    padding: 0;
    overflow: visible;
    clip: auto;
    white-space: normal;
    pointer-events: auto;
    flex: 1 1 auto;
  }

  /* In-shop menu: hide the empty post-banner ribbon; search opens from the heading icon */
  body.personal-account.shop-surface:not(.business-drawer-nav) .shop-menu .shop-menu-toolbar {
    display: none;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav)
    .shop-menu
    .shop-menu-toolbar:not(.is-search-open)
    .shop-search-field--expandable {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
    pointer-events: none;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav).shop-search-open
    .shop-menu
    .shop-menu-toolbar.is-search-open {
    display: flex;
    margin: 0 0 10px;
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
    backdrop-filter: none;
    gap: 8px;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav).shop-search-open
    .shop-menu
    .shop-menu-toolbar.is-search-open
    .shop-back-btn,
  body.personal-account.shop-surface:not(.business-drawer-nav).shop-search-open
    .shop-menu
    .shop-menu-toolbar.is-search-open
    .shop-layout-toggle,
  body.personal-account.shop-surface:not(.business-drawer-nav).shop-search-open
    .shop-menu
    .shop-menu-toolbar.is-search-open
    .shop-cart-btn {
    display: none;
  }

  body.personal-account.shop-surface:not(.business-drawer-nav).shop-search-open
    .shop-menu
    .shop-menu-toolbar.is-search-open
    .shop-search-field--expandable {
    position: static;
    width: auto;
    height: auto;
    margin: 0;
    padding: 0;
    overflow: visible;
    clip: auto;
    white-space: normal;
    pointer-events: auto;
    flex: 1 1 auto;
  }
}

/* In-app section rail (former sidebar subtabs) */
.business-workspace {
  display: block;
  min-width: 0;
}

.business-workspace-body {
  min-width: 0;
}

.business-app-rail {
  display: none;
}

body.business-account.business-app-open .business-workspace {
  display: grid;
  grid-template-columns: minmax(11.5rem, 14.5rem) minmax(0, 1fr);
  gap: 1rem 1.15rem;
  align-items: start;
}

body.business-account.business-app-open .business-app-rail:not(.hidden) {
  display: grid;
  gap: 0.65rem;
  position: sticky;
  top: calc(var(--header-h, 72px) + 0.75rem);
  padding: 0.85rem 0.75rem;
  border: 1px solid rgba(18, 18, 18, 0.08);
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(18, 18, 18, 0.04);
}

.business-app-rail-title {
  margin: 0 0.2rem;
  font-size: 0.68rem;
  font-weight: 740;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--muted);
}

.business-app-rail-nav {
  display: grid;
  gap: 0.25rem;
}

.business-app-rail-btn {
  appearance: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.55rem;
  width: 100%;
  margin: 0;
  padding: 0.7rem 0.75rem;
  border: 0;
  border-radius: 12px;
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-size: 0.88rem;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
}

.business-app-rail-btn:hover {
  background: rgba(18, 18, 18, 0.04);
}

.business-app-rail-btn.active {
  background: #121212;
  color: #fff;
}

.business-app-rail-label {
  min-width: 0;
  line-height: 1.25;
}

.business-app-rail-badge {
  flex: 0 0 auto;
  min-width: 1.1rem;
  padding: 0.1rem 0.35rem;
  border-radius: 999px;
  background: rgba(18, 18, 18, 0.1);
  color: inherit;
  font-size: 0.68rem;
  font-weight: 740;
  line-height: 1.2;
  text-align: center;
}

.business-app-rail-btn.active .business-app-rail-badge {
  background: rgba(255, 255, 255, 0.18);
}

body.business-account.business-app-open #settings-mode-tabs {
  display: none !important;
}

@media (max-width: 900px) {
  body.business-account.business-app-open .business-workspace {
    grid-template-columns: minmax(0, 1fr);
  }

  body.business-account.business-app-open .main {
    padding-bottom: calc(4.75rem + env(safe-area-inset-bottom, 0px));
  }

  /* Mobile: section subtabs as a fixed bottom navigation bar. */
  body.business-account.business-app-open .business-app-rail:not(.hidden) {
    position: fixed;
    top: auto;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    z-index: 42;
    display: block;
    gap: 0;
    margin: 0;
    padding: 0.4rem 0.45rem calc(0.4rem + env(safe-area-inset-bottom, 0px));
    border: 0;
    border-top: 1px solid rgba(18, 18, 18, 0.1);
    border-radius: 0;
    background: #fff;
    box-shadow: 0 -8px 24px rgba(18, 18, 18, 0.08);
    transform: none;
    overflow: visible;
  }

  .business-app-rail-title {
    display: none;
  }

  .business-app-rail-nav {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 0.2rem;
    overflow: visible;
    padding: 0;
  }

  .business-app-rail-btn {
    flex: 1 1 0;
    min-width: 0;
    justify-content: center;
    gap: 0.2rem;
    padding: 0.55rem 0.35rem;
    border-radius: 12px;
    font-size: 0.74rem;
    font-weight: 650;
    text-align: center;
    white-space: nowrap;
  }

  .business-app-rail-label {
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .business-app-rail-badge {
    min-width: 0.95rem;
    padding: 0.05rem 0.28rem;
    font-size: 0.62rem;
  }

  .business-app-rail-more-backdrop {
    position: fixed;
    inset: 0;
    z-index: 41;
    display: none;
    margin: 0;
    padding: 0;
    border: 0;
    background: rgba(12, 12, 14, 0.48);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    cursor: pointer;
  }

  .business-app-rail-more-backdrop.is-open {
    display: block;
  }

  .business-app-rail-more-backdrop.hidden {
    display: none !important;
  }

  .business-app-rail-more {
    position: absolute;
    left: 0.55rem;
    right: 0.55rem;
    bottom: calc(100% + 0.55rem);
    display: none;
    grid-template-columns: 1fr;
    gap: 0.45rem;
    margin: 0;
    padding: 0.7rem 0.65rem 0.65rem;
    border: 1px solid rgba(18, 18, 18, 0.14);
    border-radius: 18px;
    background:
      linear-gradient(180deg, #ffffff 0%, #f7f7f8 100%);
    box-shadow:
      0 0 0 1px rgba(255, 255, 255, 0.7) inset,
      0 18px 48px rgba(18, 18, 18, 0.28),
      0 2px 8px rgba(18, 18, 18, 0.12);
    z-index: 44;
  }

  .business-app-rail-more.is-open {
    display: grid;
  }

  .business-app-rail-more.hidden {
    display: none !important;
  }

  .business-app-rail-more-title {
    margin: 0 0.35rem;
    font-size: 0.68rem;
    font-weight: 740;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--muted);
  }

  .business-app-rail-more-list {
    display: grid;
    gap: 0.3rem;
  }

  .business-app-rail-more .business-app-rail-btn {
    justify-content: flex-start;
    text-align: left;
    padding: 0.8rem 0.9rem;
    font-size: 0.9rem;
    border: 1px solid rgba(18, 18, 18, 0.08);
    background: #fff;
    box-shadow: 0 1px 2px rgba(18, 18, 18, 0.04);
  }

  .business-app-rail-more .business-app-rail-btn.active {
    border-color: transparent;
  }

  .business-app-rail-more-btn {
    flex: 0.85 1 0;
  }
}

/* ── Business Overview — advert experience ── */

body.portal-app .main > #overview-view {
  max-width: none;
  width: 100%;
  margin-inline: 0;
  padding-inline: 0;
}

/* Pull overview out of the padded main column so the banner can go edge-to-edge. */
body.portal-app.business-drawer-nav .main:has(#overview-view:not(.hidden)),
body.portal-app .app.business-drawer-nav .main:has(#overview-view:not(.hidden)) {
  padding-top: 0;
  padding-left: 0;
  padding-right: 0;
}

body.portal-app .main:has(#overview-view:not(.hidden)) > .topbar,
body.portal-app .main:has(#overview-view:not(.hidden)) > .business-workspace,
body.portal-app .main:has(#overview-view:not(.hidden)) > .admin-access-banner,
body.portal-app .main:has(#overview-view:not(.hidden)) > .test-mode-banner {
  padding-inline: 16px;
  box-sizing: border-box;
}

/* Overview sits flush under the ribbon — no topbar chrome gap. */
body.portal-app .main:has(#overview-view:not(.hidden)) > .business-workspace {
  padding-inline: 0;
}

body.portal-app .main:has(#overview-view:not(.hidden)) .business-workspace-body > .topbar {
  display: none;
}

#overview-view {
  --bo-ink: #000000;
  --bo-paper: #ffffff;
  --bo-muted: #262626;
  --bo-caption: #616161;
  --bo-teal: #0f766e;
  --bo-link: #0067b8;
  --bo-link-hover: #004a7f;
  --bo-display: "Segoe UI", SegoeUI, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --bo-body: "Segoe UI", SegoeUI, "Helvetica Neue", Helvetica, Arial, sans-serif;
  /* microsoft.com product-card tokens */
  --bo-card-bg: #ffffff;
  --bo-card-border: 0;
  --bo-card-radius: 0;
  --bo-card-shadow: rgba(0, 0, 0, 0.13) 0 3.2px 7.2px, rgba(0, 0, 0, 0.11) 0 0.6px 1.8px;
  --bo-card-shadow-hover: rgba(0, 0, 0, 0.18) 0 6px 16px, rgba(0, 0, 0, 0.14) 0 1.5px 4px;
  --bo-card-padding: 16px 18px 18px;
  --bo-media-size: 88px;
}

@keyframes boFadeUp {
  from { opacity: 0; transform: translateY(18px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes boSlideIn {
  from { opacity: 0; transform: translateX(28px); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes boOrbDrift {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(-6%, 8%) scale(1.08); }
}

@keyframes boGridShift {
  0% { background-position: 0 0; }
  100% { background-position: 48px 48px; }
}

@keyframes boPopupIn {
  from { opacity: 0; transform: translateY(16px) scale(0.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes boAppPop {
  from { opacity: 0; transform: translateY(12px) scale(0.94); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes boIconDrift {
  0%, 100% {
    transform:
      translate3d(0, 0, var(--bo-z, 0px))
      rotateX(var(--bo-rx, 12deg))
      rotateY(var(--bo-ry, -16deg))
      rotateZ(var(--bo-rz, -4deg));
  }
  50% {
    transform:
      translate3d(var(--bo-dx, 6px), var(--bo-dy, -12px), calc(var(--bo-z, 0px) + 28px))
      rotateX(calc(var(--bo-rx, 12deg) + 8deg))
      rotateY(calc(var(--bo-ry, -16deg) + 14deg))
      rotateZ(calc(var(--bo-rz, -4deg) + 3deg));
  }
}

@keyframes boOrbitPulse {
  0%, 100% { opacity: 0.55; transform: scale(1); }
  50% { opacity: 0.85; transform: scale(1.06); }
}

@keyframes boCueFade {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes boNetDraw {
  0% { stroke-dashoffset: 120; opacity: 0.25; }
  40% { opacity: 0.7; }
  100% { stroke-dashoffset: 0; opacity: 0.45; }
}

@keyframes boNetPulse {
  0%, 100% { transform: scale(1); opacity: 0.55; }
  50% { transform: scale(1.55); opacity: 1; }
}

@keyframes boLivePulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.12); opacity: 0.85; }
}

@keyframes boPhraseCycle {
  0%, 8% { opacity: 0; transform: translateY(8px); }
  12%, 20% { opacity: 1; transform: translateY(0); }
  24%, 100% { opacity: 0; transform: translateY(-6px); }
}

@keyframes boMarkIn {
  from { opacity: 0; transform: translateY(10px) scale(0.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes boDeviceBob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
}

.business-overview {
  display: grid;
  gap: 1.5rem;
  width: 100%;
  min-width: 0;
  font-family: var(--bo-body);
  color: var(--bo-ink);
  /* Atmosphere behind the glassy banner */
  background:
    linear-gradient(180deg, #eef1f2 0%, #f3f3f4 40%, #f3f3f4 100%);
  padding-bottom: 1.25rem;
}

/* True full-viewport banner width (escapes any remaining main padding). */
.bo-hero {
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(16.5rem, 24rem);
  align-items: center;
  gap: clamp(0.75rem, 2.5vw, 1.75rem);
  width: 100vw;
  max-width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  min-height: min(58vh, 28rem);
  padding: clamp(1.6rem, 4vw, 2.6rem) clamp(1.15rem, 4vw, 2.5rem) clamp(1.5rem, 3vw, 2.1rem);
  border-radius: 0;
  color: #121212;
  /* Glassy fill across the full content width */
  background: rgba(255, 255, 255, 0.38);
  backdrop-filter: blur(22px) saturate(1.35);
  -webkit-backdrop-filter: blur(22px) saturate(1.35);
  border: 0;
  border-bottom: 1px solid rgba(18, 18, 18, 0.08);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.65),
    0 12px 40px rgba(18, 18, 18, 0.06);
  animation: boFadeUp 560ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

/* Business Overview uses the advert banner as its top banner — hide the hero.
 * Navigation stays available via the top ribbon (.business-portal-banner-tabs). */
#overview-view .bo-hero {
  display: none;
}

.bo-hero-atmos {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  grid-column: 1 / -1;
  grid-row: 1;
}

.bo-hero-main {
  position: relative;
  z-index: 1;
  grid-column: 1;
  grid-row: 1;
  min-width: 0;
}

.bo-hero-tabs {
  position: relative;
  z-index: 2;
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.15rem 1.05rem;
  width: 100%;
  max-width: 100%;
  margin: 0 0 1rem;
  padding: 0 0 0.75rem;
  overflow-x: auto;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}

.bo-hero-tab {
  appearance: none;
  flex: 0 0 auto;
  margin: 0;
  padding: 0.2rem 0;
  border: 0;
  background: transparent;
  color: #262626;
  font-family: var(--bo-body);
  font-size: 0.88rem;
  font-weight: 400;
  letter-spacing: normal;
  line-height: 1.3;
  white-space: nowrap;
  cursor: pointer;
  text-decoration: none;
}

.bo-hero-tab:hover,
.bo-hero-tab:focus-visible {
  color: var(--bo-link);
  outline: none;
}

.bo-hero-tab.is-active {
  color: #000000;
  font-weight: 600;
}

.bo-hero-tab.hidden {
  display: none;
}

.bo-hero-constellation {
  position: relative;
  z-index: 1;
  grid-column: 2;
  grid-row: 1;
  display: grid;
  justify-items: stretch;
  gap: 0.7rem;
  align-self: center;
  animation: boFadeUp 720ms 140ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

/* App showcase: drift R→mid while growing, fade, then ensemble row, loop */
@keyframes boSpotlightDrift {
  0% {
    opacity: 0;
    transform: translateX(58%) scale(0.42);
  }
  14% {
    opacity: 1;
  }
  72% {
    opacity: 1;
    transform: translateX(0) scale(1.12);
  }
  100% {
    opacity: 0;
    transform: translateX(0) scale(1.24);
  }
}

.bo-app-showcase {
  position: relative;
  width: min(100%, 24rem);
  min-height: clamp(13rem, 28vw, 17.5rem);
  margin-inline: auto;
  display: grid;
  place-items: center;
  overflow: hidden;
  pointer-events: none;
}

.bo-app-spotlight,
.bo-app-ensemble {
  grid-area: 1 / 1;
  width: 100%;
}

.bo-app-spotlight {
  position: relative;
  z-index: 1;
  display: grid;
  justify-items: center;
  align-content: center;
  gap: 0.55rem;
  text-align: center;
  opacity: 0;
}

.bo-app-spotlight.is-active {
  animation: boSpotlightDrift 3.8s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.bo-app-spotlight[hidden] {
  display: none !important;
}

.bo-app-spotlight-icon,
.bo-app-spotlight .app-tile-icon {
  width: 4.25rem;
  height: 4.25rem;
  border-radius: 16px;
  font-size: 1.75rem;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.28),
    0 10px 22px rgba(18, 18, 18, 0.14),
    0 2px 4px rgba(18, 18, 18, 0.08);
}

.bo-app-spotlight-icon svg,
.bo-app-spotlight .app-tile-icon svg {
  width: 1.7rem;
  height: 1.7rem;
}

.bo-app-spotlight-name {
  margin: 0;
  font-family: var(--bo-display);
  font-size: 1.2rem;
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.15;
  color: #121212;
}

.bo-app-spotlight-fn {
  margin: 0;
  max-width: 18rem;
  font-size: 0.92rem;
  line-height: 1.4;
  color: rgba(18, 18, 18, 0.68);
}

.bo-app-ensemble {
  position: relative;
  z-index: 1;
  display: flex;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: center;
  gap: 0.55rem;
  width: max-content;
  max-width: 100%;
  margin-inline: auto;
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 280ms ease, transform 320ms cubic-bezier(0.22, 1, 0.36, 1);
}

.bo-app-ensemble.is-active {
  opacity: 1;
  transform: translateY(0);
}

.bo-app-ensemble[hidden] {
  display: none !important;
}

.bo-app-ensemble-item {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
  max-width: none;
  padding: 0;
  animation: boAppPop 420ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.bo-app-ensemble.is-active .bo-app-ensemble-item:nth-child(1) { animation-delay: 40ms; }
.bo-app-ensemble.is-active .bo-app-ensemble-item:nth-child(2) { animation-delay: 80ms; }
.bo-app-ensemble.is-active .bo-app-ensemble-item:nth-child(3) { animation-delay: 120ms; }
.bo-app-ensemble.is-active .bo-app-ensemble-item:nth-child(4) { animation-delay: 160ms; }
.bo-app-ensemble.is-active .bo-app-ensemble-item:nth-child(5) { animation-delay: 200ms; }
.bo-app-ensemble.is-active .bo-app-ensemble-item:nth-child(6) { animation-delay: 240ms; }

.bo-app-ensemble-item .app-tile-icon {
  width: 2.55rem;
  height: 2.55rem;
  border-radius: 11px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.24),
    0 6px 14px rgba(18, 18, 18, 0.12);
}

.bo-app-ensemble-item .app-tile-icon svg {
  width: 1.15rem;
  height: 1.15rem;
}

.bo-app-ensemble-label {
  display: none !important;
}

@media (max-width: 420px) {
  .bo-app-ensemble {
    gap: 0.4rem;
  }

  .bo-app-ensemble-item .app-tile-icon {
    width: 2.2rem;
    height: 2.2rem;
    border-radius: 10px;
  }

  .bo-app-ensemble-item .app-tile-icon svg {
    width: 1rem;
    height: 1rem;
  }
}

.bo-hero-constellation-cue {
  margin: 0;
  max-width: 16rem;
  text-align: center;
  justify-self: center;
  font-family: var(--bo-display);
  font-size: 0.92rem;
  font-weight: 650;
  letter-spacing: -0.02em;
  line-height: 1.3;
  color: rgba(18, 18, 18, 0.72);
  animation: boCueFade 700ms 280ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.bo-signal-rail {
  display: grid;
  gap: 0.55rem;
  justify-items: center;
  text-align: center;
  pointer-events: none;
}

.bo-signal-live {
  display: inline-flex;
  align-items: baseline;
  gap: 0.4rem;
  font-family: var(--bo-display);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--bo-teal);
}

.bo-signal-dot {
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 50%;
  background: #0f766e;
  align-self: center;
  animation: boLivePulse 1.8s ease-out infinite;
}

.bo-signal-live-sub {
  color: rgba(18, 18, 18, 0.45);
  font-weight: 650;
  letter-spacing: 0.02em;
  text-transform: none;
  font-size: 0.78rem;
}

.bo-signal-cycle {
  position: relative;
  width: 100%;
  min-height: 1.55rem;
  margin: 0.1rem 0 0.15rem;
}

.bo-signal-phrase {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  margin: 0;
  font-family: var(--bo-display);
  font-size: clamp(0.95rem, 1.6vw, 1.12rem);
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1.2;
  color: #121212;
  opacity: 0;
  animation: boPhraseCycle 21s cubic-bezier(0.22, 1, 0.36, 1) infinite;
}

.bo-signal-phrase:nth-child(1) { animation-delay: 0s; }
.bo-signal-phrase:nth-child(2) { animation-delay: 3s; }
.bo-signal-phrase:nth-child(3) { animation-delay: 6s; }
.bo-signal-phrase:nth-child(4) { animation-delay: 9s; }
.bo-signal-phrase:nth-child(5) { animation-delay: 12s; }
.bo-signal-phrase:nth-child(6) { animation-delay: 15s; }
.bo-signal-phrase:nth-child(7) { animation-delay: 18s; }

.bo-signal-marks {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.35rem 0.55rem;
  max-width: 22rem;
}

.bo-signal-mark {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
  font-size: 0.72rem;
  font-weight: 650;
  letter-spacing: 0.01em;
  color: rgba(18, 18, 18, 0.72);
  animation: boMarkIn 560ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.bo-signal-mark:nth-child(1) { animation-delay: 180ms; }
.bo-signal-mark:nth-child(2) { animation-delay: 240ms; }
.bo-signal-mark:nth-child(3) { animation-delay: 300ms; }
.bo-signal-mark:nth-child(4) { animation-delay: 360ms; }
.bo-signal-mark:nth-child(5) { animation-delay: 420ms; }

.bo-signal-mark svg {
  width: 0.95rem;
  height: 0.95rem;
  color: var(--bo-teal);
  flex: 0 0 auto;
}

.bo-signal-devices {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  margin-top: 0.15rem;
  color: rgba(18, 18, 18, 0.7);
}

.bo-device {
  display: inline-grid;
  place-items: center;
  color: #121212;
  animation: boDeviceBob 3.6s ease-in-out infinite;
}

.bo-device svg {
  width: 1.15rem;
  height: 1.15rem;
}

.bo-device--phone { animation-delay: 0s; }
.bo-device--tablet { animation-delay: -0.7s; }
.bo-device--desktop { animation-delay: -1.4s; }

.bo-device--phone svg { width: 0.95rem; height: 0.95rem; }
.bo-device--tablet svg { width: 1.1rem; height: 1.1rem; }
.bo-device--desktop svg { width: 1.25rem; height: 1.25rem; }

.bo-signal-devices-label {
  margin-left: 0.15rem;
  font-family: var(--bo-display);
  font-size: 0.78rem;
  font-weight: 650;
  letter-spacing: -0.01em;
  color: rgba(18, 18, 18, 0.62);
}

.bo-signal-gotyou {
  margin: 0.15rem 0 0;
  font-family: var(--bo-display);
  font-size: 1.05rem;
  font-weight: 750;
  letter-spacing: -0.03em;
  color: #121212;
  animation: boCueFade 700ms 320ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.bo-hero-orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(8px);
  opacity: 0.55;
  animation: boOrbDrift 12s ease-in-out infinite;
}

.bo-hero-orb--a {
  width: min(52vw, 28rem);
  height: min(52vw, 28rem);
  top: -18%;
  right: -12%;
  background: radial-gradient(circle at 30% 30%, rgba(18, 18, 18, 0.08), transparent 68%);
}

.bo-hero-orb--b {
  width: min(42vw, 22rem);
  height: min(42vw, 22rem);
  bottom: -22%;
  left: -10%;
  background: radial-gradient(circle at 60% 40%, rgba(18, 18, 18, 0.1), transparent 70%);
  animation-delay: -4s;
}

.bo-hero-grid {
  position: absolute;
  inset: 0;
  opacity: 0.22;
  background-image:
    linear-gradient(rgba(18, 18, 18, 0.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(18, 18, 18, 0.06) 1px, transparent 1px);
  background-size: 48px 48px;
  mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.55), transparent 88%);
  animation: boGridShift 28s linear infinite;
}

.bo-brand {
  position: relative;
  z-index: 1;
  margin: 0 0 0.45rem;
  font-family: var(--bo-display);
  font-size: clamp(2.55rem, 7vw, 4.25rem);
  font-weight: 700;
  letter-spacing: -0.045em;
  line-height: 0.95;
  color: #121212;
  animation: boFadeUp 640ms 60ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.bo-brand-go {
  font-style: normal;
  font-weight: 650;
  margin-left: 0.18em;
  color: var(--bo-teal);
}

.bo-slideshow {
  position: relative;
  z-index: 1;
  display: grid;
  gap: 1.1rem;
  max-width: 42rem;
  min-height: 9.5rem;
}

.bo-slides {
  position: relative;
  min-height: 8.2rem;
}

.bo-slide {
  display: grid;
  gap: 0.55rem;
  animation: boSlideIn 480ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.bo-slide[hidden] {
  display: none !important;
}

.bo-slide-title {
  margin: 0;
  font-family: var(--bo-display);
  font-size: clamp(1.35rem, 3.4vw, 2rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.12;
  color: #121212;
}

.bo-slide-copy {
  margin: 0;
  font-size: 1.02rem;
  line-height: 1.55;
  color: rgba(18, 18, 18, 0.72);
  max-width: 34rem;
}

.bo-slideshow-controls {
  display: flex;
  align-items: center;
  gap: 0.65rem;
}

.bo-slide-nav {
  appearance: none;
  display: inline-grid;
  place-items: center;
  width: 2.35rem;
  height: 2.35rem;
  margin: 0;
  padding: 0;
  border: 1px solid rgba(18, 18, 18, 0.12);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: #121212;
  cursor: pointer;
  transition: background 160ms ease, transform 160ms ease;
}

.bo-slide-nav svg {
  width: 1.05rem;
  height: 1.05rem;
}

.bo-slide-nav:hover {
  background: rgba(255, 255, 255, 0.85);
  transform: translateY(-1px);
}

.bo-slide-dots {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  flex: 1 1 auto;
}

.bo-slide-dot {
  appearance: none;
  width: 0.55rem;
  height: 0.55rem;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: rgba(18, 18, 18, 0.22);
  cursor: pointer;
  transition: width 200ms ease, background 200ms ease;
}

.bo-slide-dot.is-active {
  width: 1.45rem;
  background: var(--bo-teal);
}

.bo-hero-cta {
  position: relative;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem;
  margin-top: 1.45rem;
  animation: boFadeUp 700ms 120ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.bo-btn-primary,
.bo-btn-ghost {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.85rem;
  padding: 0.7rem 1.2rem;
  border-radius: 12px;
  font-family: var(--bo-body);
  font-size: 0.95rem;
  font-weight: 650;
  letter-spacing: -0.01em;
  cursor: pointer;
  transition: transform 160ms ease, background 160ms ease, border-color 160ms ease;
}

.bo-btn-primary {
  border: 0;
  background: #121212;
  color: #fff;
}

.bo-btn-primary:hover {
  transform: translateY(-2px);
  background: #000;
}

.bo-btn-ghost {
  border: 1px solid rgba(18, 18, 18, 0.14);
  background: rgba(255, 255, 255, 0.45);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: #121212;
}

.bo-btn-ghost:hover {
  transform: translateY(-2px);
  border-color: rgba(18, 18, 18, 0.22);
  background: rgba(255, 255, 255, 0.72);
}

.bo-section-head {
  display: grid;
  gap: 0.25rem;
  padding-inline: clamp(1rem, 3vw, 1.5rem);
}

.bo-section-head h3 {
  margin: 0;
  font-family: var(--bo-display);
  font-size: clamp(1.2rem, 2.4vw, 1.55rem);
  font-weight: 700;
  letter-spacing: -0.025em;
}

.bo-section-head p {
  margin: 0;
  font-size: 0.95rem;
  color: var(--bo-muted);
}

.bo-interact,
.bo-apps {
  display: grid;
  gap: 0.95rem;
  animation: boFadeUp 680ms 100ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

/* Business Overview advert banner (Admin → Video adverts). */
.bo-advert-banner {
  position: relative;
  overflow: hidden;
  border-radius: 18px;
  border: 1px solid rgba(18, 18, 18, 0.08);
  background: #0b1120;
  box-shadow: 0 10px 30px rgba(15, 23, 42, 0.12);
  animation: boFadeUp 680ms 60ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.bo-advert-banner.hidden {
  display: none;
}

.bo-advert-badge {
  position: absolute;
  top: 10px;
  left: 12px;
  z-index: 2;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #fff;
  background: rgba(15, 23, 42, 0.6);
  backdrop-filter: blur(4px);
}

.bo-advert-media {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 5;
  min-height: 140px;
  background: #0b1120;
}

.bo-advert-frame,
.bo-advert-video,
.bo-advert-image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  object-fit: cover;
  display: block;
}

.bo-advert-title {
  margin: 0;
  padding: 0.55rem 0.9rem 0.7rem;
  font-size: 0.9rem;
  font-weight: 600;
  color: #e2e8f0;
}

.bo-advert-title:empty {
  display: none;
}

@media (max-width: 720px) {
  .bo-advert-media {
    aspect-ratio: 16 / 7;
  }
}

.bo-story-rail {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: stretch;
  justify-content: center;
  gap: 0.75rem;
  width: 100%;
  min-width: 0;
  overflow-x: auto;
  padding: 0.15rem clamp(1rem, 3vw, 1.5rem) 0.65rem;
  scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch;
  box-sizing: border-box;
}

/* All app cards fit on screen at once — responsive grid, never scrolls left/right. */
.bo-apps-row {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  align-items: stretch;
  gap: 0.75rem;
  width: 100%;
  min-width: 0;
  overflow: visible;
  padding: 0.15rem clamp(1rem, 3vw, 1.5rem) 0.65rem;
  box-sizing: border-box;
}

/* Small desktop / tablet landscape: 4 per row (8 apps -> 2 tidy rows). */
@media (max-width: 1199px) {
  .bo-apps-row {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* Tablet portrait: 3 per row. */
@media (max-width: 899px) {
  .bo-apps-row {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Phones: 2 per row. */
@media (max-width: 599px) {
  .bo-apps-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* App cards fill their grid cell (override the fixed card widths/heights). */
#overview-apps-row .bo-app {
  width: auto;
  min-width: 0;
  max-width: none;
  height: auto;
  min-height: 11.5rem;
}

/*
 * Tall rectangular cards — microsoft.com product-card surface:
 * white, sharp corners, dual-layer catalog shadow, no border.
 */
.bo-story,
.bo-app,
.bo-apps-row .business-overview-app {
  appearance: none;
  flex: 0 0 auto;
  width: 10.5rem;
  height: 14.5rem; /* longest side = height */
  max-width: 100%;
  display: grid;
  grid-template-rows: auto 1fr auto;
  align-content: stretch;
  justify-items: stretch;
  gap: 0;
  margin: 0;
  padding: 0;
  overflow: hidden;
  text-align: left;
  border: var(--bo-card-border);
  border-radius: var(--bo-card-radius);
  background: var(--bo-card-bg);
  color: var(--bo-ink);
  box-shadow: var(--bo-card-shadow);
  cursor: pointer;
  box-sizing: border-box;
  transition: box-shadow 160ms ease, transform 160ms ease;
  animation: boAppPop 520ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.bo-story:nth-child(1),
.bo-app:nth-child(1) { animation-delay: 80ms; }
.bo-story:nth-child(2),
.bo-app:nth-child(2) { animation-delay: 130ms; }
.bo-story:nth-child(3),
.bo-app:nth-child(3) { animation-delay: 180ms; }
.bo-story:nth-child(4),
.bo-app:nth-child(4) { animation-delay: 230ms; }
.bo-app:nth-child(5) { animation-delay: 280ms; }
.bo-app:nth-child(6) { animation-delay: 330ms; }

.bo-story:hover,
.bo-story:focus-visible,
.bo-app:hover,
.bo-app:focus-visible {
  box-shadow: var(--bo-card-shadow-hover);
  transform: translateY(-2px);
  outline: none;
}

.bo-story-kicker {
  display: grid;
  place-items: center;
  height: var(--bo-media-size);
  margin: 0;
  padding: 0;
  border-bottom: 1px solid #edebe9;
  background: #f2f2f2;
  font-family: var(--bo-display);
  font-size: 1.35rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--bo-link);
}

.bo-story strong {
  display: block;
  margin: 0;
  padding: 12px 14px 4px;
  font-family: var(--bo-display);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: normal;
  line-height: 1.25;
  color: #000000;
}

.bo-story > span:last-child {
  display: block;
  margin: 0;
  padding: 0 14px 14px;
  font-size: 0.82rem;
  font-weight: 400;
  line-height: 1.45;
  color: var(--bo-muted);
}

.bo-app .app-tile-icon,
.bo-apps-row .business-overview-app .app-tile-icon {
  width: 100%;
  height: var(--bo-media-size);
  border-radius: 0;
  box-shadow: none;
}

.bo-app .app-tile-icon svg,
.bo-apps-row .business-overview-app .app-tile-icon svg {
  width: 1.55rem;
  height: 1.55rem;
}

.bo-app-name,
.bo-apps-row .business-overview-app-name {
  margin: 0;
  padding: 12px 14px 2px;
  font-family: var(--bo-display);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: normal;
  line-height: 1.25;
  color: #000000;
}

.bo-app-tag,
.bo-apps-row .business-overview-app-tag {
  margin: 0;
  padding: 0 14px;
  font-size: 0.82rem;
  font-weight: 400;
  line-height: 1.45;
  color: var(--bo-muted);
}

.bo-app-action,
.bo-apps-row .business-overview-app-action {
  margin-top: auto;
  padding: 10px 14px 14px;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--bo-link);
}

.bo-story:hover .bo-app-action,
.bo-app:hover .bo-app-action,
.bo-apps-row .business-overview-app:hover .bo-app-action,
.bo-apps-row .business-overview-app:hover .business-overview-app-action {
  color: var(--bo-link-hover);
}

.bo-app.is-installed .bo-app-action {
  color: #15803d;
}

.bo-popup[hidden] {
  display: none !important;
}

.bo-popup {
  position: fixed;
  inset: 0;
  z-index: 90;
  display: grid;
  place-items: center;
  padding: 1rem;
}

.bo-popup-backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  margin: 0;
  padding: 0;
  background: rgba(18, 18, 18, 0.42);
  cursor: pointer;
}

.bo-popup-panel {
  position: relative;
  z-index: 1;
  width: min(28rem, 100%);
  display: grid;
  gap: 0.7rem;
  padding: var(--bo-card-padding);
  padding-top: 1.15rem;
  border: var(--bo-card-border);
  border-radius: var(--bo-card-radius);
  background: var(--bo-card-bg);
  color: var(--bo-ink);
  box-shadow: var(--bo-card-shadow-hover);
  font-family: var(--bo-body);
  animation: boPopupIn 280ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.bo-popup-close {
  position: absolute;
  top: 0.65rem;
  right: 0.65rem;
  display: grid;
  place-items: center;
  width: 2.1rem;
  height: 2.1rem;
  margin: 0;
  padding: 0;
  border: 1px solid #edebe9;
  border-radius: 2px;
  background: #fff;
  color: var(--bo-ink);
  cursor: pointer;
}

.bo-popup-close svg {
  width: 1rem;
  height: 1rem;
}

.bo-popup-icon {
  width: var(--bo-media-size);
  height: var(--bo-media-size);
}

.bo-popup-icon .app-tile-icon {
  width: var(--bo-media-size);
  height: var(--bo-media-size);
  border-radius: 0;
}

.bo-popup-title {
  margin: 0;
  padding-right: 2rem;
  font-family: var(--bo-display);
  font-size: 1.2rem;
  font-weight: 600;
  letter-spacing: normal;
  color: #000000;
}

.bo-popup-body {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 400;
  line-height: 1.5;
  color: var(--bo-muted);
}

.bo-popup-points {
  list-style: none;
  margin: 0.15rem 0 0;
  padding: 0;
  display: grid;
  gap: 0.45rem;
}

.bo-popup-points li {
  position: relative;
  padding-left: 1.05rem;
  font-size: 0.9rem;
  font-weight: 400;
  line-height: 1.4;
  color: var(--bo-muted);
}

.bo-popup-points li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.45rem;
  width: 0.42rem;
  height: 0.42rem;
  border-radius: 0;
  background: var(--bo-link);
}

.bo-popup-actions {
  margin-top: 0.35rem;
}

.bo-popup-actions .bo-btn-primary {
  width: 100%;
}

html.overview-popup-lock,
html.overview-popup-lock body {
  overflow: hidden;
}

@media (max-width: 900px) {
  .bo-hero {
    min-height: auto;
    grid-template-columns: 1fr;
  }

  .bo-hero-constellation {
    display: none;
  }

  .bo-story,
  .bo-app,
  .bo-apps-row .business-overview-app {
    width: 9.75rem;
    height: 13.75rem;
  }

  .bo-hero-cta {
    flex-direction: column;
  }

  .bo-hero-cta .bo-btn-primary,
  .bo-hero-cta .bo-btn-ghost {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .bo-hero,
  .bo-brand,
  .bo-hero-cta,
  .bo-hero-constellation,
  .bo-hero-constellation-cue,
  .bo-signal-gotyou,
  .bo-signal-mark,
  .bo-signal-phrase,
  .bo-interact,
  .bo-apps,
  .bo-slide,
  .bo-app,
  .bo-story,
  .bo-popup-panel,
  .bo-hero-orb,
  .bo-hero-grid,
  .bo-app-spotlight,
  .bo-app-spotlight.is-active,
  .bo-app-ensemble-item,
  .bo-signal-dot,
  .bo-device {
    animation: none !important;
  }

  .bo-app-spotlight,
  .bo-app-ensemble {
    transition: none !important;
  }

  .bo-signal-phrase {
    position: static;
    opacity: 1;
    transform: none;
    display: none;
  }

  .bo-signal-phrase:first-child,
  .bo-signal-phrase:nth-child(3),
  .bo-signal-phrase:nth-child(5) {
    display: block;
    margin: 0.1rem 0;
  }

  .bo-story:hover,
  .bo-app:hover {
    transform: none;
  }
}

/* ============================================================
 * Business mobile/tablet navigation:
 * top ribbon replaced by a "TuMicha Go Business" heading and a
 * bottom "Account" tab that opens a sheet with all the tabs.
 * ============================================================ */
.business-mobile-heading,
.business-mobile-nav {
  display: none;
}

@keyframes boSheetUp {
  from {
    transform: translateY(16px);
    opacity: 0;
  }
  to {
    transform: none;
    opacity: 1;
  }
}

@media (max-width: 1024px) {
  /* Hide the top ribbon banner for business accounts. */
  body.business-account #portal-top-ribbons {
    display: none !important;
  }

  /* Top heading in the banner font. */
  /* In-flow page heading (not a fixed ribbon) — sits on the same level as content. */
  body.business-account .business-mobile-heading {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 0.5rem;
    margin: 0 0 0.6rem;
    padding: 0;
    background: transparent;
    border: 0;
  }

  body.business-account .business-mobile-heading-text {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 1.18rem;
    letter-spacing: -0.03em;
    line-height: 1.1;
    color: #121212;
  }

  body.business-account .business-mobile-heading .logo-go {
    font-style: normal;
    font-weight: 600;
    opacity: 0.72;
    letter-spacing: -0.02em;
  }

  /* Section-drawer toggle on the same row as the tab heading (closed + open). */
  body.business-account .business-mobile-drawer-toggle {
    position: static;
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.4rem;
    height: 2.4rem;
    margin: 0;
    padding: 0;
    appearance: none;
    border: 1px solid rgba(18, 18, 18, 0.12);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.7);
    color: #121212;
    cursor: pointer;
  }

  body.business-account .business-mobile-drawer-toggle[hidden] {
    display: none;
  }

  body.business-account .business-mobile-drawer-toggle svg {
    width: 22px;
    height: 22px;
  }

  /* Reserve room for the bottom nav (heading is now in-flow, no top offset). */
  body.business-account {
    --business-mobile-nav-h: calc(64px + env(safe-area-inset-bottom, 0px));
    --business-chat-nav-gap: 8px;
  }

  body.business-account .main {
    padding-bottom: calc(72px + env(safe-area-inset-bottom, 0px));
  }

  body.business-account .app {
    padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px));
  }


  /* Bottom nav: Home (left) + section subtabs (middle) + Account (right). */
  body.business-account .business-mobile-nav {
    display: flex;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 55;
    align-items: stretch;
    justify-content: space-between;
    gap: 0.25rem;
    padding: 0.4rem 0.5rem calc(0.4rem + env(safe-area-inset-bottom, 0px));
    background: rgba(255, 255, 255, 0.97);
    backdrop-filter: blur(14px) saturate(1.2);
    -webkit-backdrop-filter: blur(14px) saturate(1.2);
    border-top: 1px solid rgba(18, 18, 18, 0.08);
  }

  body.business-account .business-mobile-nav-btn {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    appearance: none;
    border: 0;
    background: transparent;
    cursor: pointer;
    padding: 0.3rem 0.35rem;
    border-radius: 12px;
    color: #4b4b4b;
    font-family: inherit;
    font-weight: 600;
    font-size: 0.68rem;
    transition: background 140ms ease, color 140ms ease;
  }

  body.business-account .business-mobile-nav-label {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  body.business-account .business-mobile-nav-icon svg {
    width: 24px;
    height: 24px;
  }

  body.business-account .business-mobile-nav-btn.is-open,
  body.business-account .business-mobile-nav-btn:active {
    background: rgba(18, 18, 18, 0.08);
  }

  body.business-account .business-mobile-nav-btn.is-active {
    color: #121212;
    background: rgba(18, 18, 18, 0.08);
  }

  /* Middle region: the selected tab's subtabs. */
  body.business-account .business-mobile-subtabs {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    align-items: stretch;
    justify-content: space-evenly;
    gap: 0.15rem;
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }

  body.business-account .business-mobile-subtabs::-webkit-scrollbar {
    display: none;
  }

  body.business-account .business-mobile-subtab {
    flex: 1 1 0;
    min-width: 3.25rem;
    max-width: 6rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    appearance: none;
    border: 0;
    background: transparent;
    cursor: pointer;
    padding: 0.3rem 0.2rem;
    border-radius: 12px;
    color: #4b4b4b;
    font-family: inherit;
    font-weight: 600;
    font-size: 0.64rem;
    transition: background 140ms ease, color 140ms ease;
  }

  body.business-account .business-mobile-subtab-icon svg {
    width: 22px;
    height: 22px;
  }

  body.business-account .business-mobile-subtab-label {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  body.business-account .business-mobile-subtab.is-active {
    color: #121212;
    background: rgba(18, 18, 18, 0.08);
  }

  /* Section subtabs now live in the bottom nav, so hide the standalone rail. */
  body.business-account #business-app-rail {
    display: none !important;
  }
}

/* Account menu sheet (all the tabs). */
.business-mobile-menu[hidden] {
  display: none;
}

.business-mobile-menu {
  position: fixed;
  inset: 0;
  z-index: 70;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}

.business-mobile-menu-backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  padding: 0;
  background: rgba(15, 23, 42, 0.45);
  cursor: pointer;
}

.business-mobile-menu-panel {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 640px;
  max-height: 80vh;
  overflow-y: auto;
  background: #fff;
  border-radius: 20px 20px 0 0;
  padding: 0.85rem 0.85rem calc(1rem + env(safe-area-inset-bottom, 0px));
  box-shadow: 0 -14px 44px rgba(15, 23, 42, 0.28);
  animation: boSheetUp 260ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.business-mobile-menu-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.35rem 0.4rem 0.7rem;
}

.business-mobile-menu-title {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.08rem;
  letter-spacing: -0.03em;
  color: #121212;
}

.business-mobile-menu-title .logo-go {
  font-style: normal;
  font-weight: 600;
  opacity: 0.72;
}

.business-mobile-menu-close {
  appearance: none;
  border: 0;
  background: transparent;
  cursor: pointer;
  padding: 0.35rem;
  border-radius: 10px;
  color: #121212;
}

.business-mobile-menu-close svg {
  width: 22px;
  height: 22px;
}

.business-mobile-menu-list {
  display: grid;
  gap: 0.15rem;
}

.business-mobile-menu-item {
  appearance: none;
  border: 0;
  background: transparent;
  cursor: pointer;
  text-align: left;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  width: 100%;
  padding: 0.9rem 0.75rem;
  border-radius: 12px;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 600;
  color: #121212;
}

.business-mobile-menu-item-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  flex: 0 0 auto;
  color: #4b4b4b;
}

.business-mobile-menu-item-icon svg {
  width: 25px;
  height: 25px;
}

.business-mobile-menu-item:hover,
.business-mobile-menu-item.is-active {
  background: rgba(18, 18, 18, 0.06);
}

.business-mobile-menu-item.is-active .business-mobile-menu-item-icon {
  color: #121212;
}

.business-mobile-menu-item.is-signout .business-mobile-menu-item-icon {
  color: #b91c1c;
}

.business-mobile-menu-item.is-signout {
  color: #b91c1c;
}

html.business-mobile-menu-lock,
html.business-mobile-menu-lock body {
  overflow: hidden;
}

/* Section subtabs drawer — slides in from the right (opens leftward). */
.business-mobile-drawer[hidden] {
  display: none;
}

.business-mobile-drawer {
  position: fixed;
  inset: 0;
  z-index: 75;
}

@keyframes boDrawerIn {
  from {
    transform: translateX(100%);
  }
  to {
    transform: none;
  }
}

@keyframes boBackdropIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.business-mobile-drawer-backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  padding: 0;
  background: rgba(15, 23, 42, 0.4);
  cursor: pointer;
  animation: boBackdropIn 200ms ease both;
}

.business-mobile-drawer-panel {
  /* Top is synced in JS to the tab/subtab heading row (.topbar /
   * #business-mobile-heading) so the drawer opens at the same level. */
  --business-drawer-top: 0px;
  position: absolute;
  top: var(--business-drawer-top);
  right: 0;
  bottom: 0;
  height: auto;
  width: min(82vw, 320px);
  display: flex;
  flex-direction: column;
  background: #fff;
  box-shadow: -14px 0 44px rgba(15, 23, 42, 0.28);
  border-radius: 16px 0 0 0;
  padding: 0.75rem 0.6rem
    calc(
      0.9rem + max(env(safe-area-inset-bottom, 0px), var(--safe-area-inset-bottom, 0px))
    );
  overflow-y: auto;
  animation: boDrawerIn 260ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.business-mobile-drawer-header {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.35rem 0.25rem 0.75rem;
  border-bottom: 1px solid rgba(18, 18, 18, 0.08);
  margin-bottom: 0.4rem;
}

.business-mobile-drawer-back {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.2rem;
  height: 2.2rem;
  flex: 0 0 auto;
  appearance: none;
  border: 0;
  border-radius: 10px;
  background: rgba(18, 18, 18, 0.06);
  color: #121212;
  cursor: pointer;
}

.business-mobile-drawer-back svg {
  width: 22px;
  height: 22px;
}

.business-mobile-drawer-title {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.05rem;
  letter-spacing: -0.02em;
  color: #121212;
}

.business-mobile-drawer-list {
  display: grid;
  gap: 0.15rem;
}

.business-mobile-drawer-item {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  width: 100%;
  appearance: none;
  border: 0;
  background: transparent;
  cursor: pointer;
  text-align: left;
  padding: 0.85rem 0.75rem;
  border-radius: 12px;
  font-family: inherit;
  font-size: 0.98rem;
  font-weight: 600;
  color: #333;
}

.business-mobile-drawer-item-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  flex: 0 0 auto;
  color: #4b4b4b;
}

.business-mobile-drawer-item-icon svg {
  width: 24px;
  height: 24px;
}

.business-mobile-drawer-item:hover,
.business-mobile-drawer-item.is-active {
  background: rgba(18, 18, 18, 0.06);
  color: #121212;
}

.business-mobile-drawer-item.is-active .business-mobile-drawer-item-icon {
  color: #121212;
}
