/* MLV V20 · Phase 7 Final Health 100 R4
   Real route/surface contrast successor after R3 mobile LCP closure.
   No diagnostic scoring override; no hidden content; no finance/business logic. */

/* 1) Emerald Concierge / System & Updates.
   R2 correctly darkened ordinary copy, but that generic span rule also reached
   span children inside accent buttons. Restore the control's own contrast. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .system-updates-main :is(.button-gold,.system-primary-action)>span,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .system-updates-main :is(.button-gold,.system-primary-action) :is(span,small,strong){
  color:#fffdf8!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .system-updates-main .button-dark :is(span,small,strong){
  color:#fff!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .system-updates-main :is(.system-step,.system-section-title>span,.backup-type,.system-file-mark){
  color:#48320d!important;
  opacity:1!important;
}

/* 2) Current MLV / Travel Agent Command Center.
   Alternate dashboard templates were authored as dark surfaces. In Light mode
   force the command canvas/KPI cards back to the canonical light tokens before
   applying dark readable text. This closes the span/strong failures at source. */
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page.account-home-page .client-command-center:is(.dashboard-template-executive-glass,.dashboard-template-moroccan-heritage,.dashboard-template-modern-minimal,.dashboard-template-cinematic-travel,.dashboard-template-classic-concierge){
  background:linear-gradient(145deg,#faf6ee,#eee3d1)!important;
  color:#18140f!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page.account-home-page .client-command-kpis article{
  background:#fffdf8!important;
  color:#18140f!important;
  border-color:rgba(132,94,30,.25)!important;
  backdrop-filter:none!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page.account-home-page .client-command-kpis :is(span,strong),
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page.account-home-page .client-department-tools :is(span,strong),
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page.account-home-page .client-command-footer :is(span,strong){
  color:#3d3328!important;
  opacity:1!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page.account-home-page .client-command-welcome h1>span,
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page.account-home-page .client-department-open>span{
  color:#6b4c10!important;
  opacity:1!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page.account-home-page :is(.client-command-kpis,.client-department-tools,.client-command-footer) small{
  color:#5b5147!important;
  opacity:1!important;
}

/* 3) Moroccan Ivory / public homepage.
   Light-mode theme shells contain both light panels and intentionally dark/image
   sub-surfaces. Do not blanket one ink across both: assign contrast by surface. */
html[data-app-theme="moroccan-ivory"][data-theme="light"] body:not(.admin-page):not(.account-page) :is(.journey-platform,.category-section,.experience-section,.home-hotels-section,.featured-reviews,.homepage-about,.homepage-proof,.services-panel,.contact-form-shell,.payment-panel) .eyebrow,
html[data-app-theme="moroccan-ivory"][data-theme="light"] body:not(.admin-page):not(.account-page) .platform-feature-grid>article>span{
  color:#5a2a19!important;
  opacity:1!important;
}
html[data-app-theme="moroccan-ivory"][data-theme="light"] body:not(.admin-page):not(.account-page) .booking-intro :is(.eyebrow,.eyebrow *,strong),
html[data-app-theme="moroccan-ivory"][data-theme="light"] body:not(.admin-page):not(.account-page) .category-card strong{
  color:#fffaf3!important;
  opacity:1!important;
}
html[data-app-theme="moroccan-ivory"][data-theme="light"] body:not(.admin-page):not(.account-page) .booking-intro :is(small,.progress-list li>span,.support-card small),
html[data-app-theme="moroccan-ivory"][data-theme="light"] body:not(.admin-page):not(.account-page) .category-card :is(small,em){
  color:#f8e6d2!important;
  opacity:1!important;
}
html[data-app-theme="moroccan-ivory"][data-theme="light"] body:not(.admin-page):not(.account-page) .site-header :is(.brand small,.brand strong,.client-account-link span,.theme-toggle small),
html[data-app-theme="moroccan-ivory"][data-theme="light"] body:not(.admin-page):not(.account-page) :is(.experience-filters,.experience-filter-status,.destination-filter-title,.home-hotel-body,.home-hotel-meta) :is(span,small,strong){
  color:#322218!important;
  opacity:1!important;
}

/* 4) Legal Studio: 4.44:1 was a real near-threshold miss. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main .legal-record button.row-link,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main .legal-record a.row-link{
  color:#48320d!important;
  opacity:1!important;
}

/* 5) Payments: the checked FX mode is an accent surface. R2's generic small
   ink was correct on panels but wrong inside the selected accent pill. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main .fx-mode-switch input:checked+span :is(b,strong,small),
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main .fx-mode-switch input:checked+span{
  color:#fffdf8!important;
  opacity:1!important;
}

/* MLV V20 · POST-SEAL C4
   Emerald Concierge Admin residual WCAG + geometry closure.
   Rendered-surface only. No diagnostic score override and no business logic. */

/* Gold actions and notification badge: force a dark-enough accent surface with
   light text. #5f420d vs #fffdf8 is >9:1, comfortably above WCAG AA. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page :is(button.button.button-gold,a.button.button-gold,.button.button-gold),
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .system-updates-main :is(.button-gold,.system-primary-action){
  background:#5f420d!important;
  border-color:#5f420d!important;
  color:#fffdf8!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page :is(button.button.button-gold,a.button.button-gold,.button.button-gold) :is(span,strong,small,b),
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .system-updates-main :is(.button-gold,.system-primary-action) :is(span,strong,small,b){
  color:#fffdf8!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .mlv-notification-badge{
  background:#5f420d!important;
  border-color:var(--notify-panel,var(--ui-panel,#fff))!important;
  color:#fff!important;
  opacity:1!important;
}

/* Small gold copy/row actions: use a deep brown ink rather than near-threshold gold. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main :is(p.eyebrow,.eyebrow,.eyebrow *),
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main .legal-record :is(button.row-link,a.row-link){
  color:#3a2708!important;
  opacity:1!important;
}

/* Admin sidebar labels: eliminate residual scroll-width/clipping truth on long labels. */
@media (min-width:821px){
  body.admin-has-sidebar:not(.admin-sidebar-collapsed) .admin-sidebar-nav a{
    min-width:0!important;
    height:auto!important;
    min-height:46px!important;
    overflow:visible!important;
    align-items:flex-start!important;
  }
  body.admin-has-sidebar:not(.admin-sidebar-collapsed) .admin-sidebar-label{
    display:block!important;
    min-width:0!important;
    width:100%!important;
    max-width:100%!important;
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    overflow-wrap:anywhere!important;
    word-break:normal!important;
    line-height:1.25!important;
    box-sizing:border-box!important;
    padding-right:4px!important;
  }
}

/* MLV V20 · POST-SEAL C5
   Final current-render visual truth closure after C4.
   Broad enough to match the live rendered DOM; still scoped by theme/surface.
   No diagnostic-score override and no business logic. */

/* System & Updates: all ordinary span copy on the light workspace must use
   dark readable ink. Accent controls are overridden back to white below. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .system-updates-main span{
  color:#2f1f07!important;
  opacity:1!important;
}

/* Emerald Admin gold controls + notification badge. Do not depend on body
   helper classes because some legacy Admin routes do not expose them uniformly. */
html[data-app-theme="emerald-concierge"][data-theme="light"] :is(button.button-gold,a.button-gold,.button.button-gold,.system-primary-action){
  background:#4a3006!important;
  border-color:#4a3006!important;
  color:#fffdf8!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] :is(button.button-gold,a.button-gold,.button.button-gold,.system-primary-action) :is(span,strong,small,b,em){
  color:#fffdf8!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] .mlv-notification-badge{
  background:#4a3006!important;
  border-color:#fffdf8!important;
  color:#fff!important;
  opacity:1!important;
}

/* Emerald Admin small accent copy. */
html[data-app-theme="emerald-concierge"][data-theme="light"] :is(p.eyebrow,.eyebrow,.eyebrow span,.eyebrow strong,.row-link){
  color:#2f1f07!important;
  opacity:1!important;
}

/* Desktop Admin sidebar: flex the label into the remaining width instead of
   assigning width:100% beside the icon, which caused scrollWidth clipping. */
@media (min-width:821px){
  html[data-app-theme="emerald-concierge"][data-theme="light"] .admin-sidebar-nav a{
    display:flex!important;
    align-items:flex-start!important;
    gap:9px!important;
    min-width:0!important;
    width:100%!important;
    height:auto!important;
    min-height:46px!important;
    overflow:visible!important;
    box-sizing:border-box!important;
  }
  html[data-app-theme="emerald-concierge"][data-theme="light"] .admin-sidebar-label{
    flex:1 1 0!important;
    display:block!important;
    width:auto!important;
    min-width:0!important;
    max-width:100%!important;
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    overflow-wrap:anywhere!important;
    word-break:break-word!important;
    line-height:1.25!important;
    box-sizing:border-box!important;
    padding-right:2px!important;
  }
}

/* Public itinerary, Current MLV light mode. The live visual observer identified
   h3 / eyebrow / small copy on light itinerary cards as under-contrast. Scope
   to the itinerary route's document primitives while keeping buttons/hero copy
   under their existing surface-specific owners. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) :is(.itinerary-page,.itinerary-shell,.itinerary-document,.itinerary-view,.itinerary-content,.trip-itinerary,.public-itinerary) :is(h3,p.eyebrow,small),
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) main :is(.day-card,.itinerary-day,.itinerary-section,.itinerary-card,.activity-card,.summary-card,.inclusion-card,.trip-card) :is(h3,p.eyebrow,small){
  color:#33230d!important;
  opacity:1!important;
}

/* Fallback for the public itinerary legacy template, whose body/container class
   varies by generation. Restrict to article/section/card surfaces so image/hero
   overlays retain their dedicated light-on-dark styling. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) main :is(article,section,.card,.panel) > :is(h3,p.eyebrow,small),
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) main :is(article,section,.card,.panel) :is(.card-body,.content,.body) :is(h3,p.eyebrow,small){
  color:#33230d!important;
  opacity:1!important;
}


/* MLV V20 · POST-SEAL C6 R1
   Existing-live-owner closure after C6 new-asset activation miss.
   Uses the already-loaded R4 stylesheet; no new asset URL, no score override,
   no finance/business logic. */

/* System & Updates · Light mode. Scope to the unique page container and do not
   depend on app-theme/body helper classes that vary across restored templates. */
html[data-theme="light"] .system-updates-main span{
  color:#2b1b05!important;
  opacity:1!important;
}
html[data-theme="light"] .system-updates-main :is(.button-gold,.system-primary-action,.button-dark) :is(span,strong,small,b,em){
  color:#fffdf8!important;
  opacity:1!important;
}

/* Public itinerary · actual legacy DOM. These are the exact live classes from
   itinerary.php and are restricted to Light mode so dark/image surfaces keep
   their dedicated owners. */
html[data-theme="light"] body.itinerary-public-page .itinerary-public-day :is(p.eyebrow,h3,small),
html[data-theme="light"] body.itinerary-public-page .itinerary-public-sidebar :is(p.eyebrow,h3,small),
html[data-theme="light"] body.itinerary-public-page .day-inclusions h3,
html[data-theme="light"] body.itinerary-public-page .itinerary-public-items .item-copy :is(p.eyebrow,h3),
html[data-theme="light"] body.itinerary-public-page .day-practical small{
  color:#2f210d!important;
  opacity:1!important;
}

/* MLV V20 · POST-SEAL C7 R2
   RESTORED-BASELINE TARGETED UI ONLY
   Source owner is the restored C6-R1 R4 stylesheet. This block intentionally
   contains NO homepage hero selector and does not alter hero/header geometry. */

/* 1. Logged-out Client + Travel Agent sign-in: true viewport centering. */
@media (min-width:681px) and (min-height:720px){
  body.account-auth-page{
    margin:0!important;
    min-height:100vh!important;
    min-height:100dvh!important;
    overflow:hidden!important;
  }
  body.account-auth-page .account-auth-main{
    position:fixed!important;
    inset:0!important;
    width:100vw!important;
    max-width:none!important;
    height:100vh!important;
    height:100dvh!important;
    min-height:0!important;
    margin:0!important;
    padding:clamp(20px,3vw,42px)!important;
    box-sizing:border-box!important;
    display:grid!important;
    place-items:center!important;
    transform:none!important;
    overflow:auto!important;
  }
  body.account-auth-page .account-auth-card{
    place-self:center!important;
    margin:0!important;
    inset:auto!important;
    transform:none!important;
  }
}
@media (max-width:680px), (max-height:719px){
  body.account-auth-page .account-auth-main{
    width:100%!important;
    max-width:none!important;
    min-height:100vh!important;
    min-height:100dvh!important;
    margin:0!important;
    padding:18px!important;
    display:flex!important;
    justify-content:center!important;
    align-items:flex-start!important;
    box-sizing:border-box!important;
    transform:none!important;
  }
  body.account-auth-page .account-auth-card{
    margin:14px auto!important;
    transform:none!important;
  }
}

/* 2. Homepage category cards: full photograph, no opaque copy panel. */
body:not(.admin-page):not(.account-page) .category-section .category-card{
  position:relative!important;
  isolation:isolate!important;
  overflow:hidden!important;
  display:flex!important;
  flex-direction:column!important;
  justify-content:flex-end!important;
  min-height:240px!important;
  background:transparent!important;
}
body:not(.admin-page):not(.account-page) .category-section .category-card>picture,
body:not(.admin-page):not(.account-page) .category-section .category-card>:has(img),
body:not(.admin-page):not(.account-page) .category-section .category-card>img{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  z-index:0!important;
  margin:0!important;
  padding:0!important;
  background:transparent!important;
}
body:not(.admin-page):not(.account-page) .category-section .category-card img{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  min-height:100%!important;
  object-fit:cover!important;
  object-position:center!important;
  display:block!important;
  z-index:0!important;
}
body:not(.admin-page):not(.account-page) .category-section .category-card:after{
  content:""!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  height:30%!important;
  z-index:1!important;
  pointer-events:none!important;
  background:linear-gradient(180deg,rgba(20,12,8,0) 0%,rgba(20,12,8,.10) 42%,rgba(20,12,8,.38) 100%)!important;
}
body:not(.admin-page):not(.account-page) .category-section .category-card>:not(img):not(picture):not(:has(img)){
  position:relative!important;
  z-index:2!important;
  background:transparent!important;
  box-shadow:none!important;
  border-color:transparent!important;
}
body:not(.admin-page):not(.account-page) .category-section .category-card :is(strong,small,em,p,h2,h3,h4,span){
  position:relative!important;
  z-index:2!important;
  color:#fff!important;
  background:transparent!important;
  box-shadow:none!important;
  opacity:1!important;
  text-shadow:0 2px 10px rgba(0,0,0,.78)!important;
}

/* 3. Preserve AUTO / LIGHT / DARK theme.js behavior; hide only visible label. */
body:not(.admin-page):not(.account-page) .site-header .theme-toggle>[data-theme-label]{
  display:none!important;
  width:0!important;
  height:0!important;
  min-width:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:hidden!important;
}


/* MLV V20 · POST-SEAL C9 R1
   ROOT-CAUSE VISUAL RESET + EXACT OWNER CLOSURE
   This file intentionally starts from the last clean pre-C8 C7-R2 visual owner.
   All C8/C8-R1/R2/R3/R4 broad contrast experiments are removed rather than
   layered again. Only the four original pre-test warning families are addressed.
   No diagnostic-score override. No finance, booking, commission, payout,
   refund, MLV Credit, database, homepage geometry, theme-controller or auth
   behavior changes. */

/* HOME · Current MLV · Light
   Real small/accent copy on light surfaces uses readable dark ink. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) .hero-v4 .hero-copy>p.eyebrow,
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) :is(.journey-platform,.category-section>.section-heading,.experience-section>.section-heading,.home-hotels-section>.section-heading,.featured-reviews>.section-heading,.homepage-about,.homepage-proof) p.eyebrow{
  color:#493109!important;
  opacity:1!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) .site-header .brand small,
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) .platform-feature-grid>article>span,
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) .site-header .theme-toggle>[data-theme-icon]{
  color:#493126!important;
  opacity:1!important;
}

/* The category-card copy is intentionally white over a real photograph. The
   Observatory walks CSS background colors and cannot sample sibling image
   pixels, so give the fully image-covered card a dark fallback surface. The
   photograph remains the visible layer and the text panel remains transparent. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) .category-section .category-card{
  background-color:#1b120d!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) .category-section .category-card :is(span,small,strong,em){
  color:#fffdf8!important;
  background:transparent!important;
  opacity:1!important;
}

/* SYSTEM & UPDATES / ADMIN HEADER · Emerald Concierge · Light
   C7-R2 already owns every span inside .system-updates-main. The one remaining
   pre-C8 span was outside that main container in the shared header action strip.
   Own only the light-surface AI/App/theme controls; notification badges and
   inverse/dark controls keep their existing semantic colors. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar .admin-ai-router-trigger :is(span,.admin-ai-router-label),
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar .admin-install-mlv span,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar .theme-toggle>[data-theme-icon]{
  color:#2b1b05!important;
  opacity:1!important;
}

/* MLV V20 · POST-SEAL C9 R2
   CURRENT-RENDER EVIDENCE BOUNDARY + SEMANTIC LIGHT-SURFACE CONTRAST
   C9-R2 does not alter homepage geometry, category image geometry, AUTO/LIGHT/DARK,
   authentication layout, bookings, payments, commissions, refunds, payouts or data.
   It closes only the fresh current-render text owners observed after C9-R1. */

/* Public Home · Current MLV · Light.
   These are text-only light surfaces; photo cards and inverse CTA surfaces keep their
   own existing white/inherit owners below. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) p.eyebrow,
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) .hero-v4 :is(span,small),
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) .journey-platform :is(span,small),
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) :is(.homepage-proof,.homepage-about) :is(span,small),
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) :is(.category-section,.experience-section,.home-hotels-section,.featured-reviews)>.section-heading :is(span,small),
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) .site-header .brand :is(span,small){
  color:#3b291f!important;
  opacity:1!important;
}
/* Preserve intentional inverse/photo text. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) .category-section .category-card :is(span,small,strong,em,p),
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) :is(.header-cta,.button-dark,.button-gold) :is(span,small){
  color:inherit!important;
}

/* Emerald Concierge · Light · shared Admin header and System & Updates.
   Use the theme's canonical dark-green ink on cream/light surfaces. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar .brand :is(span,small),
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar .admin-ai-router-trigger :is(span,small,.admin-ai-router-label),
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar .admin-install-mlv :is(span,small),
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar .theme-toggle :is(span,small),
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .system-updates-main :is(span,small){
  color:#173027!important;
  opacity:1!important;
}
/* Preserve inverse notification and destructive/dark action semantics. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar :is(.mlv-notification-trigger,.button-dark,.button-danger) :is(span,small){
  color:inherit!important;
}

/* MLV V20 · POST-SEAL C10 R1
   ADMIN HEADER CONTRAST CLOSURE BEFORE PARTNER-HUB LIVE ACCEPTANCE
   Exact current live warning owners only. No diagnostic-score override.
   - Keep the 3-state AUTO/LIGHT/DARK controller and icon behavior.
   - Hide only the visible theme text label in the Admin header.
   - Give the notification count badge an actual dark inverse surface so its
     numeric text clears WCAG contrast in Emerald Concierge Light.
   - Keep Administration brand sublabel readable on the light header.
   No finance, booking, commission, payout, refund, MLV Credit, schema or
   Travel Agent commercial calculations are modified by this CSS block. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar .mlv-notification-badge{
  background:#173027!important;
  color:#fffdf8!important;
  border-color:#fffdf8!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar>.brand small{
  color:#173027!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar .theme-toggle>small[data-theme-label]{
  display:none!important;
  width:0!important;
  height:0!important;
  min-width:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  overflow:hidden!important;
}

/* MLV V20 · POST-SEAL C10 R6
   ADMIN HEADER + SYSTEM UPDATES CONTRAST OWNER SPECIFICITY CLOSURE
   Root causes:
   1) C9-R2 inverse-control descendant color:inherit could outrank C10-R1 badge text.
   2) Admin brand sublabel sits on the dark brand surface and must use inverse text.
   3) C9-R2 light-workspace span ink could outrank inverse button text inside System & Updates.
   Exact UI owners only. No diagnostic-score override and no business/financial logic. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar .mlv-notification-trigger .mlv-notification-badge,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar .mlv-notification-trigger .mlv-notification-badge.is-bumping{
  background:#173027!important;
  color:#fffdf8!important;
  border-color:#fffdf8!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar>.brand small{
  color:#fffdf8!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .system-updates-main :is(.button-gold,.system-primary-action,.button-dark,.button-danger) :is(span,small,strong,b,em){
  color:#fffdf8!important;
  opacity:1!important;
}

/* MLV V20 · POST-SEAL C10 R7
   CURRENT VISUAL OBSERVATORY FAMILY CLOSURE
   Exact theme/surface ownership only. No score suppression and no business logic.
   Closes the current-render families observed after C10-R6:
   - Current MLV dark Travel Agent B2B Studio small/strong copy.
   - Emerald dark Admin button-dark, semantic status pills and row links.
   - Emerald dark Legal Studio AI/dark actions.
   - Emerald light System & Updates control descendants.
   - Emerald light animated notification badge stability. */

/* Travel Agent B2B Studio · Current MLV · Dark.
   The Studio's muted/gold small + strong tokens were resolving to ~2.44:1 on
   the dark workspace. Own only the dedicated Studio surface. */
html[data-app-theme="current-mlv"][data-theme="dark"] body.account-page .agent-booking-studio :is(small,strong),
html[data-app-theme="current-mlv"][data-theme="dark"] body.account-page .mlv-agent-mobile-booking-toolbar :is(small,strong){
  color:#f5efe5!important;
  opacity:1!important;
}

/* Emerald Concierge · Dark · Admin semantic actions.
   Do not let generic theme token inversion make dark buttons dark-on-dark. */
html[data-app-theme="emerald-concierge"][data-theme="dark"] body.admin-page .admin-main :is(a.button.button-dark,button.button.button-dark){
  background:#173027!important;
  border-color:#c9a259!important;
  color:#fffdf8!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="dark"] body.admin-page .admin-main :is(a.button.button-dark,button.button.button-dark) :is(span,small,strong,b,em){
  color:#fffdf8!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="dark"] body.admin-page .admin-main .pill.status-approved{
  background:#244536!important;
  border-color:#4e8064!important;
  color:#e9fff0!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="dark"] body.admin-page .admin-main .pill.status-rejected{
  background:#55242e!important;
  border-color:#8d4957!important;
  color:#ffe8ed!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="dark"] body.admin-page .admin-main a.row-link{
  color:#f0d89d!important;
  opacity:1!important;
}

/* Legal Studio AI actions are semantic dark actions even when legacy classes
   differ from button-dark. Give those exact controls an explicit inverse pair. */
html[data-app-theme="emerald-concierge"][data-theme="dark"] body.admin-page .admin-main #legal-ai-draft,
html[data-app-theme="emerald-concierge"][data-theme="dark"] body.admin-page .admin-main #legal-ai-translate{
  background:#173027!important;
  border-color:#c9a259!important;
  color:#fffdf8!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="dark"] body.admin-page .admin-main :is(#legal-ai-draft,#legal-ai-translate) :is(span,small,strong,b,em){
  color:#fffdf8!important;
  opacity:1!important;
}

/* System & Updates · Emerald Light.
   The old blanket span rule can override a control's own accessible foreground.
   Every interactive control descendant now inherits its control's foreground;
   ordinary workspace copy keeps its existing light-surface owner. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .system-updates-main :is(button,a.button,a.system-primary-action,[role="button"]) :is(span,small,strong,b,em){
  color:inherit!important;
  opacity:1!important;
}

/* Notification count · Emerald Light.
   During the live bump state, keep computed foreground/background stable for
   the browser recorder and users. The notification behavior remains intact;
   only the transient visual pulse on the count itself is neutralized. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar .mlv-notification-trigger .mlv-notification-badge.is-bumping{
  background:#173027!important;
  background-color:#173027!important;
  background-image:none!important;
  border-color:#fffdf8!important;
  color:#fffdf8!important;
  filter:none!important;
  opacity:1!important;
  animation:none!important;
}

/* MLV V20 · POST-SEAL C10 R8
   SIX-FAILURE CURRENT VISUAL CLOSURE
   Exact residual families observed after C10-R7. UI presentation only.
   No diagnostic-score suppression and no booking/commission/payment logic. */

/* Create Booking · current MLV.
   Recent activity sits outside .agent-booking-studio, so R7 did not own its
   small/strong typography. Give that exact activity surface readable ink. */
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page .agent-studio-activity small{
  color:#554d45!important;
  opacity:1!important;
}
html[data-app-theme="current-mlv"][data-theme="dark"] body.account-page .agent-studio-activity :is(small,strong){
  color:#f5efe5!important;
  opacity:1!important;
}

/* Travel Agent Plans / shared Admin light small copy.
   Use readable muted ink on ordinary Admin workspace small text, then restore
   inverse controls explicitly below. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main small{
  color:#554d45!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main :is(.button-gold,.button-dark,.button-danger,.system-primary-action) small{
  color:inherit!important;
  opacity:1!important;
}

/* Notification badge · Emerald light.
   Do not depend on a particular trigger wrapper: legacy Admin routes use more
   than one header structure. Keep both resting and bump states inverse. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .mlv-notification-badge,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .mlv-notification-badge.is-bumping{
  background:#173027!important;
  background-color:#173027!important;
  background-image:none!important;
  border-color:#fffdf8!important;
  color:#fffdf8!important;
  filter:none!important;
  opacity:1!important;
  animation:none!important;
}

/* System & Updates · Emerald light.
   The residual 2.45:1 sample is the inverse foreground on a theme-gold action.
   Darken the action surface itself, then keep descendant text inverse. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .system-updates-main :is(.button-gold,.system-primary-action){
  background:#4a3006!important;
  background-color:#4a3006!important;
  border-color:#4a3006!important;
  color:#fffdf8!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .system-updates-main :is(.button-gold,.system-primary-action) :is(span,small,strong,b,em){
  color:#fffdf8!important;
  opacity:1!important;
}


/* MLV V20 · POST-SEAL C10 R9
   ELEVEN-SAMPLE ROOT-OWNER VISUAL CLOSURE
   Exact current visual owners observed after C10-R8. Presentation only.
   No diagnostic-score suppression and no booking/commission/payment logic. */

/* Moroccan Ivory · Dark · public site header.
   The selected-theme stylesheet has a legacy non-mode-specific light header
   surface. In dark mode that left light theme text/links sitting on cream.
   Own the header as a coherent dark surface rather than overriding page copy. */
html[data-app-theme="moroccan-ivory"][data-theme="dark"] body:not(.admin-page):not(.account-page) .site-header{
  background:rgba(28,21,17,.97)!important;
  background-color:#1c1511!important;
  border-color:#5a4134!important;
  color:#f5eadc!important;
}
html[data-app-theme="moroccan-ivory"][data-theme="dark"] body:not(.admin-page):not(.account-page) .site-header :is(.brand strong,.brand small,.client-account-link span,.theme-toggle small,nav a,.site-nav a){
  color:#f5eadc!important;
  -webkit-text-fill-color:#f5eadc!important;
  opacity:1!important;
}
html[data-app-theme="moroccan-ivory"][data-theme="dark"] body:not(.admin-page):not(.account-page) .site-header :is(button.button.button-dark,a.button.button-dark,.button.button-dark){
  background:#f5eadc!important;
  background-color:#f5eadc!important;
  border-color:#f5eadc!important;
  color:#120d0b!important;
  -webkit-text-fill-color:#120d0b!important;
}
html[data-app-theme="moroccan-ivory"][data-theme="dark"] body:not(.admin-page):not(.account-page) .site-header :is(button.button.button-dark,a.button.button-dark,.button.button-dark) :is(span,small,strong,b,em){
  color:#120d0b!important;
  -webkit-text-fill-color:#120d0b!important;
  opacity:1!important;
}

/* Create Booking · Current MLV · commercial preview.
   The Studio intentionally used opacity for hierarchy, but its commercial
   dt/dd/small/strong samples fell below browser-observed contrast thresholds.
   Own only the preview and recent-activity/readout surfaces. */
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page .agent-studio-commercial-card :is(dt,small){
  color:#554d45!important;
  opacity:1!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page .agent-studio-commercial-card :is(dd,strong){
  color:#241d15!important;
  opacity:1!important;
}
html[data-app-theme="current-mlv"][data-theme="dark"] body.account-page .agent-studio-commercial-card :is(dt,dd,small,strong),
html[data-app-theme="current-mlv"][data-theme="dark"] body.account-page .agent-studio-activity :is(small,strong){
  color:#f5efe5!important;
  -webkit-text-fill-color:#f5efe5!important;
  opacity:1!important;
}
/* The MLV-net tile is an accent surface; keep its intentional inverse pair. */
html[data-app-theme="current-mlv"] body.account-page .agent-studio-commercial-card .agent-commercial-net :is(dt,dd,small,strong){
  color:#17140f!important;
  -webkit-text-fill-color:#17140f!important;
  opacity:1!important;
}

/* System & Updates · Emerald Light.
   Raise specificity above restored/page-local span rules while preserving each
   interactive control's own foreground. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .admin-main.system-updates-main span:not(.system-status-icon):not(.system-file-mark){
  color:#2b1b05!important;
  -webkit-text-fill-color:#2b1b05!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .admin-main.system-updates-main :is(button,a.button,a.system-primary-action,.button-gold,.button-dark,.button-danger,[role="button"]) :is(span,small,strong,b,em){
  color:inherit!important;
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
}

/* Admin notification badge · Emerald Light · transient bump state.
   Legacy routes vary in wrapper structure. Target the actual button/badge pair
   and lock both paint channels so animation/text-fill cannot collapse to 1:1. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar button.mlv-notification-trigger span.mlv-notification-badge,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar button.mlv-notification-trigger span.mlv-notification-badge.is-bumping,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-topbar [aria-label*="notification" i] span.mlv-notification-badge.is-bumping{
  background:#173027!important;
  background-color:#173027!important;
  background-image:none!important;
  border-color:#fffdf8!important;
  color:#fffdf8!important;
  -webkit-text-fill-color:#fffdf8!important;
  text-shadow:none!important;
  mix-blend-mode:normal!important;
  filter:none!important;
  opacity:1!important;
  animation:none!important;
}


/* MLV V20 · POST-SEAL C10 R10
   DB BOOTSTRAP + CURRENT VISUAL HEALTH TRUTH CLOSURE
   Presentation portion only. Exact current-release browser samples are owned
   here; no diagnostic-score hiding and no commercial/financial behavior. */

/* Create Booking · Current MLV · Light.
   Small Studio hierarchy previously depended on opacity and could still win
   over the earlier commercial-card-only rule. Own the complete Studio readout. */
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page .agent-booking-studio :is(small,dt),
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page .agent-studio-activity small,
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page .agent-booking-result small{
  color:#554d45!important;
  -webkit-text-fill-color:#554d45!important;
  opacity:1!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body.account-page .agent-booking-studio :is(dd,strong){
  color:#241d15!important;
  -webkit-text-fill-color:#241d15!important;
  opacity:1!important;
}
/* Preserve intentional inverse/accent Studio states after the general readout owner. */
html[data-app-theme="current-mlv"] body.account-page .agent-booking-studio :is(.agent-commercial-net,.agent-studio-progress button.active,.agent-studio-progress button.complete) :is(small,dt,dd,strong){
  color:#17140f!important;
  -webkit-text-fill-color:#17140f!important;
  opacity:1!important;
}

/* Public Home · Current MLV · Light.
   Own only known cream/light homepage copy; photo/inverse controls stay excluded. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) :is(.journey-platform,.category-section>.section-heading,.experience-section>.section-heading,.home-hotels-section>.section-heading,.featured-reviews>.section-heading,.home-hotel-body,.booking-intro,.booking-form,.homepage-about,.homepage-proof) p.eyebrow{
  color:#493109!important;
  -webkit-text-fill-color:#493109!important;
  opacity:1!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) :is(.site-header .brand,.journey-platform,.category-section>.section-heading,.experience-section>.section-heading,.home-hotels-section>.section-heading,.featured-reviews>.section-heading,.home-hotel-body,.booking-intro,.booking-form,.homepage-about,.homepage-proof) small{
  color:#554d45!important;
  -webkit-text-fill-color:#554d45!important;
  opacity:1!important;
}
/* Photo cards and inverse actions retain their own readable foreground. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) :is(.category-card,.button-dark,.button-gold,.header-cta) :is(small,span,strong,em){
  color:inherit!important;
  -webkit-text-fill-color:currentColor!important;
}

/* Diagnostics · Emerald Light · active issue evidence.
   Error Observatory cards use legacy --mlv-* tokens, so generic Admin text
   rules do not reliably reach their release badge/copy/trace descendants. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main .health-issue .health-issue-copy>div>strong,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main .health-issue .health-issue-copy>div>small,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main .health-issue .health-issue-copy>p,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main .health-issue details>summary,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main .health-issue .diag-v1610-trace>summary{
  color:#2b1b05!important;
  -webkit-text-fill-color:#2b1b05!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main .health-issue .diag-v1611-release-badge,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.admin-page .admin-main .health-issue .diag-v1610-copy{
  background:#173027!important;
  background-color:#173027!important;
  border-color:#315d4c!important;
  color:#fffdf8!important;
  -webkit-text-fill-color:#fffdf8!important;
  opacity:1!important;
}

/* System & Updates · Emerald Light/Dark.
   Late page-local span/icon declarations were the remaining current samples. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .admin-main.system-updates-main span:not(.system-status-icon){
  color:#2b1b05!important;
  -webkit-text-fill-color:#2b1b05!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page .admin-main.system-updates-main :is(button,a.button,a.system-primary-action,[role="button"]) :is(span,small,strong,b,em){
  color:inherit!important;
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="dark"] body.system-updates-page .admin-main.system-updates-main .system-status-icon{
  background:#173027!important;
  background-color:#173027!important;
  color:#fffdf8!important;
  -webkit-text-fill-color:#fffdf8!important;
  opacity:1!important;
}

/* MLV V20 · POST-SEAL C10 R14 R17
   ROOT VISUAL OWNER CLEANUP
   R14-R12..R14-R16 late contrast painters are retired in bootstrap. These are
   semantic component owners for the exact current-render survivors plus proven
   accessibility rules that must remain active. No diagnostic hiding/business logic. */

html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page)
main.experience-detail .detail-gallery-controls [data-gallery-status]{
  color:#fffdf8!important;-webkit-text-fill-color:#fffdf8!important;opacity:1!important;text-shadow:none!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) main.experience-detail .itinerary-list .itinerary-unit,
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) main.experience-detail .practical-list dt,
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) main.experience-detail .detail-related-card>div>p,
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) main.experience-detail .detail-review-list .review-public-date-v1632{
  color:#5a4933!important;-webkit-text-fill-color:#5a4933!important;opacity:1!important;text-shadow:none!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page) main.experience-detail .detail-related-controls button{
  color:#6a4d16!important;-webkit-text-fill-color:#6a4d16!important;border-color:#6a4d16!important;opacity:1!important;
}
html[data-app-theme="current-mlv"][data-theme="dark"] body:not(.admin-page):not(.account-page)
:is(.button-gold,button.button-gold,a.button-gold) :is(span,strong,small,b,em){
  color:#17140f!important;-webkit-text-fill-color:#17140f!important;opacity:1!important;text-shadow:none!important;
}
html[data-app-theme="current-mlv"][data-theme="dark"] body:not(.admin-page):not(.account-page)
main.experience-detail :is(.detail-related-foot>a,.detail-booking-card dd a){
  color:#f1d58f!important;-webkit-text-fill-color:#f1d58f!important;opacity:1!important;
}
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page
.admin-main.system-updates-main :is(.button-gold,.system-primary-action)>span{
  color:#fffdf8!important;-webkit-text-fill-color:#fffdf8!important;opacity:1!important;text-shadow:none!important;
}
html[data-app-theme="emerald-concierge"][data-theme="dark"] body.system-updates-page
.admin-main.system-updates-main .system-inspection-pass>span{
  background:#173027!important;background-color:#173027!important;border-color:#315d4c!important;
  color:#fffdf8!important;-webkit-text-fill-color:#fffdf8!important;opacity:1!important;text-shadow:none!important;
}

html[data-theme="light"][data-app-theme="obsidian-glass"] body:not(.admin-page) main
:is(.summary-card,.booking-summary,.detail-content>section,.content-card,.review-card,.package-card,.blog-index-card,.faq-card,.account-card,.account-panel)
:is(p,small,strong,span,label,summary,h1,h2,h3,h4,dt,dd){
  color:#241b31!important;-webkit-text-fill-color:#241b31!important;opacity:1!important;text-shadow:none!important;
}
html[data-theme="light"][data-app-theme="obsidian-glass"] body:not(.admin-page) main
:is(.summary-card,.booking-summary,.detail-content>section,.content-card,.review-card,.package-card,.blog-index-card,.faq-card)
:is(p.eyebrow,small,.muted,.summary-meta p){color:#4b3d5a!important;-webkit-text-fill-color:#4b3d5a!important;}
html[data-theme="light"][data-app-theme="obsidian-glass"] body:not(.admin-page)
:is(.detail-booking-card,.category-card,.hero-v4,.booking-intro,.home-hotel-image,.button-dark)
:is(p,small,strong,span,label,h1,h2,h3,h4){color:#fffdf8!important;-webkit-text-fill-color:#fffdf8!important;}
html[data-theme="light"][data-app-theme="obsidian-glass"] body:not(.admin-page)
:is(.detail-booking-card,.category-card,.hero-v4,.booking-intro) p.eyebrow{color:#f2d99e!important;-webkit-text-fill-color:#f2d99e!important;}

html[data-theme="light"][data-app-theme="current-mlv"] body.account-page.account-home-page
.client-command-center :is(.client-command-kpis>article,.client-department-card,.client-department-tools>a){
  background:#fffdf8!important;background-color:#fffdf8!important;border-color:#d8c9b2!important;color:#2b1b05!important;backdrop-filter:none!important;
}
html[data-theme="light"][data-app-theme="current-mlv"] body.account-page.account-home-page
.client-command-center :is(.client-command-kpis>article,.client-department-card,.client-department-tools>a)
:is(span,strong,h2,h3,p,label){color:#2b1b05!important;-webkit-text-fill-color:#2b1b05!important;opacity:1!important;text-shadow:none!important;}
html[data-theme="light"][data-app-theme="current-mlv"] body.account-page.account-home-page
.client-command-center :is(.client-command-kpis>article,.client-department-card,.client-department-tools>a)
:is(small,.eyebrow,.client-department-open),
html[data-theme="light"][data-app-theme="current-mlv"] body.account-page.account-home-page .client-command-footer{
  color:#5a4933!important;-webkit-text-fill-color:#5a4933!important;opacity:1!important;
}

body.admin-page .admin-main.branding-admin input:not([type="hidden"]),
body.admin-page.studio-page .admin-main input:not([type="hidden"]){box-sizing:border-box!important;overflow-x:visible!important;overflow-y:visible!important;text-overflow:clip!important;}
body.admin-page .admin-main.branding-admin input[type="checkbox"],body.admin-page.studio-page .admin-main input[type="checkbox"],
body.admin-page .admin-main.branding-admin input[type="radio"],body.admin-page.studio-page .admin-main input[type="radio"]{
  inline-size:20px!important;block-size:20px!important;min-inline-size:20px!important;min-block-size:20px!important;max-inline-size:20px!important;max-block-size:20px!important;
}
body.admin-page .admin-main.branding-admin input[type="color"],body.admin-page.studio-page .admin-main input[type="color"]{
  inline-size:52px!important;block-size:38px!important;min-inline-size:52px!important;min-block-size:38px!important;padding:2px!important;
}
body.admin-page .admin-main.branding-admin input[type="file"],body.admin-page.studio-page .admin-main input[type="file"]{min-width:0!important;width:100%!important;max-width:100%!important;}
body.admin-page .admin-main.branding-admin [data-mlv-r14r17-scroll-owner="1"],body.admin-page.studio-page .admin-main [data-mlv-r14r17-scroll-owner="1"]{
  max-width:100%!important;overflow-x:auto!important;overflow-y:visible!important;scrollbar-width:thin;
}
body.admin-page .admin-main.branding-admin input[data-mlv-r14r17-reachable="1"],body.admin-page.studio-page .admin-main input[data-mlv-r14r17-reachable="1"]{
  max-width:none!important;text-overflow:clip!important;white-space:nowrap!important;
}
/* R14-R17 exact specificity closure for the Manual ZIP / managed-update arrow.
   This outranks the historical ordinary-span workspace owner without global span painting. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page
.admin-main.system-updates-main button.button.button-gold.system-primary-action>span:not([class]),
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page
.admin-main.system-updates-main a.button.button-gold.system-primary-action>span:not([class]){
  color:#fffdf8!important;
  -webkit-text-fill-color:#fffdf8!important;
  opacity:1!important;
  text-shadow:none!important;
}

/* MLV V20 · POST-SEAL C10 R14 R19
   CANONICAL FINAL VISUAL OWNER CLOSURE
   This canonical Phase-7 sheet now loads after the historical R14-R8..R14-R11
   sheets. The selectors below own only the eight freshly reproduced runtime
   contrast families from the R14-R18 production audit. No JS painter, no
   diagnostic suppression, and no booking/payment/SEO/business behavior. */

/* Experience · Current MLV · Light: hero/booking are intentional inverse
   surfaces; feature diamonds and review metadata live on white cards. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page)
main.experience-detail :is(.detail-hero,.detail-booking-card) p.eyebrow{
  color:#f2d99e!important;
  -webkit-text-fill-color:#f2d99e!important;
  opacity:1!important;
  text-shadow:none!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page)
main.experience-detail .feature-list li>span{
  color:#6a4d16!important;
  -webkit-text-fill-color:#6a4d16!important;
  opacity:1!important;
  text-shadow:none!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page)
main.experience-detail .detail-review-list article>footer>small{
  color:#5a4933!important;
  -webkit-text-fill-color:#5a4933!important;
  opacity:1!important;
  text-shadow:none!important;
}

/* Home · Current MLV · Light: booking-intro is a real dark surface. The
   experience/hotel boundary notice is a sand/white light surface. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page):has(>main>.hero-v4)
.booking-intro>p.eyebrow{
  color:#f2d99e!important;
  -webkit-text-fill-color:#f2d99e!important;
  opacity:1!important;
  text-shadow:none!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page):has(>main>.hero-v4)
.booking-intro :is(.progress-list li:not(.active):not(.complete)>span,.progress-list small,.support-card small){
  color:#e2d9cc!important;
  -webkit-text-fill-color:#e2d9cc!important;
  opacity:1!important;
  text-shadow:none!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page):has(>main>.hero-v4)
.experience-only-notice>span{
  color:#6a4d16!important;
  -webkit-text-fill-color:#6a4d16!important;
  opacity:1!important;
  text-shadow:none!important;
}

/* Home · Current MLV · Dark: progress state circles are gold surfaces and must
   keep dark ink instead of inheriting inverse white copy. */
html[data-app-theme="current-mlv"][data-theme="dark"] body:not(.admin-page):not(.account-page):has(>main>.hero-v4)
.booking-intro .progress-list :is(li.active,li.complete)>span{
  background:#c5a15a!important;
  background-color:#c5a15a!important;
  border-color:#c5a15a!important;
  color:#17140f!important;
  -webkit-text-fill-color:#17140f!important;
  opacity:1!important;
  text-shadow:none!important;
}

/* System & Updates · Emerald Light: the inspection-pass glyph is a dark-green
   badge. Own that exact foreground/background pair rather than all spans. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page
.admin-main.system-updates-main .system-inspection-pass>span{
  background:#173027!important;
  background-color:#173027!important;
  border-color:#315d4c!important;
  color:#fffdf8!important;
  -webkit-text-fill-color:#fffdf8!important;
  opacity:1!important;
  text-shadow:none!important;
}

/* MLV V20 · POST-SEAL C10 R14 R20
   EXACT FIVE RENDERED OWNER CLOSURE
   Production evidence after R14-R19 left exactly five Current-MLV/Emerald
   Light contrast families. This block targets their real semantic DOM owners.
   No JavaScript painter, no diagnostic suppression, no business/SEO behavior. */

/* Home · Current MLV · Light. Legacy V17 rules still paint these exact
   components with light-surface inks. Own the actual dark/photo surfaces. */
html[data-app-theme="current-mlv"][data-theme="light"] body:has(.journey-platform):has(.featured-reviews)
.booking-shell>.booking-intro>p.eyebrow{
  color:#f2d99e!important;
  -webkit-text-fill-color:#f2d99e!important;
  opacity:1!important;
  text-shadow:none!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:has(.journey-platform):has(.featured-reviews)
.category-section .category-card>span>small{
  color:#f2d99e!important;
  -webkit-text-fill-color:#f2d99e!important;
  opacity:1!important;
  text-shadow:none!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:has(.journey-platform):has(.featured-reviews)
.booking-shell>.experience-only-notice>span[aria-hidden="true"]{
  color:#6a4d16!important;
  -webkit-text-fill-color:#6a4d16!important;
  opacity:1!important;
  text-shadow:none!important;
}

/* Experience · Current MLV · Light. The remaining generic gold span sample
   is produced by semantic accent markers on cream/light content surfaces. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page)
main.experience-detail .itinerary-list article>span,
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page)
main.experience-detail .faq-list details>summary>span{
  color:#6a4d16!important;
  -webkit-text-fill-color:#6a4d16!important;
  opacity:1!important;
  text-shadow:none!important;
}

/* System & Updates · Emerald Light. The surviving classless glyph uses the
   inspection-pass circle. Make the badge itself a light semantic success
   surface so the dark foreground remains accessible even if inherited ink wins. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page
.admin-main.system-updates-main .system-inspection-pass>span:not([class]){
  background:#e8f0e9!important;
  background-color:#e8f0e9!important;
  background-image:none!important;
  border-color:#315d4c!important;
  color:#173027!important;
  -webkit-text-fill-color:#173027!important;
  opacity:1!important;
  text-shadow:none!important;
}

/* MLV V20 · POST-SEAL C10 R14 R21
   EXACT FOUR SOURCE OWNER CLOSURE
   Fresh post-R14-R20 production evidence left four Light-mode contrast owners.
   These rules own the actual semantic source components rather than generic
   spans. No JavaScript painter, no diagnostic suppression and no business/SEO
   behavior. */

/* System & Updates · Emerald Light.
   The 1.18:1 survivor is the direct "Currently installed" label on the
   canonical dark-green installed-version tile. Keep all direct tile copy
   inverse so later generic Admin span rules cannot repaint it dark-on-dark. */
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page
.admin-main.system-updates-main .system-installed-version>span:not(.system-status-icon):not(.system-file-mark),
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page
.admin-main.system-updates-main .system-installed-version>strong,
html[data-app-theme="emerald-concierge"][data-theme="light"] body.system-updates-page
.admin-main.system-updates-main .system-installed-version>small{
  color:#fffdf8!important;
  -webkit-text-fill-color:#fffdf8!important;
  opacity:1!important;
  text-shadow:none!important;
}

/* Experience · Current MLV · Light.
   Related-experience labels are intentional white-on-photo overlays. The
   recorder cannot sample sibling image pixels, so provide the image container
   with an accessible dark fallback surface while the real photo remains the
   visible absolute layer. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page)
main.experience-detail .detail-related-image{
  background:#1b120d!important;
  background-color:#1b120d!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page)
main.experience-detail .detail-related-image>span{
  color:#fffdf8!important;
  -webkit-text-fill-color:#fffdf8!important;
  opacity:1!important;
  text-shadow:0 2px 10px rgba(0,0,0,.78)!important;
}

/* Home · Current MLV · Light.
   The hero and booking-intro eyebrows are inverse copy on real dark surfaces.
   Own both exact source positions so broad light-surface eyebrow rules cannot
   convert either one back to dark gold. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page)
.hero-v4 .hero-copy>p.eyebrow,
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page)
.booking-shell>.booking-intro>p.eyebrow{
  color:#f2d99e!important;
  -webkit-text-fill-color:#f2d99e!important;
  opacity:1!important;
  text-shadow:none!important;
}

/* Home category disclosure · Current MLV · Light.
   The remaining gold span is the disclosure arrow on the sand category
   section. Use a darker semantic accent on the light surface, and restore a
   light accent when the control itself becomes dark on hover/focus. */
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page)
.category-section>.section-disclosure>span{
  color:#6a4d16!important;
  -webkit-text-fill-color:#6a4d16!important;
  opacity:1!important;
  text-shadow:none!important;
}
html[data-app-theme="current-mlv"][data-theme="light"] body:not(.admin-page):not(.account-page)
.category-section>.section-disclosure:is(:hover,:focus-visible)>span{
  color:#f2d99e!important;
  -webkit-text-fill-color:#f2d99e!important;
}
