:root {
  --v2-ink: #3d2a20;
  --v2-ink-soft: #79675e;
  --v2-paper: #fff7ed;
  --v2-card: #fffdfa;
  --v2-line: #f0ddc8;
  --v2-jade: #c2410c;
  --v2-jade-dark: #9a3412;
  --v2-jade-soft: #ffedd5;
  --v2-gold: #d97706;
  --v2-gold-soft: #fef3c7;
  --v2-red: #b85e55;
  --v2-unread: #e53935;
  --v2-red-soft: #f8e9e6;
  --v2-blue: #5279a8;
  --v2-blue-soft: #eaf0f7;
  --v2-shadow: 0 18px 48px rgba(91, 49, 21, .10);
}

html, body { min-height: 100%; margin: 0; }
html::before {
  content: "";
  position: fixed;
  z-index: 9999;
  top: 0;
  right: 0;
  left: 0;
  height: 3px;
  opacity: 0;
  transform: scaleX(.08);
  transform-origin: left;
  background: linear-gradient(90deg, var(--v2-jade), var(--v2-gold), var(--v2-jade));
  transition: opacity .15s ease;
}
html.v2-api-pending::before { opacity: 1; animation: v2-network-progress 1.2s ease-in-out infinite; }
html.v2-api-pending { cursor: progress; }
@keyframes v2-network-progress {
  0% { transform: scaleX(.08); }
  55% { transform: scaleX(.72); }
  100% { transform: scaleX(.96); }
}

.v2-boot {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  color: var(--v2-ink-soft);
  font-size: 14px;
}
.v2-boot i {
  width: 18px;
  height: 18px;
  border: 2px solid var(--v2-line);
  border-top-color: var(--v2-jade);
  border-radius: 50%;
  animation: v2-spin .8s linear infinite;
}
@keyframes v2-spin { to { transform: rotate(360deg); } }

html.demo-v2 body > .topbar,
html.demo-v2 body > main,
html.demo-v2 body > .modal,
html.demo-v2 body > .time-sheet,
html.demo-v2 body > #toast {
  display: none !important;
}

html.demo-v2 body {
  background: var(--v2-paper);
}

#earcareApp {
  min-height: 100vh;
  color: var(--v2-ink);
  font-family: "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif;
}

#earcareApp * { box-sizing: border-box; }
:where(#earcareApp button, #earcareApp input, #earcareApp select, #earcareApp textarea) { font: inherit; }
#earcareApp img { display: block; max-width: 100%; }
#earcareApp [hidden] { display: none !important; }

.v2-topbar {
  position: sticky;
  z-index: 60;
  top: 0;
  border-bottom: 1px solid rgba(240, 221, 200, .86);
  background: rgba(255, 247, 237, .92);
  backdrop-filter: blur(18px);
}

.v2-topbar-inner {
  width: min(1240px, calc(100% - 40px));
  min-height: 74px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 22px;
}

.v2-brand { display: flex; align-items: center; gap: 11px; min-width: max-content; }
.v2-brand-mark {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border-radius: 15px 15px 15px 4px;
  color: #fff;
  background: var(--v2-jade);
  font-family: Georgia, serif;
  font-size: 20px;
}
.v2-brand-name { font-family: STKaiti, KaiTi, serif; font-size: 22px; font-weight: 700; letter-spacing: .12em; }
.v2-brand-tag { color: var(--v2-ink-soft); font-size: 10px; letter-spacing: .12em; }

.v2-view-switch { display: flex; gap: 4px; padding: 4px; border: 1px solid var(--v2-line); border-radius: 999px; background: rgba(255,255,255,.66); }
.v2-view-btn { padding: 8px 16px; border: 0; border-radius: 999px; color: var(--v2-ink-soft); background: transparent; cursor: pointer; font-size: 13px; }
.v2-view-btn.active { color: #fff; background: var(--v2-ink); box-shadow: 0 5px 14px rgba(61,42,32,.18); }
.v2-top-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; color: var(--v2-ink-soft); font-size: 12px; white-space: nowrap; }
.v2-top-identity { max-width: 190px; overflow: hidden; text-overflow: ellipsis; }
.v2-top-auth { min-height: 34px; padding: 7px 12px; border: 1px solid var(--v2-line); border-radius: 10px; color: var(--v2-jade); background: var(--v2-card); cursor: pointer; font-size: 12px; font-weight: 700; }
.v2-top-auth.secondary { color: var(--v2-ink-soft); background: transparent; }

.v2-main { width: min(1240px, calc(100% - 40px)); margin: 0 auto; padding: 26px 0 74px; }
.v2-section-head { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin: 34px 0 18px; }
.v2-section-head h2, .v2-section-head h1 { margin: 0; font-family: STKaiti, KaiTi, serif; font-size: 30px; letter-spacing: .04em; }
.v2-section-head p { margin: 7px 0 0; color: var(--v2-ink-soft); line-height: 1.6; }

.v2-btn { min-height: 40px; padding: 9px 16px; border: 1px solid transparent; border-radius: 12px; background: transparent; cursor: pointer; transition: .18s ease; font-weight: 600; }
.v2-btn:hover { transform: translateY(-1px); }
.v2-btn:disabled { opacity: .46; cursor: not-allowed; transform: none; }
.v2-btn-primary { color: #fff !important; background: var(--v2-jade); }
.v2-btn-ink { color: #fff !important; background: var(--v2-ink); }
.v2-btn-light { color: var(--v2-ink); background: #fff; }
.v2-btn-secondary { border-color: var(--v2-line); background: var(--v2-card); }
.v2-btn-ghost { color: var(--v2-jade); border-color: transparent; }
.v2-btn-danger { color: var(--v2-red); border-color: #ead0cb; background: var(--v2-red-soft); }
.v2-btn-small { min-height: 32px; padding: 6px 10px; border-radius: 9px; font-size: 12px; }

.v2-customer-tabs { margin: 22px 0 0; display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; }
.v2-customer-tabs::-webkit-scrollbar { display: none; }
.v2-tab { min-width: max-content; padding: 10px 17px; border: 1px solid var(--v2-line); border-radius: 999px; color: var(--v2-ink-soft); background: rgba(255,255,255,.66); cursor: pointer; }
.v2-tab.active { color: #fff; border-color: var(--v2-jade); background: var(--v2-jade); }

.v2-service-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.v2-service-card { position: relative; overflow: hidden; min-height: 230px; padding: 25px; display: flex; flex-direction: column; border: 1px solid var(--v2-line); border-radius: 24px; background: var(--v2-card); box-shadow: 0 9px 26px rgba(91,49,21,.06); }
.v2-service-card::after { content: attr(data-icon); position: absolute; right: 14px; top: -17px; color: rgba(194,65,12,.07); font-family: STKaiti, KaiTi, serif; font-size: 110px; }
.v2-service-icon { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 15px; color: var(--v2-jade); background: var(--v2-jade-soft); font-family: STKaiti, KaiTi, serif; font-size: 20px; }
.v2-service-card h3 { position: relative; z-index: 1; margin: 20px 0 8px; font-size: 18px; }
.v2-service-card p { position: relative; z-index: 1; margin: 0; color: var(--v2-ink-soft); line-height: 1.65; font-size: 13px; }
.v2-service-meta { position: relative; z-index: 1; margin-top: auto; padding-top: 18px; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.v2-price { color: var(--v2-gold); font-size: 21px; font-weight: 700; }
.v2-duration { color: var(--v2-ink-soft); font-size: 12px; }

.v2-staff-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.v2-staff-card { cursor: pointer; overflow: hidden; border: 1px solid var(--v2-line); border-radius: 26px; background: var(--v2-card); box-shadow: 0 10px 28px rgba(91,49,21,.07); }
.v2-staff-cover { position: relative; height: 248px; background: linear-gradient(145deg, #fed7aa, #ffedd5); }
.v2-staff-cover img { width: 100%; height: 100%; object-fit: cover; }
.v2-staff-gallery { position: relative; width: 100%; height: 100%; overflow: hidden; }
.v2-staff-gallery-track {
  width: 100%;
  height: 100%;
  display: flex;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
  touch-action: pan-x pan-y;
}
.v2-staff-gallery-track::-webkit-scrollbar { display: none; }
.v2-staff-gallery-slide { position: relative; min-width: 100%; height: 100%; margin: 0; scroll-snap-align: start; scroll-snap-stop: always; background: linear-gradient(145deg, #fed7aa, #ffedd5); }
.v2-staff-gallery-slide img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.v2-staff-card:hover .v2-staff-gallery-slide img { transform: scale(1.025); }
.v2-gallery-arrow { position: absolute; z-index: 4; top: 50%; width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.48); border-radius: 50%; color: #fff !important; background: rgba(61,42,32,.58); backdrop-filter: blur(8px); cursor: pointer; transform: translateY(-50%); font-size: 23px; line-height: 1; opacity: 0; transition: .18s ease; }
.v2-gallery-arrow.prev { left: 12px; }
.v2-gallery-arrow.next { right: 12px; }
.v2-staff-gallery:hover .v2-gallery-arrow,
.v2-gallery-arrow:focus-visible { opacity: 1; }
.v2-gallery-indicator { position: absolute; z-index: 4; left: 50%; bottom: 12px; padding: 5px 9px; display: flex; align-items: center; gap: 8px; border-radius: 999px; color: #fff; background: rgba(61,42,32,.62); backdrop-filter: blur(8px); transform: translateX(-50%); font-size: 10px; white-space: nowrap; }
.v2-gallery-dots { display: flex; align-items: center; gap: 4px; }
.v2-gallery-dot { width: 5px; height: 5px; padding: 0; border: 0; border-radius: 50%; background: rgba(255,255,255,.44); cursor: pointer; transition: .18s; }
.v2-gallery-dot.active { width: 13px; border-radius: 999px; background: #fff; }
.v2-photo-fallback { width: 100%; height: 100%; display: grid; place-items: center; color: rgba(61,42,32,.7); background: linear-gradient(145deg, #fed7aa, #ffedd5); font-family: STKaiti, KaiTi, serif; font-size: 72px; }
.v2-staff-badges { position: absolute; z-index: 5; right: 14px; top: 14px; display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 7px; pointer-events: none; }
.v2-availability { padding: 7px 10px; border: 1px solid rgba(255,255,255,.22); border-radius: 999px; color: #fff; background: rgba(61,42,32,.80); backdrop-filter: blur(8px); font-size: 11px; }
.v2-service-state { width: max-content; padding: 7px 10px; display: inline-flex; align-items: center; gap: 6px; border-radius: 999px; font-size: 11px; font-weight: 700; }
.v2-service-state i { width: 6px; height: 6px; border-radius: 50%; background: currentColor; box-shadow: 0 0 0 3px currentColor; opacity: .8; }
.v2-service-state.active { color: #226c59; background: rgba(236,249,243,.94); }
.v2-service-state.rest { color: #765f58; background: rgba(246,239,235,.94); }
.v2-staff-card-body { padding: 20px; }
.v2-staff-title { display: flex; align-items: start; justify-content: space-between; gap: 10px; }
.v2-staff-title h3 { margin: 0; font-size: 20px; }
.v2-staff-title span { color: var(--v2-gold); font-size: 12px; }
.v2-staff-card p { min-height: 44px; margin: 9px 0 15px; color: var(--v2-ink-soft); line-height: 1.6; font-size: 13px; }
.v2-chips { display: flex; flex-wrap: wrap; gap: 7px; }
.v2-chip { padding: 5px 9px; border-radius: 999px; color: var(--v2-jade-dark); background: var(--v2-jade-soft); font-size: 11px; }
.v2-staff-card-summary { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; }
.v2-staff-card-profile { flex: 1 1 180px; min-width: 0; }
.v2-staff-starting-price { display: flex; align-items: baseline; justify-content: flex-end; margin-left: auto; color: var(--v2-jade-dark); white-space: nowrap; }
.v2-staff-starting-price strong { font-size: 32px; font-weight: 800; line-height: 1.2; }
.v2-staff-starting-price span { font-size: 18px; font-weight: 700; }
.v2-card-actions { margin-top: 18px; display: flex; gap: 9px; }
.v2-card-actions .v2-btn { flex: 1; }

.v2-order-list { display: grid; gap: 14px; }
.v2-order-card { padding: 22px; border: 1px solid var(--v2-line); border-radius: 22px; background: var(--v2-card); box-shadow: 0 8px 24px rgba(91,49,21,.05); }
.v2-order-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.v2-order-top h3 { margin: 0; font-size: 18px; }
.v2-order-top p { margin: 7px 0 0; color: var(--v2-ink-soft); font-size: 13px; }
.v2-order-meta { margin: 18px 0; padding: 14px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; border-radius: 15px; background: #f7f4ee; }
.v2-order-meta span { color: var(--v2-ink-soft); font-size: 11px; }
.v2-order-meta strong { display: block; margin-top: 4px; font-size: 13px; }
.v2-order-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.v2-timeline { margin: 17px 0 0; padding: 14px 14px 10px; border-left: 2px solid var(--v2-jade-soft); background: #fbfaf6; }
.v2-timeline.is-compact { margin-top: 12px; padding: 9px 0 0 11px; border-left-color: #e3e9e6; background: transparent; }
.v2-timeline-label { margin-bottom: 8px; color: #8a9994; font-size: 10px; font-weight: 600; }
.v2-timeline.is-compact .v2-event { padding-bottom: 7px; color: #899791; font-size: 10px; line-height: 1.55; }
.v2-timeline.is-compact .v2-event::before { left: -16px; width: 6px; height: 6px; border-color: var(--v2-card); background: #a9b8b3; }
.v2-event { position: relative; padding: 0 0 11px 13px; color: var(--v2-ink-soft); font-size: 12px; }
.v2-event::before { content: ""; position: absolute; left: -19px; top: 4px; width: 8px; height: 8px; border: 2px solid #fbfaf6; border-radius: 50%; background: var(--v2-jade); }
.v2-customer-service { margin-top: 16px; padding: 16px; display: flex; align-items: center; gap: 15px; border-radius: 16px; background: var(--v2-jade-soft); }
.v2-qr { width: 58px; height: 58px; flex: 0 0 auto; display: grid; place-items: center; border: 7px dotted var(--v2-ink); background: #fff; font-size: 10px; font-weight: 700; }
.v2-customer-service strong { display: block; }
.v2-customer-service span { display: block; margin-top: 4px; color: var(--v2-ink-soft); font-size: 12px; }

.v2-status { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 999px; font-size: 11px; font-weight: 700; }
.v2-status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.v2-status-pending_confirmation { color: #9a6a2f; background: var(--v2-gold-soft); }
.v2-status-confirmed { color: var(--v2-jade); background: var(--v2-jade-soft); }
.v2-status-completed { color: var(--v2-blue); background: var(--v2-blue-soft); }
.v2-status-cancelled { color: #8a7773; background: #eee9e7; }

.v2-admin-shell { min-height: calc(100vh - 126px); display: grid; grid-template-columns: 238px minmax(0, 1fr); gap: 20px; }
.v2-sidebar { position: sticky; top: 100px; align-self: start; padding: 16px; border: 1px solid var(--v2-line); border-radius: 24px; background: var(--v2-card); box-shadow: 0 9px 26px rgba(91,49,21,.06); }
.v2-admin-user { padding: 12px; display: flex; align-items: center; gap: 11px; border-radius: 16px; background: var(--v2-jade-soft); }
.v2-admin-avatar { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 13px; color: #fff; background: var(--v2-jade); font-weight: 700; }
.v2-admin-avatar { overflow: hidden; flex: 0 0 auto; }
.v2-admin-avatar img { width: 100%; height: 100%; object-fit: cover; }
.v2-admin-user strong, .v2-admin-user span { display: block; }
.v2-admin-user span { margin-top: 3px; color: var(--v2-ink-soft); font-size: 11px; }
.v2-nav { margin: 14px 0; display: grid; gap: 5px; }
.v2-nav-btn { width: 100%; padding: 11px 12px; display: flex; align-items: center; gap: 10px; border: 0; border-radius: 12px; color: var(--v2-ink-soft); background: transparent; cursor: pointer; text-align: left; }
.v2-nav-btn.active { color: #fff; background: var(--v2-ink); }
.v2-nav-btn i { width: 24px; font-style: normal; text-align: center; }
.v2-demo-tools { padding-top: 12px; display: grid; gap: 8px; border-top: 1px solid var(--v2-line); }
.v2-mobile-bottom-nav, .v2-mobile-menu-layer { display: none; }
.v2-admin-content { min-width: 0; }
.v2-page-head { margin: 5px 0 18px; display: flex; align-items: center; justify-content: space-between; gap: 15px; }
.v2-page-head h1 { margin: 0; font-family: STKaiti, KaiTi, serif; font-size: 31px; }
.v2-page-head p { margin: 6px 0 0; color: var(--v2-ink-soft); }

.v2-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 13px; }
.v2-kpi { padding: 20px; border: 1px solid var(--v2-line); border-radius: 20px; background: var(--v2-card); }
.v2-kpi span { color: var(--v2-ink-soft); font-size: 12px; }
.v2-kpi strong { display: block; margin-top: 8px; font-size: 27px; }
.v2-kpi small { display: block; margin-top: 8px; color: #7d918a; }
.v2-panel-grid { margin-top: 15px; display: grid; grid-template-columns: 1.25fr .75fr; gap: 15px; }
.v2-panel { overflow: hidden; border: 1px solid var(--v2-line); border-radius: 20px; background: var(--v2-card); }
.v2-panel-head { padding: 17px 19px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--v2-line); }
.v2-panel-head h3 { margin: 0; font-size: 16px; }
.v2-panel-head p { margin: 4px 0 0; color: var(--v2-ink-soft); font-size: 11px; }
.v2-panel-body { padding: 18px; }
.v2-quick-list { display: grid; gap: 10px; }
.v2-quick-row { padding: 12px; display: grid; grid-template-columns: 65px 1fr auto; align-items: center; gap: 11px; border-radius: 13px; background: #f8f5ef; }
button.v2-quick-row { border: 0; cursor: pointer; }
button.v2-quick-row:focus-visible { outline: 2px solid var(--v2-ink); outline-offset: 3px; }
.v2-quick-row > strong { font-size: 14px; }
.v2-quick-row span { color: var(--v2-ink-soft); font-size: 12px; }

.v2-toolbar { margin-bottom: 14px; padding: 13px; display: flex; flex-wrap: wrap; align-items: end; gap: 10px; border: 1px solid var(--v2-line); border-radius: 17px; background: var(--v2-card); }
.v2-field { min-width: 160px; display: grid; gap: 6px; }
.v2-field.grow { flex: 1; }
.v2-field label { color: var(--v2-ink-soft); font-size: 11px; font-weight: 700; }
.v2-control { width: 100%; min-height: 40px; padding: 9px 11px; border: 1px solid var(--v2-line); border-radius: 11px; outline: none; color: var(--v2-ink); background: #fff; }
.v2-control:focus { border-color: var(--v2-jade); }
select.v2-control { padding-right: 38px; appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--v2-jade) 50%), linear-gradient(135deg, var(--v2-jade) 50%, transparent 50%); background-position: calc(100% - 17px) 50%, calc(100% - 12px) 50%; background-size: 5px 5px, 5px 5px; background-repeat: no-repeat; }
.v2-select { position: relative; width: 100%; min-width: 0; }
.v2-native-select { position: absolute !important; width: 1px !important; height: 1px !important; min-height: 0 !important; padding: 0 !important; opacity: 0; pointer-events: none; }
.v2-select-trigger { width: 100%; min-height: 40px; padding: 9px 38px 9px 12px; position: relative; display: flex; align-items: center; border: 1px solid var(--v2-line); border-radius: 11px; outline: none; color: var(--v2-ink); background: linear-gradient(180deg, #fff, #fdfcf9); box-shadow: 0 1px 0 rgba(255,255,255,.9) inset; cursor: pointer; text-align: left; transition: border-color .18s ease, box-shadow .18s ease, background .18s ease; }
.v2-select-trigger::after { content: ""; position: absolute; right: 14px; top: 50%; width: 7px; height: 7px; border-right: 2px solid var(--v2-jade); border-bottom: 2px solid var(--v2-jade); transform: translateY(-68%) rotate(45deg); transition: transform .18s ease; }
.v2-select-trigger:hover { border-color: #fdba74; background: #fff; }
.v2-select-trigger:focus-visible, .v2-select.is-open .v2-select-trigger { border-color: var(--v2-jade); }
.v2-select.is-open .v2-select-trigger::after { transform: translateY(-25%) rotate(225deg); }
.v2-select-trigger:disabled { color: var(--v2-ink-soft); background: #f2efe9; cursor: not-allowed; opacity: .68; }
.v2-select-trigger.is-placeholder .v2-select-value { color: var(--v2-ink-soft); }
.v2-select-value { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2-select-menu { position: fixed; z-index: 150; max-height: min(264px, calc(100dvh - 24px)); padding: 6px; overflow-x: hidden; overflow-y: auto; border: 1px solid rgba(240,221,200,.95); border-radius: 13px; background: rgba(255,255,255,.98); box-shadow: 0 18px 48px rgba(61,42,32,.2), 0 2px 10px rgba(61,42,32,.08); backdrop-filter: blur(16px); transform-origin: top; animation: v2-select-in .14s ease-out; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #fed7aa transparent; }
.v2-select-menu.opens-up { transform-origin: bottom; }
.v2-select-option { width: 100%; min-height: 40px; padding: 9px 34px 9px 11px; position: relative; display: flex; align-items: center; border: 0; border-radius: 9px; color: var(--v2-ink); background: transparent; cursor: pointer; line-height: 1.45; text-align: left; transition: color .14s ease, background .14s ease; }
.v2-select-option:hover, .v2-select-option:focus-visible { outline: none; color: var(--v2-jade-dark); background: var(--v2-jade-soft); }
.v2-select-option.active { color: var(--v2-jade-dark); background: var(--v2-jade-soft); font-weight: 700; }
.v2-select-option.active::after { content: "✓"; position: absolute; right: 12px; color: var(--v2-jade); font-size: 13px; }
.v2-select-option:disabled { color: #aaa39a; cursor: not-allowed; opacity: .6; }
@keyframes v2-select-in { from { opacity: 0; transform: translateY(-5px) scale(.98); } to { opacity: 1; transform: translateY(0) scale(1); } }
.v2-code-control { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.v2-code-control .v2-btn { min-width: 116px; white-space: nowrap; }
textarea.v2-control { min-height: 90px; resize: vertical; }

.v2-table-wrap { overflow: auto; border: 1px solid var(--v2-line); border-radius: 19px; background: var(--v2-card); }
.v2-table { width: 100%; border-collapse: collapse; min-width: 860px; }
.v2-table th { padding: 13px 14px; color: var(--v2-ink-soft); background: #f7f4ee; font-size: 11px; text-align: left; white-space: nowrap; }
.v2-table td { padding: 15px 14px; border-top: 1px solid var(--v2-line); vertical-align: top; font-size: 13px; }
.v2-table td strong, .v2-table td small { display: block; }
.v2-order-note { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.6; }
.v2-table td small { margin-top: 5px; color: var(--v2-ink-soft); }
.v2-table-actions { display: flex; flex-wrap: wrap; gap: 6px; }

.v2-empty { padding: 48px 20px; display: grid; place-items: center; text-align: center; border: 1px dashed #d7cfc1; border-radius: 20px; color: var(--v2-ink-soft); background: rgba(255,255,255,.45); }
.v2-empty strong { color: var(--v2-ink); font-size: 18px; }
.v2-empty p { max-width: 420px; margin: 8px 0 17px; line-height: 1.6; }

.v2-schedule-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; }
.v2-slot { min-height: 64px; padding: 9px; border: 1px solid var(--v2-line); border-radius: 12px; background: #fff; cursor: pointer; text-align: left; }
.v2-slot strong, .v2-slot span { display: block; }
.v2-slot span { margin-top: 5px; color: var(--v2-ink-soft); font-size: 10px; }
.v2-slot.booked { color: #895f2c; border-color: #e8d2ad; background: var(--v2-gold-soft); }
.v2-slot.blocked { color: #897d78; background: #eeeae7; }
.v2-slot.available { color: var(--v2-jade); background: var(--v2-jade-soft); }

.v2-schedule-page-head { margin-bottom: 16px; }
.v2-schedule-picker { margin-bottom: 12px; padding: 15px 17px; display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: center; gap: 12px; border: 1px solid var(--v2-line); border-radius: 19px; background: rgba(255,253,249,.8); }
.v2-schedule-label span, .v2-schedule-label small { display: block; }
.v2-schedule-label span { font-size: 13px; font-weight: 700; }
.v2-schedule-label small { margin-top: 4px; color: var(--v2-ink-soft); font-size: 10px; }
.v2-staff-pills { min-width: 0; padding: 2px; display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; scroll-snap-type: x proximity; }
.v2-staff-pills::-webkit-scrollbar, .v2-schedule-dates::-webkit-scrollbar { display: none; }
.v2-staff-pill { position: relative; min-width: 155px; min-height: 54px; padding: 7px 30px 7px 8px; display: flex; align-items: center; gap: 9px; border: 1px solid var(--v2-line); border-radius: 15px; color: var(--v2-ink); background: #fff; cursor: pointer; text-align: left; scroll-snap-align: start; transition: .18s ease; }
.v2-staff-pill:hover { border-color: #fdba74; }
.v2-staff-pill > span, .v2-staff-pill strong, .v2-staff-pill small { min-width: 0; display: block; }
.v2-staff-pill .v2-mini-avatar { width: 38px; height: 38px; border-radius: 12px; }
.v2-staff-pill strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.v2-staff-pill small { max-width: 80px; margin-top: 3px; overflow: hidden; color: var(--v2-ink-soft); text-overflow: ellipsis; white-space: nowrap; font-size: 9px; }
.v2-staff-pill i { position: absolute; right: 10px; width: 18px; height: 18px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: var(--v2-jade); font-size: 10px; font-style: normal; }
.v2-staff-pill.active { border-color: var(--v2-jade); background: var(--v2-jade-soft); }
.v2-schedule-dates { min-width: 0; display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; }
.v2-schedule-date { min-width: 82px; min-height: 60px; padding: 7px 12px; display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; align-items: center; gap: 0 9px; border: 1px solid var(--v2-line); border-radius: 15px; color: var(--v2-ink); background: #fff; cursor: pointer; text-align: left; }
.v2-schedule-date span { grid-column: 1; grid-row: 1; color: var(--v2-ink-soft); font-size: 10px; }
.v2-schedule-date strong { grid-column: 1; grid-row: 2; font-size: 21px; line-height: 1; }
.v2-schedule-date small { grid-column: 2; grid-row: 1 / 3; color: var(--v2-jade); font-size: 10px; }
.v2-schedule-date.active { color: #fff; border-color: var(--v2-ink); background: var(--v2-ink); box-shadow: 0 7px 18px rgba(61,42,32,.16); }
.v2-schedule-date.active span, .v2-schedule-date.active small { color: rgba(255,255,255,.72); }
.v2-schedule-board { overflow: hidden; border: 1px solid var(--v2-line); border-radius: 22px; background: var(--v2-card); box-shadow: 0 10px 30px rgba(91,49,21,.07); }
.v2-schedule-person { padding: 20px; display: flex; align-items: center; justify-content: space-between; gap: 15px; border-bottom: 1px solid var(--v2-line); }
.v2-schedule-person-main { min-width: 0; display: flex; align-items: center; gap: 13px; }
.v2-schedule-avatar { overflow: hidden; width: 50px; height: 50px; flex: 0 0 50px; border-radius: 16px; background: var(--v2-jade-soft); }
.v2-schedule-avatar img { width: 100%; height: 100%; object-fit: cover; }
.v2-schedule-avatar .v2-photo-fallback { font-size: 23px; }
.v2-schedule-eyebrow { color: var(--v2-jade); font-size: 10px; font-weight: 700; }
.v2-schedule-person h2 { margin: 3px 0 4px; font-size: 18px; }
.v2-schedule-person p { margin: 0; color: var(--v2-ink-soft); font-size: 11px; }
.v2-schedule-stats { display: grid; grid-template-columns: 1fr 1fr; border-bottom: 1px solid var(--v2-line); background: #faf8f3; }
.v2-schedule-stats > div { padding: 13px 20px; }
.v2-schedule-stats > div + div { border-left: 1px solid var(--v2-line); }
.v2-schedule-stats span, .v2-schedule-stats strong { display: block; }
.v2-schedule-stats span { color: var(--v2-ink-soft); font-size: 10px; }
.v2-schedule-stats strong { margin-top: 4px; font-size: 13px; }
.v2-day-timeline { padding: 12px 20px 4px; }
.v2-timeline-segment { position: relative; width: 100%; min-height: 65px; padding: 10px 8px 10px 0; display: grid; grid-template-columns: 120px minmax(0, 1fr) auto; align-items: center; gap: 16px; border: 0; border-bottom: 1px solid #eee8de; color: var(--v2-ink); background: transparent; cursor: pointer; text-align: left; }
.v2-timeline-segment:last-child { border-bottom: 0; }
.v2-timeline-time { display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 700; }
.v2-timeline-time i { width: 20px; height: 2px; border-radius: 999px; background: currentColor; opacity: .35; }
.v2-timeline-copy strong, .v2-timeline-copy small { display: block; }
.v2-timeline-copy strong { font-size: 13px; }
.v2-timeline-copy small { margin-top: 4px; color: var(--v2-ink-soft); font-size: 10px; }
.v2-timeline-segment > b { color: #98a7a2; font-size: 20px; font-weight: 400; }
.v2-timeline-segment::before { content: ""; position: absolute; left: -20px; top: 19px; bottom: 19px; width: 4px; border-radius: 999px; background: #d5ddd9; }
.v2-timeline-segment.available::before { background: var(--v2-jade); }
.v2-timeline-segment.booked::before { background: var(--v2-gold); }
.v2-timeline-segment.blocked::before { background: #aaa19b; }
.v2-timeline-segment.booked .v2-timeline-copy strong { color: #8b612d; }
.v2-timeline-segment.blocked .v2-timeline-copy strong { color: #847873; }
.v2-schedule-actions { padding: 16px 20px 20px; display: flex; gap: 9px; }
.v2-schedule-actions .v2-btn:first-child { flex: 1; }
.v2-schedule-rule { margin-top: 12px; padding: 17px 19px; display: flex; align-items: center; justify-content: space-between; gap: 15px; border: 1px solid var(--v2-line); border-radius: 19px; background: var(--v2-card); }
.v2-schedule-rule span, .v2-schedule-rule strong, .v2-schedule-rule small { display: block; }
.v2-schedule-rule span { color: var(--v2-ink-soft); font-size: 10px; }
.v2-schedule-rule strong { margin-top: 4px; font-size: 14px; }
.v2-schedule-rule small { margin-top: 5px; color: var(--v2-ink-soft); font-size: 10px; }
.v2-schedule-rule.v2-presence-card { display: flex; flex-direction: column; align-items: stretch; gap: 12px; }
.v2-presence-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.v2-presence-card .v2-field { margin: 0; }
.v2-presence-card .v2-presence-switch { width: 52px; height: 32px; padding: 4px; flex: 0 0 52px; }
.v2-presence-card .v2-presence-switch::after { width: 24px; height: 24px; }
.v2-presence-card .v2-presence-switch.on::after { transform: translateX(20px); }
.v2-presence-switch:disabled { opacity: .55; cursor: wait; }
.v2-presence-switch:focus-visible { outline: 2px solid var(--v2-jade); outline-offset: 4px; }
.v2-schedule-rule .v2-btn span { display: inline; margin-left: 6px; color: inherit; font-size: 17px; }
.v2-schedule-rest-link { width: 100%; margin-top: 8px; padding: 10px; border: 0; color: var(--v2-ink-soft); background: transparent; cursor: pointer; font-size: 10px; text-decoration: underline; text-underline-offset: 3px; }
.v2-mobile-ops { margin-top: 16px; padding-top: 14px; display: none; grid-template-columns: 1fr 1fr; gap: 8px; border-top: 1px solid var(--v2-line); }
.v2-mobile-ops > span { grid-column: 1 / -1; color: var(--v2-ink-soft); font-size: 10px; }
.v2-mobile-ops button { min-height: 42px; padding: 8px; border: 1px solid var(--v2-line); border-radius: 12px; color: var(--v2-ink-soft); background: #fff; cursor: pointer; font-size: 11px; }

.v2-profile-grid { display: grid; grid-template-columns: 270px minmax(0, 1fr); gap: 15px; }
.v2-profile-list { padding: 10px; border: 1px solid var(--v2-line); border-radius: 20px; background: var(--v2-card); }
.v2-profile-item { width: 100%; padding: 10px; display: flex; align-items: center; gap: 10px; border: 0; border-radius: 13px; background: transparent; cursor: pointer; text-align: left; }
.v2-profile-item.active { background: var(--v2-jade-soft); }
.v2-profile-item .v2-mini-avatar { width: 42px; height: 42px; }
.v2-profile-item strong, .v2-profile-item span { display: block; }
.v2-profile-item span { margin-top: 3px; color: var(--v2-ink-soft); font-size: 11px; }
.v2-form-card { padding: 20px; border: 1px solid var(--v2-line); border-radius: 20px; background: var(--v2-card); }
.v2-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
.v2-form-grid .full { grid-column: 1 / -1; }
.v2-form-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: 9px; }

.v2-photo-manager { padding-bottom: 17px; border-bottom: 1px solid var(--v2-line); }
.v2-photo-manager-head { margin-bottom: 12px; display: flex; align-items: end; justify-content: space-between; gap: 14px; }
.v2-photo-manager-head > div { display: flex; align-items: center; gap: 8px; }
.v2-photo-manager-head strong { font-size: 14px; }
.v2-photo-manager-head span { padding: 3px 7px; border-radius: 999px; color: var(--v2-jade-dark); background: var(--v2-jade-soft); font-size: 10px; font-weight: 700; }
.v2-photo-manager-head p, .v2-photo-manager-hint { margin: 0; color: var(--v2-ink-soft); font-size: 11px; line-height: 1.5; }
.v2-photo-manager-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.v2-photo-manager-item, .v2-photo-upload { overflow: hidden; min-width: 0; margin: 0; border: 1px solid var(--v2-line); border-radius: 15px; background: #f5f1e9; }
.v2-photo-preview { position: relative; width: 100%; aspect-ratio: 4 / 5; padding: 0; display: block; border: 0; background: var(--v2-jade-soft); cursor: pointer; }
.v2-photo-preview img { width: 100%; height: 100%; display: block; object-fit: cover; }
.v2-photo-avatar-badge { position: absolute; top: 8px; left: 8px; padding: 4px 7px; border-radius: 999px; color: #fff; background: rgba(61,42,32,.86); font-size: 9px; font-weight: 700; backdrop-filter: blur(6px); }
.v2-photo-manager-item footer { min-height: 38px; padding: 6px 8px; display: flex; align-items: center; justify-content: space-between; gap: 6px; color: var(--v2-ink-soft); background: #fff; font-size: 9px; }
.v2-photo-manager-item footer button { min-height: 28px; padding: 5px 8px; border: 0; border-radius: 8px; color: var(--v2-jade); background: var(--v2-jade-soft); cursor: pointer; font-size: 10px; font-weight: 700; }
.v2-photo-upload { aspect-ratio: 4 / 5; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 5px; color: var(--v2-jade); border-style: dashed; cursor: pointer; }
.v2-photo-upload:hover { border-color: var(--v2-jade); background: var(--v2-jade-soft); }
.v2-photo-upload i { font-size: 28px; font-style: normal; font-weight: 300; line-height: 1; }
.v2-photo-upload strong { font-size: 12px; }
.v2-photo-upload span { color: var(--v2-ink-soft); font-size: 9px; }
.v2-photo-manager-hint { margin-top: 9px; }
.v2-photo-editor-preview { overflow: hidden; width: min(420px, 100%); aspect-ratio: 4 / 5; margin: 0 auto 16px; border-radius: 18px; background: var(--v2-jade-soft); }
.v2-photo-editor-preview img { width: 100%; height: 100%; display: block; object-fit: contain; background: #efeae1; }
.v2-photo-editor-actions { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.v2-photo-editor-actions .v2-btn { padding-right: 8px; padding-left: 8px; }
.v2-photo-editor-foot { justify-content: space-between; }

.v2-mini-avatar { overflow: hidden; width: 36px; height: 36px; flex: 0 0 auto; border-radius: 11px; background: var(--v2-jade-soft); }
.v2-mini-avatar img { width: 100%; height: 100%; object-fit: cover; }
.v2-mini-avatar .v2-photo-fallback { font-size: 18px; }
.v2-permission-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.v2-permission { padding: 12px; display: flex; align-items: center; justify-content: space-between; gap: 8px; border: 1px solid var(--v2-line); border-radius: 13px; }
.v2-permission span { font-size: 12px; }
/* Checkboxes were left unstyled, so they rendered as the OS blue 13px box.
   Match the brand and give the touch target a usable size. */
.v2-control[type="checkbox"], .v2-permission input[type="checkbox"], label input[type="checkbox"] {
  width: 22px; height: 22px; flex: none; margin: 0; accent-color: var(--v2-jade); cursor: pointer;
}
.v2-switch { width: 40px; height: 23px; padding: 3px; border: 0; border-radius: 999px; background: #cbc4bb; cursor: pointer; }
.v2-switch::after { content: ""; display: block; width: 17px; height: 17px; border-radius: 50%; background: #fff; transition: .18s; }
.v2-switch.on { background: var(--v2-jade); }
.v2-switch.on::after { transform: translateX(17px); }

.v2-modal-layer { position: fixed; z-index: 100; inset: 0; padding: 20px; display: grid; place-items: center; background: rgba(61,42,32,.54); backdrop-filter: blur(8px); }
.v2-modal { overflow: hidden; width: min(620px, 100%); max-height: calc(100vh - 40px); display: flex; flex-direction: column; border-radius: 24px; background: var(--v2-card); box-shadow: 0 28px 80px rgba(45,28,19,.28); }
.v2-modal.wide { width: min(820px, 100%); }
.v2-modal-head { padding: 19px 21px; display: flex; align-items: center; justify-content: space-between; gap: 14px; border-bottom: 1px solid var(--v2-line); }
.v2-modal-head h3 { margin: 0; font-size: 19px; }
.v2-modal-head p { margin: 4px 0 0; color: var(--v2-ink-soft); font-size: 11px; }
.v2-close { width: 36px; height: 36px; border: 0; border-radius: 11px; background: #f0ece5; cursor: pointer; font-size: 20px; }
.v2-modal-body { overflow: auto; padding: 21px; }
.v2-modal-foot { padding: 15px 21px; display: flex; justify-content: flex-end; gap: 9px; border-top: 1px solid var(--v2-line); background: #faf8f3; }
.v2-stepper { margin-bottom: 19px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.v2-step { height: 5px; border-radius: 999px; background: #e7e0d6; }
.v2-step.active { background: var(--v2-jade); }
.v2-choice-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.v2-choice { padding: 14px; border: 1px solid var(--v2-line); border-radius: 14px; background: #fff; cursor: pointer; text-align: left; }
.v2-choice.active { border-color: var(--v2-jade); background: var(--v2-jade-soft); }
.v2-choice strong, .v2-choice span { display: block; }
.v2-choice span { margin-top: 5px; color: var(--v2-ink-soft); font-size: 11px; }
.v2-date-row { display: grid; grid-template-columns: repeat(7, 1fr); gap: 7px; }
.v2-date-choice { padding: 10px 5px; border: 1px solid var(--v2-line); border-radius: 12px; background: #fff; cursor: pointer; text-align: center; }
.v2-date-choice.active { color: #fff; border-color: var(--v2-jade); background: var(--v2-jade); }
.v2-date-choice span, .v2-date-choice strong { display: block; }
.v2-date-choice span { font-size: 10px; }
.v2-date-choice strong { margin-top: 5px; }
.v2-time-grid { margin-top: 13px; display: grid; grid-template-columns: repeat(6, 1fr); gap: 7px; max-height: 250px; overflow: auto; }
.v2-time-choice { padding: 9px 4px; border: 1px solid var(--v2-line); border-radius: 10px; background: #fff; cursor: pointer; }
.v2-time-choice small { display: block; margin-top: 2px; font-size: 8px; }
.v2-time-choice.active { color: #fff; border-color: var(--v2-jade); background: var(--v2-jade); }
.v2-time-choice.covered { color: var(--v2-jade-dark); border-color: rgba(194,65,12,.3); background: var(--v2-jade-soft); }
.v2-duration-section { margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--v2-line); }
.v2-duration-section h4 { margin: 0; font-size: 15px; }
.v2-duration-section > p { margin: 6px 0 12px; color: var(--v2-ink-soft); font-size: 11px; line-height: 1.6; }
.v2-duration-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.v2-duration-choice { min-height: 64px; padding: 10px 7px; border: 1px solid var(--v2-line); border-radius: 12px; background: #fff; cursor: pointer; text-align: center; }
.v2-duration-choice strong, .v2-duration-choice span { display: block; }
.v2-duration-choice span { margin-top: 5px; color: var(--v2-ink-soft); font-size: 10px; }
.v2-duration-choice.active { color: #fff; border-color: var(--v2-jade); background: var(--v2-jade); }
.v2-duration-choice.active span { color: rgba(255,255,255,.78); }
.v2-duration-choice:disabled { opacity: .38; cursor: not-allowed; }
.v2-selected-range { margin-top: 12px; padding: 12px 14px; display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 3px 12px; border-radius: 13px; color: var(--v2-jade-dark); background: var(--v2-jade-soft); }
.v2-selected-range span { font-size: 11px; }
.v2-selected-range strong { font-size: 16px; }
.v2-selected-range small { grid-column: 1 / -1; color: var(--v2-ink-soft); font-size: 10px; }
.v2-booking-summary { padding: 15px; display: grid; gap: 9px; border-radius: 15px; background: #f5f1e9; }
.v2-booking-person { margin-bottom: 20px; padding: 12px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 11px; border-radius: 15px; background: var(--v2-jade-soft); }
.v2-booking-person span, .v2-booking-person strong { display: block; }
.v2-booking-person > div > span { margin-bottom: 3px; color: var(--v2-ink-soft); font-size: 10px; }
.v2-profile-availability { margin-bottom: 18px; padding: 11px 12px; display: flex; align-items: center; justify-content: space-between; gap: 10px; border-radius: 14px; background: #f5f1e9; font-size: 12px; }
.v2-service-scope { display: flex; flex-wrap: wrap; gap: 7px; }
.v2-service-scope span { padding: 7px 10px; border-radius: 999px; color: var(--v2-jade-dark); background: var(--v2-jade-soft); font-size: 11px; }
.v2-detail-note { margin: 12px 0 0; color: var(--v2-ink-soft); line-height: 1.6; font-size: 12px; }
.v2-summary-row { display: flex; justify-content: space-between; gap: 18px; font-size: 13px; }
.v2-summary-row span { color: var(--v2-ink-soft); }
.v2-alert { margin: 0 0 14px; padding: 12px 14px; border-radius: 13px; color: #8c622c; background: var(--v2-gold-soft); font-size: 12px; line-height: 1.6; }
.v2-alert.danger { color: #964f48; background: var(--v2-red-soft); }
.v2-diff { margin: 12px 0; display: grid; grid-template-columns: 1fr 36px 1fr; align-items: center; gap: 8px; }
.v2-diff-card { padding: 12px; border-radius: 13px; background: #f3efe8; }
.v2-diff-card small, .v2-diff-card strong { display: block; }
.v2-diff-card small { color: var(--v2-ink-soft); }
.v2-diff-card strong { margin-top: 5px; }
.v2-diff-arrow { text-align: center; color: var(--v2-jade); }

.v2-toast { position: fixed; z-index: 130; left: 50%; bottom: 28px; min-width: 260px; max-width: calc(100% - 32px); padding: 13px 18px; display: flex; align-items: center; justify-content: center; gap: 9px; border-radius: 999px; color: #fff; background: var(--v2-ink); box-shadow: 0 15px 40px rgba(61,42,32,.28); transform: translate(-50%, 120px); opacity: 0; transition: .25s ease; }
.v2-toast.show { transform: translate(-50%, 0); opacity: 1; }
.v2-toast i { color: #d9bd89; font-style: normal; }

@media (max-width: 1050px) {
  .v2-service-grid { grid-template-columns: repeat(2, 1fr); }
  .v2-staff-grid { grid-template-columns: repeat(2, 1fr); }
  .v2-kpis { grid-template-columns: repeat(2, 1fr); }
  .v2-schedule-grid { grid-template-columns: repeat(4, 1fr); }
  .v2-permission-grid { grid-template-columns: repeat(2, 1fr); }
  .v2-photo-manager-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 820px), (max-width: 1050px) and (orientation: landscape) and (pointer: coarse) {
  .v2-topbar-inner { padding: 12px 0; flex-wrap: wrap; }
  .v2-view-switch { order: 3; width: 100%; overflow-x: auto; }
  .v2-view-btn { flex: 1; }
  .v2-admin-shell { grid-template-columns: 1fr; }
  .v2-sidebar { position: static; }
  .v2-nav { display: none; }
  .v2-demo-tools { display: none; }
  .v2-mobile-ops { display: grid; }
  .v2-mobile-menu-sheet { max-height: 94dvh; overflow-y: auto; overscroll-behavior: contain; }
  .v2-main-management, .v2-main-customer { padding-bottom: 112px; }
  .v2-customer-tabs { display: none; }
  .v2-mobile-bottom-nav {
    position: fixed;
    z-index: 90;
    right: 8px;
    bottom: max(8px, env(safe-area-inset-bottom));
    left: 8px;
    width: min(calc(100% - 16px), 560px);
    min-height: 64px;
    margin: 0 auto;
    padding: 6px;
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 1fr;
    gap: 4px;
    border: 1px solid rgba(213,202,187,.86);
    border-radius: 20px;
    background: rgba(255,253,249,.94);
    box-shadow: 0 10px 34px rgba(61,42,32,.18);
    backdrop-filter: blur(18px);
  }
  /* Keyboards that resize the layout would otherwise lift the nav over the form being typed in. */
  body:has(:is(input:not([type=checkbox], [type=radio]), textarea, [contenteditable]):focus) .v2-mobile-bottom-nav { display: none; }
  .v2-mobile-bottom-item { position: relative; min-width: 0; min-height: 50px; padding: 5px 4px; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 3px; border: 0; border-radius: 15px; color: var(--v2-ink-soft); background: transparent; font-size: 11px; font-weight: 700; cursor: pointer; }
  .v2-mobile-bottom-item i { height: 18px; display: grid; place-items: center; font-size: 17px; font-style: normal; line-height: 1; }
  .v2-mobile-bottom-item.active { color: #fff; background: var(--v2-ink); box-shadow: 0 5px 14px rgba(61,42,32,.18); }
  .v2-mobile-tab-badge { position: absolute; top: 3px; left: calc(50% + 7px); min-width: 16px; height: 16px; padding: 0 4px; display: grid; place-items: center; border: 2px solid rgba(255,253,249,.96); border-radius: 999px; color: #fff; background: var(--v2-unread); font-size: 8px; line-height: 1; }
  .v2-mobile-bottom-item.active .v2-mobile-tab-badge { border-color: var(--v2-ink); }
  .v2-toast { bottom: calc(88px + env(safe-area-inset-bottom)); }
  .v2-mobile-menu-layer { position: fixed; z-index: 120; inset: 0; display: grid; align-items: end; }
  .v2-mobile-menu-backdrop { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: rgba(61,42,32,.5); backdrop-filter: blur(4px); }
  .v2-mobile-menu-sheet { position: relative; z-index: 1; width: min(100%, 560px); margin: 0 auto; padding: 20px 18px max(24px, env(safe-area-inset-bottom)); border-radius: 24px 24px 0 0; background: var(--v2-card); box-shadow: 0 -18px 50px rgba(61,42,32,.2); }
  .v2-mobile-menu-sheet header { margin-bottom: 15px; display: flex; align-items: center; justify-content: space-between; }
  .v2-mobile-menu-sheet header small { color: var(--v2-ink-soft); font-size: 10px; }
  .v2-mobile-menu-sheet h3 { margin: 2px 0 0; font-size: 21px; }
  .v2-mobile-menu-close { width: 42px; height: 42px; border: 1px solid var(--v2-line); border-radius: 50%; color: var(--v2-ink); background: #fff; font-size: 24px; cursor: pointer; }
  .v2-mobile-menu-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
  .v2-mobile-menu-item { min-width: 0; min-height: 68px; padding: 12px; display: flex; align-items: center; gap: 11px; border: 1px solid var(--v2-line); border-radius: 16px; color: var(--v2-ink); background: #fff; text-align: left; cursor: pointer; }
  .v2-mobile-menu-item > i { width: 35px; height: 35px; flex: 0 0 35px; display: grid; place-items: center; border-radius: 11px; color: var(--v2-jade); background: var(--v2-jade-soft); font-style: normal; }
  .v2-mobile-menu-item span, .v2-mobile-menu-item strong, .v2-mobile-menu-item small { min-width: 0; display: block; }
  .v2-mobile-menu-item strong { font-size: 13px; }
  .v2-mobile-menu-item small { margin-top: 3px; color: var(--v2-ink-soft); font-size: 10px; }
  .v2-mobile-menu-item.active { color: #fff; border-color: var(--v2-ink); background: var(--v2-ink); }
  .v2-mobile-menu-item.active > i { color: #fff; background: rgba(255,255,255,.15); }
  .v2-mobile-menu-item.active small { color: rgba(255,255,255,.7); }
  .v2-panel-grid { grid-template-columns: 1fr; }
  .v2-profile-grid { grid-template-columns: 1fr; }
  .v2-profile-list { display: flex; overflow-x: auto; }
  .v2-profile-item { min-width: 200px; }
  .v2-order-meta { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 600px) {
  .v2-topbar-inner, .v2-main { width: min(100% - 24px, 1240px); }
  .v2-brand-tag { display: none; }
  .v2-view-btn { padding: 8px 10px; font-size: 12px; }
  .v2-main { padding-top: 14px; }
  .v2-section-head { align-items: start; }
  .v2-section-head h2, .v2-page-head h1 { font-size: 26px; }
  .v2-service-grid, .v2-staff-grid, .v2-kpis { grid-template-columns: 1fr; }
  .v2-staff-cover { height: 300px; }
  .v2-gallery-arrow { display: none; }
  .v2-order-card { padding: 17px; }
  .v2-order-top { align-items: start; }
  .v2-order-meta { grid-template-columns: 1fr 1fr; }
  .v2-order-actions { justify-content: stretch; }
  .v2-order-actions .v2-btn { flex: 1; }
  .v2-page-head { align-items: start; flex-direction: column; }
  .v2-toolbar { align-items: stretch; flex-direction: column; }
  .v2-field { width: 100%; }
  .v2-schedule-grid { grid-template-columns: repeat(3, 1fr); }
  .v2-form-grid, .v2-permission-grid { grid-template-columns: 1fr; }
  .v2-form-grid .full { grid-column: auto; }
  .v2-form-actions { grid-column: auto; }
  .v2-photo-manager.full { grid-column: auto; }
  .v2-photo-manager-head { align-items: start; flex-direction: column; gap: 5px; }
  .v2-photo-manager-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }
  .v2-photo-editor-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .v2-modal-layer { padding: 0; align-items: end; }
  .v2-modal, .v2-modal.wide { width: 100%; max-height: 92vh; border-radius: 24px 24px 0 0; }
  .v2-choice-grid { grid-template-columns: 1fr; }
  .v2-date-row { overflow-x: auto; grid-template-columns: repeat(7, 62px); }
  .v2-time-grid { grid-template-columns: repeat(4, 1fr); }
  .v2-diff { grid-template-columns: 1fr; }
  .v2-diff-arrow { transform: rotate(90deg); }
}

/* Mobile-first product experience: phone is the primary interaction surface. */
@media (max-width: 699px) {
  #earcareApp { overflow-x: hidden; }
  #earcareApp button { -webkit-tap-highlight-color: transparent; }

  .v2-topbar-inner {
    width: calc(100% - 24px);
    min-height: 0;
    padding: 10px 0 9px;
    flex-wrap: wrap;
    gap: 9px 12px;
  }
  .v2-brand-mark { width: 36px; height: 36px; border-radius: 12px 12px 12px 4px; font-size: 18px; }
  .v2-brand-name { font-size: 19px; }
  .v2-brand-tag, .v2-top-identity { display: none; }
  .v2-top-actions { gap: 5px; }
  .v2-top-auth { min-height: 36px; padding: 7px 9px; }
  .v2-view-switch {
    order: 3;
    width: 100%;
    padding: 3px;
    gap: 2px;
    overflow-x: auto;
    scroll-snap-type: x proximity;
    scrollbar-width: none;
  }
  .v2-view-switch::-webkit-scrollbar { display: none; }
  .v2-view-btn {
    min-width: 70px;
    min-height: 40px;
    flex: 1 0 auto;
    padding: 8px 10px;
    scroll-snap-align: start;
    font-size: 12px;
  }

  .v2-main { width: calc(100% - 24px); padding: 12px 0 calc(76px + env(safe-area-inset-bottom)); }
  .v2-main.v2-main-management, .v2-main.v2-main-customer { padding-bottom: calc(100px + env(safe-area-inset-bottom)); }
  .v2-btn { min-height: 46px; padding: 10px 15px; border-radius: 13px; }
  .v2-btn-small { min-height: 40px; padding: 8px 11px; border-radius: 11px; }
  .v2-close { width: 44px; height: 44px; flex: 0 0 44px; }

  .v2-section-head { margin: 24px 0 14px; align-items: start; }
  .v2-section-head h2, .v2-section-head h1, .v2-page-head h1 { font-size: 26px; line-height: 1.2; }
  .v2-section-head p, .v2-page-head p { font-size: 12px; line-height: 1.6; }

  .v2-service-grid, .v2-staff-grid { grid-template-columns: 1fr; gap: 14px; }
  .v2-service-card { min-height: 210px; padding: 21px; border-radius: 20px; }
  .v2-staff-card { border-radius: 22px; }
  .v2-staff-cover { height: auto; min-height: 0; aspect-ratio: 4 / 5; }
  .v2-staff-card-body { padding: 17px; }
  .v2-staff-card p { min-height: 0; margin-bottom: 13px; }
  .v2-card-actions { position: relative; margin-top: 15px; gap: 8px; }
  .v2-card-actions .v2-btn { min-height: 48px; }
  .v2-gallery-arrow { display: none; }
  .v2-gallery-indicator { bottom: 10px; min-height: 30px; padding: 4px 8px; }
  .v2-gallery-dot { width: 18px; height: 18px; display: grid; place-items: center; background: transparent; }
  .v2-gallery-dot::after { content: ""; width: 5px; height: 5px; border-radius: 999px; background: rgba(255,255,255,.5); }
  .v2-gallery-dot.active { width: 18px; background: transparent; }
  .v2-gallery-dot.active::after { width: 12px; background: #fff; }

  .v2-order-list { gap: 12px; }
  .v2-order-card { padding: 16px; border-radius: 18px; }
  .v2-order-top { align-items: start; }
  .v2-order-top h3 { font-size: 16px; line-height: 1.45; }
  .v2-order-meta { margin: 14px 0; padding: 12px; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 9px; }
  .v2-order-meta strong { font-size: 12px; line-height: 1.45; overflow-wrap: anywhere; }
  .v2-order-actions { justify-content: stretch; }
  .v2-order-actions .v2-btn { flex: 1; }
  .v2-customer-service { align-items: flex-start; flex-wrap: wrap; }
  .v2-customer-service .v2-btn { width: 100%; }

  .v2-admin-shell { min-height: 0; display: block; }
  .v2-sidebar { position: static; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
  .v2-admin-user { padding: 11px; border: 1px solid var(--v2-line); }
  .v2-admin-avatar { width: 36px; height: 36px; }
  .v2-demo-tools { margin-top: 8px; padding-top: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 7px; border-top: 0; }
  .v2-demo-tools small { display: none; }
  .v2-admin-content { padding-top: 18px; }
  .v2-admin-page-schedule .v2-admin-user,
  .v2-admin-page-schedule .v2-demo-tools { display: none; }
  .v2-admin-page-schedule .v2-admin-content { padding-top: 0; }
  .v2-page-head { margin: 0 0 14px; align-items: stretch; flex-direction: column; gap: 10px; }
  .v2-page-head > .v2-btn { width: 100%; }

  .v2-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
  .v2-kpi { padding: 15px; border-radius: 16px; }
  .v2-kpi strong { margin-top: 6px; font-size: 22px; }
  .v2-kpi small { font-size: 10px; line-height: 1.4; }
  .v2-panel-grid { grid-template-columns: 1fr; gap: 12px; }
  .v2-panel { border-radius: 18px; }
  .v2-panel-head { padding: 15px; }
  .v2-panel-body { padding: 14px; }
  .v2-quick-row { padding: 11px; grid-template-columns: 58px minmax(0, 1fr) auto; gap: 8px; }

  .v2-toolbar { padding: 11px; align-items: stretch; flex-direction: column; border-radius: 16px; }
  .v2-field { width: 100%; min-width: 0; }
  .v2-control { min-height: 48px; padding: 11px 12px; border-radius: 12px; font-size: 16px; }
  .v2-select-trigger { min-height: 48px; padding: 11px 40px 11px 12px; border-radius: 12px; font-size: 16px; }
  .v2-select-option { min-height: 46px; padding-top: 11px; padding-bottom: 11px; }
  .v2-code-control { grid-template-columns: 1fr; }
  .v2-code-control .v2-btn { width: 100%; }
  textarea.v2-control { min-height: 104px; }

  .v2-table-wrap { overflow: visible; border: 0; border-radius: 0; background: transparent; }
  .v2-table { min-width: 0; display: block; }
  .v2-table thead { display: none; }
  .v2-table tbody { display: grid; gap: 12px; }
  .v2-table tr { padding: 10px 12px; display: block; border: 1px solid var(--v2-line); border-radius: 17px; background: var(--v2-card); box-shadow: 0 7px 20px rgba(91,49,21,.05); }
  .v2-table td {
    width: 100%;
    min-height: 36px;
    padding: 8px 0;
    display: grid;
    grid-template-columns: 86px minmax(0, 1fr);
    gap: 4px 10px;
    border: 0;
    border-top: 1px solid #eee8de;
    align-items: start;
    overflow-wrap: anywhere;
  }
  .v2-table td:first-child { border-top: 0; }
  .v2-table td::before { content: attr(data-label); grid-column: 1; grid-row: 1; color: var(--v2-ink-soft); font-size: 11px; font-weight: 700; line-height: 1.6; }
  .v2-table td > * { grid-column: 2; min-width: 0; }
  .v2-table td[colspan] { display: block; padding: 0; }
  .v2-table td[colspan]::before { display: none; }
  .v2-table td[colspan] > * { display: block; }
  .v2-table td .v2-timeline { grid-column: 1 / -1; }
  .v2-table td .v2-status { justify-self: start; }
  .v2-table td [data-field] { width: 100% !important; }
  .v2-table td .v2-duration-input { justify-self: start; }
  .v2-table td .v2-duration-input [data-field] { width: 110px !important; }
  .v2-table-actions { width: 100%; }
  .v2-table-actions .v2-btn { flex: 1; }

  .v2-table tr.v2-order-table-row {
    padding: 12px 14px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: 16px;
    row-gap: 0;
  }
  .v2-order-table-row td {
    min-height: 0;
    padding: 10px 0;
    display: block;
    border-top: 1px solid #eee8de;
  }
  .v2-order-table-row td::before {
    display: block;
    margin-bottom: 5px;
    color: var(--v2-ink-soft);
    font-size: 11px;
  }
  .v2-order-table-row td > * { display: block; }
  .v2-order-table-row td:nth-child(1),
  .v2-order-table-row td:nth-child(6),
  .v2-order-table-row td:nth-child(7) { grid-column: 1 / -1; }
  .v2-order-table-row td:nth-child(1) {
    padding-top: 2px;
    border-top: 0;
  }
  .v2-order-table-row td:nth-child(2),
  .v2-order-table-row td:nth-child(3) { border-top: 1px solid #eee8de; }
  .v2-order-table-row td:nth-child(4),
  .v2-order-table-row td:nth-child(5) { padding-bottom: 10px; }
  .v2-order-table-row td:nth-child(5) .v2-status { display: inline-flex; width: auto; }
  .v2-order-table-row td:nth-child(7) { padding: 11px 0 2px; }
  .v2-order-table-row td:nth-child(7)::before { margin-bottom: 8px; }
  .v2-order-table-row .v2-table-actions { display: flex; flex-wrap: wrap; gap: 7px; }
  .v2-order-table-row .v2-table-actions .v2-btn { min-width: 74px; }
  .v2-order-table-row .v2-order-confirm-action { min-height: 48px; flex: 1 0 100%; font-size: 14px; }
  .v2-order-table-row td:nth-child(7) .v2-timeline { width: 100%; }

  .v2-schedule-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .v2-slot { min-height: 72px; padding: 8px; border-radius: 11px; }
  .v2-slot strong { font-size: 12px; }
  .v2-schedule-page-head { margin-bottom: 12px; }
  .v2-schedule-page-head p { max-width: 290px; }
  .v2-schedule-picker { margin-bottom: 9px; padding: 12px; grid-template-columns: 1fr; gap: 9px; border-radius: 17px; }
  .v2-schedule-label { display: flex; align-items: center; justify-content: space-between; }
  .v2-schedule-label small { margin-top: 0; }
  .v2-staff-pills { margin-right: -12px; padding-right: 12px; }
  .v2-staff-pill { min-width: 142px; min-height: 52px; }
  .v2-schedule-dates { margin-right: -12px; padding-right: 12px; }
  .v2-schedule-date { min-width: 88px; min-height: 62px; flex: 1 0 88px; }
  .v2-schedule-board { border-radius: 19px; }
  .v2-schedule-person { padding: 15px; align-items: flex-start; }
  .v2-schedule-person-main { align-items: flex-start; }
  .v2-schedule-avatar { width: 44px; height: 44px; flex-basis: 44px; border-radius: 14px; }
  .v2-schedule-person h2 { font-size: 16px; }
  .v2-schedule-person p { max-width: 210px; line-height: 1.45; }
  .v2-schedule-person > .v2-status { padding: 5px 7px; font-size: 9px; }
  .v2-schedule-stats > div { padding: 12px 15px; }
  .v2-day-timeline { padding: 7px 15px 0; }
  .v2-timeline-segment { min-height: 62px; grid-template-columns: 104px minmax(0, 1fr) auto; gap: 9px; }
  .v2-timeline-segment::before { left: -15px; }
  .v2-timeline-time { gap: 5px; font-size: 11px; }
  .v2-timeline-time i { width: 12px; }
  .v2-timeline-copy strong { font-size: 12px; }
  .v2-schedule-actions { padding: 13px 15px 15px; display: grid; grid-template-columns: 1fr 1fr; }
  .v2-schedule-actions .v2-btn { min-width: 0; padding-right: 8px; padding-left: 8px; font-size: 12px; }
  .v2-schedule-rule { padding: 15px; align-items: stretch; flex-direction: column; gap: 12px; border-radius: 17px; }
  .v2-schedule-rule .v2-btn { width: 100%; }
  .v2-mobile-ops { display: grid; }

  .v2-profile-grid { grid-template-columns: 1fr; gap: 12px; }
  .v2-profile-list { padding: 8px; display: flex; gap: 6px; overflow-x: auto; scroll-snap-type: x proximity; }
  .v2-profile-item { min-width: 190px; min-height: 58px; scroll-snap-align: start; }
  .v2-form-card { padding: 15px; border-radius: 18px; }
  .v2-form-grid, .v2-permission-grid { grid-template-columns: 1fr; gap: 11px; }
  .v2-form-grid .full, .v2-form-actions { grid-column: auto; }
  .v2-form-actions .v2-btn { width: 100%; }
  .v2-permission { min-height: 48px; }
  .v2-switch { width: 48px; height: 28px; padding: 4px; flex: 0 0 48px; }
  .v2-switch::after { width: 20px; height: 20px; }
  .v2-switch.on::after { transform: translateX(20px); }

  .v2-modal-layer { padding: 0; align-items: end; overflow: hidden; }
  .v2-modal, .v2-modal.wide {
    width: 100%;
    max-height: min(94dvh, 820px);
    border-radius: 24px 24px 0 0;
    box-shadow: 0 -18px 60px rgba(45,28,19,.24);
  }
  .v2-modal-head { padding: 15px 16px 13px; }
  .v2-modal-head h3 { font-size: 18px; }
  .v2-modal-body { padding: 16px; overscroll-behavior: contain; }
  .v2-modal-foot { padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); position: sticky; bottom: 0; gap: 8px; }
  .v2-modal-foot .v2-btn { flex: 1; min-width: 0; }
  .v2-stepper { margin-bottom: 15px; }
  .v2-choice-grid { grid-template-columns: 1fr; }
  .v2-choice { min-height: 64px; padding: 14px; }
  .v2-date-row { display: flex; gap: 7px; overflow-x: auto; padding-bottom: 4px; scroll-snap-type: x mandatory; scrollbar-width: none; }
  .v2-date-row::-webkit-scrollbar { display: none; }
  .v2-date-choice { min-width: 64px; min-height: 64px; flex: 0 0 64px; scroll-snap-align: start; }
  .v2-time-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); max-height: 32dvh; gap: 7px; }
  .v2-time-choice { min-height: 44px; }
  .v2-duration-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .v2-booking-summary { padding: 13px; }
  .v2-booking-person { grid-template-columns: auto minmax(0, 1fr) auto; }
  .v2-booking-person .v2-service-state { grid-column: 3; }
  .v2-profile-availability { align-items: flex-start; flex-direction: column; }
  .v2-summary-row { align-items: flex-start; font-size: 12px; }
  .v2-summary-row strong { max-width: 66%; text-align: right; line-height: 1.5; }
  .v2-diff { grid-template-columns: 1fr; }
  .v2-diff-arrow { transform: rotate(90deg); }
  .v2-staff-detail-layout { display: grid; grid-template-columns: 1fr; gap: 16px; }
  .v2-staff-detail-layout .v2-staff-cover { width: min(100%, 390px); margin: 0 auto; border-radius: 18px; overflow: hidden; }

  .v2-toast { bottom: calc(18px + env(safe-area-inset-bottom)); min-width: 0; width: calc(100% - 32px); border-radius: 15px; text-align: center; }
}

@media (min-width: 700px) {
  .v2-staff-detail-layout { display: grid; grid-template-columns: minmax(220px, .75fr) 1.25fr; gap: 20px; }
  .v2-staff-detail-layout .v2-staff-cover { height: 360px; border-radius: 18px; overflow: hidden; }
}

/* Public project descriptions remain readable on both mobile and desktop. */
.v2-home-services { margin-bottom: 28px; }
.v2-home-services .v2-service-card { min-height: 0; padding: 20px; }
.v2-home-service-heading { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: 12px; margin-bottom: 8px; }
.v2-home-services .v2-service-card h3 { margin: 0; overflow-wrap: anywhere; }
.v2-home-service-price { color: var(--v2-jade); font-size: 20px; font-weight: 700; white-space: nowrap; }
.v2-home-services .v2-service-card p { white-space: pre-line; overflow-wrap: anywhere; }

/* Shared location card for customer introductions and time selection. */
.v2-store-address { margin: 18px 0; padding: 16px; display: flex; flex-wrap: wrap; align-items: center; gap: 14px; border: 1px solid var(--v2-line); border-radius: 16px; background: var(--v2-jade-soft); }
.v2-store-address-copy { flex: 1 1 240px; min-width: 0; overflow-wrap: anywhere; }
.v2-store-address h3 { margin: 0 0 8px; font-size: 15px; }
.v2-store-address p { margin: 0; font-size: 14px; line-height: 1.7; }
.v2-store-address .v2-store-address-guide { margin-top: 4px; color: var(--v2-ink-soft); font-size: 13px; }
.v2-store-address a { white-space: normal; }

.v2-booking-person > div { min-width: 0; }
.v2-booking-person > div > strong { overflow-wrap: anywhere; }
.v2-booking-person > .v2-service-state { grid-column: 3; grid-row: 1; align-self: start; justify-self: end; display: inline-flex; white-space: nowrap; }
.v2-booking-services { grid-column: 1 / -1; padding-top: 12px; border-top: 1px solid var(--v2-line); }
.v2-booking-services h4 { margin: 0 0 8px; font-size: 12px; color: var(--v2-ink-soft); }
.v2-booking-services .v2-service-scope span { background: var(--v2-card); overflow-wrap: anywhere; max-width: 100%; }
.v2-booking-services p { margin: 0; font-size: 12px; color: var(--v2-ink-soft); line-height: 1.6; }

.v2-store-map-picker { min-width: 0; }
.v2-store-map-picker summary { width: fit-content; padding: 6px 0; color: var(--v2-jade); font-size: 13px; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; list-style: none; }
.v2-store-map-picker summary::-webkit-details-marker { display: none; }
.v2-store-map-options { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 18px; padding-top: 6px; }
.v2-store-map-link, .v2-store-map-link:visited { color: var(--v2-jade); font-size: 13px; font-weight: 600; }
.v2-store-map-options a { display: inline-block; padding: 6px 0; text-decoration: underline; text-underline-offset: 3px; }
.v2-store-map-picker summary:focus-visible, .v2-store-map-options a:focus-visible { outline: 2px solid var(--v2-jade); outline-offset: 3px; border-radius: 2px; }

.v2-status-expired { color: #686874; background: #eeeef2; }
.v2-expiry-note { display: block; margin-top: 8px; color: var(--v2-ink-soft); line-height: 1.5; }

/* Service execution controls and readable order information. */
.v2-btn.v2-btn-service { background: #bd302f; color: #fff !important; min-height: 48px; padding: 12px 20px; font-size: 16px; font-weight: 700; }
.v2-btn.v2-btn-service:hover { background: #a42424; }
.v2-status-in_progress { background: #fce3df; color: #a42424; }
.v2-order-table-row .v2-status { font-size: 14px; padding: 7px 12px; font-weight: 700; }
.v2-order-timing { display: grid; gap: 7px; margin: 8px 0; }
.v2-order-timing .v2-order-time { font-size: 19px; line-height: 1.4; color: var(--v2-ink); }
.v2-order-timing > strong { font-size: 15px; }
.v2-order-timing > span, .v2-booking-number { color: var(--v2-ink-soft); font-size: 12px; }
.v2-order-timing .v2-shift-note { color: #a42424; }
.v2-order-table-row .v2-order-staff-name { display: block; font-size: 21px; line-height: 1.5; }
.v2-order-table-row .v2-order-duration { display: block; margin: 6px 0; font-size: 16px; }
.v2-status-filters { border: 0; padding: 0; margin: 0; min-width: 0; max-width: 560px; }
.v2-filter-options { display: flex; flex-wrap: wrap; gap: 7px; }
.v2-status-filters legend { margin-bottom: 8px; color: var(--v2-ink-soft); font-size: 12px; }
.v2-filter-chip { border: 1px solid var(--v2-line); border-radius: 20px; padding: 9px 13px; background: var(--v2-card); color: var(--v2-ink); cursor: pointer; font: inherit; font-size: 13px; }
.v2-filter-chip.active { background: #bd302f; border-color: #bd302f; color: white; }
.v2-filter-chip:focus-visible { outline: 2px solid var(--v2-jade); outline-offset: 3px; }
.v2-orders-toolbar .grow { min-width: 0; }
.v2-service-picker { display: grid; gap: 10px; margin-top: 20px; }
.v2-service-choice { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px; border: 1px solid var(--v2-line); border-radius: 14px; }
.v2-service-choice.selected { border-color: #bd302f; background: #fff4f1; }
.v2-service-choice strong { display: block; font-size: 16px; }
.v2-service-choice span { display: block; color: var(--v2-ink-soft); font-size: 13px; margin-top: 6px; }
.v2-quantity-control { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.v2-quantity-control .v2-btn { min-height: 44px; min-width: 44px; padding: 8px; font-size: 20px; }
.v2-quantity-control output { min-width: 22px; text-align: center; font-weight: 700; font-size: 18px; }
.v2-execution-help { line-height: 1.7; color: var(--v2-ink-soft); }
.v2-execution-total { display: grid; gap: 8px; padding: 18px; margin-top: 20px; border-radius: 14px; background: #f9ede7; }
.v2-execution-total strong { font-size: 20px; }
.v2-execution-total small { line-height: 1.6; color: var(--v2-ink-soft); }
@media (max-width: 700px) {
  .v2-status-filters { width: 100%; max-width: none; }
  .v2-order-table-row .v2-table-actions .v2-btn-service { min-height: 52px; flex: 1 0 100%; font-size: 17px; }
  .v2-service-choice { padding: 12px; gap: 8px; }
}

@media (max-width: 699px) {
  /* Keep operational tools in More so reservations begin near the top. */
  .v2-demo-tools { display: none; }
  .v2-top-auth, .v2-view-btn, .v2-btn-small,
  .v2-mobile-ops button, .v2-mobile-menu-close { min-height: 44px; }
  .v2-mobile-menu-close { min-width: 44px; }
  .v2-orders-toolbar { gap: 14px; padding: 12px; }
  .v2-orders-toolbar .v2-field { gap: 7px; }
  .v2-orders-toolbar label { font-size: 13px; }
  .v2-orders-toolbar .v2-control { appearance: auto; min-width: 0; }
  .v2-filter-options { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
  .v2-filter-chip { min-width: 0; min-height: 44px; padding: 9px 4px; border-radius: 12px; font-size: 14px; line-height: 1.4; }
  .v2-filter-chip.active { font-weight: 600; }
  .v2-order-table-row td { min-width: 0; }
  .v2-service-choice { flex-wrap: wrap; }
  .v2-service-choice > div:first-child { min-width: 0; flex: 1 1 120px; overflow-wrap: anywhere; }
  .v2-quantity-control { margin-left: auto; }
  .v2-modal-head, .v2-modal-foot { flex-shrink: 0; }
  .v2-modal-body { min-height: 0; scroll-padding-block: 16px; }
  .v2-modal-head > div { min-width: 0; overflow-wrap: anywhere; }
  .v2-mobile-menu-sheet { max-height: 94dvh; overflow-y: auto; overscroll-behavior: contain; }
  .v2-control { scroll-margin-block: 90px; }
}

/* Staff introduction video: touch controls and an explicit, quiet loading state. */
.v2-video-manager { min-width: 0; padding: 20px; border: 1px solid var(--v2-line, #e7e4df); border-radius: 18px; background: #faf9f6; }
.v2-video-manager > header > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.v2-video-manager > header span { color: var(--v2-ink-soft); font-size: 12px; }
.v2-video-manager p { color: var(--v2-ink-soft); font-size: 13px; line-height: 1.7; margin: 8px 0 16px; }
.v2-staff-video { margin: 20px 0; min-width: 0; }
.v2-staff-video video { display: block; width: 100%; max-height: 440px; aspect-ratio: 4 / 5; object-fit: contain; border-radius: 14px; background: #171b19; }
.v2-video-manager .v2-staff-video { max-width: 460px; margin-inline: auto; }
.v2-video-empty { display: grid; justify-items: center; padding: 25px 12px; margin: 16px 0; border: 1px dashed #cccfc5; border-radius: 14px; text-align: center; }
.v2-video-empty > span { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: #e7ede5; color: #3c5948; font-size: 28px; margin-bottom: 12px; }
.v2-video-empty p { margin: 8px 0 0; }
.v2-video-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.v2-video-actions button, .v2-video-retry { min-height: 46px; }
.v2-video-upload-status { margin: 14px 0; font-size: 13px; line-height: 1.7; overflow-wrap: anywhere; }
.v2-video-upload-status progress { display: block; width: 100%; height: 8px; margin-top: 10px; accent-color: #526e50; }
.v2-video-playback-status { font-size: 13px; color: var(--v2-ink-soft); line-height: 1.6; margin-top: 6px; }
.v2-photo-manager [hidden], .v2-video-manager [hidden], .v2-staff-video [hidden] { display: none !important; }
@media (max-width: 600px) {
  .v2-video-manager { padding: 16px; }
  .v2-video-manager > header > div { align-items: flex-start; flex-direction: column; gap: 4px; }
  .v2-video-actions > button:first-child { width: 100%; }
  .v2-video-actions > button { flex: 1 1 auto; }
  .v2-staff-video video { max-height: 55svh; }
}

/* Keep touch scrolling on the photo; reserve only the handle for sorting. */
.v2-photo-manager-item { position: relative; }
.v2-photo-drag-handle { position: absolute; z-index: 2; top: 6px; right: 6px; width: 44px; height: 44px; padding: 0; display: grid; place-items: center; border: 1px solid #ffffffb3; border-radius: 12px; background: #fff7edee; color: #9a3412; font-size: 28px; line-height: 1; cursor: grab; touch-action: none; user-select: none; -webkit-user-select: none; }
.v2-photo-drag-handle:focus-visible { outline: 3px solid var(--v2-jade); outline-offset: 2px; }
.v2-photo-manager-item.is-dragging { opacity: .35; }
.v2-photo-manager-item.is-drop-target { outline: 3px solid var(--v2-jade); outline-offset: -3px; }
.v2-photo-drag-ghost { position: fixed; top: 0; left: 0; z-index: 10000; pointer-events: none; opacity: .92; box-shadow: 0 14px 32px #35271944; will-change: transform; }
.v2-photo-drag-ghost .v2-photo-drag-handle { cursor: grabbing; }
.v2-photo-manager-grid.is-saving-order { pointer-events: none; opacity: .7; }
.v2-photo-sort-status { min-height: 18px; margin: 8px 0 0; color: var(--v2-jade); font-size: 12px; }
.v2-photo-manager-item footer button { flex-shrink: 0; white-space: nowrap; min-height: 36px; }
@media (max-width: 420px) {
  .v2-photo-manager-item footer { flex-wrap: wrap; gap: 4px; }
}

/* Photos and videos share the same gallery and management grid. */
.v2-staff-gallery-slide > .v2-staff-video { width: 100%; height: 100%; margin: 0; position: relative; background: #171b19; }
.v2-staff-gallery-slide .v2-staff-video video { width: 100%; height: 100%; max-height: none; aspect-ratio: auto; border-radius: 0; }
.v2-staff-gallery-slide .v2-video-playback-status { position: absolute; top: 42px; left: 12px; color: white; pointer-events: none; }
.v2-staff-gallery-slide .v2-video-retry { position: absolute; top: 50%; left: 15%; right: 15%; }
.v2-staff-gallery:has(video) .v2-gallery-indicator { bottom: 64px; pointer-events: none; }
.v2-staff-gallery:has(video) .v2-gallery-dot { pointer-events: auto; }
.v2-photo-manager-item > .v2-staff-video { margin: 0; position: relative; }
.v2-photo-manager-item .v2-staff-video video { aspect-ratio: 4 / 5; border-radius: 0; max-height: none; }
.v2-photo-manager-item .v2-video-playback-status:empty { display: none; }
.v2-media-order { display: flex; gap: 8px; justify-content: space-between; padding: 0 10px 10px; }
/* Two labels share a ~106px card, so keep them on one line at phone widths. */
.v2-media-order button { flex: 1; min-width: 0; border: 0; padding: 6px 4px; background: var(--v2-paper); color: var(--v2-ink-soft); border-radius: 6px; cursor: pointer; font-size: 12px; line-height: 1.3; white-space: nowrap; }
.v2-media-order button:disabled { opacity: .35; cursor: default; }

.v2-staff-card .v2-staff-gallery-slide .v2-video-playback-status { top: 82px; }

/* Touch-first entry point; native controls retain scrubbing, sound and fullscreen. */
.v2-staff-video { position: relative; isolation: isolate; background: #171b19; }
.v2-video-start { position: absolute; z-index: 2; top: 50%; left: 50%; transform: translate(-50%, -50%); min-width: 72px; min-height: 72px; padding: 14px; display: grid; justify-items: center; gap: 5px; border: 1px solid rgba(255,255,255,.55); border-radius: 20px; color: #fff; background: rgba(0,0,0,.65); cursor: pointer; touch-action: manipulation; }
.v2-video-start > span:first-child { font-size: 25px; line-height: 1; }
.v2-video-start-label { font-size: 12px; white-space: nowrap; }
.v2-video-start:focus-visible, .v2-video-retry:focus-visible { outline: 3px solid #fff; outline-offset: 4px; }
.v2-staff-video .v2-video-playback-status:not(:empty) { position: absolute; z-index: 2; top: auto; bottom: 74px; left: 12px; right: 12px; margin: 0; padding: 8px 10px; border-radius: 10px; background: rgba(0,0,0,.78); color: #fff; text-align: center; pointer-events: none; }
.v2-staff-video .v2-video-retry { position: absolute; z-index: 3; top: 50%; left: 50%; right: auto; transform: translate(-50%, -50%); min-height: 48px; width: max-content; max-width: calc(100% - 24px); touch-action: manipulation; }
.v2-staff-gallery:has([data-player-state="playing"]) .v2-gallery-indicator,
.v2-staff-gallery:has([data-player-state="loading"]) .v2-gallery-indicator { visibility: hidden; }
.v2-staff-gallery:has(video) .v2-gallery-dots { max-width: 140px; overflow: hidden; }
.v2-staff-video video:fullscreen { object-fit: contain; width: 100%; height: 100%; max-height: none; background: #000; }
@media (pointer: coarse) {
  .v2-gallery-arrow { width: 44px; height: 44px; opacity: 1; touch-action: manipulation; }
  .v2-gallery-dot { position: relative; min-width: 16px; height: 24px; border-radius: 8px; background-clip: content-box; border: 6px solid transparent; }
  .v2-gallery-dot.active { min-width: 24px; }
  .v2-staff-gallery:has([data-player-state="playing"]) .v2-gallery-arrow { opacity: 0; pointer-events: none; }
}

/* Keep every mixed slide exactly one viewport wide, including on iOS Safari. */
.v2-staff-gallery-slide { flex: 0 0 100%; width: 100%; min-width: 0; }
.v2-staff-gallery-track { -webkit-overflow-scrolling: touch; }
.v2-gallery-video-link { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 10px; border: 0; border-left: 1px solid #ffffff55; border-radius: 0 12px 12px 0; background: transparent; color: #fff; font: inherit; font-size: 12px; cursor: pointer; pointer-events: auto; touch-action: manipulation; }
.v2-gallery-video-link:focus-visible { outline: 2px solid #fff; outline-offset: -3px; }
.v2-gallery-dot.is-video::after { content: "▶"; width: auto; height: auto; color: #fff; background: none; font-size: 9px; line-height: 1; }
@media (max-width: 760px), (pointer: coarse) {
  .v2-gallery-arrow { display: grid; width: 44px; height: 44px; opacity: 1; }
  .v2-gallery-indicator { max-width: calc(100% - 24px); gap: 4px; padding-block: 0; }
  .v2-gallery-dots { min-width: 0; }
  .v2-staff-gallery:has([data-player-state="playing"]) .v2-gallery-arrow { visibility: hidden; }
}

.v2-staff-gallery-slide .v2-staff-video video { object-fit: contain; }

.v2-analytics-toolbar { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; margin-bottom:14px; }
.v2-analytics-toolbar > div { display:flex; gap:8px; }
.v2-analytics-toolbar > span, .v2-analytics-meta, .v2-analytics-detail { color:var(--v2-ink-soft); font-size:12px; line-height:1.7; }
.v2-analytics-panels { margin:20px 0; }
.v2-analytics-rates { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.v2-analytics-rates strong, .v2-analytics-rates span { display:block; }
.v2-analytics-rates strong { font-size:24px; color:var(--v2-jade); margin-bottom:10px; }
.v2-analytics-rates span { color:var(--v2-ink-soft); font-size:12px; }
.v2-analytics-insights { padding-left:18px; margin:0; font-size:13px; line-height:1.9; }
.v2-analytics-insights li + li { margin-top:8px; }
.v2-analytics-hours { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:8px; }
.v2-analytics-hours > div { padding:12px 4px; text-align:center; border-radius:8px; background:rgba(48,128,104,calc(.04 + var(--hour-intensity) * .2)); }
.v2-analytics-hours small, .v2-analytics-hours strong, .v2-analytics-hours span { display:block; }
.v2-analytics-hours strong { font-size:20px; margin:6px 0; }
.v2-analytics-hours span { font-size:10px; color:var(--v2-ink-soft); }
.v2-analytics-definitions { margin:20px 0; padding:18px; background:var(--v2-jade-soft); border-radius:12px; color:var(--v2-ink-soft); font-size:12px; line-height:1.8; }
.v2-analytics-definitions summary { cursor:pointer; color:var(--v2-ink); font-weight:600; }
@media (max-width:700px) { .v2-analytics-hours { grid-template-columns:repeat(6,minmax(0,1fr)); } .v2-analytics-rates { gap:6px; } .v2-analytics-rates strong { font-size:21px; } }
.v2-admin-page-analytics .v2-table { min-width:0; }
@media (max-width:700px) {
  .v2-admin-page-analytics .v2-table { display:table; width:100%; }
  .v2-admin-page-analytics .v2-table thead { display:table-header-group; }
  .v2-admin-page-analytics .v2-table tbody { display:table-row-group; }
  .v2-admin-page-analytics .v2-table tr { display:table-row; box-shadow:none; }
  .v2-admin-page-analytics .v2-table td { display:table-cell; width:auto; padding:12px 8px; border-top:1px solid var(--v2-line); }
  .v2-admin-page-analytics .v2-table th { padding:12px 8px; }
  .v2-admin-page-analytics .v2-table td::before { display:none; }
}

.v2-admin-page-analytics .v2-kpis { margin-bottom:20px; }

.v2-trend-legend { display:flex; gap:24px; font-size:12px; margin-bottom:12px; }
.v2-trend-legend span { display:flex; align-items:center; gap:8px; }
.v2-trend-legend i { width:24px; border-top:3px solid var(--v2-jade); }
.v2-trend-legend i.previous { border-top:3px dashed #58728b; }
.v2-trend-svg { display:block; width:100%; height:auto; overflow:visible; }
.v2-trend-svg text { fill:var(--v2-ink-soft); font-size:11px; }
.v2-trend-grid { stroke:var(--v2-line); stroke-width:1; }
.v2-trend-line { fill:none; stroke:var(--v2-jade); stroke-width:2.5; stroke-linejoin:round; vector-effect:non-scaling-stroke; }
.v2-trend-line.previous { stroke:#58728b; stroke-dasharray:6 5; }
.v2-trend-dot { fill:var(--v2-jade); }
.v2-trend-dot.previous { fill:#58728b; }
.v2-trend-picker { display:flex; flex-wrap:wrap; align-items:center; gap:10px; font-size:13px; margin-top:16px; }
.v2-trend-picker select { max-width:100%; padding:10px; border:1px solid var(--v2-line); border-radius:8px; background:var(--v2-card); color:var(--v2-ink); font-size:14px; }
@media (max-width:700px) { .v2-trend-svg { min-height:180px; } .v2-trend-picker select { font-size:16px; } }

@media (max-width:700px) { .v2-trend-svg text { font-size:24px; } }
.v2-analytics-range-form { margin:0 0 18px; padding:16px; border:1px solid var(--v2-line); border-radius:14px; background:var(--v2-card); }
.v2-analytics-range-form fieldset { display:flex; align-items:end; flex-wrap:wrap; gap:12px; border:0; padding:0; margin:0; min-width:0; }
.v2-analytics-range-form legend { margin-bottom:12px; font-size:14px; font-weight:600; }
.v2-analytics-range-form label { display:grid; gap:6px; font-size:12px; min-width:0; }
.v2-analytics-range-form input { min-width:0; max-width:100%; font:inherit; font-size:16px; padding:9px; border:1px solid var(--v2-line); border-radius:8px; background:var(--v2-card); color:var(--v2-ink); }
.v2-analytics-range-form p { font-size:12px; line-height:1.7; color:var(--v2-ink-soft); margin-bottom:0; }
#v2AnalyticsRangeError { color:#a83820; }
.v2-trend-selected { stroke:var(--v2-ink-soft); stroke-dasharray:3 4; vector-effect:non-scaling-stroke; }
[data-analytics-plot] { cursor:crosshair; }
@media(max-width:700px) { .v2-analytics-range-form label { flex:1 1 130px; } .v2-analytics-range-form button { width:100%; } }

/* Native horizontal scrolling reveals publication actions without blocking page scrolling. */
.v2-staff-swipe { display: flex; min-width: 0; overflow-x: auto; border-radius: 13px; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; }
.v2-staff-swipe::-webkit-scrollbar { display: none; }
.v2-quick-row.v2-overview-staff-row { grid-template-columns: auto minmax(0, 1fr) auto; width: 100%; min-width: 0; text-align: left; border: 0; font: inherit; }
.v2-staff-swipe > .v2-overview-staff-row { flex: 0 0 100%; scroll-snap-align: start; cursor: pointer; }
.v2-overview-staff-name { display: grid; gap: 3px; min-width: 0; overflow-wrap: anywhere; }
.v2-overview-staff-name strong { color: var(--v2-ink); font-size: 14px; }
.v2-overview-staff-next { color: var(--v2-jade-dark); font-size: 12px; font-weight: 600; }
.v2-overview-staff-status { display: grid; justify-items: end; gap: 5px; }
.v2-overview-staff-status .v2-publication-state { color: var(--v2-ink-soft); font-size: 11px; }
.v2-overview-staff-status .v2-publication-state.is-published { color: #6a7648; }
.v2-staff-swipe-action { flex: 0 0 84px; border: 0; background: #657448; color: white; font: inherit; font-weight: 700; cursor: pointer; scroll-snap-align: end; }
.v2-staff-swipe-action.is-unpublish { background: #b84c40; }
.v2-staff-swipe > button:focus-visible { outline: 2px solid var(--v2-ink); outline-offset: -3px; }

/* Keep staff selection compact until the schedule user opens it. */
.v2-schedule-staff-select { min-width: 0; }
.v2-schedule-staff-trigger { width: 100%; padding-right: 12px; list-style: none; }
.v2-schedule-staff-trigger::-webkit-details-marker { display: none; }
.v2-staff-pill .v2-schedule-staff-toggle { flex-shrink: 0; margin-left: auto; color: var(--v2-ink-soft); font-size: 11px; }
.v2-schedule-staff-toggle b { display: inline-block; margin-left: 4px; }
.v2-schedule-staff-select[open] .v2-schedule-staff-toggle b { transform: rotate(180deg); }
.v2-schedule-staff-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; max-height: 320px; overflow-y: auto; overscroll-behavior-y: contain; padding: 10px 2px 2px; }
.v2-schedule-staff-options .v2-staff-pill { min-width: 0; width: 100%; }
.v2-schedule-staff-select .v2-mini-avatar { flex-shrink: 0; }
.v2-schedule-staff-select summary:focus-visible, .v2-schedule-staff-options button:focus-visible { outline: 2px solid var(--v2-jade); outline-offset: 2px; }
@media (min-width: 900px) { .v2-schedule-staff-options { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

.v2-profile-grid.v2-profile-grid-picker { grid-template-columns: minmax(0, 1fr); }
.v2-profile-grid-picker > .v2-schedule-picker { margin-bottom: 0; }
.v2-profile-grid-picker .v2-staff-pill small { max-width: none; white-space: normal; overflow-wrap: anywhere; }

/* Persistent customer appointment entry, above the mobile navigation. */
.v2-consult-support { position: fixed; z-index: 89; left: 50%; bottom: 24px; transform: translateX(-50%); width: min(calc(100% - 32px), 520px); min-height: 52px; border-radius: 999px; box-shadow: 0 8px 28px rgba(61,42,32,.24); font-size: 17px; }
.v2-consult-space { height: 80px; }
.v2-quick-booking-ball { position: fixed; z-index: 89; right: max(16px, calc((100vw - 1240px) / 2)); top: 46%; width: 64px; height: 64px; min-height: 0; padding: 0; border-radius: 50%; box-shadow: 0 8px 24px rgba(61,42,32,.28); font-size: 14px; line-height: 1.25; touch-action: none; user-select: none; -webkit-user-select: none; transition: left .2s ease, right .2s ease; }
.v2-quick-booking-ball.is-left { right: auto; left: max(16px, calc((100vw - 1240px) / 2)); }
.v2-quick-booking-ball.is-dragging { transition: none; opacity: .9; }
@media (max-width: 820px), (max-width: 1050px) and (orientation: landscape) and (pointer: coarse) {
  .v2-consult-support { bottom: calc(84px + env(safe-area-inset-bottom)); }
}

/* Conversations: the composer stays mounted while messages are refreshed. */
.v2-chat-layout { display: grid; grid-template-columns: minmax(240px, 30%) minmax(0, 1fr); height: min(720px, calc(100dvh - 200px)); min-height: 420px; overflow: hidden; border: 1px solid var(--v2-line); border-radius: 22px; background: var(--v2-card); box-shadow: var(--v2-shadow); }
.v2-admin-page-chat { min-height: 0; }
.v2-main-customer .v2-chat-layout { height: min(720px, calc(100dvh - 260px)); }
.v2-chat-sidebar { display: flex; flex-direction: column; min-width: 0; min-height: 0; border-right: 1px solid var(--v2-line); }
.v2-chat-sidebar > header { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 22px 18px; border-bottom: 1px solid var(--v2-line); }
.v2-chat-sidebar h2 { margin: 0; font-size: 22px; }
.v2-chat-sidebar header p, .v2-chat-thread-head p { margin: 5px 0 0; color: var(--v2-ink-soft); font-size: 12px; }
.v2-chat-sidebar nav { overflow-y: auto; min-height: 0; }
.v2-chat-contact { width: 100%; min-height: 86px; padding: 16px; display: flex; align-items: center; gap: 10px; text-align: left; border: 0; border-bottom: 1px solid var(--v2-line); background: transparent; color: var(--v2-ink); cursor: pointer; }
.v2-chat-contact:hover, .v2-chat-contact.active { background: var(--v2-jade-soft); }
.v2-chat-contact.active { box-shadow: inset 3px 0 var(--v2-jade); }
.v2-chat-avatar { width: 40px; height: 40px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 14px; background: var(--v2-gold-soft); color: var(--v2-jade-dark); font-size: 18px; }
.v2-chat-contact-copy { flex: 1; min-width: 0; display: grid; gap: 5px; }
.v2-chat-contact-copy strong, .v2-chat-contact-copy > span { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.v2-chat-contact-copy strong { font-size: 14px; }
.v2-chat-contact-copy > span { color: var(--v2-ink-soft); font-size: 12px; }
.v2-chat-contact-meta { display: grid; justify-items: end; gap: 6px; flex-shrink: 0; }
.v2-chat-contact-meta time { color: var(--v2-ink-soft); font-size: 10px; }
.v2-chat-thread { min-width: 0; min-height: 0; display: flex; flex-direction: column; position: relative; }
.v2-chat-thread-head { min-height: 82px; flex-shrink: 0; display: flex; align-items: center; gap: 12px; padding: 16px 24px; border-bottom: 1px solid var(--v2-line); }
.v2-chat-thread-head > div { flex: 1; min-width: 0; }
.v2-chat-thread-head h3 { margin: 0; font-size: 17px; overflow-wrap: anywhere; }
.v2-chat-back { display: none; }
.v2-chat-log { flex: 1; min-height: 0; padding: 24px; overflow-y: auto; overscroll-behavior: contain; background: linear-gradient(145deg, #fffdfa, #fff7ed); }
.v2-chat-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 36px 20px; gap: 10px; text-align: center; color: var(--v2-ink-soft); }
.v2-chat-empty > span { width: 64px; height: 64px; display: grid; place-items: center; border-radius: 22px; background: var(--v2-jade-soft); color: var(--v2-jade); font-size: 28px; }
.v2-chat-empty h3, .v2-chat-empty p { margin: 0; }
.v2-chat-empty p { max-width: 280px; font-size: 13px; line-height: 1.8; }
.v2-chat-welcome { height: 100%; }
.v2-chat-welcome small { margin-top: 12px; color: var(--v2-ink-soft); }
.v2-chat-message { display: flex; flex-direction: column; align-items: flex-start; margin: 0 0 20px; }
.v2-chat-message.is-mine { align-items: flex-end; }
.v2-chat-bubble { max-width: 85%; padding: 12px 16px; border: 1px solid var(--v2-line); border-radius: 2px 16px 16px; background: #fff; font-size: 14px; line-height: 1.75; white-space: pre-wrap; overflow-wrap: anywhere; }
.v2-chat-message.is-mine .v2-chat-bubble { color: #fff; background: var(--v2-jade-dark); border-color: var(--v2-jade-dark); border-radius: 16px 2px 16px 16px; }
.v2-chat-message small { max-width: 90%; margin-top: 6px; color: var(--v2-ink-soft); font-size: 10px; overflow-wrap: anywhere; }
.v2-chat-message.is-failed small { color: var(--v2-red); }
.v2-chat-message small button { padding: 4px 7px; color: var(--v2-jade-dark); border: 1px solid var(--v2-line); border-radius: 6px; background: #fff; cursor: pointer; }
.v2-chat-composer { flex-shrink: 0; border-top: 1px solid var(--v2-line); padding: 14px 20px; }
.v2-chat-composer .v2-chat-editor { display: block; width: 100%; min-height: 70px; max-height: 160px; overflow-y: auto; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 16px; line-height: 1.6; }
.v2-chat-editor { position: relative; }
.v2-chat-editor[data-empty="true"]::before { content: attr(data-placeholder); position: absolute; color: var(--v2-ink-soft); pointer-events: none; }
.v2-chat-composer [data-chat-limit] { display: block; grid-column: 1 / -1; margin-top: 6px; color: var(--v2-red); }
.v2-chat-compose-foot { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 10px; }
.v2-chat-compose-foot [data-chat-send] { margin-left: auto; }
.v2-chat-error { margin: 0; padding: 10px 16px; background: var(--v2-red-soft); color: #803c35; font-size: 12px; flex-shrink: 0; }
.v2-chat-jump { align-self: center; padding: 7px 16px; border: 1px solid var(--v2-line); border-radius: 20px; color: var(--v2-jade-dark); background: var(--v2-gold-soft); cursor: pointer; }
.v2-chat-older { display: block; padding: 10px 16px; margin: 0 auto 20px; background: transparent; color: var(--v2-jade-dark); border: 1px solid var(--v2-line); border-radius: 20px; cursor: pointer; }
.v2-chat-root button:focus-visible, .v2-chat-log:focus-visible { outline: 2px solid var(--v2-jade); outline-offset: -3px; }
@media (max-width: 760px), (max-width: 1050px) and (orientation: landscape) and (pointer: coarse) {
  .v2-chat-layout, .v2-main-customer .v2-chat-layout { height: calc(100dvh - 188px); min-height: 370px; grid-template-columns: minmax(0, 1fr); border-radius: 16px; }
  .v2-chat-sidebar { border-right: 0; }
  .v2-chat-thread { display: none; }
  .v2-chat-root.has-conversation .v2-chat-sidebar { display: none; }
  .v2-chat-root.has-conversation .v2-chat-thread { display: flex; }
  .v2-chat-back { display: inline-flex; }
  .v2-chat-sidebar > header { padding: 16px; }
  .v2-chat-thread-head { min-height: 66px; padding: 10px 12px; }
  .v2-chat-log { padding: 16px 12px; }
  .v2-chat-bubble { max-width: 90%; }
  .v2-chat-composer { padding: 10px 12px; }
  .v2-chat-composer .v2-chat-editor { min-height: 60px; }
  .v2-admin-page-chat .v2-admin-content { padding-top: 0; }
}

/* Appointment invitations share the chat identity and remain usable on phones. */
.v2-invite-card { width:280px; max-width:100%; white-space:normal; }
.v2-invite-card > strong { display:block; margin:10px 0; font-size:16px; }
.v2-invite-card p { margin:7px 0; line-height:1.55; }
.v2-invite-status { font-weight:700; }
.v2-invite-actions { display:flex; gap:8px; flex-wrap:wrap; margin-top:14px; }
.v2-invite-card .v2-btn { padding:9px 12px; font-size:13px; }
.v2-invite-dialog { box-sizing:border-box; width:min(480px,calc(100vw - 32px)); max-height:85dvh; overflow:auto; border:1px solid #ecd8c5; border-radius:20px; padding:24px; color:#422c20; background:#fffaf5; }
.v2-invite-dialog::backdrop { background:rgb(30 20 10 / 45%); }
.v2-invite-dialog header,.v2-invite-dialog footer { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.v2-invite-dialog header h3 { margin:0; }
.v2-invite-dialog header button { border:0; background:none; font-size:24px; cursor:pointer; }
.v2-invite-dialog label { display:block; margin:18px 0; }
.v2-invite-dialog .v2-control { display:block; width:100%; margin-top:8px; }
.v2-invite-dialog-body { margin:20px 0; line-height:1.6; }
.v2-invite-dialog [data-invite-error] { color:#a83515; }
.v2-invite-dialog footer { justify-content:flex-end; }
.v2-chat-compose-foot { flex-wrap:wrap; }

.v2-invite-current { margin-top:12px; padding-top:12px; border-top:1px solid currentColor; }
.v2-invite-blocked { font-size:12px; }

/* Read-only conversation supervision */
.v2-supervision-filters { display:flex; flex-wrap:wrap; align-items:end; gap:12px; margin-bottom:12px; }
.v2-supervision-filters input { min-width:0; }
.v2-supervision-filters label { display:grid; gap:6px; flex:1 1 170px; font-size:12px; }
.v2-supervision-hint { color:var(--v2-ink-soft); font-size:12px; }
.v2-supervision-layout { display:grid; grid-template-columns:minmax(220px, 32%) minmax(0, 1fr); border:1px solid var(--v2-line); border-radius:16px; overflow:hidden; background:white; }
.v2-supervision-list { border-right:1px solid var(--v2-line); padding:12px; max-height:70vh; overflow:auto; }
.v2-supervision-row { display:grid; gap:7px; width:100%; text-align:left; padding:14px; border:0; border-radius:10px; background:transparent; cursor:pointer; }
.v2-supervision-row.active { background:#fff0e2; }
.v2-supervision-row span { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.v2-supervision-row small, .v2-supervision-message small { color:var(--v2-ink-soft); font-size:12px; }
.v2-supervision-controls, .v2-supervision-detail > header { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:12px 0; }
.v2-supervision-detail { min-width:0; padding:16px; }
.v2-supervision-messages { max-height:60vh; overflow:auto; overflow-wrap:anywhere; }
.v2-supervision-message { margin:12px 0; border:1px solid var(--v2-line); border-radius:12px; padding:12px; }
.v2-supervision-message p { white-space:pre-wrap; margin:8px 0 0; line-height:1.6; }
.v2-supervision-message.internal { background:#fff8da; }
.v2-supervision-card { padding:12px 0 0; }
.v2-supervision-card hr { border:0; border-top:1px solid var(--v2-line); margin:12px 0; }
.v2-supervision-error { color:#a52b22; }
@media (max-width:700px) {
  .v2-supervision-layout { grid-template-columns:1fr; }
  .v2-supervision-list { max-height:260px; border-right:0; border-bottom:1px solid var(--v2-line); }
  .v2-supervision-detail { padding:12px; }
  .v2-supervision-filters label { min-width:0; flex-basis:140px; }
  .v2-supervision-filters label:has(input[type="datetime-local"]) { flex-basis:100%; }
}

/* A mobile conversation owns the visible viewport; only its message log scrolls. */
@media (max-width: 760px), (max-width: 1050px) and (orientation: landscape) and (pointer: coarse) {
  html.v2-chat-fullscreen { height: 100%; overflow: hidden; overscroll-behavior: none; scroll-behavior: auto; }
  .v2-chat-fullscreen body { position: fixed; top: 0; left: 0; width: 100%; height: var(--chat-page-height, 100%); min-height: 0; overflow: hidden; overscroll-behavior: none; }
  .v2-chat-fullscreen #earcareApp { height: 100%; min-height: 0; overflow: hidden; }
  .v2-chat-fullscreen .v2-mobile-bottom-nav,
  .v2-chat-fullscreen .v2-topbar,
  .v2-chat-fullscreen .v2-customer-tabs,
  .v2-chat-fullscreen .v2-sidebar { display: none; }
  .v2-chat-fullscreen .v2-chat-root.has-conversation {
    position: fixed; z-index: 95; left: 0; right: 0;
    top: var(--chat-viewport-top, 0px);
    height: var(--chat-viewport-height, 100dvh);
    background: var(--v2-card); overflow: hidden;
  }
  .v2-chat-fullscreen .v2-chat-root .v2-chat-layout {
    height: 100%; min-height: 0; grid-template-rows: minmax(0, 1fr); border: 0; border-radius: 0; box-shadow: none;
  }
  .v2-chat-fullscreen .v2-chat-thread-head { padding-top: max(10px, env(safe-area-inset-top)); }
  .v2-chat-fullscreen .v2-chat-thread-head p { display: none; }
  .v2-chat-fullscreen .v2-chat-log { overflow-anchor: none; }
  .v2-chat-fullscreen .v2-chat-bubble { font-size: 16px; line-height: 1.6; }
  .v2-chat-fullscreen .v2-chat-composer {
    display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 8px;
    padding: 8px 12px max(8px, env(safe-area-inset-bottom)); background: var(--v2-card);
  }
  .v2-chat-fullscreen .keyboard-open .v2-chat-composer { padding-bottom: 8px; }
  .v2-chat-fullscreen .keyboard-open .v2-chat-thread-head { min-height: 52px; padding-top: 4px; padding-bottom: 4px; }
  .v2-chat-fullscreen .v2-chat-composer .v2-chat-editor {
    min-height: 44px; max-height: 112px; padding: 9px 10px; resize: none; border-radius: 12px; font-size: 16px; line-height: 24px; overflow-y: auto; overscroll-behavior: contain;
  }
  .v2-chat-fullscreen .v2-chat-compose-foot { display: contents; }
  .v2-chat-fullscreen [data-chat-send] { grid-column: 2; grid-row: 1; min-height: 44px; padding: 9px 16px; border-radius: 12px; }
  .v2-chat-fullscreen [data-invite-compose] { grid-column: 1 / -1; justify-self: start; min-height: 32px; padding: 5px 10px; }
}

/* Platform support: pinned customer entry and the operator workbench. */
.v2-chat-contact.is-pinned { background:linear-gradient(90deg, rgba(255,237,213,.55), transparent); }
.v2-chat-pin { margin-left:6px; font-size:11px; font-weight:600; color:var(--v2-ink-soft); border:1px solid var(--v2-line); border-radius:999px; padding:0 6px; }
.v2-support-scopes { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0; }
.v2-support-actions { display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:10px 0; border-bottom:1px solid var(--v2-line); }
.v2-support-transfer { display:inline-flex; align-items:center; gap:6px; }
.v2-support-transfer select { min-width:180px; }
.v2-support-transfer .v2-btn { white-space:nowrap; }
.v2-support-hint { color:var(--v2-ink-soft); }
.v2-supervision-message.outgoing { background:#f3f8ff; }
.v2-support-composer { border-top:1px solid var(--v2-line); padding-top:12px; margin-top:12px; display:grid; gap:8px; }
.v2-support-composer.is-note textarea { background:#fff8da; }
.v2-support-mode { display:inline-flex; border:1px solid var(--v2-line); border-radius:999px; overflow:hidden; width:fit-content; }
.v2-support-mode button { border:0; background:transparent; padding:6px 14px; font-size:13px; cursor:pointer; color:var(--v2-ink-soft); }
.v2-support-mode button.active { background:var(--v2-ink); color:white; }
.v2-support-mode button:disabled { opacity:.45; cursor:not-allowed; }
.v2-support-send { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.v2-support-send small { color:var(--v2-ink-soft); }
.v2-support-notice { color:var(--v2-ink-soft); background:#f3f8ff; border:1px solid var(--v2-line); border-radius:12px; padding:8px 12px; }
.v2-support-inbox { border-bottom:1px solid var(--v2-line); padding-bottom:8px; margin-bottom:8px; }
.v2-support-inbox.active .v2-supervision-row { background:rgba(255,237,213,.55); }
.v2-support-switch { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:4px 8px; font-size:13px; color:var(--v2-ink-soft); }
.v2-support-members { display:grid; gap:8px; margin:12px 0; }
.v2-support-member { display:flex; align-items:center; justify-content:space-between; gap:12px; border:1px solid var(--v2-line); border-radius:12px; padding:10px 12px; }
.v2-support-member.is-off { opacity:.6; }
.v2-support-member small { display:block; color:var(--v2-ink-soft); font-size:12px; }
.v2-support-warn { color:#b45309; }
.v2-support-member-actions { display:flex; align-items:center; gap:8px; }
.v2-support-add { display:flex; flex-wrap:wrap; align-items:center; gap:8px; border-top:1px solid var(--v2-line); padding-top:12px; }
.v2-support-add select { min-width:240px; }
.v2-supervision-message.is-failed { border-color:#f0b7b7; background:#fff5f5; }

/* Supervision uses the same two-pane chat layout, with both participants named. */
.v2-admin-chat { display:grid; grid-template-columns:minmax(260px,35%) minmax(0,1fr); height:calc(100dvh - 210px); min-height:420px; overflow:hidden; border:1px solid var(--line,#e7e1da); border-radius:18px; }
.v2-admin-chat .v2-chat-sidebar { display:flex; flex-direction:column; min-height:0; border-right:1px solid var(--line,#e7e1da); }
.v2-admin-chat-list { flex:1; overflow:auto; min-height:0; }
.v2-supervision-search { display:grid; grid-template-columns:1fr 1fr auto; gap:6px; padding:12px; }
.v2-supervision-search input { min-width:0; }
.v2-admin-chat .v2-chat-pane { display:flex; flex-direction:column; min-width:0; min-height:0; }
.v2-admin-chat .v2-chat-log { flex:1; min-height:0; overflow:auto; }
.v2-admin-chat .v2-chat-composer { flex-shrink:0; }
.v2-admin-chat [data-send-error] { color:#b42318; margin:4px 14px; }
.v2-chat-pair { width:44px; height:42px; position:relative; flex-shrink:0; }
.v2-chat-pair span { position:absolute; display:grid; place-items:center; width:28px; height:28px; border-radius:50%; background:#f5dfc3; border:2px solid white; font-size:12px; }
.v2-chat-pair span:last-child { right:0; bottom:0; background:#dbe9dc; }
@media (max-width: 760px), (max-width: 1050px) and (orientation: landscape) and (pointer: coarse) {
 .v2-admin-chat { display:flex; height:calc(100dvh - 190px); min-height:360px; }
 .v2-admin-chat .v2-chat-sidebar { width:100%; border:0; }
 .v2-admin-chat .v2-chat-pane { display:none; width:100%; }
 .v2-admin-chat.has-conversation .v2-chat-sidebar { display:none; }
 .v2-admin-chat.has-conversation .v2-chat-pane { display:flex; }
 .v2-admin-chat .v2-chat-back { display:inline-flex; }
}

@media (max-width: 760px), (max-width: 1050px) and (orientation: landscape) and (pointer: coarse) {
 .v2-admin-chat.has-conversation { position:fixed; top:var(--admin-chat-top,0px); left:0; width:100%; height:var(--admin-chat-height,100dvh); min-height:0; z-index:1200; border:0; border-radius:0; background:var(--bg,#fff8ef); overscroll-behavior:none; }
 .v2-admin-chat.has-conversation .v2-chat-pane { height:100%; }
 .v2-admin-chat .v2-chat-composer { padding-bottom:max(12px,env(safe-area-inset-bottom)); }
}

.v2-duration-input { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }

/* Shared unread indicators for participant and supervision navigation/lists. */
.v2-chat-badge, .v2-chat-unread-badge { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; min-width: 20px; height: 20px; padding: 0 5px; margin-left: 6px; border-radius: 999px; color: #fff; background: var(--v2-unread); font-size: 11px; font-weight: 700; line-height: 1; vertical-align: middle; }
.v2-mobile-menu-item > .v2-chat-unread-badge { margin-left: auto; }
.v2-mobile-tab-badge.v2-chat-unread-badge { margin-left: 0; min-width: 20px; height: 20px; padding: 0 4px; font-size: 10px; }
.v2-chat-badge[hidden], .v2-chat-unread-badge[hidden] { display: none; }

/* A landscape Android keyboard can leave less than one toolbar of page height. */
@media (max-height: 240px) and (max-width: 1050px) and (pointer: coarse) {
  .v2-admin-chat.has-conversation .v2-chat-composer,
  .v2-chat-fullscreen .v2-chat-composer {
    display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end;
    gap: 8px; padding: 2px 8px; flex-shrink: 0;
  }
  .v2-admin-chat.has-conversation .v2-chat-composer .v2-control,
  .v2-chat-fullscreen .v2-chat-composer .v2-chat-editor {
    min-height: 0; height: min(40px, calc(100dvh - 5px));
    max-height: min(72px, calc(100dvh - 5px)); padding: 6px 10px;
    overflow-y: auto; font-size: 16px; line-height: 24px;
  }
  .v2-admin-chat.has-conversation .v2-chat-compose-foot { display: contents; }
  .v2-admin-chat.has-conversation [data-send],
  .v2-chat-fullscreen [data-chat-send] {
    min-height: 0; height: min(40px, calc(100dvh - 5px)); padding: 4px 12px;
  }
}
@media (max-height: 180px) and (max-width: 1050px) and (pointer: coarse) {
  .v2-admin-chat.has-conversation .v2-chat-pane > :not(.v2-chat-composer),
  .v2-chat-fullscreen .v2-chat-thread > :not(.v2-chat-composer) { display: none; }
}
