/* The Google Fonts import that was here asked for Inter and Sora. The site
   serves under `style-src 'self'` with no allowance for fonts.googleapis.com, so
   the browser refused it on every page load and the families never arrived —
   which is why thirty pages rendered in system sans-serif. The fonts are now
   vendored and declared in homle-tokens.css. Removing this also stops a CSP
   violation being reported on every request. */

:root {
  color-scheme: light;
  --brand: var(--homle-coral-action, #e31937);
  --brand-dark: var(--homle-coral-hover, #b70f29);
  --brand-tint: var(--homle-coral-tint, #ffe0e5);
  --ink: var(--homle-ink, #0b090a);
  --ink-soft: var(--homle-ink-2, #211d1e);
  --muted: var(--homle-muted, #665f61);
  --paper: var(--homle-paper, #fffefd);
  --surface: var(--homle-surface, #f2eee9);
  --line: var(--homle-line, #dcd4d1);
  /* This surface's own: a deeper brand shade, a paler tint, and a focus ring
     that has to stay legible on both cream and the dark header. */
  --brand-deep: #7f0a1d;
  --brand-tint-pale: #fff2f4;
  --focus: #2456e6;
  /* The landing page's two families, which are the only ones this product
     actually ships. These previously asked for "Sora" and Inter — neither
     vendored, and under `style-src 'self'` there is no font service to fetch
     them from, so all thirty pages loading this file rendered in system
     sans-serif while the landing page rendered in Bricolage Grotesque. That
     dead declaration was the single biggest reason the app looked like two
     different products. */
  --font-display: var(--homle-display, "Segoe UI", system-ui, sans-serif);
  --font-body: var(--homle-body, system-ui, -apple-system, sans-serif);
  --shadow-sm: var(--homle-shadow-sm, 0 8px 20px rgba(11, 9, 10, .08));
  --shadow: var(--homle-shadow, 0 22px 56px rgba(11, 9, 10, .13));
  --shadow-lg: var(--homle-shadow-lg, 0 34px 90px rgba(11, 9, 10, .2));
  --ease: cubic-bezier(.2, .7, .2, 1);
  --ease-spring: cubic-bezier(.34, 1.56, .64, 1); /* slight overshoot — rewards only */
  --dur-tap: 120ms;
  --dur-fast: 180ms;
  --dur-base: 260ms;
  --dur-reveal: 450ms;
  --radius: var(--homle-radius-lg, 18px);
  --shell: 1180px;
  --green: var(--brand);
  --green-dark: var(--brand-dark);
  --mint: var(--brand-tint);
  --mint-pale: var(--brand-tint-pale);
  --cream: var(--surface);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
[hidden] { display: none !important; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--font-body); line-height: 1.6; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
::selection { color: #fff; background: var(--brand); }
a { color: inherit; }
img { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; border-radius: 4px; }
.skip-link { position: fixed; z-index: 100; left: 1rem; top: -5rem; padding: .75rem 1rem; color: #fff; background: var(--ink); border-radius: 8px; }
.skip-link:focus { top: 1rem; }
.shell { width: min(calc(100% - 40px), var(--shell)); margin-inline: auto; }

.site-header { position: sticky; z-index: 20; top: 0; border-bottom: 1px solid rgba(232, 226, 224, .9); background: rgba(255, 255, 255, .88); backdrop-filter: blur(18px) saturate(1.6); -webkit-backdrop-filter: blur(18px) saturate(1.6); }
.nav-wrap { min-height: 74px; display: flex; align-items: center; gap: 24px; }
.brand { display: inline-flex; align-items: center; gap: 11px; font-family: var(--font-display); font-weight: 800; font-size: 1.32rem; text-decoration: none; letter-spacing: -.03em; }
.brand img { border-radius: 10px; transition: transform .3s var(--ease); }
.brand:hover img { transform: rotate(-6deg) scale(1.05); }
.main-nav { margin-left: auto; display: flex; align-items: center; gap: 22px; }
.main-nav > a:not(.button) { font-size: .94rem; font-weight: 650; text-decoration: none; }
.main-nav > a:not(.button):hover { color: var(--green); }
.menu-toggle { display: none; margin-left: auto; padding: .55rem .8rem; color: var(--ink); border: 1px solid var(--line); border-radius: 9px; background: #fff; font-weight: 700; }
.header-sign-in { margin-left: auto; color: var(--green-dark); font-size: .9rem; font-weight: 850; text-decoration: none; }
.main-nav + .header-sign-in, .main-nav + .header-sign-in + .account-menu { margin-left: 0; }

.button { display: inline-flex; justify-content: center; align-items: center; gap: 8px; min-height: 48px; padding: .76rem 1.4rem; border: 2px solid var(--brand); border-radius: 999px; color: #fff; background: linear-gradient(180deg, #e62033, var(--brand)); box-shadow: 0 2px 6px rgba(124, 12, 23, .22), 0 10px 26px rgba(215, 24, 42, .22); font-weight: 700; letter-spacing: .005em; text-decoration: none; cursor: pointer; transition: transform .2s var(--ease), box-shadow .25s var(--ease), background .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease); }
.button:hover { background: var(--brand-dark); border-color: var(--brand-dark); box-shadow: 0 4px 10px rgba(124, 12, 23, .26), 0 14px 34px rgba(164, 18, 32, .28); transform: translateY(-2px); }
.button:active { transform: translateY(0) scale(.985); box-shadow: 0 2px 6px rgba(124, 12, 23, .2); }
.button-small { min-height: 39px; padding: .5rem .85rem; font-size: .88rem; }
.button-outline { color: var(--brand); background: transparent; box-shadow: none; }
.button-outline:hover { color: #fff; background: var(--brand-dark); }
.button-light { color: var(--green-dark); border-color: #fff; background: #fff; }
.button-light:hover { color: #fff; border-color: var(--green-dark); background: var(--green-dark); }

.hero { position: relative; overflow: hidden; padding: 92px 0 80px; background: radial-gradient(circle at 88% 12%, rgba(215, 24, 42, .1), transparent 32%), radial-gradient(circle at 8% 90%, rgba(215, 24, 42, .05), transparent 30%), linear-gradient(150deg, #fdfbfa 0%, #faf5f3 55%, #f7f5f2 100%); }
.hero::before { content: ""; position: absolute; inset: 0; pointer-events: none; background-image: radial-gradient(rgba(20, 17, 20, .06) 1px, transparent 1px); background-size: 26px 26px; mask-image: radial-gradient(circle at 78% 22%, #000 0%, transparent 55%); -webkit-mask-image: radial-gradient(circle at 78% 22%, #000 0%, transparent 55%); }
.hero-grid { position: relative; display: grid; grid-template-columns: 1.08fr .92fr; gap: clamp(40px, 7vw, 94px); align-items: center; }
.eyebrow { margin: 0 0 14px; color: var(--green); font-size: .77rem; font-weight: 850; letter-spacing: .13em; text-transform: uppercase; }
.eyebrow.light { color: var(--homle-mint, #2ed47a); }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { font-family: var(--font-display); line-height: 1.08; letter-spacing: -.03em; }
h1 { max-width: 750px; margin-bottom: 24px; font-size: clamp(3rem, 6.5vw, 5.5rem); }
h2 { margin-bottom: 18px; font-size: clamp(2.15rem, 4vw, 3.55rem); }
h3 { margin-bottom: 10px; font-size: 1.25rem; }
.hero-lead { max-width: 680px; margin-bottom: 30px; color: var(--muted); font-size: clamp(1.12rem, 2vw, 1.35rem); }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.pilot-note { max-width: 650px; margin: 22px 0 0; color: var(--muted); font-size: .91rem; }

.match-card { position: relative; padding: 26px; border: 1px solid rgba(215, 24, 42, .17); border-radius: 28px; background: rgba(255, 255, 255, .94); box-shadow: var(--shadow); transform: rotate(1.5deg); }
.match-card::before { content: ""; position: absolute; z-index: -1; inset: -18px 22px 18px -18px; border: 1px solid rgba(215, 24, 42, .18); border-radius: 30px; background: rgba(251, 227, 229, .64); transform: rotate(-4deg); }
.match-topline { display: flex; justify-content: space-between; align-items: center; padding-bottom: 18px; border-bottom: 1px solid var(--line); color: var(--muted); font-size: .83rem; font-weight: 700; }
.status-pill { padding: .35rem .65rem; color: var(--green-dark); border-radius: 999px; background: var(--mint); }
.property-line { display: flex; gap: 14px; align-items: center; padding: 22px 0; }
.property-line strong, .property-line small { display: block; }
.property-line small { margin-top: 2px; color: var(--muted); }
.property-icon, .cleaner-avatar { width: 48px; height: 48px; display: grid; flex: 0 0 48px; place-items: center; color: #fff; border-radius: 14px; background: var(--green); font-size: .85rem; font-weight: 850; }
.cleaner-avatar { color: var(--green-dark); border-radius: 50%; background: var(--mint); }
.route-line { height: 24px; display: grid; grid-template-columns: 11px 1fr 11px; align-items: center; padding: 0 18px; }
.route-line span { width: 11px; height: 11px; border: 3px solid var(--green); border-radius: 50%; }
.route-line i { height: 2px; background: repeating-linear-gradient(90deg, var(--green) 0 7px, transparent 7px 13px); }
.match-footer { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding-top: 18px; border-top: 1px solid var(--line); color: var(--muted); font-size: .72rem; font-weight: 750; text-align: center; }

.trust-strip { border-block: 1px solid var(--line); background: #fff; }
.trust-grid { display: grid; grid-template-columns: repeat(3, 1fr); }
.trust-grid div { padding: 24px 28px; border-right: 1px solid var(--line); }
.trust-grid div:first-child { padding-left: 0; }
.trust-grid div:last-child { border-right: 0; }
.trust-grid strong, .trust-grid span { display: block; }
.trust-grid span { margin-top: 4px; color: var(--muted); font-size: .87rem; }

.section { padding-block: 100px; }
.section-heading { max-width: 700px; margin-bottom: 42px; }
.section-heading > p:last-child { color: var(--muted); font-size: 1.06rem; }
.service-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.service-card { min-height: 390px; padding: 28px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.service-card.featured { color: #fff; border-color: var(--green); background: var(--green); box-shadow: var(--shadow); transform: translateY(-10px); }
.card-number { display: inline-grid; width: 38px; height: 38px; margin-bottom: 42px; place-items: center; border-radius: 50%; color: var(--green); background: var(--mint-pale); font-size: .78rem; font-weight: 850; }
.service-card.featured .card-number { color: #fff; background: rgba(255,255,255,.16); }
.service-card p { color: var(--muted); }
.service-card.featured p { color: #d6eee8; }
.service-card ul { margin: 26px 0 0; padding: 0; list-style: none; }
.service-card li { padding: 10px 0; border-top: 1px solid var(--line); font-size: .92rem; }
.service-card.featured li { border-color: rgba(255,255,255,.18); }

.process-section { background: var(--cream); }
.steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin: 0; padding: 0; list-style: none; }
.steps li { padding: 24px; border-top: 3px solid var(--green); background: rgba(255,255,255,.72); }
.steps li > span { display: block; margin-bottom: 30px; color: var(--green); font-size: .84rem; font-weight: 900; }
.steps p { margin: 0; color: var(--muted); font-size: .93rem; }

.cleaner-section { color: #fff; background: var(--green-dark); }
.cleaner-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 80px; align-items: center; }
.cleaner-grid > div > p:not(.eyebrow) { max-width: 650px; margin-bottom: 28px; color: #d8e9e4; font-size: 1.08rem; }
.benefit-list { margin: 0; padding: 0; list-style: none; }
.benefit-list li { display: flex; gap: 16px; padding: 18px 0; border-top: 1px solid rgba(255,255,255,.17); }
.benefit-list li:last-child { border-bottom: 1px solid rgba(255,255,255,.17); }
.benefit-list li > span { width: 32px; height: 32px; display: grid; flex: 0 0 32px; place-items: center; border-radius: 50%; color: var(--green-dark); background: var(--homle-mint, #2ed47a); font-weight: 900; }
.benefit-list strong, .benefit-list small { display: block; }
.benefit-list small { margin-top: 3px; color: var(--homle-line-soft, #e8e2e0); font-size: .9rem; }

.forms-section { background: var(--homle-cream, #f7f4eb); }
.entry-route .main-nav,
.entry-route .menu-toggle,
.entry-route main > section:not(.forms-section),
.entry-route-request #cleaner-application,
.entry-route-join #request-cleaning { display: none; }
.entry-route .forms-section { min-height: calc(100vh - 76px); padding-block: 48px 64px; }
.entry-route .form-stack { display: block; }
.form-stack { display: grid; gap: 30px; }
.form-card { scroll-margin-top: 96px; display: grid; grid-template-columns: .72fr 1.28fr; gap: 56px; padding: clamp(28px, 5vw, 58px); border: 1px solid var(--line); border-radius: 30px; background: #fff; box-shadow: 0 16px 55px rgba(15, 66, 57, .08); }
.form-card-alt { background: #fbfaf6; }
.form-intro { align-self: start; position: sticky; top: 110px; }
.form-intro > p { color: var(--muted); }
.form-promise { margin-top: 28px; padding: 18px; border-left: 4px solid var(--green); background: var(--mint-pale); }
.form-promise strong, .form-promise span { display: block; }
.form-promise span { margin-top: 4px; color: var(--muted); font-size: .88rem; }
.guided-progress { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 0 0 6px; padding: 0; list-style: none; }
.guided-progress li { display: grid; grid-template-columns: 34px 1fr; gap: 8px; align-items: center; position: relative; color: var(--muted); font-size: .82rem; }
.guided-progress li::after { content: ""; position: absolute; z-index: 0; top: 16px; right: calc(100% - 4px); width: calc(100% - 38px); height: 2px; background: var(--line); }
.guided-progress li:first-child::after { display: none; }
.guided-progress li span { display: grid; z-index: 1; width: 34px; height: 34px; place-items: center; border: 2px solid var(--line); border-radius: 50%; background: #fff; font-weight: 900; }
.guided-progress li.current { color: var(--green-dark); }
.guided-progress li.current span { color: #fff; border-color: var(--green); background: var(--green); }
.guided-progress li.complete { color: var(--green-dark); }
.guided-progress li.complete span { color: var(--green-dark); border-color: var(--homle-line-soft, #e8e2e0); background: var(--mint-pale); }
.guided-progress li.complete::after, .guided-progress li.current::after { background: var(--homle-line-soft, #e8e2e0); }
.application-draft-status { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 11px 13px; color: var(--green-dark); border: 1px solid var(--homle-line, #dcd4d1); border-radius: 10px; background: #f4fbf9; font-size: .82rem; }
.application-draft-status strong, .application-draft-status span { display: block; }
.application-draft-status span { margin-top: 2px; color: var(--muted); }
.application-draft-status.is-offline { color: #7b4300; border-color: #e6c88a; background: #fff8e8; }
.application-draft-status .text-button { flex: 0 0 auto; }
.review-draft-status { margin-bottom: 14px; }
.config-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.config-preview-result { display: grid; gap: 7px; padding: 14px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 11px; background: #f1fbf7; }
.config-preview-result > strong, .config-preview-result > span, .config-preview-result > small { display: block; }
.config-preview-result > span, .config-preview-result > small { color: var(--muted); }
.config-preview-result ul { margin: 3px 0; padding-left: 20px; }
.config-preview-result.config-preview-invalid { border-color: #dca8a0; background: #fff6f4; }
.config-preview-economics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; padding: 12px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 9px; background: #fff; }
.config-preview-economics > strong, .config-preview-economics > p { grid-column: 1 / -1; }
.config-preview-economics > div { display: grid; gap: 2px; padding: 8px; border-radius: 7px; background: #f2f8f6; }
.config-preview-economics span, .config-preview-economics p { color: var(--muted); }
.config-preview-economics p { margin: 2px 0 0; }
@media (max-width: 680px) { .config-preview-economics { grid-template-columns: 1fr; } }
.guided-form-step { scroll-margin-top: 92px; display: grid; gap: 18px; }
.guided-form-step[hidden] { display: none; }
.guided-step-heading { padding-bottom: 14px; border-bottom: 1px solid var(--line); outline: none; }
.guided-step-heading > span { color: var(--green); font-size: .76rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.guided-step-heading h3 { margin: 5px 0 6px; font-size: clamp(1.35rem, 3vw, 1.8rem); }
.guided-step-heading p { margin: 0; color: var(--muted); font-size: .92rem; }
.guided-form-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; padding-top: 4px; }
.guided-form-actions .submit-button { justify-self: auto; }
form { display: grid; gap: 18px; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
label { display: grid; gap: 7px; color: #203f39; font-size: .88rem; font-weight: 760; }
label > span { color: var(--muted); font-weight: 500; }
label > small { color: var(--muted); font-size: .78rem; font-weight: 500; line-height: 1.4; }
input, select, textarea { width: 100%; padding: .8rem .9rem; color: var(--ink); border: 1px solid #b9c9c4; border-radius: 9px; background: #fff; }
input:focus, select:focus, textarea:focus { border-color: var(--green); box-shadow: 0 0 0 3px rgba(14, 102, 91, .12); outline: none; }
textarea { resize: vertical; }
.checkbox { display: grid; grid-template-columns: 20px 1fr; gap: 10px; align-items: start; font-weight: 500; line-height: 1.45; }
.checkbox input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--green); }
.checkbox a { color: var(--green); font-weight: 750; }
.service-options { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 16px; margin: 0; padding: 16px; border: 1px solid #b9c9c4; border-radius: 10px; }
.service-options legend { padding: 0 6px; color: #203f39; font-size: .88rem; font-weight: 760; }
.service-options legend span { color: var(--muted); font-weight: 500; }
.application-optional-fields { border: 1px solid var(--line); border-radius: 13px; background: #fff; }
.application-optional-fields summary { display: flex; justify-content: space-between; gap: 15px; padding: 14px; color: var(--green-dark); font-weight: 850; cursor: pointer; }
.application-optional-fields summary span { color: var(--muted); font-size: .78rem; text-transform: uppercase; }
.application-optional-fields > div { display: grid; gap: 16px; padding: 4px 14px 16px; }
.application-next-step { padding: 14px; border-left: 4px solid var(--green); border-radius: 8px; background: var(--mint-pale); }
.application-next-step strong, .application-next-step span { display: block; }
.application-next-step span { margin-top: 4px; color: var(--muted); font-size: .82rem; }
.submit-button { justify-self: start; min-width: 220px; }
.submit-button[disabled] { cursor: not-allowed; opacity: .65; transform: none; }
.submit-button[aria-busy="true"] { cursor: progress; }
.error-summary { padding: 14px 16px; color: #7b1e17; border: 1px solid #e1aaa5; border-radius: 9px; background: #fff0ee; font-weight: 650; }
.success-panel { padding: 20px; color: var(--green-dark); border: 1px solid var(--homle-success, #137738); border-radius: 12px; background: var(--mint-pale); }
.success-panel strong, .success-panel span { display: block; }
.success-panel span { margin-top: 5px; }
.success-panel .button { display: inline-flex; margin-top: 13px; color: #fff; }
.account-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.account-nav a { color: var(--green-dark); font-weight: 750; text-decoration: none; }
.account-main { display: grid; min-height: calc(100vh - 150px); align-items: center; padding: 54px 0 70px; }
.account-grid { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(310px, .72fr); gap: 24px; align-items: stretch; }
.account-card, .account-side { padding: clamp(30px, 5vw, 58px); border-radius: 28px; box-shadow: 0 22px 65px rgba(15, 66, 57, .11); }
.account-card { border: 1px solid var(--line); background: #fff; }
.account-card h1 { max-width: 720px; margin: 10px 0 16px; font-size: clamp(2.35rem, 6vw, 4.7rem); }
.account-lead { max-width: 650px; margin-bottom: 26px; color: var(--muted); font-size: 1.08rem; }
.account-state { display: grid; grid-template-columns: 42px 1fr; gap: 14px; align-items: start; padding: 18px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 14px; background: var(--mint-pale); }
.account-state-mark { display: grid; width: 36px; height: 36px; place-items: center; color: #fff; border-radius: 50%; background: var(--green); font-family: Georgia, serif; font-weight: 800; }
.account-state strong, .account-state p { display: block; }
.account-state p { margin: 5px 0 0; color: var(--homle-ink-2, #211d1e); font-size: .9rem; }
.account-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 26px; }
.account-runtime { margin-top: 24px; }
.account-feedback { margin-bottom: 16px; padding: 13px 15px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 11px; background: var(--mint-pale); color: var(--homle-ink-2, #211d1e); font-weight: 700; }
.account-feedback[data-kind="error"] { color: #7b1e17; border-color: #e1aaa5; background: #fff0ee; }
.account-feedback[data-kind="success"] { color: var(--homle-success, #137738); border-color: var(--homle-success, #137738); background: #ecfaf5; }
.account-social { display: grid; gap: 10px; }
.account-social p { margin: 0 0 2px; color: var(--muted); font-size: .9rem; font-weight: 800; }
.account-social .button { width: 100%; }
.account-provider-button { min-height: 52px; color: #173d37; border: 1px solid var(--homle-line-soft, #e8e2e0); background: #fff; box-shadow: 0 6px 18px rgba(16,36,33,.06); }
.account-provider-button:hover { color: #fff; border-color: var(--green); background: var(--green); }
.account-provider-facebook { border-color: #aebfdf; }
.account-choice-divider { display: grid; grid-template-columns: 1fr auto 1fr; gap: 12px; align-items: center; margin: 18px 0; color: var(--muted); font-size: .82rem; font-weight: 800; text-transform: uppercase; }
.account-choice-divider::before, .account-choice-divider::after { height: 1px; background: var(--line); content: ""; }
.account-email-toggle { width: 100%; min-height: 48px; padding: 11px 18px; color: var(--green-dark); border: 1px solid var(--green); border-radius: 10px; background: transparent; font: inherit; font-weight: 900; cursor: pointer; }
.account-email-toggle:hover { color: #fff; background: var(--green); }
.account-form fieldset { display: grid; gap: 16px; margin: 0; padding: 0; border: 0; }
.account-form legend { margin-bottom: 18px; color: var(--green-dark); font-family: Georgia, 'Times New Roman', serif; font-size: 1.75rem; font-weight: 800; }
.account-form small { color: var(--muted); line-height: 1.45; }
.account-form .button { justify-self: start; min-width: 150px; }
.account-form button:disabled { cursor: wait; opacity: .68; transform: none; }
.account-form-link { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 0; font-size: .9rem; }
.account-form-link a { color: var(--green-dark); font-weight: 800; }
.account-role { grid-template-columns: 22px 1fr; align-items: start; padding: 15px; border: 1px solid var(--line); border-radius: 12px; background: #fbfdfc; cursor: pointer; }
.account-role:has(input:checked) { border-color: var(--green); box-shadow: 0 0 0 3px rgba(14, 102, 91, .1); background: var(--mint-pale); }
.account-role input { width: 19px; height: 19px; margin-top: 2px; accent-color: var(--green); }
.account-role strong, .account-role small { display: block; }
.account-role small { margin-top: 4px; }
.account-side { color: var(--homle-ink, #0b090a); background: var(--homle-surface, #fbf9f3); }
.account-side h2 { margin: 9px 0 26px; color: var(--homle-ink, #0b090a); font-size: clamp(1.8rem, 4vw, 2.8rem); }
.account-steps { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.account-steps li { display: grid; grid-template-columns: 38px 1fr; gap: 14px; padding: 18px 0; border-top: 1px solid rgba(255,255,255,.18); }
.account-steps li:last-child { border-bottom: 1px solid rgba(255,255,255,.18); }
.account-steps li > span { display: grid; width: 34px; height: 34px; place-items: center; color: var(--green-dark); border-radius: 50%; background: var(--homle-mint, #2ed47a); font-weight: 900; }
.account-steps strong, .account-steps small { display: block; }
.account-steps small { margin-top: 5px; color: var(--homle-muted, #665f61); line-height: 1.45; }
.account-side-note { margin: 24px 0 0; color: var(--homle-muted, #665f61); font-size: .9rem; }
.account-noscript { margin-top: 18px; color: var(--muted); }
.account-footer { padding: 20px 0; color: var(--muted); font-size: .86rem; }
.account-footer .shell { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; }
.account-footer a { color: var(--green-dark); font-weight: 750; }
.settings-main { align-items: start; }
.settings-shell { width: min(820px, calc(100% - 32px)); padding: clamp(30px, 5vw, 54px); border: 1px solid var(--line); border-radius: 28px; background: #fff; box-shadow: 0 22px 65px rgba(15, 66, 57, .11); }
.settings-shell > h1 { margin: 9px 0 14px; font-size: clamp(2.3rem, 7vw, 4.4rem); }
.settings-card { display: grid; gap: 24px; margin-top: 24px; }
.settings-card h2 { margin: 0 0 6px; color: var(--green-dark); font-size: 1.45rem; }
.settings-card p { margin: 0; color: var(--muted); }
.settings-provider-list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.settings-provider-list li { display: grid; grid-template-columns: 40px 1fr; gap: 12px; align-items: center; padding: 15px; border: 1px solid var(--line); border-radius: 13px; background: #fbfdfc; }
.settings-provider-mark { display: grid; width: 36px; height: 36px; place-items: center; border-radius: 50%; color: #fff; background: var(--green); font-weight: 900; }
.settings-provider-list strong, .settings-provider-list small { display: block; }
.settings-provider-list small { margin-top: 3px; color: var(--muted); }
.settings-remove-provider { grid-column: 2; justify-self: start; min-height: 40px; padding: 6px 0; color: #8a2f28; }
.settings-connect { display: grid; gap: 12px; padding-top: 22px; border-top: 1px solid var(--line); }
.settings-step-up { display: grid; gap: 8px; padding: 14px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 13px; background: #eff8f5; }
.settings-step-up p { margin: 0; color: var(--muted); }
.settings-provider-actions, .settings-dialog-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.settings-dialog { width: min(520px, calc(100% - 28px)); padding: 0; border: 0; border-radius: 20px; box-shadow: 0 24px 80px rgba(0,0,0,.24); }
.settings-dialog::backdrop { background: rgba(4, 34, 30, .68); }
.settings-dialog form { display: grid; gap: 18px; padding: clamp(22px, 5vw, 34px); }
.settings-dialog h2 { margin: 6px 0 8px; color: var(--green-dark); font-size: 1.8rem; }
.settings-dialog p { margin: 0; color: var(--muted); }
.settings-dialog label { display: grid; gap: 7px; font-weight: 800; }
.settings-dialog button:disabled { cursor: wait; opacity: .65; }
.settings-privacy-card { margin-top: 28px; padding-top: 28px; border-top: 1px solid var(--line); }
.settings-privacy-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.settings-danger-button { color: #8a2f28; border-color: #d8a8a3; }
.settings-privacy-note { padding: 14px; border: 1px solid #ead9b7; border-radius: 13px; background: #fff9ec; color: #59471f !important; line-height: 1.55; }
.settings-privacy-list { display: grid; gap: 9px; margin: 10px 0 0; padding: 0; list-style: none; }
.settings-privacy-list li { display: flex; justify-content: space-between; gap: 12px; align-items: center; padding: 14px; border: 1px solid var(--line); border-radius: 13px; background: #fbfdfc; }
.settings-privacy-list strong, .settings-privacy-list small { display: block; }
.settings-privacy-list small { margin-top: 3px; color: var(--muted); }
.settings-privacy-status { padding: 6px 9px; border-radius: 999px; background: #edf5f2; color: var(--green-dark); font-size: .82rem; font-weight: 900; text-align: center; }
.settings-confirmation { grid-template-columns: 22px 1fr !important; align-items: start; padding: 14px; border: 1px solid #d8a8a3; border-radius: 13px; background: #fff6f5; }
.settings-confirmation input { width: 18px; height: 18px; margin-top: 2px; }
.cleaner-availability-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.availability-main { max-width: 860px; padding-block: 42px 86px; }
.availability-main > .back-link { display: inline-block; margin-bottom: 30px; }
.availability-heading { max-width: 680px; margin-bottom: 28px; }
.availability-heading h1 { margin-bottom: 14px; font-size: clamp(2.45rem, 7vw, 4.5rem); }
.availability-heading > p:last-child { color: var(--muted); font-size: 1.04rem; }
.availability-gate, .availability-add-card, .availability-list-section { padding: clamp(22px, 5vw, 34px); border: 1px solid var(--line); border-radius: 22px; background: #fff; box-shadow: 0 14px 42px rgba(15,66,57,.08); }
.availability-gate strong { color: var(--green-dark); font-size: 1.12rem; }
.availability-gate p { margin: 6px 0 16px; color: var(--muted); }
.availability-gate > div { display: flex; flex-wrap: wrap; gap: 10px; }
.availability-gate[data-kind="error"], .availability-feedback[data-kind="error"] { border-color: #dda8a1; background: #fff6f5; }
.availability-gate[data-kind="authentication"] { border-color: #d9c28d; background: #fffaf0; }
.availability-add-card { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(24px, 6vw, 56px); align-items: start; }
.availability-add-card h2, .availability-list-section h2 { margin-bottom: 8px; font-size: clamp(1.7rem, 4vw, 2.35rem); }
.availability-add-card > div > p:last-child { margin: 0; color: var(--muted); }
.availability-add-card form { gap: 14px; }
.availability-add-card .button { width: 100%; }
.availability-feedback { margin: 18px 0; padding: 15px 17px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 12px; color: var(--green-dark); background: var(--mint-pale); font-weight: 750; }
.availability-list-section { margin-top: 22px; }
.availability-list { display: grid; gap: 10px; }
.availability-window { display: flex; justify-content: space-between; gap: 18px; align-items: center; min-height: 72px; padding: 15px 17px; border: 1px solid var(--line); border-radius: 13px; background: #f8fbfa; }
.availability-window strong, .availability-window span { display: block; }
.availability-window strong { color: var(--green-dark); }
.availability-window span { margin-top: 3px; color: var(--muted); font-size: .84rem; }
.availability-remove { flex: 0 0 auto; color: #8a2f28; }
.availability-dialog { width: min(520px, calc(100% - 28px)); padding: 0; border: 0; border-radius: 20px; box-shadow: 0 24px 80px rgba(0,0,0,.24); }
.availability-dialog::backdrop { background: rgba(4,34,30,.68); }
.availability-dialog form { padding: clamp(24px, 5vw, 34px); }
.availability-dialog h2 { margin-bottom: 8px; font-size: 1.9rem; }
.availability-dialog p { margin: 0; color: var(--muted); }
.availability-dialog form > div { display: flex; flex-wrap: wrap; gap: 10px; }
.profile-availability-link { display: flex; justify-content: space-between; gap: 18px; align-items: center; padding: 15px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 13px; background: var(--mint-pale); }
.profile-availability-link strong, .profile-availability-link span { display: block; }
.profile-availability-link span { margin-top: 3px; color: var(--muted); font-size: .82rem; }
.profile-availability-link .button { flex: 0 0 auto; }
.profile-photo-source { padding: 15px; border: 1px solid var(--line); border-radius: 13px; background: #f7faf9; }
.profile-photo-source strong, .profile-photo-source span { display: block; }
.profile-photo-source span { margin-top: 4px; color: var(--muted); font-size: .82rem; }
@media (max-width: 680px) {
  .availability-main { padding-block: 28px 64px; }
  .availability-add-card { grid-template-columns: 1fr; }
  .availability-window { align-items: flex-start; }
  .availability-dialog form > div .button { flex: 1 1 140px; }
  .profile-availability-link { align-items: stretch; flex-direction: column; }
}
.brief-complete-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.brief-complete-shell { max-width: 880px; }
.brief-complete-card { padding: clamp(30px, 7vw, 68px); border: 1px solid var(--line); border-radius: 26px; background: #fff; box-shadow: 0 24px 70px rgba(11,70,63,.11); text-align: center; }
.completion-mark { display: grid; width: 72px; height: 72px; margin: 0 auto 22px; place-items: center; color: #fff; border-radius: 50%; background: var(--green); font-size: 2rem; font-weight: 900; box-shadow: 0 12px 28px rgba(14,102,91,.22); }
.brief-complete-card h1 { max-width: 720px; margin: 8px auto 16px; font-size: clamp(2.3rem, 6vw, 4.4rem); }
.completion-lead { max-width: 650px; margin: 0 auto; color: var(--muted); font-size: 1.08rem; }
.completion-reference { display: inline-grid; gap: 4px; margin: 28px auto; padding: 14px 22px; border-radius: 12px; background: var(--mint-pale); }
.completion-reference span { color: var(--muted); font-size: .76rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.completion-reference strong { color: var(--green-dark); font-size: 1.15rem; }
.completion-next { margin-top: 8px; text-align: left; }
.completion-next h2 { text-align: center; }
.completion-next ol { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin: 20px 0 0; padding: 0; list-style: none; counter-reset: completion-step; }
.completion-next li { padding: 20px; border: 1px solid var(--line); border-radius: 14px; background: #f7faf9; counter-increment: completion-step; }
.completion-next li::before { content: counter(completion-step); display: grid; width: 30px; height: 30px; margin-bottom: 12px; place-items: center; color: #fff; border-radius: 50%; background: var(--green); font-weight: 900; }
.completion-next strong, .completion-next span { display: block; }
.completion-next span { margin-top: 7px; color: var(--muted); font-size: .88rem; }
.completion-actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-top: 30px; }
.landlord-request-complete { margin: 34px auto 70px; }
.landlord-completion-counts { margin: -12px 0 24px; color: var(--muted); font-weight: 800; }
.landlord-completion-warning { margin: 22px auto 0; padding: 14px 18px; border: 1px solid #e4bd78; border-radius: 12px; color: #704100; background: #fff8e8; text-align: left; }

.final-cta { padding: 65px 0; color: #fff; background: var(--green); }
.final-cta .shell { display: flex; justify-content: space-between; gap: 30px; align-items: center; }
.final-cta h2 { margin: 0; max-width: 760px; }

.site-footer { padding: 60px 0 24px; color: #c5d3cf; background: var(--ink); }
.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 50px; }
.footer-brand { color: #fff; }
.footer-grid > div { display: flex; flex-direction: column; align-items: flex-start; gap: 9px; }
.footer-grid p { max-width: 380px; color: #9fb3ad; }
.footer-grid strong { margin-bottom: 7px; color: #fff; }
.footer-grid a:not(.brand) { color: #c5d3cf; text-decoration: none; }
.footer-grid a:hover { color: #fff; }
.footer-bottom { display: flex; justify-content: space-between; gap: 20px; margin-top: 46px; padding-top: 22px; border-top: 1px solid #314a44; font-size: .79rem; }

.legal-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.legal-header { padding: 22px 0; border-bottom: 1px solid var(--line); background: #fff; }
.legal-header .shell { display: flex; justify-content: space-between; align-items: center; }
.back-link { color: var(--green); font-weight: 750; }
.legal-main { max-width: 820px; margin: 0 auto; padding: 72px 20px 100px; }
.legal-main article { padding: clamp(28px, 6vw, 64px); border: 1px solid var(--line); border-radius: 24px; background: #fff; }
.legal-main .notice { margin: 24px 0 34px; padding: 18px; border-left: 4px solid var(--focus); background: #fff6ed; }
.legal-main h2 { margin-top: 42px; font-size: 1.65rem; }
.legal-main li { margin-bottom: 9px; }
.legal-main p, .legal-main li { color: #435a54; }

.admin-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.admin-header { border-bottom: 1px solid var(--line); background: #fff; }
.admin-nav { min-height: 76px; display: flex; justify-content: space-between; align-items: center; }
.admin-nav > div { display: flex; gap: 18px; align-items: center; }
.admin-badge { padding: .35rem .65rem; color: var(--green-dark); border-radius: 999px; background: var(--mint); font-size: .76rem; font-weight: 800; }
.admin-main { padding-block: 58px 90px; }
.admin-auth { max-width: 620px; margin: 40px auto; padding: 36px; border: 1px solid var(--line); border-radius: 22px; background: #fff; box-shadow: var(--shadow); }
.admin-auth > img { margin-bottom: 26px; }
.admin-auth h1 { margin-bottom: 10px; font-size: clamp(2.2rem, 6vw, 3.8rem); }
.admin-auth > div > p:last-child { color: var(--muted); }
.admin-auth form { grid-template-columns: 1fr auto; align-items: end; margin-top: 28px; }
.admin-auth form .button { min-height: 44px; }
.admin-title-row { display: flex; justify-content: space-between; gap: 30px; align-items: end; margin-bottom: 35px; }
.admin-title-row h1 { margin-bottom: 8px; font-size: clamp(2.5rem, 5vw, 4.3rem); }
.admin-title-row p:last-child { margin: 0; color: var(--muted); font-size: 1.05rem; }
.data-integrity { margin-bottom: 24px; padding: 24px 26px; border: 1px solid #c6d8d2; border-left: 6px solid var(--homle-muted, #665f61); border-radius: 18px; background: #fff; box-shadow: 0 12px 36px rgba(15,66,57,.06); }
.data-integrity-heading { display: flex; justify-content: space-between; gap: 24px; align-items: start; }
.data-integrity-heading h2 { margin-bottom: 7px; font-size: 1.65rem; }
.data-integrity-heading p:last-child { max-width: 720px; margin: 0; color: var(--muted); }
.data-integrity-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 9px; align-items: center; }
.data-integrity-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 18px; }
.data-integrity-summary div { padding: 13px 14px; border: 1px solid var(--line); border-radius: 11px; background: #f7faf8; }
.data-integrity-summary strong, .data-integrity-summary span { display: block; }
.data-integrity-summary strong { color: var(--green-dark); font-size: 1.05rem; }
.data-integrity-summary span { margin-top: 3px; color: var(--muted); font-size: .74rem; }
.data-integrity-issues { display: grid; gap: 8px; margin-top: 14px; }
.integrity-result { padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: #f7faf8; }
.integrity-result strong, .integrity-result span { display: block; }
.integrity-result span { margin-top: 3px; color: var(--muted); font-size: .84rem; }
.integrity-result-healthy { border-color: var(--homle-success, #137738); background: #edf9f4; }
.integrity-result-issue { border-color: #e4b0aa; background: #fff5f3; }
.integrity-result-issue strong { color: #7c201a; }
.data-integrity-note { margin: 14px 0 0; padding: 11px 13px; border-radius: 9px; color: #4d5d58; background: #f2f5f3; font-size: .82rem; }
.data-integrity-healthy { border-left-color: var(--homle-success, #137738); }
.data-integrity-healthy #data-integrity-status { color: var(--homle-success, #137738); background: var(--homle-success-wash, #e9f6ee); }
.data-integrity-degraded { border-color: #dfaaa3; border-left-color: #a62c24; background: #fffdfc; }
.data-integrity-degraded #data-integrity-status { color: #7c201a; background: #fbe2df; }
.private-data-storage { margin-bottom: 24px; padding: 22px 26px; border: 1px solid #c6d8d2; border-left: 6px solid var(--homle-muted, #665f61); border-radius: 18px; background: #fff; box-shadow: 0 12px 36px rgba(15,66,57,.06); }
.private-data-storage-heading { display: flex; justify-content: space-between; gap: 24px; align-items: start; }
.private-data-storage-heading h2 { margin: 3px 0 7px; font-size: 1.55rem; }
.private-data-storage-heading p:last-child { max-width: 760px; margin: 0; color: var(--muted); }
.private-data-storage-action { margin-top: 16px; padding: 14px 16px; border: 1px solid #e4b0aa; border-radius: 11px; background: #fff5f3; }
.private-data-storage-action strong, .private-data-storage-action small { display: block; }
.private-data-storage-action strong { color: #7c201a; }
.private-data-storage-action p { margin: 7px 0; }
.private-data-storage-action small, .private-data-storage-note { color: var(--muted); }
.private-data-storage-note { margin: 13px 0 0; font-size: .8rem; }
.private-data-storage-safe { border-left-color: var(--homle-ink-2, #211d1e); }
.private-data-storage-safe #private-data-storage-status { color: var(--homle-ink, #0b090a); background: var(--homle-line-soft, #e8e2e0); }
.private-data-storage-unsafe { border-color: #dfaaa3; border-left-color: #a62c24; background: #fffdfc; }
.private-data-storage-unsafe #private-data-storage-status { color: #7c201a; background: #fbe2df; }
.technical-readiness { margin-bottom: 24px; padding: 26px; border: 1px solid #c6d8d2; border-radius: 20px; background: linear-gradient(145deg, #fff 0%, var(--homle-cream, #f7f4eb) 100%); box-shadow: 0 12px 36px rgba(15,66,57,.06); }
.technical-readiness-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; }
.technical-readiness-heading h2 { margin: 3px 0 8px; font-size: 1.65rem; }
.technical-readiness-heading p:last-child { max-width: 720px; margin: 0; color: var(--muted); }
.technical-readiness-score { min-width: 150px; text-align: right; }
.technical-readiness-score strong, .technical-readiness-score span { display: block; }
.technical-readiness-score strong { color: var(--green-dark); font-size: 2rem; }
.technical-readiness-score span { color: var(--muted); font-size: .76rem; }
.technical-readiness-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 22px 0 0; padding: 0; list-style: none; }
.technical-readiness-list li { display: flex; align-items: flex-start; gap: 9px; min-width: 0; padding: 14px; border: 1px solid #d9e5e1; border-radius: 11px; background: #fff; }
.technical-readiness-list li > span { flex: 0 0 auto; color: #8a5b22; font-weight: 900; }
.technical-readiness-list strong, .technical-readiness-list small { display: block; }
.technical-readiness-list strong { color: var(--ink); font-size: .86rem; }
.technical-readiness-list small { margin-top: 5px; color: var(--muted); line-height: 1.4; }
.technical-readiness-list li.ready { border-color: var(--homle-success, #137738); background: #effaf6; }
.technical-readiness-list li.ready > span, .technical-readiness-list li.ready small { color: var(--homle-success, #137738); }
.technical-readiness-next { margin: 14px 0 0; padding: 12px 14px; border-left: 3px solid #c67820; border-radius: 8px; color: #70400c; background: #fff7ea; }
.technical-readiness-complete { border-left-color: var(--homle-success, #137738); color: var(--homle-success, #137738); background: #eaf8f3; }
.technical-readiness-boundary { display: block; margin-top: 12px; color: var(--muted); }
.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 24px; }
.stat-grid article { padding: 22px; border: 1px solid var(--line); border-radius: 16px; background: #fff; }
.stat-grid span, .stat-grid strong, .stat-grid small { display: block; }
.stat-grid span { color: var(--muted); font-size: .8rem; font-weight: 750; text-transform: uppercase; letter-spacing: .06em; }
.stat-grid strong { margin: 14px 0 5px; color: var(--green-dark); font-size: 2.25rem; line-height: 1; }
.stat-grid small { color: var(--muted); }
.launch-runway { margin-bottom: 24px; padding: 26px; border: 1px solid #c6d8d2; border-radius: 20px; background: linear-gradient(145deg, #fff 0%, #f3faf7 100%); box-shadow: 0 12px 36px rgba(15,66,57,.06); }
.launch-runway-heading { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 18px; }
.launch-runway-heading h2 { margin: 3px 0 7px; font-size: 1.8rem; }
.launch-runway-heading p:last-child { max-width: 720px; margin: 0; color: var(--muted); }
.runway-supply { min-width: 150px; padding: 13px 16px; border: 1px solid #c6d8d2; border-radius: 14px; background: #fff; text-align: right; }
.runway-supply strong, .runway-supply span { display: block; }
.runway-supply strong { color: var(--green-dark); font-size: 1.8rem; }
.runway-supply span { color: var(--muted); font-size: .75rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.launch-funnel-stages { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.funnel-stage { display: grid; grid-template-columns: 28px 1fr auto; gap: 10px; align-items: center; min-height: 78px; padding: 12px; border: 1px solid var(--line); border-radius: 14px; background: rgba(255,255,255,.72); }
.funnel-stage > span { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 50%; background: #e8efec; color: var(--muted); font-size: .78rem; font-weight: 850; }
.funnel-stage strong, .funnel-stage small { display: block; }
.funnel-stage strong { color: var(--ink); font-size: .88rem; }
.funnel-stage small { margin-top: 3px; color: var(--muted); font-size: .72rem; line-height: 1.3; }
.funnel-stage b { color: var(--muted); font-size: 1.35rem; }
.funnel-stage-reached { border-color: var(--homle-line-soft, #e8e2e0); background: #fff; }
.funnel-stage-reached > span { background: var(--green); color: #fff; }
.funnel-stage-reached b { color: var(--green-dark); }
.launch-bottleneck { margin-top: 14px; padding: 16px 18px; border-left: 4px solid #df8b24; border-radius: 10px; background: #fff4df; }
.launch-bottleneck span, .launch-bottleneck strong, .launch-bottleneck p, .launch-bottleneck small { display: block; }
.launch-bottleneck span { color: #8c4a00; font-size: .72rem; font-weight: 850; text-transform: uppercase; letter-spacing: .06em; }
.launch-bottleneck strong { margin: 4px 0; color: #613500; }
.launch-bottleneck p, .launch-bottleneck small { margin: 0; color: #70491e; }
.launch-bottleneck small { margin-top: 7px; font-weight: 750; }
.launch-parallel-action { margin-top: 12px; padding-top: 12px; border-top: 1px solid #e1b979; }
.launch-parallel-action span { color: var(--green-dark); }
.launch-parallel-action strong { color: var(--homle-ink-2, #211d1e); }
.launch-parallel-action p { color: var(--homle-ink-2, #211d1e); }
.launch-bottleneck-complete { border-left-color: var(--green); background: #e8f7f1; }
.launch-bottleneck-complete span, .launch-bottleneck-complete strong { color: var(--green-dark); }
.launch-bottleneck-complete p, .launch-bottleneck-complete small { color: var(--homle-success, #137738); }
.runway-loading { grid-column: 1 / -1; padding: 20px; color: var(--muted); text-align: center; }
.dispatch-queue { margin-bottom: 24px; padding: 26px; border: 1px solid #c6d8d2; border-radius: 20px; background: #fff; box-shadow: 0 12px 36px rgba(15,66,57,.06); }
.dispatch-heading { display: flex; justify-content: space-between; gap: 24px; align-items: start; margin-bottom: 18px; }
.dispatch-heading h2 { margin-bottom: 7px; font-size: 1.65rem; }
.dispatch-heading p:last-child { max-width: 760px; margin: 0; color: var(--muted); }
.dispatch-queue-list { display: grid; gap: 10px; }
.scan-review-workspace { margin-bottom: 24px; padding: 26px; border: 1px solid #9bcdbf; border-radius: 20px; background: linear-gradient(135deg, #f1fbf7, #fff); box-shadow: 0 12px 36px rgba(15,66,57,.06); }
.scan-review-workspace-heading { display: grid; }
.scan-review-workspace-heading h2 { margin-bottom: 4px; }
.scan-review-workspace-heading p:last-child { margin: 0; color: var(--muted); }
.scan-review-score { justify-self: start; }
.scan-review-score strong { color: var(--green-dark); font-size: 1.5rem; }
.scan-review-score span { color: var(--muted); font-size: .72rem; font-weight: 750; }
.scan-review-summary { grid-template-columns: 1fr; }
.scan-review-summary-copy { display: grid; gap: 4px; }
.scan-review-summary-copy > span { color: var(--muted); font-size: .84rem; }
.scan-review-summary-copy > small { color: #74410a; font-weight: 750; }
.scan-review-summary .button { width: 100%; }
.dispatch-item { display: flex; justify-content: space-between; gap: 22px; align-items: center; padding: 16px 18px; border: 1px solid var(--line); border-left: 5px solid var(--homle-line, #dcd4d1); border-radius: 12px; background: #fbfdfc; }
.dispatch-item > div { display: grid; gap: 5px; }
.dispatch-item > div > span:last-child { color: var(--muted); font-size: .88rem; }
.dispatch-urgent { border-left-color: #b43b32; background: #fff8f7; }
.dispatch-high { border-left-color: #d76f2b; }
.dispatch-monitor { border-left-color: var(--homle-line, #dcd4d1); }
.dispatch-meta { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; color: var(--muted); font-size: .75rem; }
.dispatch-severity { padding: 3px 7px; color: var(--green-dark); border-radius: 999px; background: var(--mint); font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.dispatch-severity-urgent { color: #7c201a; background: #fbe2df; }
.dispatch-severity-high { color: #763710; background: #ffeadc; }
.dispatch-empty { display: grid; gap: 4px; min-height: 90px; place-content: center; color: var(--muted); text-align: center; }
.dispatch-empty strong { color: var(--ink); }
.launch-setup { margin-bottom: 24px; padding: 28px; color: #fff; border-radius: 20px; background: var(--green-dark); }
.launch-setup-heading { display: flex; justify-content: space-between; gap: 24px; align-items: center; }
.launch-setup-heading h2 { margin-bottom: 8px; font-size: 1.8rem; }
.launch-setup-heading p:last-child { max-width: 720px; margin: 0; color: #c6dcd6; }
.readiness-score { min-width: 125px; text-align: right; }
.readiness-score strong, .readiness-score span { display: block; }
.readiness-score strong { color: var(--homle-mint, #2ed47a); font-size: 2rem; }
.readiness-score span { color: #c6dcd6; font-size: .76rem; }
.readiness-list { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin: 24px 0 0; padding: 0; list-style: none; }
.readiness-list li { display: flex; align-items: flex-start; gap: 8px; min-width: 0; padding: 12px; border: 1px solid rgba(255,255,255,.15); border-radius: 9px; color: #c6dcd6; font-size: .8rem; }
.readiness-list li > span { flex: 0 0 auto; }
.readiness-list li strong, .readiness-list li small { display: block; }
.readiness-list li strong { color: #fff; }
.readiness-list li small { margin-top: 4px; color: var(--homle-line-soft, #e8e2e0); line-height: 1.35; }
.readiness-list li.ready { color: #fff; border-color: rgba(158,232,212,.6); background: rgba(158,232,212,.1); }
.readiness-list li.ready > span, .readiness-list li.ready small { color: var(--homle-success, #137738); }
.readiness-area-action { margin-top: 9px; padding: .4rem .58rem; color: var(--homle-ink-2, #211d1e); border: 0; border-radius: 7px; background: var(--homle-mint, #2ed47a); font: inherit; font-size: .72rem; font-weight: 850; cursor: pointer; }
.readiness-area-action:hover { background: var(--homle-line-soft, #e8e2e0); }
.readiness-area-action:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
.readiness-next { margin: 12px 0 0; padding: 12px 14px; border-left: 3px solid #f2b05f; border-radius: 8px; color: #fff0d8; background: rgba(255,255,255,.08); font-size: .86rem; }
.readiness-next-complete { border-left-color: var(--homle-success, #137738); color: var(--homle-success, #137738); }
.readiness-continue { margin-top: 10px; background: var(--homle-mint, #2ed47a); color: var(--homle-ink-2, #211d1e); }
.readiness-continue:hover { background: var(--homle-line-soft, #e8e2e0); color: var(--homle-ink-2, #211d1e); }
.setup-details { margin-top: 20px; border-top: 1px solid rgba(255,255,255,.18); }
.setup-details > summary { padding-top: 18px; color: var(--homle-mint, #2ed47a); font-weight: 800; cursor: pointer; }
.setup-details form { margin-top: 18px; padding: 24px; border-radius: 14px; background: #fff; }
.setup-details label { color: var(--ink); }
.setup-details label.readiness-field-focus { padding: 10px; outline: 3px solid #f2b05f; outline-offset: 3px; border-radius: 8px; background: #fff8e8; }
.setup-details .three-fields { grid-template-columns: repeat(3, 1fr); }
.setup-details .four-fields { grid-template-columns: repeat(4, 1fr); }
.evidence-panel { display: grid; gap: 14px; padding: 16px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 12px; background: #f2f8f6; }
.evidence-panel > div:first-child strong, .evidence-panel > div:first-child span { display: block; }
.evidence-panel > div:first-child strong { color: var(--green-dark); }
.evidence-panel > div:first-child span { margin-top: 3px; color: var(--muted); font-size: .8rem; }
.media-retention { margin-bottom: 24px; padding: 28px; border: 1px solid #c6d8d2; border-radius: 20px; background: #fff; box-shadow: 0 12px 36px rgba(15,66,57,.06); }
.media-retention-heading { display: flex; justify-content: space-between; gap: 24px; align-items: start; }
.media-retention-heading h2 { margin-bottom: 7px; font-size: 1.65rem; }
.media-retention-heading p:last-child { margin: 0; color: var(--muted); }
.media-retention-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 20px 0 12px; }
.media-retention-summary div { padding: 14px; border: 1px solid var(--line); border-radius: 11px; background: var(--mint-pale); }
.media-retention-summary strong, .media-retention-summary span { display: block; }
.media-retention-summary strong { color: var(--green-dark); font-size: 1.15rem; }
.media-retention-summary span { margin-top: 3px; color: var(--muted); font-size: .76rem; }
.media-retention-warning { padding: 12px 14px; border-left: 4px solid #d1772f; border-radius: 8px; color: #69401e; background: #fff4e5; font-size: .84rem; }
.media-retention-list { display: grid; gap: 10px; margin-top: 14px; }
.media-retention-item { padding: 15px 17px; border: 1px solid var(--line); border-left: 5px solid var(--homle-line, #dcd4d1); border-radius: 12px; background: #fbfdfc; }
.media-retention-item > div:first-child { display: flex; justify-content: space-between; gap: 16px; align-items: center; }
.media-retention-item > div:first-child > div > strong, .media-retention-item > div:first-child > div > span { display: block; }
.media-retention-item > div:first-child > div > span { margin-top: 3px; color: var(--muted); font-size: .82rem; }
.media-state-eligible { border-left-color: #b43b32; background: #fff9f8; }
.media-state-purged { border-left-color: #777; background: #f5f6f5; }
.media-retention-item details { margin-top: 12px; border-top: 1px solid var(--line); }
.media-retention-item details > summary { padding-top: 12px; color: #8a231d; font-weight: 800; cursor: pointer; }
.media-purge-form { display: grid; gap: 12px; margin-top: 12px; padding: 15px; border: 1px solid #e7cbc8; border-radius: 10px; background: #fff; }
.danger-button { border-color: #9a3029; background: #9a3029; }
.quote-calculator { display: grid; grid-template-columns: .7fr 1.3fr; gap: 25px 40px; margin-bottom: 24px; padding: 28px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 20px; background: var(--mint-pale); }
.quote-calculator h2 { margin-bottom: 8px; font-size: 1.55rem; }
.quote-calculator > div:first-child > p:last-child { margin: 0; color: var(--muted); font-size: .9rem; }
.quote-inputs { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.quote-inputs input { padding-block: .62rem; }
.quote-results { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, 1fr); overflow: hidden; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 12px; background: #fff; }
.quote-results div { padding: 16px 18px; border-right: 1px solid var(--line); }
.quote-results div:last-child { border-right: 0; }
.quote-results span, .quote-results strong { display: block; }
.quote-results span { color: var(--muted); font-size: .74rem; font-weight: 750; text-transform: uppercase; letter-spacing: .05em; }
.quote-results strong { margin-top: 5px; font-size: 1.2rem; }
.quote-target-results { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; overflow: hidden; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 12px; background: var(--homle-line-soft, #e8e2e0); }
.quote-target-results div { padding: 14px 18px; background: #fff; }
.quote-target-results span, .quote-target-results strong { display: block; }
.quote-target-results span { color: var(--muted); font-size: .74rem; font-weight: 750; text-transform: uppercase; letter-spacing: .05em; }
.quote-target-results strong { margin-top: 4px; color: var(--green-dark); }
.quote-guidance { grid-column: 1 / -1; margin: -8px 0 0; color: var(--muted); font-size: .87rem; }
.quote-danger { color: #8a231d; font-weight: 750; }
.quote-positive { color: var(--green-dark); font-weight: 650; }
.lead-panel { overflow: hidden; border: 1px solid var(--line); border-radius: 22px; background: #fff; box-shadow: 0 14px 48px rgba(15,66,57,.07); }
.lead-toolbar { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 18px 20px; border-bottom: 1px solid var(--line); background: #fbfcfb; }
.lead-filters { display: flex; flex-wrap: wrap; gap: 12px; }
.tab-list { display: flex; gap: 6px; }
.tab-list button { padding: .58rem .85rem; color: var(--muted); border: 0; border-radius: 8px; background: transparent; font-weight: 750; cursor: pointer; }
.tab-list button[aria-selected="true"] { color: #fff; background: var(--green); }
.filter-label { grid-template-columns: auto 170px; align-items: center; }
.filter-label select { padding-block: .55rem; }
.lead-list { display: grid; gap: 14px; padding: 20px; }
.loading-state, .empty-state { display: grid; gap: 5px; min-height: 180px; place-content: center; color: var(--muted); text-align: center; }
.empty-state strong { color: var(--ink); font-size: 1.15rem; }
.lead-card { padding: 22px; border: 1px solid var(--line); border-left: 5px solid var(--green); border-radius: 14px; background: #fff; }
.lead-card:focus { outline: 3px solid rgba(28,115,96,.24); outline-offset: 3px; }
.lead-card.lead-urgent { border-left-color: #b43b32; }
.record-actions { display: grid; gap: 8px; margin: 16px 0; }
.record-action { display: grid; gap: 3px; padding: 11px 13px; border-radius: 9px; background: var(--mint-pale); }
.record-action span { color: var(--muted); font-size: .84rem; }
.record-action-urgent { color: #7c201a; background: #fff0ee; }
.record-action-high { background: #fff5ec; }
.lead-cleaner { border-left-color: #d76f2b; }
.lead-card-heading { display: flex; justify-content: space-between; gap: 24px; align-items: start; padding-bottom: 18px; border-bottom: 1px solid var(--line); }
.lead-kind { color: var(--green); font-size: .72rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.lead-cleaner .lead-kind { color: #b45420; }
.lead-card h3 { margin: 5px 0 3px; font-size: 1.35rem; }
.lead-card-heading small { color: var(--muted); }
.card-status { min-width: 150px; }
.card-status select { padding-block: .55rem; }
.lead-details { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px 26px; padding-top: 18px; }
.lead-details div { min-width: 0; }
.lead-details span, .lead-details strong { display: block; }
.lead-details span { margin-bottom: 3px; color: var(--muted); font-size: .72rem; font-weight: 750; text-transform: uppercase; letter-spacing: .05em; }
.lead-details strong { overflow-wrap: anywhere; font-size: .91rem; }
.brief-summary { margin-top: 16px; padding: 15px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 11px; background: var(--mint-pale); }
.brief-summary summary { color: var(--green-dark); font-weight: 850; cursor: pointer; }
.brief-summary > strong { display: block; margin-top: 13px; }
.brief-summary ul { margin: 10px 0 14px; padding-left: 22px; }
.brief-summary li { margin-bottom: 6px; }
.scope-signal-summary { display: block; margin: 12px 0; padding: 12px; border-left: 4px solid #d97706; border-radius: 8px; background: #fff8e8; color: #74410a; }
.scope-signal-summary strong, .scope-signal-summary span { display: block; }
.scope-signal-summary span { margin-top: 4px; font-size: .84rem; }
.scope-signal-summary ul { margin-bottom: 0; }
.brief-review-form { display: grid; grid-template-columns: repeat(3, minmax(150px, 1fr)); gap: 10px; align-items: end; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--homle-line, #dcd4d1); }
.brief-review-form label { font-size: .78rem; }
.brief-review-form select, .brief-review-form textarea { padding-block: .6rem; }
.brief-review-note-field { grid-column: 1 / -1; }
.scope-signal-confirmations { grid-column: 1 / -1; margin: 0; padding: 12px; border: 1px solid #e2b48f; border-radius: 9px; background: #fffaf2; }
.scope-signal-confirmations legend { padding: 0 5px; color: #74410a; font-size: .82rem; font-weight: 850; }
.scope-signal-confirmations .checkbox { margin-top: 8px; }
.scope-time-worksheet { grid-column: 1 / -1; display: grid; gap: 8px; margin: 0; padding: 13px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 10px; background: #f5fbf9; }
.scope-time-worksheet legend { padding: 0 5px; color: var(--green-dark); font-size: .85rem; font-weight: 850; }
.scope-time-worksheet > p { margin: 0 0 4px; color: var(--muted); font-size: .78rem; }
.scope-time-row { display: grid; grid-template-columns: minmax(180px, 1fr) 90px 52px; gap: 8px; align-items: center; }
.scope-time-row input { min-height: 38px; padding: .45rem .55rem; }
.scope-time-row small { color: var(--muted); }
.scope-time-total { margin-top: 4px; padding: 10px 12px; color: #7c3e1a; border-radius: 8px; background: #fff7ed; font-size: .8rem; font-weight: 750; }
.scope-time-total.scope-time-total-ready { color: var(--green-dark); background: var(--mint-pale); }
.scope-time-evidence-list { display: grid; gap: 3px; margin: 6px 0 0; padding-left: 20px; color: var(--green-dark); font-size: .8rem; }
.brief-review-form button { min-height: 42px; }
.brief-review-readiness { grid-column: 1 / -1; display: grid; gap: 9px; padding: 13px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 10px; background: #fff; }
.brief-review-readiness > strong { color: var(--green-dark); }
.brief-review-readiness > span { color: var(--muted); font-size: .8rem; }
.brief-review-readiness ul { display: grid; grid-template-columns: 1fr 1fr; gap: 7px 16px; margin: 0; padding: 0; list-style: none; }
.brief-review-readiness li { display: grid; grid-template-columns: 20px 1fr; gap: 7px; align-items: start; margin: 0; color: #7c3e1a; font-size: .78rem; }
.brief-review-readiness li::before { content: "○"; font-weight: 900; }
.brief-review-readiness li.review-ready { color: var(--green-dark); }
.brief-review-readiness li.review-ready::before { content: "✓"; }
.brief-review-form button:disabled { cursor: not-allowed; opacity: .58; }
.brief-review-note { display: block; margin-top: 12px; color: var(--muted); font-size: .86rem; }
.cleaner-screening { margin-top: 16px; padding: 15px; border: 1px solid #e2b48f; border-radius: 11px; background: #fff7ef; }
.cleaner-screening.screening-complete { border-color: var(--homle-success, #137738); background: var(--mint-pale); }
.cleaner-screening summary { color: #93491e; font-weight: 850; cursor: pointer; }
.cleaner-screening.screening-complete summary { color: var(--green-dark); }
.cleaner-screening > p { margin: 12px 0; color: var(--muted); font-size: .82rem; }
.cleaner-screening > ul { margin: 12px 0 0; padding-left: 22px; }
.cleaner-screening > ul li { margin-bottom: 5px; }
.screening-form { display: grid; gap: 9px; }
.screening-check { grid-template-columns: 20px 1fr; gap: 9px; align-items: start; font-weight: 600; }
.screening-check input { width: 18px; margin-top: 2px; accent-color: var(--green); }
.screening-form textarea { margin-top: 4px; }
.screening-form button { justify-self: start; }
.cleaner-availability { margin-top: 12px; padding: 15px; border: 1px solid #d8c8a4; border-radius: 11px; background: #fffdf5; }
.cleaner-availability.availability-confirmed { border-color: var(--homle-success, #137738); background: var(--mint-pale); }
.cleaner-availability summary { color: var(--green-dark); font-weight: 850; cursor: pointer; }
.cleaner-availability > p { margin: 12px 0; color: var(--muted); font-size: .82rem; }
.availability-list { display: grid; gap: 9px; margin: 10px 0; }
.availability-item { display: grid; gap: 5px; padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: #fff; }
.availability-item > span { color: var(--muted); font-size: .8rem; }
.availability-withdraw-form { display: grid; grid-template-columns: minmax(180px, 1fr) auto; gap: 8px; align-items: end; }
.availability-withdraw-form input { min-height: 40px; }
.availability-request-list { padding: 10px; border: 1px solid #e2b48f; border-radius: 10px; background: #fff7ef; }
.availability-request-item { border-color: #e2b48f; }
.availability-request-form { display: grid; grid-template-columns: minmax(150px, .7fr) minmax(200px, 1.3fr) auto; gap: 8px; align-items: end; }
.availability-request-form select, .availability-request-form input { min-height: 40px; }
.availability-form { display: grid; grid-template-columns: repeat(3, minmax(120px, 1fr)); gap: 9px; padding-top: 12px; border-top: 1px solid var(--homle-line, #dcd4d1); align-items: end; }
.availability-form label:nth-of-type(4) { grid-column: 1 / -1; }
.availability-form button { justify-self: start; }
.screening-note { display: block; margin-top: 10px; color: var(--muted); font-size: .84rem; }
.admin-brief-photos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 12px; }
.admin-brief-photos .visual-review-progress { grid-column: 1 / -1; margin: 0; padding: 10px 12px; color: var(--green-dark); border-radius: 8px; background: #fff; font-size: .82rem; font-weight: 800; }
.admin-brief-photos figure { margin: 0; overflow: hidden; border-radius: 9px; background: #fff; }
.admin-brief-photos img, .admin-brief-photos video { width: 100%; height: 150px; object-fit: cover; background: #e8f1ee; }
.admin-brief-photos figcaption { padding: 8px 10px; font-size: .78rem; font-weight: 750; }
.admin-brief-photos figcaption strong, .admin-brief-photos figcaption span { display: block; }
.admin-brief-photos figcaption span { margin-top: 4px; color: var(--muted); font-weight: 500; }
.admin-brief-photos .visual-review-check { padding: 0 10px 10px; font-size: .75rem; }
.activity-summary { display: flex; flex-wrap: wrap; gap: 8px 18px; margin-top: 18px; padding: 14px 16px; border-radius: 10px; color: var(--muted); background: var(--mint-pale); font-size: .86rem; }
.activity-summary .next-action { color: var(--green-dark); font-weight: 800; }
.lead-followup { margin-top: 16px; border-top: 1px solid var(--line); }
.lead-followup summary { padding-top: 14px; color: var(--green); font-size: .87rem; font-weight: 800; cursor: pointer; }
.lead-followup form { grid-template-columns: minmax(240px, 1fr) 190px auto; align-items: end; margin-top: 14px; }
.lead-followup textarea, .lead-followup input { padding-block: .6rem; }
.lead-followup button { min-height: 42px; }
.lead-matches { margin-top: 14px; border-top: 1px solid var(--line); }
.lead-matches summary { padding: 14px 0; color: var(--green); font-size: .87rem; font-weight: 800; cursor: pointer; }
.lead-matches > button { margin-bottom: 12px; }
.match-results { display: grid; gap: 9px; }
.match-results > strong, .match-results > span { display: block; }
.match-result { display: grid; gap: 5px; padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--mint-pale); }
.match-result > div { display: flex; justify-content: space-between; gap: 12px; }
.match-result span { color: var(--muted); font-size: .82rem; overflow-wrap: anywhere; }
.match-result > button { justify-self: start; margin-top: 5px; }
.proposal-target { margin-top: 5px; }
.proposal-form { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; padding-top: 12px; border-top: 1px solid var(--line); }
.proposal-form label { font-size: .78rem; }
.proposal-form textarea { min-height: 70px; }
.proposal-form label:nth-last-of-type(1) { grid-column: 1 / -1; }
.proposal-form button { justify-self: start; }
.proposal-economics-preview { display: grid; grid-column: 1 / -1; gap: 10px; padding: 14px; border: 1px solid var(--line); border-radius: 11px; background: #fff; }
.proposal-economics-preview > div { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.proposal-economics-preview > div > div { padding: 9px 10px; border-radius: 8px; background: var(--surface); }
.proposal-economics-preview span, .proposal-economics-preview b { display: block; }
.proposal-economics-preview span { color: var(--muted); font-size: .7rem; font-weight: 750; text-transform: uppercase; letter-spacing: .04em; }
.proposal-economics-preview b { margin-top: 3px; font-size: .92rem; }
.proposal-economics-preview p { margin: 0; color: var(--muted); font-size: .8rem; }
.proposal-economics-safe { border-color: var(--homle-line, #dcd4d1); background: var(--mint-pale); }
.proposal-economics-blocked { border-color: #d7a25e; background: #fff8e9; }
.proposal-summary { display: grid; gap: 4px; margin-top: 18px; padding: 15px 16px; color: #fff; border-radius: 11px; background: var(--green); }
.proposal-summary span { color: #d8eee8; font-size: .83rem; }
.proposal-summary label { max-width: 360px; margin-top: 8px; color: #fff; }
.proposal-summary select { padding-block: .55rem; }
.message-drafts { margin-top: 8px; border-top: 1px solid rgba(255,255,255,.22); }
.message-drafts summary { padding: 12px 0; color: #fff; font-size: .86rem; font-weight: 800; cursor: pointer; }
.draft-target { display: grid; gap: 12px; margin-top: 10px; }
.draft-safety { padding: 13px; border-radius: 9px; color: var(--ink); background: #fff; }
.draft-safety strong, .draft-safety span { display: block; color: inherit; }
.draft-safety span { margin-top: 3px; }
.draft-safety ul { margin-bottom: 0; padding-left: 20px; }
.draft-blocked { border-left: 5px solid var(--focus); }
.draft-ready { border-left: 5px solid var(--green); }
.draft-section { display: grid; gap: 8px; padding: 14px; border-radius: 10px; color: var(--ink); background: #fff; }
.draft-section.draft-handoff-ready { border: 2px solid var(--homle-success, #137738); box-shadow: 0 8px 24px rgba(14, 102, 91, .12); }
.draft-section h4 { margin: 0; }
.draft-section .draft-recipient { color: var(--green-dark); font-weight: 850; }
.draft-section .draft-subject { color: var(--muted); font-weight: 700; }
.draft-section .draft-link-state { padding: 9px 11px; border-radius: 8px; color: var(--green-dark); background: var(--mint-pale); font-size: .82rem; font-weight: 750; }
.draft-section textarea { min-height: 260px; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: .8rem; line-height: 1.5; }
.draft-section button { justify-self: start; }
.booking-audit { margin-top: 4px; border-top: 1px solid rgba(255,255,255,.22); }
.booking-audit summary { padding: 12px 0; color: #fff; font-size: .86rem; font-weight: 800; cursor: pointer; }
.payment-evidence-summary { display: grid; gap: 3px; margin: 10px 0; padding: 12px 14px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 9px; background: var(--mint-pale); }
.payment-evidence-summary strong { color: var(--green-dark); }
.payment-evidence-summary span { color: var(--muted); font-size: .8rem; }
.booking-audit-target { display: grid; gap: 12px; margin-top: 10px; color: var(--ink); }
.booking-audit-heading { padding: 13px; border-radius: 9px; background: #fff; }
.booking-audit-heading strong, .booking-audit-heading span { display: block; color: inherit; }
.booking-audit-heading span { margin-top: 3px; }
.audit-pass { border-left: 5px solid var(--green); }
.audit-blocked { border-left: 5px solid var(--focus); }
.booking-checks { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin: 0; padding: 14px; border-radius: 9px; background: #fff; list-style: none; }
.booking-checks li { font-size: .83rem; }
.booking-audit-target .manual-heading { color: #fff; }
.booking-audit-target ol { margin: 0; padding: 14px 14px 14px 34px; border-radius: 9px; background: #fff; }
.booking-audit-target ol li { margin-bottom: 6px; font-size: .83rem; }
.booking-confirmation-form { display: grid; gap: 9px; padding: 14px; color: var(--ink); border-radius: 9px; background: #fff; }
.booking-confirmation-form > span { color: var(--muted); }
.confirmation-check { display: grid; grid-template-columns: auto 1fr; gap: 9px; align-items: start; color: var(--ink) !important; font-size: .83rem; }
.confirmation-check input { width: auto; margin-top: 2px; }
.booking-confirmation-form textarea { min-height: 65px; }
.job-outcome { display: grid; gap: 5px; margin-top: 16px; padding: 16px; border: 1px solid var(--line); border-radius: 11px; background: var(--surface); }
.job-outcome > span { color: var(--muted); font-size: .85rem; }
.job-profitable { border-color: var(--homle-line, #dcd4d1); background: var(--mint); }
.job-below-target { border-color: #d5aa51; background: #fff8e8; }
.job-loss { border-color: #d29a91; background: #fff0ec; }
.job-outcome-form { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 8px; }
.job-outcome-form label { font-size: .78rem; }
.job-outcome-form textarea { grid-column: 1 / -1; min-height: 65px; }
.job-outcome-form button { justify-self: start; }
.settlement-guidance, .settlement-evidence-summary { display: grid; grid-column: 1 / -1; gap: 4px; padding: 12px 14px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 9px; background: var(--mint-pale); }
.settlement-guidance span, .settlement-evidence-summary span { color: var(--muted); font-size: .8rem; }
.job-outcome-form .settlement-note, .job-outcome-form .settlement-confirmation { grid-column: 1 / -1; }
.settlement-evidence-warning { padding: 10px 12px; color: #8a4b00 !important; border-left: 4px solid #d97706; background: #fff7e6; }
.outcome-adjustment-desk { margin-top: 10px; border-top: 1px solid var(--line); }
.outcome-adjustment-desk > summary { padding-top: 12px; color: var(--green-dark); font-weight: 800; cursor: pointer; }
.outcome-adjustment-desk > p { margin: 10px 0; color: var(--muted); font-size: .82rem; }
.outcome-adjustment-history { display: grid; gap: 8px; padding-left: 22px; }
.outcome-adjustment-history li { padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; background: #fff; }
.outcome-adjustment-history strong, .outcome-adjustment-history span { display: block; }
.outcome-adjustment-history span { margin-top: 3px; color: var(--muted); font-size: .78rem; }
.outcome-adjustment-form { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 12px; padding: 15px; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.outcome-adjustment-form label { font-size: .78rem; }
.outcome-adjustment-form .adjustment-note, .outcome-adjustment-form .adjustment-confirmation { grid-column: 1 / -1; }
.outcome-adjustment-form button { grid-column: 1 / -1; justify-self: start; }
.brief-page { background: var(--homle-cream, #f7f4eb); }
.brief-hero { padding: 72px 0 48px; color: var(--homle-ink, #0b090a); background: var(--homle-cream, #f7f4eb); }
.brief-hero-grid { display: grid; grid-template-columns: 1.25fr .75fr; gap: 56px; align-items: center; }
.brief-hero .eyebrow { color: var(--homle-eyebrow, #8a5347); }
.brief-hero h1 { max-width: 760px; margin-bottom: 18px; font-size: clamp(2.6rem, 6vw, 5rem); }
.brief-hero .hero-lead { max-width: 720px; color: var(--homle-muted, #665f61); }
.brief-steps { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.brief-steps li { display: grid; grid-template-columns: 38px 1fr; gap: 12px; align-items: center; padding: 14px; border: 1px solid rgba(255,255,255,.22); border-radius: 12px; background: rgba(255,255,255,.08); }
.brief-steps span { display: grid; width: 34px; height: 34px; place-items: center; color: var(--green-dark); border-radius: 50%; background: var(--homle-mint, #2ed47a); font-weight: 900; }
.brief-workspace { max-width: 1040px; }
.brief-workspace form { display: grid; gap: 20px; }
.brief-panel { padding: 28px; border: 1px solid var(--line); border-radius: 18px; background: #fff; box-shadow: 0 14px 38px rgba(11,70,63,.06); }
.brief-panel-heading { display: flex; justify-content: space-between; gap: 24px; align-items: start; margin-bottom: 20px; }
.brief-panel-heading h2, .compact-heading h2 { margin: 3px 0 7px; }
.brief-panel-heading p:last-child, .compact-heading p:last-child { margin: 0; color: var(--muted); }
.brief-panel-heading > strong { flex: 0 0 auto; color: var(--green-dark); }
.compact-heading { margin-bottom: 20px; }
.brief-handoff-note { margin: -5px 0 18px; padding: 12px 14px; color: var(--green-dark); border: 1px solid var(--homle-line, #dcd4d1); border-radius: 10px; background: var(--mint-pale); }
.brief-handoff-note strong, .brief-handoff-note span { display: block; }
.brief-handoff-note span { margin-top: 3px; font-size: .85rem; }
.capture-room-control { display: grid; grid-template-columns: minmax(240px, 360px) 1fr; gap: 16px; align-items: end; margin-bottom: 14px; padding: 14px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 12px; background: var(--mint-pale); }
.capture-room-control p { margin: 0 0 11px; color: var(--muted); font-size: .86rem; line-height: 1.45; }
.photo-picker-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.capture-limit-note { margin: 10px 0 0; color: var(--muted); font-size: .8rem; }
.capture-voice-action { min-height: 51px; }
.capture-voice-feedback { display: grid; gap: 6px; margin-top: 12px; }
.capture-voice-feedback .voice-status, .capture-voice-feedback .speech-room-context { margin: 0; }
.photo-picker { display: inline-grid; padding: 13px 18px; color: #fff; border: 2px solid var(--green); border-radius: 9px; background: var(--green); font-weight: 800; cursor: pointer; }
.photo-picker-secondary { color: var(--green-dark); background: #fff; }
.photo-picker.is-disabled { opacity: .52; cursor: not-allowed; }
.photo-picker:focus-within { outline: 3px solid var(--focus); outline-offset: 3px; }
.photo-picker input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.photo-preview { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 18px; }
.empty-photo-state { grid-column: 1 / -1; margin: 0; padding: 24px; color: var(--muted); border: 1px dashed var(--homle-line-soft, #e8e2e0); border-radius: 12px; text-align: center; }
.photo-preview-card { overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.photo-preview-card img, .photo-preview-card video { width: 100%; height: 180px; object-fit: cover; background: #e8f1ee; }
.photo-preview-card > div { padding: 12px; }
.photo-preview-card select { padding-block: .55rem; }
.photo-preview-card label + label { margin-top: 10px; }
.photo-preview-card textarea { min-height: 82px; padding-block: .6rem; font-size: .86rem; }
.text-button { margin-top: 8px; padding: 0; color: #8a231d; border: 0; background: transparent; font-weight: 750; cursor: pointer; }
.voice-status { margin: -8px 0 16px; padding: 11px 13px; color: var(--green-dark); border-radius: 9px; background: var(--mint-pale); font-size: .86rem; }
.speech-room-context { margin: -7px 0 16px; color: var(--muted); font-size: .84rem; font-weight: 700; }
.brief-draft-status { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin: 0 0 16px; padding: 11px 13px; color: var(--green-dark); border: 1px solid var(--homle-line, #dcd4d1); border-radius: 9px; background: #f4fbf9; font-size: .84rem; }
.brief-draft-status strong, .brief-draft-status span { display: block; }
.brief-draft-status span { margin-top: 2px; color: var(--muted); }
.brief-draft-status.is-offline { color: #7b4300; border-color: #e6c88a; background: #fff8e8; }
.brief-draft-status .text-button { flex: 0 0 auto; }
.privacy-hint { margin-top: 8px; color: var(--muted); font-size: .82rem; }
.checklist-change-review { display: grid; gap: 10px; margin-top: 16px; padding: 16px; border: 1px solid #d7a25e; border-radius: 13px; background: #fff8e9; }
.checklist-change-review > strong { color: #74410a; }
.checklist-change-review > span, .checklist-change-columns span { color: var(--muted); font-size: .84rem; }
.checklist-change-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.checklist-change-columns > div { padding: 12px; border-radius: 9px; background: #fff; }
.checklist-change-columns section > strong { display: block; color: var(--green-dark); font-size: .86rem; }
.checklist-change-columns ul { margin: 8px 0 0; padding-left: 20px; }
.checklist-change-columns li { margin-bottom: 5px; font-size: .84rem; }
.checklist-change-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.cleaner-handoff-preview { display: grid; gap: 12px; margin: 16px 0 20px; }
.cleaner-handoff-empty { margin: 0; padding: 18px; border-radius: 12px; background: var(--mint-pale); color: var(--muted); }
.cleaner-handoff-room { padding: 16px 18px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 14px; background: var(--mint-pale); }
.cleaner-handoff-room-missing { border-color: #d7a25e; background: #fff8e9; }
.cleaner-handoff-room-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; }
.cleaner-handoff-room-heading h3 { margin: 0; font-size: 1rem; }
.cleaner-handoff-room-heading span { color: var(--muted); font-size: .85rem; font-weight: 750; text-align: right; }
.cleaner-handoff-work, .cleaner-handoff-boundaries ul { margin: 10px 0 0; padding-left: 22px; }
.cleaner-handoff-work li, .cleaner-handoff-boundaries li { margin-bottom: 6px; }
.cleaner-handoff-boundaries { margin-top: 12px; padding: 10px 12px; border-left: 4px solid #d67d22; border-radius: 8px; background: #fff; }
.cleaner-handoff-boundaries strong { color: #874500; }
.scan-readiness { margin: 18px 0; padding: 16px; border: 1px solid #e2b48f; border-radius: 12px; background: #fffaf2; }
.scan-readiness > div strong, .scan-readiness > div span { display: block; }
.scan-readiness > div strong { color: #74410a; }
.scan-readiness > div span { margin-top: 4px; color: var(--muted); font-size: .84rem; }
.scan-readiness ul { grid-template-columns: 1fr; }
.scan-readiness li { display: grid; grid-template-columns: 18px 1fr; gap: 7px; align-items: start; font-size: .84rem; }
.scan-readiness li span { font-weight: 900; }
.scan-readiness li.ready { color: var(--green-dark); }
.scan-readiness li.pending { color: #74410a; }
.scan-readiness.scan-ready { border-color: #76b9a8; background: var(--mint-pale); }
.scan-readiness.scan-ready > div strong { color: var(--green-dark); }
.consent-row { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: start; margin: 18px 0; }
.consent-row input { width: auto; margin-top: 3px; }
.scope-completeness { padding: 14px; border: 1px solid var(--homle-success, #137738); border-radius: 11px; background: var(--mint-pale); font-weight: 750; }
.admin-guidance { margin-top: 28px; padding: 28px; color: #fff; border-radius: 20px; background: var(--green-dark); }
.admin-guidance h2 { font-size: 1.55rem; }
.admin-guidance ol { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; margin: 0; padding-left: 22px; }
.admin-guidance li { color: #d8e9e4; }
.quote-review-link { display: grid; gap: 8px; margin: 14px 0; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--mint-pale); }
.quote-review-link span { color: var(--muted); font-size: .86rem; }
.quote-review-link input { font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: .78rem; }
.quote-review-link .button { justify-self: start; }
.replacement-audit { display: grid; gap: 5px; margin: 12px 0; padding: 12px; color: var(--ink); border-left: 5px solid #d38b3f; border-radius: 9px; background: #fff8e8; }
.replacement-audit span { color: var(--muted); font-size: .84rem; }
.replacement-audit ul { margin: 3px 0 0; padding-left: 20px; }
.quote-page { background: var(--homle-cream, #f7f4eb); }
.quote-shell { max-width: 820px; }
.quote-card { overflow: hidden; border: 1px solid var(--line); border-radius: 24px; background: #fff; box-shadow: 0 20px 60px rgba(16, 36, 33, .09); }
.quote-card > div { padding: clamp(24px, 5vw, 52px); }
.quote-card h1 { max-width: 680px; margin-bottom: 16px; font-size: clamp(2.25rem, 7vw, 4rem); }
.quote-intro { max-width: 650px; color: var(--muted); font-size: 1.08rem; }
.replacement-notice { margin: 26px 0; padding: 22px; border: 2px solid #d38b3f; border-radius: 14px; background: #fff8e8; }
.replacement-notice h2 { margin-bottom: 9px; font-size: 1.35rem; }
.replacement-notice p { margin-bottom: 10px; }
.replacement-notice ul { margin: 0 0 14px; padding-left: 22px; }
.replacement-notice li { margin-bottom: 5px; }
.quote-details { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin: 30px 0; border: 1px solid var(--line); border-radius: 15px; }
.quote-details div { padding: 16px 18px; border-bottom: 1px solid var(--line); }
.quote-details div:nth-child(odd) { border-right: 1px solid var(--line); }
.quote-details div:nth-last-child(-n+2) { border-bottom: 0; }
.quote-details dt { color: var(--muted); font-size: .76rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.quote-details dd { margin: 5px 0 0; font-weight: 750; }
.quote-details .quote-total { grid-column: 1 / -1; border-right: 0; background: var(--mint-pale); }
.quote-details .quote-total dd { color: var(--green-dark); font-size: 1.6rem; }
.quote-scope, .quote-rules { margin: 26px 0; padding: 22px; border-radius: 14px; background: #f7faf9; }
.quote-scope h2, .quote-rules h2, .quote-decision h2 { margin-bottom: 14px; font-size: 1.35rem; }
.quote-scope ul { margin-bottom: 0; padding-left: 22px; }
.quote-rules p:last-child { margin-bottom: 0; }
.booking-room-photos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 18px; }
.booking-room-photos figure { margin: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.booking-room-photos img, .booking-room-photos video { width: 100%; height: 220px; object-fit: cover; background: #e8f1ee; }
.booking-room-photos figcaption { padding: 12px; }
.booking-room-photos figcaption strong, .booking-room-photos figcaption span { display: block; }
.booking-room-photos figcaption span { margin-top: 5px; color: var(--muted); font-size: .86rem; }
.room-photo-unavailable { display: grid; min-height: 140px; place-items: center; padding: 18px; color: var(--muted); text-align: center; }
.request-status-card { min-height: 620px; }
.request-status-details { margin-bottom: 24px; }
.request-timeline { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.request-step { display: grid; grid-template-columns: 38px 1fr; gap: 12px; position: relative; min-height: 70px; padding-bottom: 18px; }
.request-step::after { content: ""; position: absolute; top: 34px; bottom: 0; left: 16px; width: 2px; background: var(--line); }
.request-step:last-child { min-height: auto; padding-bottom: 0; }
.request-step:last-child::after { display: none; }
.request-step > span { display: grid; z-index: 1; width: 34px; height: 34px; place-items: center; border: 2px solid var(--line); border-radius: 50%; background: #fff; color: var(--muted); font-weight: 900; }
.request-step strong, .request-step small { display: block; }
.request-step small { margin-top: 4px; color: var(--muted); }
.request-step-complete > span { color: #fff; border-color: var(--green); background: var(--green); }
.request-step-current > span { color: var(--green-dark); border-color: var(--homle-line, #dcd4d1); background: var(--mint-pale); }
.request-step-action > span { color: #fff; border-color: #b06a16; background: #b06a16; }
.request-status-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 26px 0; }
.request-status-actions p { margin: 0; color: var(--muted); }
.request-timing-note { margin: -2px 0 22px; color: var(--muted); font-size: .84rem; }
.request-withdrawal { margin: 20px 0; padding: 14px 16px; border: 1px solid #e2b48f; border-radius: 10px; background: #fffaf2; }
.request-withdrawal summary { color: #74410a; font-weight: 850; cursor: pointer; }
.request-withdrawal > p { color: var(--muted); font-size: .84rem; }
.request-withdrawal form { gap: 12px; }
.request-withdrawal button { justify-self: start; }
.request-schedule-change { border-color: var(--homle-line, #dcd4d1); background: var(--mint-pale); }
.request-schedule-change summary { color: var(--green-dark); }
.schedule-change-history { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--homle-line, #dcd4d1); }
.schedule-change-history ul { margin: 8px 0 0; padding-left: 20px; }
.schedule-change-history li + li { margin-top: 6px; }
.cleaner-availability-action { padding: 22px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 14px; background: var(--mint-pale); }
.cleaner-availability-action > div > p:last-child { margin-bottom: 0; color: var(--muted); }
.pending-availability { padding: 14px; border-radius: 10px; background: #fff; }
.pending-availability ul { margin: 8px 0 0; padding-left: 22px; }
.cleaner-availability-request-form { display: grid; grid-template-columns: repeat(3, minmax(120px, 1fr)); gap: 12px; align-items: end; }
.cleaner-availability-request-form .availability-request-note { grid-column: 1 / -1; }
.cleaner-availability-request-form button { justify-self: start; }
.cleaner-availability-action .form-message { margin: 0; color: var(--green-dark); font-weight: 750; }
.cleaner-profile-action { padding: 22px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 14px; background: linear-gradient(145deg, #f0faf7 0%, #fff 100%); }
.cleaner-profile-action > div > p:last-child { margin-bottom: 0; color: var(--muted); }
.cleaner-profile-starter-form { display: grid; gap: 13px; }
.cleaner-profile-starter-form label { display: grid; gap: 6px; }
.cleaner-profile-starter-form label > span { color: var(--muted); font-size: .76rem; }
.cleaner-profile-starter-form button { justify-self: start; }
.cleaner-profile-action .form-message { margin: 0; color: var(--green-dark); font-weight: 750; }
.quote-decision { display: grid; gap: 16px; margin-top: 32px; padding-top: 28px; border-top: 1px solid var(--line); }
.quote-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.quote-result { display: grid; gap: 8px; margin-top: 28px; padding: 20px; color: var(--green-dark); border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 14px; background: var(--mint-pale); }
.quote-result strong { font-size: 1.15rem; }
.quote-contact { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; margin-top: 30px; padding-top: 18px; color: var(--muted); border-top: 1px solid var(--line); font-size: .86rem; }

@media (max-width: 980px) {
  .menu-toggle { display: block; }
  .main-nav { display: none; position: absolute; inset: 76px 0 auto; flex-direction: column; align-items: stretch; gap: 0; padding: 12px 20px 22px; border-bottom: 1px solid var(--line); background: #fff; box-shadow: 0 20px 35px rgba(16,36,33,.08); }
  .main-nav.open { display: flex; }
  .main-nav > a { padding: .85rem .4rem; }
  .main-nav .button { margin-top: 8px; }
  .brief-nav { display: flex; position: static; flex-direction: row; align-items: center; gap: 14px; padding: 0; border: 0; background: transparent; box-shadow: none; }
  .brief-nav .button { margin-top: 0; }
  .hero-grid, .cleaner-grid { grid-template-columns: 1fr; }
  .hero-copy { max-width: 760px; }
  .match-card { max-width: 660px; margin-inline: auto; }
  .service-grid { grid-template-columns: 1fr; }
  .service-card { min-height: auto; }
  .service-card.featured { transform: none; }
  .card-number { margin-bottom: 24px; }
  .steps { grid-template-columns: 1fr 1fr; }
  .form-card { grid-template-columns: 1fr; gap: 30px; }
  .account-grid { grid-template-columns: 1fr; }
  .form-intro { position: static; }
  .data-integrity-summary { grid-template-columns: 1fr 1fr; }
  .stat-grid { grid-template-columns: 1fr 1fr; }
  .launch-funnel-stages { grid-template-columns: 1fr 1fr; }
  .quote-calculator { grid-template-columns: 1fr; }
  .readiness-list { grid-template-columns: repeat(2, 1fr); }
  .technical-readiness-list { grid-template-columns: repeat(2, 1fr); }
  .quote-results { grid-template-columns: 1fr 1fr; }
  .quote-results div:nth-child(2) { border-right: 0; }
  .quote-results div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .lead-details { grid-template-columns: 1fr 1fr; }
  .admin-brief-photos { grid-template-columns: 1fr 1fr; }
  .brief-review-form { grid-template-columns: 1fr 1fr; }
  .brief-review-form button { grid-column: 1 / -1; justify-self: start; }
  .lead-followup form { grid-template-columns: 1fr 1fr; }
  .proposal-form { grid-template-columns: 1fr 1fr; }
  .proposal-economics-preview > div { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .availability-form { grid-template-columns: 1fr 1fr; }
  .job-outcome-form { grid-template-columns: 1fr 1fr; }
  .outcome-adjustment-form { grid-template-columns: 1fr 1fr; }
  .brief-hero-grid { grid-template-columns: 1fr; }
  .photo-preview { grid-template-columns: 1fr 1fr; }
  .lead-followup button { grid-column: 1 / -1; justify-self: start; }
  .admin-guidance ol { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 680px) {
  .completion-next ol { grid-template-columns: 1fr; }
  .shell { width: min(calc(100% - 28px), var(--shell)); }
  .hero { padding: 58px 0 56px; }
  h1 { font-size: clamp(2.65rem, 15vw, 4rem); }
  .hero-actions .button { width: 100%; }
  .match-card { padding: 20px; transform: none; }
  .match-card::before { display: none; }
  .match-footer { grid-template-columns: 1fr; text-align: left; }
  .trust-grid { grid-template-columns: 1fr; }
  .trust-grid div, .trust-grid div:first-child { padding: 18px 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .trust-grid div:last-child { border-bottom: 0; }
  .section { padding-block: 72px; }
  .steps { grid-template-columns: 1fr; }
  .cleaner-grid { gap: 45px; }
  .form-card { padding: 25px 18px; border-radius: 18px; }
  .account-main { align-items: start; padding: 28px 0 48px; }
  .account-card, .account-side { padding: 26px 20px; border-radius: 19px; }
  .settings-shell { width: min(100% - 20px, 820px); padding: 26px 20px; border-radius: 19px; }
  .settings-provider-actions .button, .settings-dialog-actions .button { width: 100%; }
  .settings-privacy-actions, .settings-privacy-list li { display: grid; }
  .settings-privacy-actions .button { width: 100%; }
  .settings-privacy-status { justify-self: start; }
  .account-card h1 { font-size: clamp(2.15rem, 12vw, 3.25rem); }
  .account-actions .button { width: 100%; }
  .account-form .button { width: 100%; }
  .guided-progress li { grid-template-columns: 30px 1fr; gap: 6px; font-size: .75rem; }
  .guided-progress li span { width: 30px; height: 30px; }
  .guided-progress li::after { top: 14px; right: calc(100% - 2px); width: calc(100% - 32px); }
  .application-draft-status { align-items: start; flex-direction: column; }
  .guided-form-actions { display: grid; grid-template-columns: 1fr; }
  .guided-form-actions .button { width: 100%; }
  .field-row { grid-template-columns: 1fr; }
  .service-options { grid-template-columns: 1fr; }
  .submit-button { width: 100%; }
  .final-cta .shell { flex-direction: column; align-items: flex-start; }
  .footer-grid { grid-template-columns: 1fr; gap: 30px; }
  .footer-bottom { flex-direction: column; }
  .booking-room-photos { grid-template-columns: 1fr; }
  .admin-nav > div { gap: 10px; }
  .admin-badge { display: none; }
  .admin-main { padding-top: 38px; }
  .admin-auth { padding: 25px 20px; }
  .admin-auth form { grid-template-columns: 1fr; }
  .admin-title-row { align-items: stretch; flex-direction: column; }
  .admin-title-row .button { width: 100%; }
  .data-integrity { padding: 20px 16px; }
  .data-integrity-heading { align-items: stretch; flex-direction: column; }
  .data-integrity-actions { justify-content: flex-start; }
  .data-integrity-actions .button { width: 100%; }
  .data-integrity-summary { grid-template-columns: 1fr 1fr; }
  .stat-grid { grid-template-columns: 1fr 1fr; }
  .stat-grid article { padding: 17px; }
  .launch-runway { padding: 20px 16px; }
  .launch-runway-heading { align-items: stretch; flex-direction: column; }
  .runway-supply { text-align: left; }
  .launch-funnel-stages { grid-template-columns: 1fr; }
  .quote-calculator { padding: 20px; }
  .launch-setup { padding: 22px 18px; }
  .launch-setup-heading { align-items: flex-start; flex-direction: column; }
  .technical-readiness { padding: 22px 18px; }
  .technical-readiness-heading { flex-direction: column; }
  .technical-readiness-score { text-align: left; }
  .technical-readiness-list { grid-template-columns: 1fr; }
  .readiness-score { text-align: left; }
  .readiness-list { grid-template-columns: 1fr; }
  .setup-details form { padding: 18px 14px; }
  .setup-details .three-fields, .setup-details .four-fields { grid-template-columns: 1fr; }
  .quote-inputs { grid-template-columns: 1fr; }
  .quote-target-results { grid-template-columns: 1fr; }
  .lead-toolbar { align-items: stretch; flex-direction: column; }
  .lead-filters { display: grid; grid-template-columns: 1fr; }
  .dispatch-queue, .scan-review-workspace { padding: 20px 16px; }
  .scan-review-workspace-heading { display: grid; }
  .scan-review-score { justify-self: start; }
  .scan-review-summary { grid-template-columns: 1fr; }
  .scan-review-summary .button { width: 100%; }
  .dispatch-heading, .dispatch-item { align-items: stretch; flex-direction: column; }
  .media-retention { padding: 20px 16px; }
  .media-retention-heading, .media-retention-item > div:first-child { align-items: stretch; flex-direction: column; }
  .media-retention-summary { grid-template-columns: 1fr 1fr; }
  .dispatch-item .button { width: 100%; }
  .tab-list { display: grid; grid-template-columns: repeat(3, 1fr); }
  .filter-label { grid-template-columns: 1fr; }
  .lead-card-heading { flex-direction: column; }
  .card-status { width: 100%; }
  .lead-details { grid-template-columns: 1fr; }
  .admin-brief-photos { grid-template-columns: 1fr; }
  .brief-review-form { grid-template-columns: 1fr; }
  .brief-review-readiness ul { grid-template-columns: 1fr; }
  .scope-time-row { grid-template-columns: 1fr 86px 48px; }
  .brief-review-form button { grid-column: auto; width: 100%; }
  .lead-followup form { grid-template-columns: 1fr; }
  .proposal-form { grid-template-columns: 1fr; }
  .proposal-economics-preview > div { grid-template-columns: 1fr 1fr; }
  .availability-form, .availability-withdraw-form, .availability-request-form, .cleaner-availability-request-form { grid-template-columns: 1fr; }
  .availability-form label:nth-of-type(4) { grid-column: auto; }
  .cleaner-availability-request-form .availability-request-note { grid-column: auto; }
  .availability-form button, .availability-withdraw-form button, .availability-request-form button, .cleaner-availability-request-form button, .cleaner-profile-starter-form button { width: 100%; }
  .job-outcome-form { grid-template-columns: 1fr; }
  .outcome-adjustment-form { grid-template-columns: 1fr; }
  .outcome-adjustment-form .adjustment-note, .outcome-adjustment-form .adjustment-confirmation, .outcome-adjustment-form button { grid-column: auto; }
  .brief-hero { padding-top: 44px; }
  .brief-panel { padding: 20px; }
  .brief-panel-heading { display: grid; }
  .capture-room-control { grid-template-columns: 1fr; align-items: stretch; }
  .capture-room-control p { margin-bottom: 0; }
  .brief-draft-status { align-items: start; flex-direction: column; }
  .cleaner-handoff-room-heading { align-items: start; }
  .checklist-change-columns { grid-template-columns: 1fr; }
  .checklist-change-actions .button { width: 100%; }
  .photo-picker-actions { display: grid; grid-template-columns: 1fr; }
  .photo-picker { width: 100%; place-items: center; text-align: center; }
  .capture-voice-action { width: 100%; }
  .scan-readiness ul { grid-template-columns: 1fr; }
  .photo-preview { grid-template-columns: 1fr; }
  .brief-nav .button { display: none; }
  .brief-nav .status-refresh { display: inline-flex; }
  .booking-checks { grid-template-columns: 1fr; }
  .proposal-form label:nth-last-of-type(1) { grid-column: auto; }
  .lead-followup button { grid-column: auto; width: 100%; }
  .admin-guidance ol { grid-template-columns: 1fr; }
  .quote-details { grid-template-columns: 1fr; }
  .quote-details div, .quote-details div:nth-child(odd), .quote-details div:nth-last-child(-n+2) { border-right: 0; border-bottom: 1px solid var(--line); }
  .quote-details .quote-total { border-bottom: 0; }
  .quote-actions .button { width: 100%; }
}

/* Private functional real-location test. No external map or persistent location storage. */
.tracking-test-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.tracking-test-main { padding-block: 34px 90px; }
.tracking-test-disclosure { max-width: 860px; margin: 0 auto 22px; padding: clamp(24px, 4vw, 38px); color: #fff; border-radius: 24px; background: var(--green-dark); box-shadow: 0 18px 50px rgba(16,36,33,.13); }
.tracking-test-disclosure h1 { margin-bottom: 14px; font-size: clamp(2.5rem, 6vw, 4.8rem); }
.tracking-test-disclosure > p:not(.eyebrow) { max-width: 740px; color: #dcebe7; }
.tracking-test-disclosure ul { display: grid; gap: 8px; margin: 22px 0 0; padding-left: 22px; color: #e9f4f1; }
.tracking-test-setup { display: grid; grid-template-columns: 1fr auto; gap: 20px; align-items: center; max-width: 860px; margin: 0 auto; padding: 24px; border: 1px solid var(--line); border-radius: 18px; background: #fff; }
.tracking-test-setup h2 { margin-bottom: 6px; }
.tracking-test-setup p { margin: 0; color: var(--muted); }
.tracking-test-setup .form-message { grid-column: 1 / -1; color: var(--green-dark); }
.tracking-test-session { max-width: 1100px; margin: 28px auto 0; }
.tracking-test-session-heading { display: flex; justify-content: space-between; gap: 20px; align-items: center; margin-bottom: 18px; }
.tracking-test-session-heading h2 { margin: 2px 0 4px; }
.tracking-test-session-heading > div > span { color: var(--muted); font-size: .78rem; }
.tracking-test-state { padding: .45rem .7rem; color: var(--green-dark); border-radius: 999px; background: var(--mint); font-size: .75rem; font-weight: 850; text-transform: capitalize; }
.tracking-test-state[data-state="stale"], .tracking-test-state[data-state="stopped"] { color: #74410a; background: #fff0cf; }
.tracking-test-state[data-state="arrived"], .tracking-test-state[data-state="finished"] { color: #fff; background: var(--green); }
.tracking-test-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(310px, .75fr); gap: 20px; align-items: start; }
.tracking-test-map-card, .tracking-test-control-card { overflow: hidden; border: 1px solid var(--line); border-radius: 22px; background: #fff; box-shadow: 0 15px 44px rgba(16,36,33,.07); }
.tracking-test-map { overflow: hidden; position: relative; min-height: 420px; background-color: #e6efeb; background-image: linear-gradient(rgba(255,255,255,.7) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.7) 1px, transparent 1px); background-size: 32px 32px; }
.tracking-test-map::before, .tracking-test-map::after { content: ""; position: absolute; background: rgba(255,255,255,.75); }
.tracking-test-map::before { width: 140%; height: 32px; top: 46%; left: -20%; transform: rotate(-7deg); }
.tracking-test-map::after { width: 32px; height: 140%; top: -20%; left: 32%; transform: rotate(11deg); }
.tracking-test-map-label { position: absolute; z-index: 3; top: 14px; left: 14px; padding: .35rem .55rem; color: var(--green-dark); border-radius: 8px; background: rgba(255,255,255,.9); font-size: .68rem; font-weight: 820; }
.tracking-test-origin { position: absolute; z-index: 2; top: 50%; left: 50%; width: 10px; height: 10px; border: 2px solid var(--green); border-radius: 50%; background: #fff; transform: translate(-50%,-50%); }
.tracking-test-marker { display: grid; z-index: 4; position: absolute; top: 50%; left: 50%; width: 50px; height: 50px; place-items: center; color: #fff; border: 4px solid #fff; border-radius: 50% 50% 50% 8px; background: var(--green); box-shadow: 0 8px 20px rgba(16,36,33,.25); transform: translate(calc(-50% + var(--tracking-x, 0px)), calc(-50% + var(--tracking-y, 0px))) rotate(-45deg); transition: transform .35s ease; }
.tracking-test-marker[hidden] { display: none; }
.tracking-test-marker span { transform: rotate(45deg); font-weight: 900; }
.tracking-test-location-details { display: grid; grid-template-columns: repeat(4, 1fr); margin: 0; border-top: 1px solid var(--line); }
.tracking-test-location-details div { padding: 16px; border-right: 1px solid var(--line); }
.tracking-test-location-details div:last-child { border-right: 0; }
.tracking-test-location-details dt { color: var(--muted); font-size: .68rem; font-weight: 820; text-transform: uppercase; }
.tracking-test-location-details dd { margin: 4px 0 0; font-size: .82rem; font-weight: 760; }
.tracking-test-map-note { margin: 0; padding: 13px 18px; color: var(--muted); border-top: 1px solid var(--line); font-size: .72rem; }
.tracking-test-control-card { padding: 24px; }
.tracking-test-control-card h2 { margin-bottom: 8px; font-size: 1.55rem; }
.tracking-test-control-card p { color: var(--muted); }
.tracking-test-consent { margin: 20px 0; padding: 14px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 12px; background: var(--mint-pale); }
.tracking-test-actions { display: flex; flex-wrap: wrap; gap: 9px; }
.tracking-test-control-card .form-message { min-height: 20px; margin: 12px 0 0; color: var(--green-dark); font-size: .8rem; font-weight: 720; }
.tracking-test-viewer-link { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--line); }
.tracking-test-viewer-link h3 { margin-bottom: 5px; }
.tracking-test-viewer-link > p:not(.eyebrow) { font-size: .78rem; }
.tracking-test-viewer-link input { font-size: .72rem; }
.tracking-test-phone-viewer { display: grid; gap: 9px; margin-top: 16px; padding-top: 15px; border-top: 1px solid var(--line); }
.tracking-test-phone-viewer[hidden] { display: none; }
.tracking-test-phone-viewer .button { justify-self: start; }
.tracking-test-phone-viewer small { color: var(--muted); }
.tracking-test-connection { display: grid; grid-template-columns: 10px 1fr; gap: 10px; align-items: center; margin-top: 24px; padding: 13px; border-radius: 11px; background: #f5f8f7; }
.tracking-test-connection > span { width: 9px; height: 9px; border-radius: 50%; background: #9ca9a5; box-shadow: 0 0 0 4px #e8eeec; }
.tracking-test-connection > span[data-state="live"] { background: var(--homle-muted, #665f61); box-shadow: 0 0 0 4px var(--homle-line-soft, #e8e2e0); }
.tracking-test-connection > span[data-state="stale"], .tracking-test-connection > span[data-state="stopped"] { background: #d17b2c; box-shadow: 0 0 0 4px #fff0dc; }
.tracking-test-connection strong, .tracking-test-connection small { display: block; }
.tracking-test-connection strong { font-size: .78rem; }
.tracking-test-connection small { margin-top: 2px; color: var(--muted); font-size: .69rem; }
.tracking-test-delete { width: 100%; margin-top: 16px; padding: .65rem; color: #8a2f28; border: 1px solid #e0aaa5; border-radius: 10px; background: #fff2f0; font-weight: 800; cursor: pointer; }
.tracking-test-progress-card { margin-top: 20px; padding: clamp(20px, 4vw, 30px); border: 1px solid var(--line); border-radius: 22px; background: #fff; box-shadow: 0 15px 44px rgba(16,36,33,.07); }
.tracking-test-progress-heading { display: flex; justify-content: space-between; gap: 20px; align-items: center; }
.tracking-test-progress-heading h2 { margin: 3px 0 6px; }
.tracking-test-progress-heading p:not(.eyebrow) { margin: 0; color: var(--muted); }
.tracking-test-progress-heading > strong { flex: 0 0 auto; color: var(--green-dark); font-family: var(--display); font-size: clamp(2.4rem, 7vw, 4.5rem); line-height: 1; }
.tracking-test-progress-bar { overflow: hidden; height: 12px; margin: 22px 0; border-radius: 999px; background: #e8efed; }
.tracking-test-progress-bar span { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--green); transition: width .25s ease; }
.tracking-test-job-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 18px; padding: 16px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 14px; background: var(--mint-pale); }
.tracking-test-job-actions[hidden] { display: none; }
.tracking-test-job-actions .form-message { flex-basis: 100%; margin: 0; color: var(--green-dark); font-size: .8rem; font-weight: 720; }
.tracking-test-task-list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.tracking-test-task-list > li { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 15px; border: 1px solid var(--line); border-radius: 14px; }
.tracking-test-task-list > li[data-status="completed"] { border-color: var(--homle-success, #137738); background: #f1faf7; }
.tracking-test-task-list > li[data-status="issue"] { border-color: #e2b184; background: #fff8ed; }
.tracking-test-task-list p { margin: 3px 0; color: var(--muted); font-size: .82rem; }
.tracking-test-task-list small { color: var(--muted); font-size: .68rem; }
.tracking-test-task-status { min-width: 68px; padding: .35rem .5rem; text-align: center; color: var(--muted); border-radius: 999px; background: #edf2f0; font-size: .66rem; font-weight: 850; text-transform: uppercase; }
[data-status="completed"] .tracking-test-task-status { color: #fff; background: var(--green); }
[data-status="issue"] .tracking-test-task-status { color: #7a3d05; background: #ffd9ad; }
.tracking-test-task-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
.tracking-test-task-actions[hidden] { display: none; }
.tracking-test-task-actions button { padding: .45rem .58rem; color: var(--green-dark); border: 1px solid var(--homle-line, #dcd4d1); border-radius: 8px; background: #fff; font-size: .68rem; font-weight: 800; cursor: pointer; }
.tracking-test-task-actions button:disabled { cursor: not-allowed; opacity: .45; }
.tracking-test-progress-note { margin: 17px 0 0; color: var(--muted); font-size: .72rem; }

@media (max-width: 900px) {
  .tracking-test-grid { grid-template-columns: 1fr; }
}

@media (max-width: 680px) {
  .tracking-test-main { padding-top: 18px; }
  .tracking-test-disclosure { padding: 24px 18px; border-radius: 18px; }
  .tracking-test-setup { grid-template-columns: 1fr; padding: 20px 16px; }
  .tracking-test-setup .button { width: 100%; }
  .tracking-test-session-heading { display: grid; }
  .tracking-test-state { justify-self: start; }
  .tracking-test-map-card, .tracking-test-control-card { border-radius: 18px; }
  .tracking-test-map { min-height: 320px; }
  .tracking-test-location-details { grid-template-columns: 1fr 1fr; }
  .tracking-test-location-details div:nth-child(2) { border-right: 0; }
  .tracking-test-location-details div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .tracking-test-control-card { padding: 20px 16px; }
  .tracking-test-actions { display: grid; }
  .tracking-test-actions .button { width: 100%; }
  .tracking-test-progress-heading { align-items: start; }
  .tracking-test-progress-heading > strong { font-size: 2.6rem; }
  .tracking-test-job-actions { display: grid; }
  .tracking-test-job-actions .button { width: 100%; }
  .tracking-test-task-list > li { grid-template-columns: auto minmax(0, 1fr); }
  .tracking-test-task-actions { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}

/* Truthful entry point for the sample marketplace screens. */
.marketplace-demo-section { padding-block: 58px; background: #eaf4f1; }
.marketplace-demo-layout { display: grid; grid-template-columns: minmax(250px, .82fr) minmax(420px, 1.18fr); gap: clamp(30px, 6vw, 76px); align-items: center; }
.marketplace-demo-copy h2 { max-width: 620px; margin-bottom: 14px; }
.marketplace-demo-copy > p:not(.eyebrow) { max-width: 590px; }
.marketplace-demo-note { margin-top: 22px; padding-left: 14px; color: var(--muted); border-left: 3px solid var(--orange); font-size: .86rem; }
.marketplace-demo-note strong { color: var(--ink); }
.marketplace-demo-actions { display: grid; gap: 13px; }
.marketplace-demo-card { display: grid; grid-template-columns: 46px 1fr 28px; gap: 14px; align-items: center; min-height: 112px; padding: 18px 20px; color: var(--ink); border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 18px; background: #fff; box-shadow: 0 12px 35px rgba(16,36,33,.06); text-decoration: none; transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease; }
.marketplace-demo-card:hover { transform: translateY(-2px); border-color: var(--homle-muted, #665f61); box-shadow: 0 16px 40px rgba(16,36,33,.1); }
.marketplace-demo-card:focus-visible { outline: 3px solid #f4a340; outline-offset: 3px; }
.marketplace-demo-card > span { display: grid; width: 42px; height: 42px; place-items: center; color: var(--green-dark); border-radius: 12px; background: var(--mint-pale); font-size: .78rem; font-weight: 900; }
.marketplace-demo-card strong, .marketplace-demo-card small { display: block; }
.marketplace-demo-card strong { margin-bottom: 5px; font-size: 1.03rem; }
.marketplace-demo-card small { color: var(--muted); line-height: 1.45; }
.marketplace-demo-card > i { color: var(--green); font-size: 1.35rem; font-style: normal; font-weight: 900; }

@media (max-width: 900px) {
  .marketplace-demo-layout { grid-template-columns: 1fr; }
}

@media (max-width: 680px) {
  .marketplace-demo-section { padding-block: 42px; }
  .marketplace-demo-card { grid-template-columns: 40px 1fr 20px; gap: 11px; min-height: 104px; padding: 16px 14px; }
  .marketplace-demo-card > span { width: 38px; height: 38px; }
}

/* Authenticated marketplace product preview. All content is explicitly non-live sample UI. */
.marketplace-preview-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.preview-header .nav-wrap { min-height: 68px; }
.preview-header-label { padding: .34rem .65rem; color: var(--green-dark); border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 999px; background: var(--mint-pale); font-size: .78rem; font-weight: 800; }
.preview-back { margin-left: auto; color: var(--green-dark); font-size: .9rem; font-weight: 780; text-decoration: none; }
.preview-main { padding-block: 28px 110px; }
.preview-disclosure { display: grid; grid-template-columns: 38px 1fr; gap: 13px; align-items: start; max-width: 920px; margin: 0 auto 22px; padding: 14px 17px; border: 1px solid #e6bf80; border-radius: 14px; background: #fff9ea; }
.preview-disclosure > span { display: grid; width: 32px; height: 32px; place-items: center; color: #fff; border-radius: 50%; background: #9b5a0e; font-family: Georgia, serif; font-weight: 900; }
.preview-disclosure strong { display: block; color: #74410a; }
.preview-disclosure p { margin: 3px 0 0; color: #6b5a46; font-size: .86rem; }
.preview-tabs { display: grid; grid-template-columns: 1fr 1fr; max-width: 520px; margin: 0 auto 30px; padding: 5px; border: 1px solid var(--line); border-radius: 14px; background: #e8efec; }
.preview-tabs button, .role-switch button, .preview-state-buttons button { min-height: 44px; padding: .62rem .9rem; color: var(--muted); border: 0; border-radius: 10px; background: transparent; font-weight: 800; cursor: pointer; }
.preview-tabs button.current, .role-switch button.current { color: var(--green-dark); background: #fff; box-shadow: 0 4px 16px rgba(16,36,33,.09); }
.preview-screen { max-width: 1100px; margin-inline: auto; }
.preview-screen-heading, .tracking-preview-toolbar { display: flex; justify-content: space-between; gap: 30px; align-items: end; margin-bottom: 28px; }
.preview-screen-heading > div, .tracking-preview-toolbar > div:first-child { max-width: 720px; }
.preview-screen-heading h1, .tracking-preview-toolbar h1 { margin: 0 0 10px; font-size: clamp(2.45rem, 6vw, 4.7rem); }
.preview-screen-heading > div > p:last-child { margin: 0; color: var(--muted); font-size: 1.03rem; }
.preview-mode-pill, .live-secure-pill { flex: 0 0 auto; padding: .45rem .72rem; color: var(--green-dark); border-radius: 999px; background: var(--mint); font-size: .78rem; font-weight: 850; }
.profile-preview-layout { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 20px; align-items: start; }
.cleaner-profile-card, .profile-booking-card, .live-map-card, .live-job-panel, .preview-controls { border: 1px solid var(--line); border-radius: 24px; background: #fff; box-shadow: 0 16px 48px rgba(16,36,33,.07); }
.cleaner-profile-card { overflow: hidden; padding: clamp(22px, 4vw, 38px); }
.cleaner-profile-identity { display: flex; gap: 18px; align-items: center; }
.profile-avatar { display: grid; width: 88px; height: 88px; flex: 0 0 88px; place-items: center; color: #fff; border: 5px solid #e4f3ed; border-radius: 28px; background: linear-gradient(145deg, var(--green), var(--homle-muted, #665f61)); box-shadow: 0 10px 25px rgba(14,102,91,.2); font-size: 1.32rem; font-weight: 900; }
.cleaner-profile-identity h2 { margin: 5px 0 3px; font-size: clamp(1.8rem, 4vw, 2.45rem); }
.cleaner-profile-identity p { margin: 0; color: var(--muted); }
.availability-dot { display: inline-flex; gap: 7px; align-items: center; color: var(--green); font-size: .76rem; font-weight: 820; }
.availability-dot i { width: 8px; height: 8px; border-radius: 50%; background: var(--homle-muted, #665f61); box-shadow: 0 0 0 4px var(--homle-line-soft, #e8e2e0); }
.profile-trust-row { display: grid; grid-template-columns: repeat(3, 1fr); margin: 30px 0 8px; border-block: 1px solid var(--line); }
.profile-trust-row div { min-height: 94px; padding: 18px 15px; border-right: 1px solid var(--line); }
.profile-trust-row div:first-child { padding-left: 0; }
.profile-trust-row div:last-child { border-right: 0; }
.profile-trust-row strong, .profile-trust-row span { display: block; }
.profile-trust-row strong { color: var(--green-dark); font-size: 1.25rem; }
.profile-trust-row span { margin-top: 4px; color: var(--muted); font-size: .76rem; line-height: 1.35; }
.profile-section { padding: 24px 0; border-bottom: 1px solid var(--line); }
.profile-section:last-child { padding-bottom: 0; border-bottom: 0; }
.profile-section > p { margin: 0; color: var(--muted); }
.profile-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.profile-chips span { padding: .46rem .68rem; color: var(--green-dark); border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 999px; background: var(--mint-pale); font-size: .8rem; font-weight: 760; }
.profile-details-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 28px; }
.profile-details-grid span, .profile-details-grid strong { display: block; }
.profile-details-grid span { color: var(--muted); font-size: .75rem; }
.profile-details-grid strong { margin-top: 2px; font-size: .91rem; }
.profile-section-title { display: flex; justify-content: space-between; gap: 15px; align-items: baseline; }
.profile-section-title > span { color: var(--muted); font-size: .75rem; font-weight: 760; }
.profile-verification-list { display: grid; gap: 13px; margin: 8px 0 0; padding: 0; list-style: none; }
.profile-verification-list li { display: grid; grid-template-columns: 31px 1fr; gap: 10px; align-items: start; }
.profile-verification-list li > span { display: grid; width: 27px; height: 27px; place-items: center; color: var(--green); border: 1px solid var(--homle-line, #dcd4d1); border-radius: 50%; background: var(--mint-pale); font-weight: 900; }
.profile-verification-list strong, .profile-verification-list small { display: block; }
.profile-verification-list small { margin-top: 2px; color: var(--muted); }
.profile-booking-card { position: sticky; top: 96px; padding: 28px; }
.profile-booking-card h2 { font-size: 1.8rem; }
.profile-booking-card > p:not(.eyebrow) { color: var(--muted); }
.profile-booking-card dl { margin: 24px 0; }
.profile-booking-card dl div { padding: 13px 0; border-top: 1px solid var(--line); }
.profile-booking-card dt { color: var(--muted); font-size: .74rem; font-weight: 800; text-transform: uppercase; }
.profile-booking-card dd { margin: 4px 0 0; font-size: .88rem; font-weight: 700; }
.profile-booking-card .button { width: 100%; }
.profile-booking-card > small { display: block; margin-top: 10px; color: var(--muted); text-align: center; }
.tracking-preview-toolbar { align-items: center; }
.role-switch { display: grid; grid-template-columns: 1fr 1fr; min-width: 230px; padding: 4px; border: 1px solid var(--line); border-radius: 12px; background: #e8efec; }
.tracking-preview-layout { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(310px, .75fr); gap: 20px; align-items: stretch; }
.live-map-card { overflow: hidden; }
.live-map-heading { display: flex; justify-content: space-between; gap: 15px; align-items: center; min-height: 82px; padding: 18px 22px; }
.live-map-heading > div { display: grid; grid-template-columns: 11px 1fr; column-gap: 9px; align-items: center; }
.live-map-heading strong, .live-map-heading small { grid-column: 2; display: block; }
.live-map-heading small { color: var(--muted); font-size: .76rem; }
.live-state-dot { grid-row: 1 / 3; width: 10px; height: 10px; border-radius: 50%; background: var(--homle-muted, #665f61); box-shadow: 0 0 0 6px var(--homle-line-soft, #e8e2e0); }
.preview-map { overflow: hidden; position: relative; min-height: 390px; background-color: #e9efeb; background-image: linear-gradient(rgba(255,255,255,.5) 2px, transparent 2px), linear-gradient(90deg, rgba(255,255,255,.5) 2px, transparent 2px); background-size: 64px 64px; }
.map-road { position: absolute; border: 9px solid #fff; background: #cbd5d1; box-shadow: 0 0 0 1px #d1dad6; }
.map-road-one { width: 140%; height: 38px; top: 48%; left: -20%; transform: rotate(-8deg); }
.map-road-two { width: 38px; height: 140%; top: -20%; left: 28%; transform: rotate(13deg); }
.map-road-three { width: 38px; height: 120%; top: -10%; right: 22%; transform: rotate(-15deg); }
.map-park { position: absolute; width: 140px; height: 100px; top: 10%; right: 30%; border: 4px solid var(--homle-line-soft, #e8e2e0); border-radius: 45% 55% 50% 38%; background: var(--homle-line-soft, #e8e2e0); }
.map-route { display: flex; gap: 13px; position: absolute; top: 52%; left: 34%; width: 38%; align-items: center; transform: rotate(-8deg); }
.map-route::before { content: ""; position: absolute; left: 0; right: 0; height: 4px; border-radius: 999px; background: var(--green); }
.map-route i { z-index: 1; width: 8px; height: 8px; border: 2px solid #fff; border-radius: 50%; background: var(--green); }
.map-cleaner-marker, .map-home-marker { display: grid; z-index: 4; position: absolute; width: 48px; height: 48px; place-items: center; border: 4px solid #fff; border-radius: 50% 50% 50% 8px; box-shadow: 0 8px 18px rgba(16,36,33,.23); transform: rotate(-45deg); }
.map-cleaner-marker span, .map-home-marker span { transform: rotate(45deg); font-size: .72rem; font-weight: 900; }
.map-cleaner-marker { top: 53%; left: 31%; color: #fff; background: var(--green); }
.map-home-marker { top: 38%; right: 18%; color: var(--green-dark); background: #fff; }
.map-home-marker span { font-size: 1.15rem; }
.map-preview-label { position: absolute; right: 14px; bottom: 14px; padding: .32rem .55rem; color: #53645f; border-radius: 8px; background: rgba(255,255,255,.86); font-size: .68rem; font-weight: 800; }
.arrival-summary { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--line); }
.arrival-summary div { padding: 16px 22px; }
.arrival-summary div:first-child { border-right: 1px solid var(--line); }
.arrival-summary span, .arrival-summary strong { display: block; }
.arrival-summary span { color: var(--muted); font-size: .72rem; }
.arrival-summary strong { margin-top: 3px; font-size: .88rem; }
.job-stage-line { display: grid; grid-template-columns: repeat(5, 1fr); margin: 0; padding: 18px 16px 20px; border-top: 1px solid var(--line); list-style: none; }
.job-stage-line li { display: grid; gap: 6px; justify-items: center; position: relative; color: #84918d; font-size: .7rem; text-align: center; }
.job-stage-line li::before { content: ""; position: absolute; z-index: 0; top: 12px; right: 50%; width: 100%; height: 2px; background: var(--line); }
.job-stage-line li:first-child::before { display: none; }
.job-stage-line span { display: grid; z-index: 1; width: 25px; height: 25px; place-items: center; border: 2px solid var(--line); border-radius: 50%; background: #fff; font-size: .7rem; font-weight: 900; }
.job-stage-line li.complete, .job-stage-line li.current { color: var(--green-dark); }
.job-stage-line li.complete::before, .job-stage-line li.current::before { background: var(--green); }
.job-stage-line li.complete span { color: #fff; border-color: var(--green); background: var(--green); }
.job-stage-line li.current span { color: var(--green-dark); border-color: var(--homle-muted, #665f61); background: var(--mint); }
.live-job-panel { padding: 24px; }
.live-job-title { display: flex; justify-content: space-between; gap: 15px; align-items: start; }
.live-job-title h2 { margin-bottom: 5px; font-size: 1.55rem; }
.live-job-title > div > span { color: var(--muted); font-size: .76rem; }
.icon-button { width: 38px; height: 38px; color: var(--muted); border: 1px solid var(--line); border-radius: 10px; background: #fff; font-weight: 900; cursor: pointer; }
.progress-summary { margin: 24px 0; padding: 18px; border-radius: 14px; background: var(--mint-pale); }
.progress-summary > div:first-child { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; }
.progress-summary > div:first-child strong { color: var(--green-dark); font-size: 1.7rem; }
.progress-summary > div:first-child span, .progress-summary small { color: var(--muted); font-size: .76rem; }
.progress-track { overflow: hidden; height: 8px; margin: 10px 0 8px; border-radius: 999px; background: var(--homle-line-soft, #e8e2e0); }
.progress-track i { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--green); transition: width .25s ease; }
.room-progress-list { margin: 0; padding: 0; list-style: none; }
.room-progress-list li { display: grid; grid-template-columns: 34px 1fr auto; gap: 11px; align-items: center; padding: 14px 0; border-top: 1px solid var(--line); }
.room-progress-list li > span { display: grid; width: 30px; height: 30px; place-items: center; color: var(--muted); border: 1px solid var(--line); border-radius: 9px; background: #fff; font-size: .75rem; font-weight: 900; }
.room-progress-list li.complete > span { color: #fff; border-color: var(--green); background: var(--green); }
.room-progress-list li.current > span { color: var(--green-dark); border-color: var(--homle-muted, #665f61); background: var(--mint); }
.room-progress-list li.issue > span { color: #fff; border-color: #b85c23; background: #b85c23; }
.room-progress-list strong, .room-progress-list small { display: block; }
.room-progress-list small { color: var(--muted); }
.room-progress-list em { display: block; margin-top: 3px; color: var(--green-dark); font-size: .67rem; font-style: normal; font-weight: 760; }
.room-progress-list li.issue em { color: #8a3e13; }
.room-progress-list button, .sample-issue-button { min-height: 38px; padding: .45rem .62rem; color: var(--green-dark); border: 1px solid var(--homle-line, #dcd4d1); border-radius: 9px; background: var(--mint-pale); font-size: .72rem; font-weight: 820; cursor: pointer; }
.room-progress-list button:focus-visible, .sample-issue-button:focus-visible { outline: 3px solid #f4a340; outline-offset: 2px; }
.task-preview-guidance { margin: 12px 0 0; color: var(--muted); font-size: .74rem; }
.sample-issue-button { margin-top: 12px; color: #8a3e13; border-color: #e2b48f; background: #fff5e9; }
.sample-issue-notice { display: grid; gap: 3px; margin-top: 12px; padding: 12px; color: #7a3814; border: 1px solid #e2b48f; border-radius: 10px; background: #fff5e9; }
.sample-issue-notice[hidden] { display: none; }
.sample-issue-notice span { font-size: .74rem; }
.job-evidence-preview { display: grid; gap: 10px; margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--line); }
.job-evidence-preview h3 { margin: 0 0 3px; font-size: .9rem; }
.job-evidence-preview p { margin: 0; color: var(--muted); font-size: .72rem; }
.job-evidence-placeholders { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.job-evidence-placeholders span { display: grid; min-height: 72px; place-items: center; color: var(--muted); border: 1px dashed var(--homle-line-soft, #e8e2e0); border-radius: 10px; background: #f4f8f6; font-size: .72rem; font-weight: 780; }
.connection-state { display: grid; grid-template-columns: 10px 1fr; gap: 11px; align-items: center; margin-top: 22px; padding: 13px; border: 1px solid var(--line); border-radius: 12px; background: #f8faf9; }
.connection-state > span { width: 9px; height: 9px; border-radius: 50%; background: var(--homle-muted, #665f61); box-shadow: 0 0 0 4px var(--homle-line-soft, #e8e2e0); }
.connection-state strong, .connection-state small { display: block; }
.connection-state strong { font-size: .78rem; }
.connection-state small { margin-top: 2px; color: var(--muted); font-size: .7rem; }
.preview-controls { display: grid; grid-template-columns: minmax(230px,.65fr) 1.35fr; gap: 24px; align-items: center; margin-top: 20px; padding: 22px; }
.preview-controls h2 { margin-bottom: 5px; font-size: 1.35rem; }
.preview-controls p { margin: 0; color: var(--muted); font-size: .82rem; }
.preview-real-test-link { display: inline-block; margin-top: 11px; color: var(--green-dark); font-size: .8rem; font-weight: 820; }
.preview-state-buttons { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.preview-state-buttons button { min-height: 48px; color: var(--green-dark); border: 1px solid var(--homle-line-soft, #e8e2e0); background: var(--mint-pale); }
.preview-state-buttons button.current { color: #fff; border-color: var(--green); background: var(--green); }
.mobile-job-action { display: none; }

@media (max-width: 900px) {
  .profile-preview-layout, .tracking-preview-layout { grid-template-columns: 1fr; }
  .profile-booking-card { position: static; }
  .preview-controls { grid-template-columns: 1fr; }
}

@media (max-width: 680px) {
  .preview-header-label { display: none; }
  .preview-back { font-size: .78rem; }
  .preview-main { padding-top: 18px; padding-bottom: 105px; }
  .preview-disclosure { grid-template-columns: 30px 1fr; padding: 12px; }
  .preview-disclosure > span { width: 27px; height: 27px; }
  .preview-tabs { position: sticky; z-index: 10; top: 74px; margin-bottom: 22px; }
  .preview-screen-heading, .tracking-preview-toolbar { display: grid; gap: 14px; align-items: start; }
  .preview-screen-heading h1, .tracking-preview-toolbar h1 { font-size: clamp(2.3rem, 13vw, 3.25rem); }
  .preview-mode-pill { justify-self: start; }
  .cleaner-profile-card { padding: 20px 16px; border-radius: 18px; }
  .cleaner-profile-identity { align-items: start; }
  .profile-avatar { width: 68px; height: 68px; flex-basis: 68px; border-radius: 22px; }
  .availability-dot { align-items: start; line-height: 1.25; }
  .availability-dot i { margin-top: 3px; flex: 0 0 8px; }
  .profile-trust-row { grid-template-columns: 1fr; }
  .profile-trust-row div, .profile-trust-row div:first-child { min-height: auto; padding: 13px 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .profile-trust-row div:last-child { border-bottom: 0; }
  .profile-details-grid { grid-template-columns: 1fr; gap: 14px; }
  .profile-section-title { display: block; }
  .profile-section-title > span { display: block; margin-top: -4px; }
  .profile-booking-card { padding: 22px 18px; border-radius: 18px; }
  .role-switch { width: 100%; }
  .live-map-card, .live-job-panel { border-radius: 18px; }
  .live-map-heading { display: grid; padding: 15px; }
  .live-secure-pill { justify-self: start; }
  .preview-map { min-height: 300px; }
  .arrival-summary { grid-template-columns: 1fr; }
  .arrival-summary div:first-child { border-right: 0; border-bottom: 1px solid var(--line); }
  .job-stage-line { overflow-x: auto; grid-template-columns: repeat(5, minmax(68px,1fr)); }
  .live-job-panel { padding: 19px 16px; }
  .room-progress-list li { grid-template-columns: 32px 1fr; }
  .room-progress-list button { grid-column: 2; width: 100%; }
  .job-evidence-placeholders { grid-template-columns: 1fr; }
  .preview-controls { padding: 18px 14px; }
  .preview-state-buttons { grid-template-columns: 1fr 1fr; }
  .mobile-job-action { display: block; position: fixed; z-index: 30; right: 0; bottom: 0; left: 0; padding: 12px max(14px, env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left)); border-top: 1px solid var(--line); background: rgba(255,255,255,.96); backdrop-filter: blur(14px); }
  .mobile-job-action .button { width: 100%; }
  [data-preview-screen="profile"] ~ .mobile-job-action { display: none; }
}

/* Real Cleaner directory. Results are API-backed and never populated with sample people. */
.cleaner-directory-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.directory-nav { display: flex; gap: 20px; align-items: center; }
.directory-nav a { color: var(--green-dark); font-size: .88rem; font-weight: 780; text-decoration: none; }
.workspace-brand { display: flex; align-items: center; gap: 12px; }
.workspace-identity-pill { display: inline-flex; align-items: center; min-height: 28px; padding: 4px 10px; color: var(--homle-ink-2, #211d1e); border: 1px solid var(--homle-line, #dcd4d1); border-radius: 999px; background: #edf8f4; font-size: .7rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.cleaner-site-header { color: #fff; border-bottom-color: var(--homle-muted, #665f61); background: var(--homle-ink, #0b090a); }
.cleaner-site-header .brand, .cleaner-site-header .directory-nav a { color: #fff; }
.cleaner-site-header .cleaner-workspace-pill { color: #073e38; border-color: var(--homle-line-soft, #e8e2e0); background: var(--homle-beam, #7be8ac); }
.landlord-dashboard-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.dashboard-partial-status { display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: 14px; margin: 18px 0; padding: 16px 18px; color: #6b3209; border: 1px solid #e7b17b; border-radius: 16px; background: #fff5e8; }
.dashboard-partial-status > span { display: grid; width: 32px; height: 32px; place-items: center; border-radius: 50%; background: #f6c18d; font-weight: 900; }
.dashboard-partial-status p { margin: 4px 0 0; }
.landlord-dashboard-page .site-header { border-bottom-color: #efc89f; background: rgba(255,252,247,.97); }
.landlord-dashboard-page .landlord-workspace-pill { color: #6d3908; border-color: #e4ad73; background: #fff0dc; }
.directory-nav a[aria-current="page"] { text-decoration: underline; text-decoration-color: #ef9b50; text-decoration-thickness: 3px; text-underline-offset: 8px; }
.account-menu { position: relative; flex: 0 0 auto; }
.account-menu summary { display: grid; width: 44px; height: 44px; padding: 0; place-items: center; border: 2px solid var(--homle-line-soft, #e8e2e0); border-radius: 50%; background: #fff; box-shadow: 0 5px 18px rgba(16,36,33,.12); cursor: pointer; list-style: none; }
.account-menu summary::-webkit-details-marker { display: none; }
.account-menu summary:focus-visible { outline: 3px solid #f3a35c; outline-offset: 3px; }
.account-avatar { display: grid; width: 38px; height: 38px; overflow: hidden; place-items: center; color: #fff; border-radius: 50%; background: linear-gradient(145deg, var(--green), var(--homle-muted, #665f61)); font-size: .76rem; font-weight: 900; }
.account-avatar img { width: 100%; height: 100%; object-fit: cover; }
.account-menu-panel { position: absolute; z-index: 30; top: calc(100% + 10px); right: 0; display: grid; min-width: 245px; gap: 7px; padding: 17px; color: var(--ink); border: 1px solid var(--line); border-radius: 16px; background: #fff; box-shadow: 0 18px 50px rgba(16,36,33,.18); }
.account-menu-panel .eyebrow { margin: 0; color: var(--green); }
.account-menu-panel strong, .account-menu-panel small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-menu-panel small { color: var(--muted); }
.account-menu-panel a, .account-menu-panel .account-workspace-switch, .account-menu-panel .account-sign-out { margin-top: 7px; padding-top: 11px; color: var(--green-dark); border: 0; border-top: 1px solid var(--line); border-radius: 0; background: transparent; text-align: left; text-decoration: none; font: inherit; font-size: .84rem; font-weight: 850; cursor: pointer; }
.account-menu-panel .account-sign-out { width: 100%; color: #8b2118; }
.account-menu-panel .account-sign-out:disabled { cursor: wait; opacity: .65; }
.account-menu-status { display: block; margin-top: 8px; color: #8b2118; font-size: .72rem; line-height: 1.35; }
.cleaner-dashboard-page { min-height: 100vh; background: linear-gradient(180deg,var(--homle-ink, #0b090a) 0,var(--homle-ink, #0b090a) 180px,var(--homle-cream, #f7f4eb) 420px); }
.cleaner-dashboard-page .booking-dashboard-main { position: relative; }
.cleaner-dashboard-page .booking-dashboard-heading { grid-template-columns: minmax(220px,.55fr) minmax(0,1fr) auto; padding: clamp(22px,4vw,34px); color: #fff; border: 1px solid var(--homle-muted, #665f61); border-radius: 24px; background: linear-gradient(135deg,var(--homle-ink-2, #211d1e),#093f39); box-shadow: 0 22px 55px rgba(7,62,56,.22); }
.cleaner-dashboard-page .booking-dashboard-heading h1, .cleaner-dashboard-page .booking-dashboard-heading .eyebrow { color: #fff; }
.cleaner-dashboard-page .booking-dashboard-heading .button-outline { color: #073e38; border-color: var(--homle-beam, #7be8ac); background: var(--homle-beam, #7be8ac); }
.cleaner-dashboard-page .booking-dashboard-heading .role-dashboard-boundary { grid-column: 2; }
.landlord-dashboard-identity { display: grid; grid-template-columns: minmax(220px,.52fr) minmax(0,1fr); gap: clamp(22px,4vw,44px); align-items: center; padding: clamp(22px,4vw,34px); border: 1px solid #efc89f; border-left: 7px solid #d87937; border-radius: 0 24px 24px 0; background: linear-gradient(110deg,#fff4e5,#fff); box-shadow: 0 18px 48px rgba(106,61,18,.09); }
.landlord-dashboard-identity .role-dashboard-boundary, .landlord-dashboard-identity .landlord-dashboard-stats { grid-column: 1 / -1; }
.role-dashboard-person { display: flex; min-width: 0; gap: 15px; align-items: center; padding: 15px; border: 1px solid rgba(255,255,255,.2); border-radius: 18px; background: rgba(255,255,255,.1); }
.landlord-dashboard-person { border-color: #efc89f; background: rgba(255,255,255,.72); }
.role-account-avatar { display: grid; width: 68px; height: 68px; flex: 0 0 68px; overflow: hidden; place-items: center; color: #073e38; border: 4px solid var(--homle-beam, #7be8ac); border-radius: 22px; background: var(--homle-line-soft, #e8e2e0); font-size: 1.1rem; font-weight: 900; }
.role-account-avatar img { width: 100%; height: 100%; object-fit: cover; }
.landlord-role-avatar { color: #6d3908; border-color: #f3bd83; background: #fff0dc; }
.role-dashboard-person .eyebrow { margin: 0 0 3px; }
.role-dashboard-person strong, .role-dashboard-person small { display: block; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.role-dashboard-person small { margin-top: 3px; color: inherit; opacity: .78; font-size: .75rem; }
.role-dashboard-boundary { margin: 0; padding-top: 12px; border-top: 1px solid currentColor; opacity: .78; font-size: .78rem; }
.account-ready-person { display: flex; gap: 14px; align-items: center; margin: 20px 0; padding: 15px; border: 1px solid var(--homle-success, #137738); border-radius: 17px; background: var(--mint-pale); }
.account-ready-person .role-account-avatar { width: 58px; height: 58px; flex-basis: 58px; border-radius: 18px; }
.account-ready-person strong, .account-ready-person small { display: block; max-width: 360px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-ready-person small { margin-top: 3px; color: var(--muted); font-size: .78rem; }
.directory-main { padding: 54px 0 100px; }
.directory-hero { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(260px, .55fr); gap: clamp(30px, 7vw, 90px); align-items: end; margin-bottom: 38px; }
.directory-hero h1 { max-width: 800px; margin: 8px 0 14px; font-size: clamp(2.8rem, 7vw, 5.8rem); }
.directory-hero > div:first-child > p:last-child { max-width: 700px; margin: 0; color: var(--muted); font-size: 1.04rem; }
.directory-privacy-note { padding: 17px 18px; border-left: 4px solid var(--green); background: var(--mint-pale); }
.directory-privacy-note strong, .directory-privacy-note span { display: block; }
.directory-privacy-note span { margin-top: 4px; color: var(--muted); font-size: .82rem; }
.directory-layout { display: grid; grid-template-columns: 330px minmax(0, 1fr); gap: 24px; align-items: start; }
.directory-filters, .directory-state, .directory-cleaner-card { border: 1px solid var(--line); border-radius: 22px; background: #fff; box-shadow: 0 14px 42px rgba(16,36,33,.06); }
.directory-filters { position: sticky; top: 90px; padding: 24px; }
.directory-filter-heading, .directory-results-heading { display: flex; justify-content: space-between; gap: 16px; align-items: start; }
.directory-filter-heading h2, .directory-results-heading h2 { margin: 3px 0 0; font-size: 1.55rem; }
.directory-filter-heading .text-button { padding: .3rem; }
.directory-primary-filters { display: grid; gap: 16px; }
.directory-advanced-filters { border: 1px solid var(--line); border-radius: 13px; background: #f8fbf9; }
.directory-advanced-filters > summary { padding: 14px; color: var(--green-dark); font-size: .86rem; font-weight: 850; cursor: pointer; }
.directory-advanced-filters > summary span { display: block; margin: 3px 0 0 19px; color: var(--muted); font-size: .68rem; font-weight: 600; }
.directory-advanced-filters > div { display: grid; gap: 15px; padding: 4px 14px 15px; }
.directory-availability-fields { display: grid; gap: 12px; margin: 0; padding: 15px; border: 1px solid var(--line); border-radius: 12px; }
.directory-availability-fields legend { padding: 0 5px; color: #203f39; font-size: .88rem; font-weight: 780; }
.directory-availability-fields legend span { color: var(--muted); font-weight: 500; }
.directory-filter-error { padding: 12px; color: #7b1e17; border: 1px solid #e1aaa5; border-radius: 10px; background: #fff0ee; font-size: .84rem; font-weight: 700; }
.directory-filters .button { width: 100%; }
.directory-results { min-width: 0; }
.directory-results-heading { min-height: 74px; align-items: center; margin-bottom: 14px; }
.directory-results-heading > span { padding: .38rem .62rem; color: var(--green-dark); border-radius: 999px; background: var(--mint); font-size: .75rem; font-weight: 850; }
.directory-state { display: grid; grid-template-columns: 44px 1fr; gap: 15px; align-items: start; padding: 26px; }
.directory-state-mark { display: grid; width: 40px; height: 40px; place-items: center; color: #fff; border-radius: 50%; background: var(--green); font-family: Georgia, serif; font-weight: 900; }
.directory-state strong { display: block; color: var(--green-dark); font-size: 1.06rem; }
.directory-state p { max-width: 650px; margin: 5px 0 0; color: var(--muted); }
.directory-state-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 15px; }
.directory-state-actions .button { margin: 0; }
.directory-state[data-kind="unavailable"] { border-color: #e6bf80; background: #fff9ea; }
.directory-state[data-kind="unavailable"] .directory-state-mark { background: #9b5a0e; }
.directory-state[data-kind="error"] { border-color: #e1aaa5; background: #fff5f3; }
.directory-state[data-kind="error"] .directory-state-mark { background: #963b32; }
.cleaner-directory-grid { display: grid; gap: 16px; }
.directory-cleaner-card { padding: clamp(20px, 4vw, 30px); }
.directory-cleaner-identity { display: flex; gap: 16px; align-items: center; }
.directory-cleaner-photo { width: 70px; height: 70px; flex: 0 0 70px; object-fit: cover; border: 4px solid #e1f1eb; border-radius: 22px; background: var(--green); }
.directory-cleaner-initials { display: grid; place-items: center; color: #fff; font-size: 1rem; font-weight: 900; }
.directory-cleaner-identity h3 { margin: 4px 0 2px; font-size: 1.65rem; }
.directory-cleaner-identity p { margin: 0; color: var(--muted); font-size: .77rem; }
.directory-availability { display: inline-flex; align-items: center; color: #5c6b67; font-size: .71rem; font-weight: 820; }
.directory-availability::before { content: ""; width: 8px; height: 8px; margin-right: 7px; border-radius: 50%; background: #85918d; }
.directory-availability.is-available { color: var(--green); }
.directory-availability.is-available::before { background: var(--homle-success, #137738); box-shadow: 0 0 0 4px var(--homle-success, #137738); }
.directory-availability.is-limited { color: #88510f; }
.directory-availability.is-limited::before { background: #d98925; }
.directory-cleaner-metrics { display: grid; grid-template-columns: repeat(3, 1fr); margin: 22px 0; border-block: 1px solid var(--line); }
.directory-cleaner-metrics div { padding: 15px 12px; border-right: 1px solid var(--line); }
.directory-cleaner-metrics div:first-child { padding-left: 0; }
.directory-cleaner-metrics div:last-child { border-right: 0; }
.directory-cleaner-metrics dt { color: var(--muted); font-size: .68rem; font-weight: 850; text-transform: uppercase; }
.directory-cleaner-metrics dd { margin: 3px 0 0; color: var(--green-dark); font-size: .86rem; font-weight: 800; }
.directory-cleaner-bio { margin: 0 0 18px; color: var(--homle-ink-2, #211d1e); }
.directory-cleaner-details { margin-top: 20px; padding-top: 17px; border-top: 1px solid var(--line); }
.directory-cleaner-details summary { color: var(--green-dark); font-size: .86rem; font-weight: 850; cursor: pointer; }
.directory-profile-facts { display: grid; grid-template-columns: 1fr 1fr; margin: 17px 0; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.directory-profile-facts div { padding: 12px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.directory-profile-facts dt { color: var(--muted); font-size: .68rem; font-weight: 820; text-transform: uppercase; }
.directory-profile-facts dd { margin: 3px 0 0; font-size: .83rem; font-weight: 680; }
.directory-reviews { margin: 0 0 17px; }
.directory-reviews h4 { margin: 0 0 9px; color: var(--green-dark); font-size: .8rem; font-weight: 820; }
.directory-review-state { margin: 0; color: var(--muted); font-size: .77rem; }
.directory-review { margin-top: 10px; padding: 11px 12px; border: 1px solid var(--line); border-radius: 11px; }
.directory-review-header { display: flex; justify-content: space-between; gap: 10px; color: var(--muted); font-size: .72rem; }
.directory-review-header strong { color: var(--green-dark); font-size: .8rem; }
.directory-review-body { margin: 6px 0 0; font-size: .81rem; overflow-wrap: anywhere; }
.directory-review-response { margin-top: 9px; padding-left: 10px; border-left: 2px solid var(--line); }
.directory-review-response span { color: var(--muted); font-size: .7rem; font-weight: 820; text-transform: uppercase; }
.directory-review-response p { margin: 3px 0 0; font-size: .79rem; overflow-wrap: anywhere; }
.directory-profile-boundary { padding: 12px; color: #6b5a46; border-left: 3px solid var(--orange); background: #fff9ea; font-size: .77rem; }
.directory-cleaner-action { width: 100%; margin-top: 18px; }
.directory-cleaner-actions { display: grid; grid-template-columns: minmax(0,1fr) minmax(165px,.45fr); gap: 10px; align-items: start; margin-top: 18px; }
.directory-cleaner-actions .directory-cleaner-action { margin-top: 0; }
.directory-favourite-control { display: grid; gap: 5px; }
.directory-favourite-button { width: 100%; min-height: 48px; margin: 0; }
.directory-favourite-button.is-saved { color: var(--homle-ink, #0b090a); border-color: var(--homle-muted, #665f61); background: var(--homle-line-soft, #e8e2e0); }
.directory-favourite-status { min-height: 1.2em; color: var(--muted); font-size: .68rem; line-height: 1.35; }

@media (max-width: 900px) {
  .cleaner-dashboard-page .booking-dashboard-heading { grid-template-columns: 1fr; }
  .cleaner-dashboard-page .booking-dashboard-heading .role-dashboard-boundary { grid-column: auto; }
  .cleaner-dashboard-page .booking-dashboard-heading > .button { justify-self: start; }
  .landlord-dashboard-identity { grid-template-columns: 1fr; }
  .landlord-dashboard-identity .role-dashboard-boundary, .landlord-dashboard-identity .landlord-dashboard-stats { grid-column: auto; }
  .directory-hero { grid-template-columns: 1fr; }
  .directory-layout { grid-template-columns: 1fr; }
  .directory-filters { position: static; }
}

@media (max-width: 680px) {
  .cleaner-directory-page .directory-nav a:first-child { display: none; }
  .directory-main { padding: 32px 0 76px; }
  .directory-hero h1 { font-size: clamp(2.55rem, 14vw, 4rem); }
  .directory-filters, .directory-state, .directory-cleaner-card { border-radius: 18px; }
  .directory-filters { padding: 19px 16px; }
  .directory-results-heading { align-items: end; }
  .directory-cleaner-card { padding: 19px 16px; }
  .directory-cleaner-photo { width: 58px; height: 58px; flex-basis: 58px; border-radius: 18px; }
  .directory-cleaner-identity h3 { font-size: 1.35rem; }
  .directory-cleaner-metrics { grid-template-columns: 1fr; }
  .directory-cleaner-metrics div, .directory-cleaner-metrics div:first-child { padding: 11px 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .directory-cleaner-metrics div:last-child { border-bottom: 0; }
  .directory-profile-facts { grid-template-columns: 1fr; }
  .directory-cleaner-details .button { width: 100%; }
  .directory-cleaner-actions { grid-template-columns: 1fr; }
}

/* Authenticated Cleaner profile editor. */
.cleaner-editor-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.cleaner-editor-main { padding-block: 48px 100px; }
.cleaner-editor-heading { display: grid; grid-template-columns: minmax(0, 1fr) 270px; gap: clamp(30px, 7vw, 90px); align-items: end; margin-bottom: 30px; }
.cleaner-editor-heading h1 { max-width: 780px; margin: 7px 0 13px; font-size: clamp(2.8rem, 7vw, 5.6rem); }
.cleaner-editor-heading > div:first-child > p:last-child { max-width: 680px; margin: 0; color: var(--muted); }
.profile-completion-card { padding: 20px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 18px; background: var(--mint-pale); }
.profile-completion-card span, .profile-completion-card strong, .profile-completion-card small { display: block; }
.profile-completion-card span { color: var(--muted); font-size: .72rem; font-weight: 820; text-transform: uppercase; }
.profile-completion-card strong { margin: 3px 0; color: var(--green-dark); font-size: 2.2rem; }
.profile-completion-card progress { width: 100%; height: 10px; accent-color: var(--green); }
.profile-completion-card small { margin-top: 6px; color: var(--muted); line-height: 1.4; }
.cleaner-editor-state { display: grid; grid-template-columns: 44px 1fr; gap: 15px; align-items: start; padding: 25px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 20px; background: var(--mint-pale); }
.cleaner-editor-state > span { display: grid; width: 40px; height: 40px; place-items: center; color: #fff; border-radius: 50%; background: var(--green); font-family: Georgia, serif; font-weight: 900; }
.cleaner-editor-state strong { display: block; color: var(--green-dark); font-size: 1.05rem; }
.cleaner-editor-state p { margin: 4px 0 0; color: var(--muted); }
.cleaner-editor-state-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 15px; }
.cleaner-editor-state[data-kind="unavailable"] { border-color: #e6bf80; background: #fff9ea; }
.cleaner-editor-state[data-kind="unavailable"] > span { background: #9b5a0e; }
.cleaner-editor-state[data-kind="error"] { border-color: #e1aaa5; background: #fff5f3; }
.cleaner-editor-state[data-kind="error"] > span { background: #963b32; }
.cleaner-editor-form > fieldset { display: grid; gap: 20px; margin: 0; padding: 0; border: 0; }
.cleaner-profile-next { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; gap: 17px; align-items: center; padding: 21px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 21px; background: linear-gradient(145deg, #e8faf4, #fff); box-shadow: 0 14px 36px rgba(16,72,63,.08); }
.cleaner-profile-next > span { display: grid; width: 46px; height: 46px; place-items: center; color: #fff; border-radius: 15px; background: var(--green); font-size: 1.25rem; font-weight: 900; }
.cleaner-profile-next h2 { margin: 3px 0 4px; color: var(--green-dark); font-size: clamp(1.25rem, 3vw, 1.65rem); }
.cleaner-profile-next p:last-child { margin: 0; color: var(--muted); }
.cleaner-profile-next .button { min-width: 170px; white-space: nowrap; }
.cleaner-profile-steps { position: sticky; z-index: 11; top: 88px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding: 6px; border: 1px solid var(--line); border-radius: 17px; background: rgba(232,239,236,.97); box-shadow: 0 8px 24px rgba(16,36,33,.08); backdrop-filter: blur(12px); }
.cleaner-profile-steps button { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 2px 8px; align-items: center; min-width: 0; min-height: 58px; padding: 9px; color: var(--muted); border: 0; border-radius: 12px; background: transparent; text-align: left; cursor: pointer; }
.cleaner-profile-steps button > span { display: grid; grid-row: 1 / 3; width: 29px; height: 29px; place-items: center; color: var(--green-dark); border-radius: 9px; background: #d7e6e1; font-weight: 900; }
.cleaner-profile-steps button strong, .cleaner-profile-steps button small { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cleaner-profile-steps button small { font-size: .66rem; }
.cleaner-profile-steps button.current { color: var(--green-dark); background: #fff; box-shadow: 0 4px 16px rgba(16,36,33,.09); }
.cleaner-profile-steps button.current > span { color: #fff; background: var(--green); }
.cleaner-profile-steps button.complete:not(.current) > span { color: #fff; background: var(--homle-success, #137738); }
.cleaner-editor-section, .cleaner-publish-section { display: grid; grid-template-columns: minmax(220px, .63fr) minmax(0, 1.37fr); gap: clamp(28px, 6vw, 72px); scroll-margin-top: 92px; padding: clamp(24px, 5vw, 46px); border: 1px solid var(--line); border-radius: 24px; background: #fff; box-shadow: 0 14px 42px rgba(16,36,33,.055); }
.cleaner-editor-section-copy { align-self: start; position: sticky; top: 96px; }
.cleaner-editor-section-copy h2, .cleaner-publish-section h2 { margin: 6px 0 9px; font-size: clamp(1.7rem, 3vw, 2.35rem); }
.cleaner-editor-section-copy > p:last-child, .cleaner-publish-section > div > p:last-child { margin: 0; color: var(--muted); font-size: .9rem; }
.cleaner-editor-fields { display: grid; gap: 18px; }
.cleaner-profile-continue { display: flex; justify-content: flex-end; gap: 10px; padding-top: 4px; }
.cleaner-preference-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 15px; border: 1px solid var(--line); border-radius: 12px; background: #fafcfb; }
.cleaner-service-editor { display: grid; overflow: hidden; border: 1px solid var(--line); border-radius: 14px; }
.cleaner-service-row { display: grid; grid-template-columns: minmax(160px, 1fr) 145px 115px; gap: 10px; align-items: center; padding: 13px; border-bottom: 1px solid var(--line); background: #fafcfb; opacity: .7; }
.cleaner-service-row:last-child { border-bottom: 0; }
.cleaner-service-row.is-enabled { background: var(--mint-pale); opacity: 1; }
.cleaner-service-row .checkbox { font-weight: 740; }
.cleaner-service-row select, .cleaner-service-row input { min-width: 0; padding: .65rem .7rem; }
.cleaner-publish-section { align-items: center; color: var(--homle-ink, #0b090a); border-color: var(--homle-line, rgba(11,9,10,.12)); background: var(--homle-surface, #fbf9f3); }
.cleaner-publish-section .eyebrow { color: var(--homle-eyebrow, #8a5347); }
.cleaner-publish-section h2 { color: var(--homle-ink, #0b090a); }
.cleaner-publish-section > div > p:last-child { color: var(--homle-muted, #665f61); }
.cleaner-publish-control { grid-template-columns: 24px 1fr; align-items: start; padding: 18px; color: var(--ink); border-radius: 15px; background: #fff; cursor: pointer; }
.cleaner-publish-control input { width: 20px; height: 20px; margin-top: 2px; accent-color: var(--green); }
.cleaner-publish-control strong, .cleaner-publish-control small { display: block; }
.cleaner-publish-control small { margin-top: 4px; color: var(--muted); }
.cleaner-publish-control:has(input:disabled) { cursor: not-allowed; opacity: .72; }
.cleaner-editor-feedback { padding: 14px 16px; color: var(--green-dark); border: 1px solid var(--homle-line, #dcd4d1); border-radius: 12px; background: var(--mint-pale); font-weight: 700; }
.cleaner-editor-feedback[data-kind="error"] { color: #7b1e17; border-color: #e1aaa5; background: #fff0ee; }
.cleaner-editor-save { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 16px 0; }
.cleaner-editor-save > span { color: var(--muted); font-size: .82rem; }
.cleaner-editor-save .button { min-width: 180px; }
.cleaner-editor-save .button[aria-busy="true"] { cursor: progress; opacity: .7; }

@media (max-width: 900px) {
  .cleaner-editor-heading { grid-template-columns: 1fr; }
  .profile-completion-card { max-width: 440px; }
  .cleaner-editor-section, .cleaner-publish-section { grid-template-columns: 1fr; }
  .cleaner-editor-section-copy { position: static; }
}

@media (max-width: 680px) {
  .cleaner-editor-main { padding-block: 31px 82px; }
  .cleaner-editor-heading h1 { font-size: clamp(2.5rem, 14vw, 3.9rem); }
  .cleaner-editor-state { grid-template-columns: 34px 1fr; padding: 18px 15px; border-radius: 17px; }
  .cleaner-editor-state > span { width: 31px; height: 31px; }
  .cleaner-editor-state-actions { display: grid; }
  .cleaner-profile-next { grid-template-columns: 42px 1fr; padding: 17px 15px; border-radius: 17px; }
  .cleaner-profile-next > span { width: 40px; height: 40px; }
  .cleaner-profile-next .button { grid-column: 1 / -1; width: 100%; }
  .cleaner-profile-steps { grid-template-columns: 1fr 1fr; }
  .cleaner-editor-section, .cleaner-publish-section { gap: 24px; padding: 22px 16px; border-radius: 18px; }
  .cleaner-preference-row { grid-template-columns: 1fr; }
  .cleaner-service-row { grid-template-columns: minmax(0, 1fr) 115px; }
  .cleaner-service-row > [data-service-price] { grid-column: 1 / -1; }
  .cleaner-profile-continue { display: grid; }
  .cleaner-profile-continue .button { width: 100%; }
  .cleaner-editor-save { flex-direction: column-reverse; align-items: stretch; position: sticky; z-index: 10; bottom: 0; padding: 12px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.96); box-shadow: 0 -8px 28px rgba(16,36,33,.09); backdrop-filter: blur(14px); }
  .cleaner-editor-save .button { width: 100%; }
  .cleaner-editor-save > span { text-align: center; }
}

/* Authenticated Landlord workspace. Real records only; room scans stay private until reviewed submission. */
.landlord-dashboard-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.landlord-dashboard-main { padding-block: 42px 100px; }
.landlord-dashboard-state { display: grid; grid-template-columns: 44px 1fr; gap: 15px; align-items: start; padding: 25px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 20px; background: var(--mint-pale); }
.landlord-dashboard-state > span { display: grid; width: 40px; height: 40px; place-items: center; color: #fff; border-radius: 50%; background: var(--green); font-family: Georgia, serif; font-weight: 900; }
.landlord-dashboard-state strong { display: block; color: var(--green-dark); font-size: 1.05rem; }
.landlord-dashboard-state p { margin: 4px 0 0; color: var(--muted); }
.landlord-dashboard-state div > div { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 15px; }
.landlord-dashboard-state[data-kind="unavailable"] { border-color: #e6bf80; background: #fff9ea; }
.landlord-dashboard-state[data-kind="unavailable"] > span { background: #9b5a0e; }
.landlord-dashboard-state[data-kind="error"] { border-color: #e1aaa5; background: #fff5f3; }
.landlord-dashboard-state[data-kind="error"] > span { background: #963b32; }
.landlord-dashboard-state[data-kind="offline"] { border-color: #d8b66c; background: #fff9e9; }
.landlord-dashboard-state[data-kind="offline"] > span { background: #8a5a0a; }
.landlord-network-status { display: grid; grid-template-columns: 38px minmax(0, 1fr); gap: 13px; align-items: start; margin-bottom: 22px; padding: 15px 17px; color: #5f4009; border: 1px solid #d8b66c; border-radius: 14px; background: #fff9e9; }
.landlord-network-status > span { display: grid; width: 34px; height: 34px; place-items: center; color: #fff; border-radius: 50%; background: #8a5a0a; font-weight: 900; }
.landlord-network-status strong { display: block; margin: 1px 0 4px; }
.landlord-network-status p { margin: 0; font-size: .84rem; }
.landlord-network-status[hidden] { display: none; }
.landlord-dashboard-heading { display: grid; grid-template-columns: minmax(0, 1fr) 430px; gap: clamp(34px, 7vw, 90px); align-items: end; margin-bottom: 28px; }
.landlord-dashboard-heading h1 { margin: 5px 0 12px; font-size: clamp(2.8rem, 7vw, 5.8rem); }
.landlord-dashboard-heading > div > p:last-child { max-width: 700px; margin: 0; color: var(--muted); }
.landlord-dashboard-stats { display: grid; grid-template-columns: repeat(3, 1fr); margin: 0; border: 1px solid var(--line); border-radius: 18px; background: #fff; box-shadow: 0 12px 35px rgba(16,36,33,.06); }
.landlord-dashboard-stats div { padding: 18px 15px; border-right: 1px solid var(--line); }
.landlord-dashboard-stats div:last-child { border-right: 0; }
.landlord-dashboard-stats dt { color: var(--muted); font-size: .69rem; font-weight: 830; text-transform: uppercase; }
.landlord-dashboard-stats dd { margin: 4px 0 0; color: var(--green-dark); font-size: 1.8rem; font-weight: 900; }
.landlord-dashboard-stats small { display: block; margin-top: 2px; color: var(--muted); font-size: .6rem; }
.landlord-scan-boundary { display: grid; grid-template-columns: 52px minmax(0, 1fr) auto; gap: 20px; align-items: center; margin-bottom: 24px; padding: 24px; color: var(--homle-ink, #0b090a); border-radius: var(--homle-radius-lg, 22px); background: var(--homle-surface, #fbf9f3); box-shadow: var(--homle-shadow-sm, 0 1px 2px rgba(11,9,10,.05), 0 6px 16px rgba(11,9,10,.06)); }
.landlord-scan-boundary > span { display: grid; width: 50px; height: 50px; place-items: center; color: var(--green-dark); border-radius: 16px; background: var(--homle-mint, #2ed47a); font-weight: 900; }
.landlord-scan-boundary .eyebrow { color: var(--homle-eyebrow, #8a5347); }
.landlord-scan-boundary h2 { margin: 4px 0 5px; color: var(--homle-ink, #0b090a); font-size: 1.55rem; }
.landlord-scan-boundary p:last-child { margin: 0; color: var(--homle-muted, #665f61); font-size: .86rem; }
.landlord-scan-boundary .button { white-space: nowrap; background: var(--homle-coral-action, #c8102e); color: #fff; }
.landlord-capability-note { display: grid; grid-template-columns: 38px minmax(0, 1fr); gap: 13px; align-items: start; margin: -6px 0 24px; padding: 15px 17px; color: #654510; border: 1px solid #ddbd78; border-radius: 14px; background: #fff8e8; }
.landlord-capability-note > span { display: grid; width: 34px; height: 34px; place-items: center; color: #fff; border-radius: 50%; background: #9a6a16; font-weight: 900; }
.landlord-capability-note strong { display: block; margin: 1px 0 4px; }
.landlord-capability-note p { margin: 0; font-size: .84rem; }
.landlord-workspace-tabs { position: sticky; z-index: 12; top: 88px; display: grid; grid-template-columns: repeat(3, 1fr); max-width: 680px; margin: 0 0 18px; padding: 5px; border: 1px solid var(--line); border-radius: 14px; background: rgba(232,239,236,.97); box-shadow: 0 8px 24px rgba(16,36,33,.08); backdrop-filter: blur(12px); }
.landlord-workspace-tabs button { min-height: 46px; padding: .65rem 1rem; color: var(--muted); border: 0; border-radius: 10px; background: transparent; font-weight: 830; cursor: pointer; }
.landlord-workspace-tabs button.current { color: var(--green-dark); background: #fff; box-shadow: 0 4px 16px rgba(16,36,33,.09); }
.landlord-workspace-panel { min-height: 380px; padding: clamp(22px, 4vw, 34px); border: 1px solid var(--line); border-radius: 24px; background: #fff; box-shadow: 0 14px 42px rgba(16,36,33,.055); }
.landlord-panel-heading, .landlord-form-title { display: flex; justify-content: space-between; gap: 18px; align-items: center; }
.landlord-panel-heading { margin-bottom: 20px; }
.landlord-panel-heading h2 { margin: 4px 0 0; font-size: clamp(1.8rem, 4vw, 2.55rem); }
.landlord-empty-card { padding: 28px; border: 1px dashed var(--homle-line-soft, #e8e2e0); border-radius: 16px; background: #f7faf9; text-align: center; }
.landlord-empty-card strong { display: block; color: var(--green-dark); font-size: 1.05rem; }
.landlord-empty-card p { margin: 5px 0 0; color: var(--muted); }
.landlord-property-grid, .landlord-request-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.landlord-property-card, .landlord-request-card { min-width: 0; padding: 20px; border: 1px solid var(--line); border-radius: 17px; background: #fbfdfc; }
.landlord-property-card-heading, .landlord-request-card-heading { display: flex; justify-content: space-between; gap: 15px; align-items: start; }
.landlord-property-card-heading h3, .landlord-request-card-heading h3 { margin: 7px 0 3px; font-size: 1.32rem; }
.landlord-property-card-heading p { margin: 0; color: var(--muted); font-size: .78rem; overflow-wrap: anywhere; }
.landlord-property-card-heading > strong, .landlord-request-card-heading > strong { color: var(--green-dark); font-size: .72rem; text-transform: capitalize; }
.landlord-property-actions { display: flex; justify-content: flex-end; margin-top: 14px; }
.landlord-property-actions .button { min-height: 44px; }
.landlord-request-actions { display: flex; justify-content: flex-end; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.landlord-request-actions .text-button { min-height: 44px; color: #7a3129; }
.landlord-private-pill { display: inline-block; padding: .32rem .54rem; color: var(--green-dark); border-radius: 999px; background: var(--mint); font-size: .67rem; font-weight: 840; }
.landlord-property-facts, .landlord-request-facts { display: grid; grid-template-columns: 1fr 1fr; margin: 18px 0 0; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.landlord-property-facts div, .landlord-request-facts div { padding: 10px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.landlord-property-facts dt, .landlord-request-facts dt, .landlord-property-details dt { color: var(--muted); font-size: .64rem; font-weight: 820; text-transform: uppercase; }
.landlord-property-facts dd, .landlord-request-facts dd, .landlord-property-details dd { margin: 3px 0 0; font-size: .8rem; font-weight: 720; overflow-wrap: anywhere; }
.landlord-property-details { margin-top: 15px; }
.landlord-property-details summary { color: var(--green-dark); font-size: .78rem; font-weight: 830; cursor: pointer; }
.landlord-property-details dl { display: grid; gap: 10px; margin: 13px 0 0; }
.landlord-property-details dl div { padding: 10px; border-radius: 9px; background: var(--homle-cream, #f7f4eb); }
.landlord-record-form { margin: 24px 0 0; padding: clamp(20px, 4vw, 30px); border: 1px solid var(--homle-line, #dcd4d1); border-radius: 20px; background: #f7fbf9; }
.landlord-record-form > fieldset { display: grid; gap: 17px; margin: 0; padding: 0; border: 0; }
.landlord-form-title { padding-bottom: 15px; border-bottom: 1px solid var(--line); }
.landlord-form-title h3 { margin: 4px 0 0; font-size: 1.45rem; }
.landlord-form-title > span { color: #7b4300; font-size: .74rem; font-weight: 820; }
.landlord-form-feedback { padding: 13px 15px; color: #7b1e17; border: 1px solid #e1aaa5; border-radius: 11px; background: #fff0ee; font-weight: 700; }
.landlord-form-feedback[data-kind="success"] { color: var(--green-dark); border-color: var(--homle-success, #137738); background: var(--mint-pale); }
.landlord-record-form .button[type="submit"] { justify-self: start; min-width: 190px; }
.landlord-record-form .button[aria-busy="true"] { cursor: progress; opacity: .7; }
.landlord-profile-form { max-width: 780px; }
.landlord-profile-identity { color: var(--green-dark); border-color: var(--homle-line-soft, #e8e2e0); background: #eaf7f3; }
.landlord-profile-identity > div > span { display: block; margin-top: 5px; color: var(--muted); font-size: .72rem; font-weight: 750; }
.landlord-account-security { display: flex; justify-content: space-between; gap: 22px; align-items: center; margin-top: 20px; padding: 20px; border: 1px solid var(--line); border-radius: 17px; background: #f8faf9; }
.landlord-account-security h3 { margin: 3px 0 5px; color: var(--green-dark); }
.landlord-account-security p:last-child { margin: 0; color: var(--muted); font-size: .84rem; }
.landlord-account-security .button { flex: 0 0 auto; white-space: nowrap; }
.dashboard-next-action { display: grid; grid-template-columns: 52px minmax(0, 1fr) auto; gap: 18px; align-items: center; margin: 0 0 24px; padding: 22px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 22px; background: linear-gradient(145deg, #e8faf4, #fff); box-shadow: 0 14px 36px rgba(16,72,63,.09); }
.dashboard-next-mark { display: grid; width: 48px; height: 48px; place-items: center; border-radius: 16px; background: var(--green); color: #fff; font-size: 1.5rem; font-weight: 900; }
.dashboard-next-action h2 { margin: 3px 0 4px; color: var(--green-dark); font-size: clamp(1.35rem, 3vw, 1.75rem); }
.dashboard-next-action p:last-child { margin: 0; color: var(--muted); }
.dashboard-next-action .button { min-width: 170px; white-space: nowrap; }
.dashboard-optional-fields { border: 1px solid var(--line); border-radius: 13px; background: #fff; }
.dashboard-optional-fields summary { display: flex; justify-content: space-between; gap: 15px; padding: 14px; color: var(--green-dark); font-weight: 850; cursor: pointer; }
.dashboard-optional-fields summary span { color: var(--muted); font-size: .78rem; }
.dashboard-optional-fields > div { display: grid; gap: 17px; padding: 4px 14px 16px; }

.cleaner-payout-main { min-height: calc(100vh - 12rem); display: grid; place-items: center; padding-block: clamp(2rem, 8vw, 5rem); }
.cleaner-payout-card { width: min(100%, 42rem); background: #fff; border: 1px solid rgba(14, 102, 91, .18); border-radius: 1.5rem; padding: clamp(1.25rem, 5vw, 2.25rem); box-shadow: 0 1.25rem 3rem rgba(11, 48, 43, .09); }
.cleaner-payout-card h1 { margin: .3rem 0 .8rem; max-width: 18ch; }
.cleaner-payout-state { display: grid; grid-template-columns: auto 1fr; gap: .85rem; align-items: start; margin: 1.5rem 0; padding: 1rem; border-radius: 1rem; background: #edf7f5; }
.cleaner-payout-state[data-kind="ready"] { background: var(--homle-success-wash, #e9f6ee); }
.cleaner-payout-state[data-kind="error"] { background: #fff1ee; }
.cleaner-payout-state p { margin: .2rem 0 0; }
.cleaner-payout-mark { display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--brand); color: #fff; font-weight: 800; }
.cleaner-payout-state[data-kind="error"] .cleaner-payout-mark { background: #a63822; }
.cleaner-payout-action { width: 100%; min-height: 3.25rem; }
.cleaner-payout-note { margin: 1rem 0 0; font-size: .9rem; color: #52625f; }
.landlord-request-form { margin-top: 0; margin-bottom: 22px; }
.landlord-selected-cleaner { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; gap: 16px; align-items: center; padding: 17px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 16px; background: linear-gradient(135deg, #eaf9f5, #fff); }
.landlord-selected-cleaner[hidden] { display: none; }
.landlord-selected-cleaner-avatar { display: grid; width: 58px; height: 58px; overflow: hidden; place-items: center; color: #fff; border: 3px solid var(--homle-beam, #7be8ac); border-radius: 18px; background: linear-gradient(145deg, var(--green), var(--homle-muted, #665f61)); font-weight: 900; }
.landlord-selected-cleaner-avatar img { width: 100%; height: 100%; object-fit: cover; }
.landlord-selected-cleaner h4 { margin: 3px 0 4px; color: var(--green-dark); font-size: 1.05rem; }
.landlord-selected-cleaner p, .landlord-selected-cleaner small { display: block; margin: 0; color: var(--muted); line-height: 1.45; }
.landlord-selected-cleaner small { margin-top: 4px; font-size: .69rem; }
.landlord-selected-cleaner-actions { display: grid; gap: 7px; justify-items: end; }
.landlord-selected-cleaner-actions .text-button { min-height: 40px; white-space: nowrap; }
.landlord-sole-property { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 3px 14px; padding: 14px 16px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 13px; background: var(--mint-pale); }
.landlord-sole-property > span { color: var(--muted); font-size: .7rem; font-weight: 850; text-transform: uppercase; }
.landlord-sole-property > strong { grid-row: 1 / 3; grid-column: 2; align-self: center; color: var(--green-dark); overflow-wrap: anywhere; }
.landlord-sole-property > small { color: var(--muted); }
.landlord-required-services { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.landlord-speech-scope { display: grid; gap: 14px; padding: 18px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 15px; background: var(--mint-pale); }
.landlord-scan-property-status { margin: 0; padding: 10px 12px; border-radius: 10px; background: #fff; color: var(--green-dark); font-size: .76rem; font-weight: 780; }
.landlord-scan-property-status[data-kind="attention"] { color: #7b4a08; border-left: 4px solid #c88820; background: #fff8e8; }
.landlord-scan-property-status[data-kind="ready"] { border-left: 4px solid var(--green); }
.landlord-speech-heading { display: flex; justify-content: space-between; gap: 20px; align-items: center; }
.landlord-speech-heading h3 { margin: 4px 0 0; font-size: 1.3rem; }
.landlord-speech-scope > p { margin: 0; color: var(--muted); font-size: .78rem; }
.landlord-speech-scope .button { justify-self: start; }
.landlord-speech-scope .landlord-speech-prompt { padding: 12px 14px; color: var(--green-dark); border-radius: 11px; background: #fff; font-size: .88rem; line-height: 1.5; }
.landlord-speech-fallback, .landlord-task-editor { border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.landlord-speech-fallback > summary, .landlord-task-editor > summary { padding: 13px 14px; color: var(--green-dark); font-weight: 850; cursor: pointer; }
.landlord-speech-fallback > div, .landlord-task-editor > div { display: grid; gap: 12px; padding: 2px 14px 14px; }
.landlord-checklist-review { display: grid; gap: 14px; padding: 18px; border: 1px solid var(--line); border-radius: 15px; background: #fff; }
.landlord-checklist-heading { display: flex; justify-content: space-between; gap: 15px; align-items: center; }
.landlord-checklist-heading h3 { margin: 3px 0 0; font-size: 1.2rem; }
.landlord-task-preview { display: grid; gap: 10px; }
.landlord-task-empty, .landlord-task-preview > p { margin: 0; padding: 16px; color: var(--muted); border: 1px dashed var(--homle-line-soft, #e8e2e0); border-radius: 12px; background: #f7faf9; text-align: center; }
.landlord-task-room { padding: 13px 15px; border-left: 4px solid var(--green); border-radius: 0 11px 11px 0; background: var(--mint-pale); }
.landlord-task-room strong { color: var(--green-dark); }
.landlord-task-room ul { display: grid; gap: 6px; margin: 8px 0 0; padding-left: 20px; }
.landlord-task-review-status { margin: 0; padding: 10px 12px; color: #7b1e17; border-left: 3px solid #c85d52; background: #fff5f3; font-size: .78rem; font-weight: 760; }
.landlord-task-review-status[data-kind="ready"] { color: var(--green-dark); border-left-color: var(--green); background: var(--mint-pale); }
.landlord-request-recovery-status { margin: 0; color: #675947; font-size: .78rem; }
.landlord-request-recovery-status[data-kind="recovered"] { padding: 11px 13px; color: var(--green-dark); border: 1px solid var(--mint-border); border-radius: 12px; background: var(--mint-pale); font-weight: 760; }
.landlord-review-confirmation { padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.landlord-review-confirmation:has(input:disabled) { opacity: .58; }
.landlord-draft-boundary { color: #6b5a46; }
.landlord-request-card { background: #fff; }
.landlord-request-boundary { margin: 15px 0 0; padding: 10px 12px; color: #6b5a46; border-left: 3px solid var(--orange); background: #fff9ea; font-size: .75rem; }
.landlord-dispatch-action { display: grid; gap: 9px; margin-top: 14px; padding: 15px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 14px; background: var(--mint); }
.landlord-dispatch-action > p { margin: 0; color: var(--muted); font-size: .78rem; }
.landlord-dispatch-action .button { width: 100%; min-height: 50px; }
.landlord-dispatch-action .form-feedback { color: #8a1f14; }
.landlord-request-scan { margin-top: 14px; border-top: 1px solid var(--line); }
.landlord-request-scan > summary { padding-top: 14px; color: var(--green-dark); font-weight: 850; cursor: pointer; }
.landlord-request-scan-body { display: grid; gap: 14px; margin-top: 14px; padding: 16px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 14px; background: var(--mint-pale); }
.landlord-request-scan-copy { margin: 0; color: var(--muted); font-size: .78rem; line-height: 1.5; }
.landlord-scan-count { color: var(--green-dark); font-size: .84rem; }
.landlord-scan-upload-form, .landlord-request-submit-form { display: grid; gap: 12px; padding: 15px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.landlord-scan-upload-form label, .landlord-attempt-limit { display: grid; gap: 6px; font-size: .78rem; font-weight: 800; }
.landlord-scan-picker-actions { display: flex; flex-wrap: wrap; gap: 9px; }
.landlord-local-media-boundary { margin: 0; padding: 11px 12px; color: #7b4a08; border-left: 4px solid #c88820; border-radius: 8px; background: #fff8e8; font-size: .76rem; font-weight: 760; line-height: 1.45; }
.landlord-scan-video-privacy { color: var(--muted); font-size: .72rem; line-height: 1.45; }
.landlord-scan-selected { color: var(--muted); font-size: .72rem; overflow-wrap: anywhere; }
.landlord-scan-selection-preview { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; }
.landlord-scan-selection-card { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 10px; align-items: center; min-width: 0; padding: 9px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 12px; background: #fff; }
.landlord-scan-selection-card img, .landlord-scan-selection-placeholder { width: 72px; height: 72px; border-radius: 9px; background: #e8f1ee; }
.landlord-scan-selection-card img { object-fit: cover; }
.landlord-scan-selection-placeholder { display: grid; place-items: center; padding: 7px; color: var(--muted); font-size: .68rem; font-weight: 800; text-align: center; }
.landlord-scan-selection-copy { min-width: 0; }
.landlord-scan-selection-copy strong, .landlord-scan-selection-copy small { display: block; overflow-wrap: anywhere; }
.landlord-scan-selection-copy small { margin-top: 4px; color: var(--muted); font-size: .68rem; }
.landlord-scan-selection-card .text-button { grid-column: 1 / -1; justify-self: start; min-height: 40px; }
.landlord-scan-photo-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.landlord-scan-photo { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 12px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 10px; background: #fff; }
.landlord-scan-photo strong, .landlord-scan-photo span, .landlord-scan-photo small { display: block; }
.landlord-scan-photo span { margin-top: 3px; font-size: .75rem; }
.landlord-scan-photo small { margin-top: 3px; color: var(--muted); font-size: .65rem; }
.landlord-request-submit-form { border-color: #d9b471; background: #fffaf0; }
.landlord-request-submit-form .button, .landlord-scan-upload-form .button[type="submit"] { justify-self: start; }
.cleaner-request-scan { margin-top: 14px; padding: 12px 14px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 12px; background: var(--mint-pale); }
.cleaner-request-scan > summary { color: var(--green-dark); font-weight: 850; cursor: pointer; }
.cleaner-request-scan-body { display: grid; gap: 10px; margin-top: 12px; }
.cleaner-request-scan-body > p { margin: 0; color: var(--muted); font-size: .76rem; }
.cleaner-request-scan-body h4 { margin: 5px 0 0; color: var(--green-dark); font-size: .9rem; }
.cleaner-scan-privacy { padding: 10px; border-left: 3px solid var(--orange); background: #fff; }
.cleaner-request-task-list { display: grid; gap: 8px; }
.cleaner-request-task-room { padding: 11px 12px; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.cleaner-request-task-room strong { display: block; color: var(--green-dark); font-size: .8rem; }
.cleaner-request-task-room ul { display: grid; gap: 6px; margin: 7px 0 0; padding-left: 20px; }
.cleaner-request-task-room li { color: #29443f; font-size: .78rem; line-height: 1.45; }
.cleaner-scan-photo-boundary { padding: 10px; border: 1px dashed var(--homle-line-soft, #e8e2e0); border-radius: 9px; background: #fff; }
.cleaner-request-scan-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.cleaner-request-scan-list li { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 10px; align-items: center; padding: 10px; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.cleaner-request-scan-list strong, .cleaner-request-scan-list span { display: block; }
.cleaner-request-scan-list span { margin-top: 3px; font-size: .72rem; }

@media (max-width: 980px) {
  .landlord-dashboard-heading { grid-template-columns: 1fr; }
  .landlord-dashboard-stats { max-width: 520px; }
  .landlord-scan-boundary { grid-template-columns: 48px 1fr; }
  .landlord-scan-boundary .button { grid-column: 2; justify-self: start; }
}

@media (max-width: 720px) {
  .landlord-dashboard-main { padding-block: 28px 82px; }
  .landlord-dashboard-state { grid-template-columns: 34px 1fr; padding: 18px 15px; border-radius: 17px; }
  .landlord-dashboard-state > span { width: 31px; height: 31px; }
  .landlord-dashboard-heading h1 { font-size: clamp(2.5rem, 14vw, 3.9rem); }
  .landlord-dashboard-stats { grid-template-columns: 1fr; }
  .landlord-dashboard-stats div { display: grid; grid-template-columns: 1fr auto; align-items: center; padding: 12px 15px; border-right: 0; border-bottom: 1px solid var(--line); }
  .landlord-dashboard-stats div:last-child { border-bottom: 0; }
  .landlord-dashboard-stats dd { grid-row: 1 / 3; grid-column: 2; }
  .landlord-scan-boundary { grid-template-columns: 1fr; padding: 20px 16px; border-radius: 18px; }
  .landlord-scan-boundary .button { grid-column: 1; width: 100%; }
  .landlord-selected-cleaner { grid-template-columns: 52px minmax(0, 1fr); padding: 15px; }
  .landlord-selected-cleaner-avatar { width: 48px; height: 48px; border-radius: 15px; }
  .landlord-selected-cleaner-actions { grid-column: 1 / -1; grid-template-columns: 1fr 1fr; justify-items: stretch; }
  .landlord-selected-cleaner-actions .text-button { width: 100%; text-align: center; }
  .landlord-workspace-tabs { max-width: none; }
  .landlord-workspace-panel { padding: 20px 14px; border-radius: 18px; }
  .landlord-panel-heading { align-items: end; }
  .landlord-property-grid, .landlord-request-list { grid-template-columns: 1fr; }
  .landlord-property-actions .button { width: 100%; }
  .landlord-request-actions .text-button { width: 100%; }
  .landlord-record-form { padding: 18px 14px; border-radius: 16px; }
  .landlord-sole-property { grid-template-columns: 1fr; }
  .landlord-sole-property > strong { grid-row: auto; grid-column: 1; }
  .landlord-form-title { align-items: start; }
  .landlord-required-services { grid-template-columns: 1fr; }
  .landlord-speech-heading, .landlord-checklist-heading { display: grid; }
  .landlord-speech-heading .button, .landlord-checklist-heading .text-button { width: 100%; }
  .landlord-speech-heading .button { min-height: 54px; font-size: 1rem; }
  .landlord-record-form .button[type="submit"] { width: 100%; }
  .landlord-account-security { display: grid; padding: 17px 14px; }
  .landlord-account-security .button { width: 100%; white-space: normal; }
  .dashboard-next-action { grid-template-columns: 42px 1fr; padding: 18px 15px; }
  .dashboard-next-mark { width: 40px; height: 40px; border-radius: 13px; }
  .dashboard-next-action .button { grid-column: 1 / -1; width: 100%; min-width: 0; }
  .landlord-scan-picker-actions { display: grid; grid-template-columns: 1fr; }
  .landlord-scan-picker-actions .button, .landlord-request-submit-form .button, .landlord-scan-upload-form .button[type="submit"] { width: 100%; }
  .landlord-scan-photo { grid-template-columns: 1fr; }
  .landlord-scan-photo .button { width: 100%; }
  .cleaner-request-scan-list li { grid-template-columns: 1fr; }
  .cleaner-request-scan-list .button { width: 100%; }
}

/* Authenticated booking payment */
.booking-payment-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.booking-payment-main { min-height: calc(100vh - 160px); padding-block: clamp(34px, 7vw, 78px); }
.booking-payment-intro { display: flex; justify-content: space-between; gap: 32px; align-items: end; max-width: 900px; margin: 0 auto 24px; }
.booking-payment-intro h1 { max-width: 760px; margin: 6px 0 12px; font-size: clamp(2.5rem, 7vw, 5rem); line-height: .96; }
.booking-payment-intro p:last-child { max-width: 660px; margin: 0; color: var(--muted); }
.booking-payment-mode { flex: 0 0 auto; padding: .55rem .75rem; color: #7b4300; border: 1px solid #dfb66f; border-radius: 999px; background: #fff7df; font-size: .72rem; font-weight: 850; text-transform: uppercase; }
.booking-payment-network { position: sticky; z-index: 20; top: 10px; display: grid; grid-template-columns: 34px 1fr; gap: 12px; align-items: start; max-width: 760px; margin: 0 auto 18px; padding: 13px 16px; color: #70420a; border: 1px solid #d9a55f; border-radius: 13px; background: #fff6df; box-shadow: 0 8px 24px rgba(74,45,10,.12); }
.booking-payment-network[hidden] { display: none; }
.booking-payment-network > span { display: grid; width: 32px; height: 32px; place-items: center; color: #fff; border-radius: 50%; background: #8a520c; font-weight: 900; }
.booking-payment-network strong { display: block; }
.booking-payment-network p { margin: 3px 0 0; font-size: .78rem; line-height: 1.45; }
.booking-payment-state, .booking-payment-card { max-width: 760px; margin-inline: auto; border: 1px solid var(--line); border-radius: 24px; background: #fff; box-shadow: 0 18px 50px rgba(16,36,33,.08); }
.booking-payment-state { display: grid; grid-template-columns: 42px 1fr; gap: 16px; padding: 24px; }
.booking-payment-state > span { display: grid; width: 40px; height: 40px; place-items: center; color: #fff; border-radius: 50%; background: var(--green); font-weight: 900; }
.booking-payment-state strong { display: block; color: var(--green-dark); font-size: 1.08rem; }
.booking-payment-state p { margin: 5px 0 0; color: var(--muted); }
.booking-payment-state[data-kind="unavailable"] { border-color: #e6bf80; background: #fff9ea; }
.booking-payment-state[data-kind="unavailable"] > span { background: #9b5a0e; }
.booking-payment-state[data-kind="error"] { border-color: #e1aaa5; background: #fff5f3; }
.booking-payment-state[data-kind="error"] > span { background: #963b32; }
.booking-payment-state-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.booking-payment-card { overflow: hidden; }
.booking-payment-summary { display: flex; justify-content: space-between; gap: 24px; align-items: center; padding: clamp(22px, 5vw, 34px); color: var(--homle-ink, #0b090a); background: var(--homle-surface, #fbf9f3); }
.booking-payment-summary .eyebrow { color: var(--homle-eyebrow, #8a5347); }
.booking-payment-summary h2 { margin: 5px 0; color: var(--homle-ink, #0b090a); font-size: clamp(2.2rem, 8vw, 4rem); }
.booking-payment-summary p:last-child { margin: 0; color: var(--homle-muted, #665f61); font-size: .72rem; overflow-wrap: anywhere; }
.booking-payment-status { min-width: 150px; padding: 14px; border: 1px solid rgba(255,255,255,.22); border-radius: 14px; background: rgba(255,255,255,.08); }
.booking-payment-status span { display: block; color: var(--homle-muted, #665f61); font-size: .65rem; font-weight: 820; text-transform: uppercase; }
.booking-payment-status strong { display: block; margin-top: 4px; text-transform: capitalize; }
.booking-payment-message { margin: 24px clamp(20px, 5vw, 34px) 0; padding: 16px 18px; border-left: 4px solid var(--orange); border-radius: 0 12px 12px 0; background: #fff9ea; }
.booking-payment-message strong { color: var(--green-dark); }
.booking-payment-message p { margin: 4px 0 0; color: var(--muted); }
.booking-payment-refresh { min-height: 42px; margin: 9px clamp(20px, 5vw, 34px) 0; }
.booking-payment-prepare { margin: 20px clamp(20px, 5vw, 34px) 0; }
.booking-payment-complete { width: fit-content; margin: 20px clamp(20px, 5vw, 34px) 0; }
.booking-payment-form { display: grid; gap: 18px; margin: 22px clamp(20px, 5vw, 34px) 0; padding: 20px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 16px; background: #f7fbf9; }
.booking-payment-element { min-height: 130px; }
.booking-payment-feedback { padding: 12px 14px; color: #7b1e17; border: 1px solid #e1aaa5; border-radius: 10px; background: #fff0ee; font-weight: 700; }
.booking-payment-form .button { min-height: 52px; font-size: 1rem; }
.booking-payment-form .button[aria-busy="true"], .booking-payment-prepare[aria-busy="true"] { cursor: progress; opacity: .7; }
.booking-payment-boundary { margin: 0; color: #6b5a46; font-size: .76rem; }
.booking-payment-boundary strong { display: block; color: var(--green-dark); }
.booking-payment-trust { margin-top: 26px; border-top: 1px solid var(--line); background: #fbfdfc; }
.booking-payment-trust > summary { padding: 17px clamp(20px, 5vw, 34px); color: var(--green-dark); font-weight: 850; cursor: pointer; }
.booking-payment-trust-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--line); border-top: 1px solid var(--line); }
.booking-payment-trust-grid div { padding: 18px; background: #fbfdfc; }
.booking-payment-trust strong { display: block; color: var(--green-dark); font-size: .78rem; }
.booking-payment-trust span { display: block; margin-top: 4px; color: var(--muted); font-size: .7rem; }

@media (max-width: 680px) {
  .booking-payment-main { padding-block: 28px 76px; }
  .booking-payment-intro { display: grid; gap: 16px; }
  .booking-payment-mode { justify-self: start; }
  .booking-payment-state { grid-template-columns: 34px 1fr; padding: 18px 15px; border-radius: 18px; }
  .booking-payment-state > span { width: 32px; height: 32px; }
  .booking-payment-summary { display: grid; padding: 24px 18px; }
  .booking-payment-status { width: 100%; }
  .booking-payment-prepare, .booking-payment-complete { width: calc(100% - 40px); }
  .booking-payment-form { padding: 16px 13px; }
  .booking-payment-trust-grid { grid-template-columns: 1fr; }
}

/* Authenticated active booking */
.active-job-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.active-job-header nav { display: flex; gap: 18px; align-items: center; }
.active-job-header nav a { color: var(--green-dark); font-size: .78rem; font-weight: 800; }
.active-job-main { min-height: calc(100vh - 160px); padding-block: clamp(28px, 5vw, 58px) 96px; }
.active-job-network { position: sticky; z-index: 20; top: 8px; display: flex; gap: 10px; align-items: center; max-width: 720px; margin: 0 auto 18px; padding: 11px 15px; color: #6f230f; border: 1px solid #e2ad8f; border-radius: 999px; background: #fff1e8; box-shadow: 0 8px 24px rgba(30,20,10,.12); }
.active-job-network span { width: 9px; height: 9px; border-radius: 50%; background: #b53f20; }
.active-job-gate { display: grid; grid-template-columns: 42px 1fr; gap: 16px; max-width: 760px; margin: 6vh auto 0; padding: 25px; border: 1px solid var(--line); border-radius: 24px; background: #fff; box-shadow: 0 18px 50px rgba(16,36,33,.08); }
.active-job-gate > span { display: grid; width: 40px; height: 40px; place-items: center; color: #fff; border-radius: 50%; background: var(--green); font-weight: 900; }
.active-job-gate strong { display: block; color: var(--green-dark); font-size: 1.08rem; }
.active-job-gate p { margin: 5px 0 0; color: var(--muted); }
.active-job-gate div > div { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.active-job-gate[data-kind="unavailable"] { border-color: #e3bd77; background: #fff9e9; }
.active-job-gate[data-kind="unavailable"] > span { background: #996010; }
.active-job-gate[data-kind="error"], .active-job-gate[data-kind="authentication"] { border-color: #dfaaa4; background: #fff7f5; }
.active-job-gate[data-kind="error"] > span, .active-job-gate[data-kind="authentication"] > span { background: #973c34; }
.active-job-heading { display: flex; justify-content: space-between; gap: 30px; align-items: end; margin-bottom: 24px; }
.active-job-heading h1 { margin: 5px 0 8px; font-size: clamp(2.7rem, 7vw, 5.6rem); line-height: .94; }
.active-job-heading p:last-child { max-width: 640px; margin: 0; color: var(--muted); }
.active-job-reference { flex: 0 0 auto; min-width: 190px; padding: 14px 16px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 15px; background: rgba(255,255,255,.78); }
.active-job-reference span, .active-job-reference small { display: block; color: var(--muted); font-size: .67rem; }
.active-job-reference strong { display: block; margin: 3px 0; color: var(--green-dark); letter-spacing: .06em; }
.active-job-stages { display: grid; grid-template-columns: repeat(6, 1fr); margin: 0 0 26px; padding: 0; list-style: none; }
.active-job-stages li { position: relative; display: grid; gap: 6px; justify-items: center; color: #6d7d79; text-align: center; }
.active-job-stages li::before { position: absolute; z-index: 0; top: 16px; right: 50%; left: -50%; height: 2px; background: #cbdad5; content: ""; }
.active-job-stages li:first-child::before { display: none; }
.active-job-stages span { z-index: 1; display: grid; width: 34px; height: 34px; place-items: center; border: 2px solid #cbdad5; border-radius: 50%; background: #f5f9f7; font-size: .72rem; font-weight: 900; }
.active-job-stages small { font-weight: 750; }
.active-job-stages .complete::before, .active-job-stages .current::before { background: var(--green); }
.active-job-stages .complete span { color: #fff; border-color: var(--green); background: var(--green); }
.active-job-stages .current { color: var(--green-dark); }
.active-job-stages .current span { color: #fff; border-color: var(--orange); background: var(--green-dark); box-shadow: 0 0 0 5px rgba(216,111,36,.14); }
.active-job-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 360px); gap: 24px; align-items: start; }
.active-job-primary { display: grid; gap: 22px; }
.active-journey-card, .active-progress-card, .active-photo-card, .active-review-card, .active-dispute-card, .active-message-card, .active-property-card, .active-job-actions { border: 1px solid var(--line); border-radius: 22px; background: #fff; box-shadow: 0 14px 42px rgba(16,36,33,.07); }
.active-journey-card, .active-progress-card, .active-photo-card, .active-review-card, .active-dispute-card, .active-message-card, .active-property-card { padding: clamp(20px, 4vw, 30px); }
.active-card-heading { display: flex; justify-content: space-between; gap: 18px; align-items: start; }
.active-card-heading h2 { margin: 4px 0 0; font-size: clamp(1.5rem, 4vw, 2.25rem); }
.active-private-pill { flex: 0 0 auto; padding: .45rem .65rem; color: var(--green-dark); border: 1px solid var(--homle-line, #dcd4d1); border-radius: 999px; background: #eff9f5; font-size: .64rem; font-weight: 850; }
.active-location-surface { position: relative; min-height: 280px; margin-top: 20px; overflow: hidden; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 18px; background: linear-gradient(145deg, #e1f2ec, #f5ead7); }
.active-location-surface::before, .active-location-surface::after { position: absolute; width: 140%; height: 34px; border: 8px solid rgba(255,255,255,.75); border-radius: 30px; background: #c7d6d0; content: ""; transform: rotate(-22deg); }
.active-location-surface::before { top: 42px; left: -28%; }
.active-location-surface::after { right: -25%; bottom: 44px; transform: rotate(28deg); }
.active-location-route { position: absolute; z-index: 2; top: 90px; right: 19%; left: 20%; display: flex; justify-content: space-between; transform: rotate(-9deg); }
.active-location-route i { width: 8px; height: 8px; border-radius: 50%; background: var(--orange); }
.active-location-cleaner, .active-location-home { position: absolute; z-index: 3; display: grid; width: 44px; height: 44px; place-items: center; border-radius: 50%; box-shadow: 0 6px 18px rgba(16,36,33,.25); }
/* The marker travels from its start to the home marker's own position, so full
   progress lands on the home rather than stopping short at wider viewports. */
.active-location-cleaner { top: calc(66px + (109px * var(--journey-progress, 0))); left: calc(17% + ((69% - 44px) * var(--journey-progress, 0))); color: #fff; background: var(--green-dark); transition: top .9s ease, left .9s ease; animation: active-location-pulse 2s infinite; }
.active-location-home { right: 14%; bottom: 61px; color: #fff; background: var(--orange); font-size: 1.3rem; }
.active-location-copy { position: absolute; z-index: 4; right: 18px; bottom: 17px; left: 18px; padding: 13px 15px; border: 1px solid rgba(255,255,255,.7); border-radius: 12px; background: rgba(255,255,255,.9); backdrop-filter: blur(8px); }
.active-location-copy strong, .active-location-copy span { display: block; }
.active-location-copy strong { color: var(--green-dark); }
.active-location-copy span { margin-top: 3px; color: var(--muted); font-size: .72rem; }
.active-location-surface[data-state="off"] .active-location-route, .active-location-surface[data-state="stopped"] .active-location-route { opacity: .25; }
@keyframes active-location-pulse { 50% { box-shadow: 0 0 0 12px rgba(14,102,91,.12), 0 6px 18px rgba(16,36,33,.22); } }
.active-map-boundary { margin: 10px 2px 0; color: #61726d; font-size: .7rem; }
.active-journey-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin: 22px 0 0; border: 1px solid var(--line); border-radius: 14px; }
.active-journey-facts div { min-width: 0; padding: 14px; border-right: 1px solid var(--line); }
.active-journey-facts div:last-child { border-right: 0; }
.active-journey-facts dt, .active-property-instructions dt { color: var(--muted); font-size: .62rem; font-weight: 800; text-transform: uppercase; }
.active-journey-facts dd, .active-property-instructions dd { margin: 4px 0 0; overflow-wrap: anywhere; color: var(--green-dark); font-size: .79rem; font-weight: 800; }
.active-location-feedback, .active-action-feedback { margin-top: 14px; padding: 12px 14px; border: 1px solid var(--homle-success, #137738); border-radius: 11px; background: #eff9f5; color: var(--green-dark); font-weight: 700; }
.active-location-feedback[data-kind="error"], .active-action-feedback[data-kind="error"] { color: #7a221b; border-color: #dfa9a2; background: #fff2f0; }
.active-progress-percent { color: var(--green-dark); font-size: clamp(2rem, 6vw, 3.5rem); }
.active-progress-track { height: 13px; margin-top: 18px; overflow: hidden; border-radius: 999px; background: #e2ece8; }
.active-progress-track i { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--green), var(--homle-muted, #665f61)); transition: width .35s ease; }
.active-progress-facts { display: flex; flex-wrap: wrap; gap: 10px 18px; margin-top: 12px; color: var(--muted); font-size: .7rem; }
.active-progress-facts strong { color: var(--green-dark); }
.active-pause-notice { display: flex; gap: 10px; align-items: center; margin-top: 18px; padding: 12px 14px; color: #7a4a09; border: 1px solid #e4bb74; border-radius: 12px; background: #fff8e4; }
.active-pause-notice span { font-size: .72rem; }
.active-task-list { display: grid; gap: 12px; margin-top: 20px; }
.active-task { padding: 16px; border: 1px solid var(--line); border-left: 5px solid #9aaba6; border-radius: 13px; background: #fbfdfc; }
.active-task-completed { border-left-color: var(--homle-success, #137738); background: #f2faf7; }
.active-task-in-progress { border-left-color: #d86f24; }
.active-task-issue-reported { border-left-color: #a84035; background: #fff8f7; }
.active-task > div:first-child span, .active-task > div:first-child strong, .active-task > div:first-child em { display: block; }
.active-task > div:first-child span { color: var(--green); font-size: .64rem; font-weight: 850; text-transform: uppercase; }
.active-task > div:first-child strong { margin-top: 3px; color: var(--green-dark); }
.active-task > div:first-child em { margin-top: 4px; color: var(--muted); font-size: .67rem; text-transform: capitalize; }
.active-task > p { margin: 9px 0 0; padding: 9px 11px; border-radius: 8px; background: #edf3f0; color: #465d57; font-size: .75rem; }
.active-task-approval { display: block; margin-top: 8px; color: #7a4a09; font-weight: 800; text-transform: capitalize; }
.active-task-controls { display: grid; gap: 10px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.active-task-complete { justify-self: start; min-height: 52px; }
.active-task-more { border: 1px solid var(--line); border-radius: 11px; background: #fff; }
.active-task-more > summary { padding: 12px 13px; color: var(--green-dark); font-size: .72rem; font-weight: 850; cursor: pointer; }
.active-task-more .active-task-editor { margin: 0; padding: 2px 12px 12px; border-top: 0; }
.active-task-editor { display: grid; grid-template-columns: minmax(150px, .55fr) 1fr auto; gap: 10px; align-items: end; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.active-task-editor label { color: var(--muted); font-size: .65rem; font-weight: 800; }
.active-task-editor select, .active-task-editor textarea { margin-top: 4px; min-height: 46px; }
.active-task-editor textarea { resize: vertical; }
.active-task-editor .button { min-height: 46px; white-space: nowrap; }
.active-task-decisions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 13px; }
.active-task-decisions .button { min-height: 44px; }
.active-photo-boundary { margin: 10px 0 0; color: var(--muted); font-size: .74rem; }
.active-photo-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 20px; }
.active-photo { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 15px; align-items: center; min-width: 0; padding: 15px; border: 1px solid #cbd9d5; border-left: 5px solid var(--homle-muted, #665f61); border-radius: 13px; background: #fbfdfc; }
.active-photo-before { border-left-color: #d86f24; }
.active-photo-after { border-left-color: var(--homle-success, #137738); }
.active-photo-issue { border-left-color: #a84035; background: #fff8f7; }
.active-photo span, .active-photo strong, .active-photo time { display: block; }
.active-photo span { color: var(--green); font-size: .61rem; font-weight: 850; text-transform: uppercase; }
.active-photo strong { margin-top: 4px; overflow-wrap: anywhere; color: var(--green-dark); font-size: .78rem; }
.active-photo time { margin-top: 4px; color: var(--muted); font-size: .61rem; }
.active-photo p { margin: 8px 0 0; overflow-wrap: anywhere; color: #465d57; font-size: .7rem; }
.active-photo .button { min-height: 42px; white-space: nowrap; }
.active-photo .button[aria-busy="true"] { cursor: progress; opacity: .65; }
.active-photo-empty { margin-top: 18px; padding: 20px; border: 1px dashed #b9cbc5; border-radius: 12px; text-align: center; }
.active-photo-empty strong { color: var(--green-dark); }
.active-photo-empty p { margin: 4px 0 0; color: var(--muted); font-size: .74rem; }
.active-photo-feedback, .active-photo-upload-state { margin-top: 13px; padding: 11px 13px; color: var(--green-dark); border: 1px solid var(--homle-success, #137738); border-radius: 10px; background: #eff9f5; font-weight: 700; }
.active-photo-feedback[data-kind="error"], .active-photo-upload-state[data-kind="error"] { color: #7a221b; border-color: #dfa9a2; background: #fff2f0; }
.active-review-copy { margin: 10px 0 0; color: var(--muted); }
.active-review-confirm { display: grid; gap: 14px; margin-top: 20px; padding: 18px; border: 1px solid var(--homle-success, #137738); border-radius: 14px; background: #eff9f5; }
.active-review-confirm p { margin: 0; color: var(--homle-success, #137738); }
.active-review-confirm .button { justify-self: start; min-height: 52px; }
.active-review-form, .active-review-response-form { display: grid; gap: 18px; margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--line); }
.active-review-form > label, .active-review-response-form label, .active-review-score-grid label { color: var(--green-dark); font-weight: 850; }
.active-review-form label > span { color: var(--muted); font-weight: 500; }
.active-review-form textarea, .active-review-response-form textarea { min-height: 104px; margin-top: 7px; resize: vertical; }
.active-review-stars { min-width: 0; margin: 0; padding: 0; border: 0; }
.active-review-stars legend { color: var(--green-dark); font-weight: 850; }
.active-review-stars legend span { color: var(--muted); font-weight: 500; }
.active-review-stars > div { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-top: 9px; }
.active-review-stars label { position: relative; display: grid; min-height: 72px; place-items: center; padding: 9px 4px; cursor: pointer; border: 1px solid #bfd2cc; border-radius: 12px; background: #fbfdfc; color: var(--green-dark); text-align: center; }
.active-review-stars input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.active-review-stars label:has(input:checked) { color: #fff; border-color: var(--green-dark); background: var(--green-dark); box-shadow: 0 0 0 4px rgba(216,111,36,.16); }
.active-review-stars label:has(input:focus-visible) { outline: 3px solid var(--orange); outline-offset: 2px; }
.active-review-stars span { display: block; font-size: 1.28rem; font-weight: 900; }
.active-review-stars small { font-size: .58rem; }
.active-review-details { border: 1px solid var(--line); border-radius: 12px; }
.active-review-details summary { padding: 14px; cursor: pointer; color: var(--green-dark); font-weight: 850; }
.active-review-details summary span { color: var(--muted); font-weight: 500; }
.active-review-score-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; padding: 0 14px 14px; }
.active-review-score-grid label { font-size: .72rem; }
.active-review-score-grid select { width: 100%; min-height: 46px; margin-top: 5px; }
.active-review-boundary { margin: 0; color: var(--muted); font-size: .7rem; }
.active-review-form > .button, .active-review-response-form > .button { justify-self: start; min-height: 52px; }
.active-review-summary { display: grid; gap: 14px; margin-top: 20px; padding: 18px; border: 1px solid #c9d9d4; border-radius: 14px; background: #fbfdfc; }
.active-review-overall { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.active-review-overall strong { color: #b75b18; font-size: 1.35rem; letter-spacing: .08em; }
.active-review-overall span { color: var(--green-dark); font-weight: 900; }
.active-review-scores { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; }
.active-review-scores div { padding: 7px 9px; border-radius: 999px; background: #eaf4f0; font-size: .68rem; }
.active-review-scores dt, .active-review-scores dd { display: inline; margin: 0; }
.active-review-scores dt { color: var(--muted); }
.active-review-scores dd { color: var(--green-dark); font-weight: 900; }
.active-review-summary blockquote { margin: 0; padding: 13px 15px; border-left: 4px solid var(--orange); background: #fff; white-space: pre-wrap; overflow-wrap: anywhere; }
.active-review-moderation { margin: 0; padding: 11px 13px; color: #71430b; border: 1px solid #e6c280; border-radius: 10px; background: #fff8e4; }
.active-review-response { padding-top: 13px; border-top: 1px solid var(--line); }
.active-review-response strong { color: var(--green-dark); }
.active-review-response p { margin: 5px 0 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.active-review-workspace { width: fit-content; margin-top: 16px; }
.active-review-feedback { margin-top: 13px; padding: 11px 13px; color: var(--green-dark); border: 1px solid var(--homle-success, #137738); border-radius: 10px; background: #eff9f5; font-weight: 700; }
.active-review-feedback[data-kind="error"] { color: #7a221b; border-color: #dfa9a2; background: #fff2f0; }
.active-review-card button[aria-busy="true"] { cursor: progress; opacity: .65; }
.active-dispute-copy { margin: 10px 0 0; color: var(--muted); }
.active-dispute-form { display: grid; gap: 16px; margin-top: 20px; }
.active-dispute-form > label { color: var(--green-dark); font-weight: 850; }
.active-dispute-form select, .active-dispute-form textarea { width: 100%; margin-top: 7px; }
.active-dispute-form textarea { min-height: 120px; resize: vertical; }
.active-dispute-form .active-dispute-confirm { display: flex; gap: 10px; align-items: start; padding: 14px; border: 1px solid #d9c9a6; border-radius: 12px; background: #fff9ec; font-size: .72rem; }
.active-dispute-confirm input { flex: 0 0 auto; margin-top: 3px; }
.active-dispute-form .button { justify-self: start; min-height: 50px; }
.active-dispute-summary { margin-top: 20px; padding: 18px; border: 1px solid #d9c9a6; border-left: 5px solid var(--orange); border-radius: 13px; background: #fffaf0; }
.active-dispute-summary dl { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin: 0; }
.active-dispute-summary dt { color: var(--muted); font-size: .62rem; font-weight: 800; text-transform: uppercase; }
.active-dispute-summary dd { margin: 3px 0 0; color: var(--green-dark); font-weight: 900; text-transform: capitalize; }
.active-dispute-summary > p, .active-dispute-summary [data-dispute-resolution-row] p { margin: 16px 0 0; overflow-wrap: anywhere; white-space: pre-wrap; }
.active-dispute-summary [data-dispute-resolution-row] { margin-top: 16px; padding-top: 16px; border-top: 1px solid #ddcfb4; }
.active-dispute-summary [data-dispute-resolution-row] strong { color: var(--green-dark); }
.active-dispute-feedback { margin-top: 13px; padding: 11px 13px; color: var(--green-dark); border: 1px solid var(--homle-success, #137738); border-radius: 10px; background: #eff9f5; font-weight: 700; }
.active-dispute-feedback[data-kind="error"] { color: #7a221b; border-color: #dfa9a2; background: #fff2f0; }
.active-dispute-card button[aria-busy="true"] { cursor: progress; opacity: .65; }
.active-message-boundary { margin: 10px 0 0; color: var(--muted); font-size: .74rem; }
.active-message-older { display: flex; min-height: 42px; margin: 18px auto 0; }
.active-message-list { display: grid; gap: 10px; max-height: 420px; margin-top: 18px; padding: 4px; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
.active-message { max-width: min(82%, 620px); padding: 11px 13px; border: 1px solid #d5dfdc; border-radius: 4px 14px 14px; background: #f4f7f6; }
.active-message-own { justify-self: end; border-color: var(--homle-success, #137738); border-radius: 14px 4px 14px 14px; background: #e7f6f1; }
.active-message > div { display: flex; justify-content: space-between; gap: 15px; align-items: baseline; }
.active-message strong { color: var(--green-dark); font-size: .7rem; }
.active-message time { color: var(--muted); font-size: .58rem; }
.active-message p { margin: 5px 0 0; overflow-wrap: anywhere; white-space: pre-wrap; color: var(--ink); font-size: .78rem; }
.active-message-empty { margin-top: 18px; padding: 20px; border: 1px dashed #b9cbc5; border-radius: 12px; text-align: center; }
.active-message-empty strong { color: var(--green-dark); }
.active-message-empty p { margin: 4px 0 0; color: var(--muted); font-size: .74rem; }
.active-message-form { display: grid; gap: 8px; margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line); }
.active-message-form label { color: var(--green-dark); font-size: .72rem; font-weight: 850; }
.active-message-form textarea { min-height: 88px; resize: vertical; }
.active-message-form > div { display: flex; justify-content: space-between; gap: 14px; align-items: center; }
.active-message-form small { color: var(--muted); }
.active-message-form .button { min-width: 150px; min-height: 48px; }
.active-message-form button[aria-busy="true"] { cursor: progress; opacity: .65; }
.active-message-feedback { margin-top: 12px; padding: 11px 13px; color: var(--green-dark); border: 1px solid var(--homle-success, #137738); border-radius: 10px; background: #eff9f5; font-weight: 700; }
.active-message-feedback[data-kind="error"] { color: #7a221b; border-color: #dfa9a2; background: #fff2f0; }
.active-empty-tasks { margin-top: 18px; padding: 18px; border: 1px dashed #b9cbc5; border-radius: 12px; text-align: center; }
.active-empty-tasks p { margin: 4px 0 0; color: var(--muted); }
.active-property-card > p { margin: 14px 0 0; color: var(--green-dark); font-weight: 800; }
.active-property-instructions { display: grid; gap: 1px; margin: 18px 0 0; overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: var(--line); }
.active-property-instructions div { padding: 13px 14px; background: #fbfdfc; }
.active-property-instructions dd { white-space: pre-wrap; }
.active-job-actions { position: sticky; top: 20px; display: grid; gap: 14px; padding: 24px; }
.active-job-actions h2 { margin: 4px 0 8px; font-size: 1.75rem; }
.active-job-actions > div:first-child > p:last-child { margin: 0; color: var(--muted); }
.active-primary-action { min-height: 64px; font-size: 1.06rem; box-shadow: 0 10px 24px rgba(14,102,91,.2); }
.active-action-sequence { display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; margin: -3px 0 2px; padding: 0; list-style: none; counter-reset: active-action; }
.active-action-sequence li { color: var(--muted); font-size: .55rem; font-weight: 750; text-align: center; }
.active-action-sequence li::before { display: grid; width: 20px; height: 20px; margin: 0 auto 4px; place-items: center; border: 1px solid #c6d8d2; border-radius: 50%; background: #f5f9f7; color: var(--green-dark); content: counter(active-action); counter-increment: active-action; }
.active-job-actions > .button-outline { min-height: 50px; }
.active-job-actions button[aria-busy="true"] { cursor: progress; opacity: .65; }
.active-job-evidence { padding: 15px; border: 1px solid var(--line); border-radius: 12px; background: #fafcfb; }
.active-job-evidence strong { color: var(--green-dark); }
.active-job-evidence p { margin: 4px 0 0; color: var(--muted); font-size: .72rem; }
.active-photo-controls { display: grid; gap: 8px; margin-top: 13px; }
.active-photo-controls .button { width: 100%; min-height: 48px; }
.active-connection-card { display: grid; grid-template-columns: 11px minmax(0, 1fr) auto; gap: 11px; align-items: center; padding-top: 15px; border-top: 1px solid var(--line); }
.active-connection-card > span { flex: 0 0 auto; width: 11px; height: 11px; border-radius: 50%; background: #82928d; }
.active-connection-card > span[data-kind="live"] { background: var(--homle-success, #137738); box-shadow: 0 0 0 5px rgba(29,155,115,.12); }
.active-connection-card > span[data-kind="offline"] { background: #b34b38; }
.active-connection-card > span[data-kind="closed"] { background: #687a75; }
.active-connection-card strong, .active-connection-card small { display: block; }
.active-connection-card small { margin-top: 2px; color: var(--muted); }
.active-connection-card .button { min-height: 42px; padding-inline: 14px; font-size: .7rem; }
.active-job-dialog { width: min(92vw, 540px); padding: 0; border: 0; border-radius: 20px; box-shadow: 0 24px 80px rgba(16,36,33,.3); }
.active-job-dialog::backdrop { background: rgba(10,30,27,.55); backdrop-filter: blur(3px); }
.active-job-dialog form { display: grid; gap: 15px; padding: 26px; }
.active-job-dialog h2, .active-job-dialog p { margin: 0; }
.active-job-dialog p { color: var(--muted); }
.active-job-dialog label { font-weight: 800; }
.active-job-dialog label span { color: var(--muted); font-weight: 500; }
.active-job-dialog form > div { display: flex; justify-content: end; gap: 10px; }
.landlord-invitation-quote-dialog .landlord-invitation-quote-person, .landlord-invitation-quote-dialog .landlord-invitation-quote-total { display: grid; justify-content: stretch; gap: 4px; padding: 16px 18px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 14px; background: #edf8f4; }
.landlord-invitation-quote-dialog .landlord-invitation-quote-person span, .landlord-invitation-quote-dialog .landlord-invitation-quote-total span { color: var(--muted); font-size: .82rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.landlord-invitation-quote-dialog .landlord-invitation-quote-person strong { color: var(--green-dark); font-size: 1.1rem; }
.landlord-invitation-quote-dialog .landlord-invitation-quote-total strong { color: var(--green-dark); font-size: clamp(1.7rem, 7vw, 2.4rem); line-height: 1; }
.active-photo-dialog .active-photo-preview { display: grid; grid-template-columns: 96px 1fr; gap: 13px; align-items: center; justify-content: stretch; overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: #f7faf8; }
.active-photo-preview img { width: 96px; height: 96px; object-fit: cover; background: #dce8e4; }
.active-photo-preview strong, .active-photo-preview small { display: block; overflow-wrap: anywhere; }
.active-photo-preview small { margin-top: 4px; color: var(--muted); }
.active-photo-dialog select { width: 100%; margin-top: 5px; }
.active-photo-dialog form > .active-photo-upload-state { display: block; }
.active-photo-dialog button[aria-busy="true"] { cursor: progress; opacity: .65; }
.active-photo-viewer { width: min(94vw, 900px); }
.active-photo-viewer > div { display: grid; gap: 16px; padding: 24px; }
.active-photo-viewer img { display: block; width: 100%; max-height: 68vh; object-fit: contain; border-radius: 13px; background: #10211e; }
.active-photo-viewer p { margin: 0; overflow-wrap: anywhere; color: var(--ink); }
.active-photo-viewer small { color: var(--muted); }

@media (max-width: 980px) {
  .active-job-layout { grid-template-columns: 1fr; }
  .active-job-actions { position: static; }
  .active-journey-facts { grid-template-columns: repeat(2, 1fr); }
  .active-journey-facts div:nth-child(2) { border-right: 0; }
  .active-journey-facts div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .active-task-editor { grid-template-columns: 1fr 1fr; }
  .active-task-editor .button { grid-column: 1 / -1; }
}

@media (max-width: 680px) {
  .active-job-header nav a:last-child { display: none; }
  .active-job-main { padding-block: 24px 110px; }
  .active-job-gate { grid-template-columns: 34px 1fr; padding: 18px 15px; border-radius: 18px; }
  .active-job-gate > span { width: 32px; height: 32px; }
  .active-job-heading { display: grid; gap: 16px; }
  .active-job-reference { width: 100%; }
  .active-job-stages { margin-inline: -8px; }
  .active-job-stages small { max-width: 48px; font-size: .55rem; }
  .active-job-stages span { width: 29px; height: 29px; }
  .active-job-stages li::before { top: 14px; }
  .active-journey-card, .active-progress-card, .active-photo-card, .active-review-card, .active-dispute-card, .active-message-card, .active-property-card, .active-job-actions { border-radius: 18px; }
  .active-card-heading { display: grid; }
  .active-private-pill { justify-self: start; }
  .active-location-surface { min-height: 250px; }
  .active-journey-facts { grid-template-columns: 1fr; }
  .active-journey-facts div { border-right: 0; border-bottom: 1px solid var(--line); }
  .active-journey-facts div:last-child { border-bottom: 0; }
  .active-task-editor { grid-template-columns: 1fr; }
  .active-task-editor .button { grid-column: 1; width: 100%; }
  .active-task-complete { width: 100%; }
  .active-task-decisions { display: grid; }
  .active-task-decisions .button, .active-job-actions > .button { width: 100%; }
  .active-photo-list { grid-template-columns: 1fr; }
  .active-photo { grid-template-columns: 1fr; }
  .active-photo .button { width: 100%; }
  .active-review-stars > div, .active-review-score-grid { grid-template-columns: 1fr; }
  .active-review-stars > div { grid-template-columns: repeat(5, minmax(48px, 1fr)); overflow-x: auto; padding: 3px; }
  .active-review-confirm .button, .active-review-form > .button, .active-review-response-form > .button, .active-review-workspace { width: 100%; }
  .active-connection-card { grid-template-columns: 11px minmax(0, 1fr); }
  .active-connection-card .button { grid-column: 1 / -1; width: 100%; }
  .active-dispute-form .button { width: 100%; }
  .active-dispute-summary dl { grid-template-columns: 1fr; }
  .active-message { max-width: 92%; }
  .active-message-list { max-height: 55vh; margin-inline: -4px; }
  .active-message-form > div { align-items: stretch; }
  .active-message-form .button { min-width: 0; }
  .active-job-actions { padding: 20px 16px; }
  .active-primary-action { min-height: 66px; }
  .active-job-dialog form { padding: 22px 17px; }
  .active-job-dialog form > div { display: grid; }
  .active-photo-dialog .active-photo-preview { grid-template-columns: 78px 1fr; }
  .active-photo-preview img { width: 78px; height: 78px; }
  .active-photo-viewer > div { padding: 18px 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .active-location-cleaner { transition: none; animation: none; }
  .active-progress-track i { transition: none; }
}

/* Participant booking dashboards */
.booking-dashboard-page { min-height: 100vh; background: var(--homle-cream, #f7f4eb); }
.booking-dashboard-main { min-height: calc(100vh - 160px); padding-block: clamp(32px, 6vw, 72px) 96px; }
.booking-dashboard-gate { display: grid; grid-template-columns: 42px 1fr; gap: 16px; max-width: 760px; margin: 5vh auto 0; padding: 25px; border: 1px solid var(--line); border-radius: 24px; background: #fff; box-shadow: 0 18px 50px rgba(16,36,33,.08); }
.booking-dashboard-gate > span { display: grid; width: 40px; height: 40px; place-items: center; color: #fff; border-radius: 50%; background: var(--green); font-weight: 900; }
.booking-dashboard-gate strong { display: block; color: var(--green-dark); font-size: 1.08rem; }
.booking-dashboard-gate p { margin: 5px 0 0; color: var(--muted); }
.booking-dashboard-gate div > div { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 15px; }
.booking-dashboard-gate[data-kind="unavailable"] { border-color: #e2bb76; background: #fff9e9; }
.booking-dashboard-gate[data-kind="unavailable"] > span { background: #996010; }
.booking-dashboard-gate[data-kind="offline"] { border-color: #d9a55f; background: #fff6df; }
.booking-dashboard-gate[data-kind="offline"] > span { background: #8a520c; }
.booking-dashboard-gate[data-kind="error"], .booking-dashboard-gate[data-kind="authentication"] { border-color: #dfa9a2; background: #fff6f4; }
.booking-dashboard-gate[data-kind="error"] > span, .booking-dashboard-gate[data-kind="authentication"] > span { background: #963b32; }
.cleaner-network-status { position: sticky; z-index: 20; top: 10px; display: grid; grid-template-columns: 34px 1fr; gap: 12px; align-items: start; margin-bottom: 18px; padding: 13px 16px; color: #70420a; border: 1px solid #d9a55f; border-radius: 13px; background: #fff6df; box-shadow: 0 8px 24px rgba(74,45,10,.12); }
.cleaner-network-status[hidden] { display: none; }
.cleaner-network-status > span { display: grid; width: 32px; height: 32px; place-items: center; color: #fff; border-radius: 50%; background: #8a520c; font-weight: 900; }
.cleaner-network-status strong { display: block; }
.cleaner-network-status p { margin: 3px 0 0; font-size: .78rem; line-height: 1.45; }
.booking-dashboard-heading { display: flex; justify-content: space-between; gap: 30px; align-items: end; margin-bottom: 24px; }
.booking-dashboard-heading h1 { max-width: 880px; margin: 5px 0 10px; font-size: clamp(2.8rem, 7vw, 5.8rem); line-height: .94; }
.booking-dashboard-heading p:last-child { max-width: 690px; margin: 0; color: var(--muted); }
.booking-dashboard-stats { display: grid; grid-template-columns: repeat(3, 1fr); margin: 0 0 24px; overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: #fff; box-shadow: 0 12px 34px rgba(16,36,33,.06); }
.booking-dashboard-stats div { padding: 17px 20px; border-right: 1px solid var(--line); }
.booking-dashboard-stats div:last-child { border-right: 0; }
.booking-dashboard-stats dt { color: var(--muted); font-size: .67rem; font-weight: 800; text-transform: uppercase; }
.booking-dashboard-stats dd { margin: 5px 0 0; color: var(--green-dark); font-size: 2rem; font-weight: 900; }
.booking-dashboard-stats small { display: block; margin-top: 2px; color: var(--muted); font-size: .62rem; }
.admin-bookings-page .booking-dashboard-stats { grid-template-columns: repeat(4, 1fr); }
.cleaner-work-overview { margin: 0 0 24px; padding: clamp(20px,4vw,30px); color: #fff; border: 1px solid var(--homle-muted, #665f61); border-radius: 22px; background: linear-gradient(145deg,var(--homle-ink, #0b090a),#073d38); box-shadow: 0 18px 44px rgba(7,62,56,.17); }
.cleaner-overview-heading { display: flex; justify-content: space-between; gap: 22px; align-items: start; }
.cleaner-overview-heading .eyebrow { color: var(--homle-eyebrow, #8a5347); }
.cleaner-overview-heading h2 { margin: 4px 0 5px; color: #fff; font-size: clamp(1.55rem,3vw,2.15rem); }
.cleaner-overview-heading p:last-child { margin: 0; color: #c8e0da; }
.cleaner-overview-heading .button-outline { flex: 0 0 auto; color: #073e38; border-color: var(--homle-mint, #2ed47a); background: var(--homle-mint, #2ed47a); }
.cleaner-readiness-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); margin: 22px 0 0; overflow: hidden; border: 1px solid rgba(255,255,255,.19); border-radius: 16px; background: rgba(255,255,255,.06); }
.cleaner-readiness-grid div { padding: 16px; border-right: 1px solid rgba(255,255,255,.17); }
.cleaner-readiness-grid div:last-child { border-right: 0; }
.cleaner-readiness-grid dt, .cleaner-earnings-summary span { color: var(--homle-mint, #2ed47a); font-size: .67rem; font-weight: 850; text-transform: uppercase; }
.cleaner-readiness-grid dd { margin: 5px 0 0; color: #fff; font-size: 1.65rem; font-weight: 900; }
.cleaner-readiness-grid small, .cleaner-earnings-summary small { display: block; margin-top: 3px; color: #c8e0da; font-size: .67rem; }
.cleaner-earnings-summary { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; margin-top: 12px; }
.cleaner-earnings-summary > div { padding: 15px; border-radius: 13px; background: rgba(255,255,255,.09); }
.cleaner-earnings-summary strong { display: block; margin-top: 5px; color: #fff; font-size: 1.2rem; }
.cleaner-earnings-boundary { margin: 13px 0 0; color: #c8e0da; font-size: .75rem; }
.booking-money-boundary { margin: .8rem 0 0; padding: .72rem .85rem; border-left: 3px solid var(--accent); background: color-mix(in srgb, var(--accent) 7%, white); color: var(--muted); font-size: .86rem; line-height: 1.45; }
.cleaner-overview-actions { display: flex; flex-wrap: wrap; gap: 15px; margin-top: 15px; padding-top: 14px; border-top: 1px solid rgba(255,255,255,.16); }
.cleaner-overview-actions a { color: var(--homle-line-soft, #e8e2e0); font-weight: 820; }
.admin-profit-guard { margin-bottom: 18px; border-color: var(--homle-muted, #665f61); background: linear-gradient(135deg,#eaf8f3,#fff); }
.booking-dashboard-section, .booking-history-section { margin-top: 22px; padding: clamp(20px, 4vw, 30px); border: 1px solid var(--line); border-radius: 22px; background: #fff; box-shadow: 0 14px 42px rgba(16,36,33,.06); }
.booking-pending-section { border-color: #ddad68; background: linear-gradient(145deg, #fffdf7, #fff9e9); }
.booking-section-heading { display: flex; justify-content: space-between; gap: 18px; align-items: start; }
.booking-section-heading h2 { margin: 4px 0 0; font-size: clamp(1.6rem, 4vw, 2.4rem); }
.booking-private-pill { flex: 0 0 auto; padding: .45rem .65rem; color: var(--green-dark); border: 1px solid var(--homle-line, #dcd4d1); border-radius: 999px; background: #eff9f5; font-size: .64rem; font-weight: 850; }
.booking-dashboard-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 20px; }
.booking-summary-card { display: grid; gap: 14px; align-content: start; min-width: 0; padding: 18px; border: 1px solid #c8d9d4; border-radius: 15px; background: #fbfdfc; }
.booking-summary-heading { display: flex; justify-content: space-between; gap: 14px; align-items: start; }
.booking-status-pill { display: inline-block; padding: .32rem .5rem; color: var(--green-dark); border: 1px solid var(--homle-line, #dcd4d1); border-radius: 999px; background: #edf8f4; font-size: .58rem; font-weight: 850; }
.booking-summary-heading h3 { margin: 8px 0 3px; color: var(--green-dark); font-size: 1.18rem; text-transform: capitalize; }
.booking-summary-heading p { margin: 0; color: var(--muted); font-size: .72rem; }
.booking-summary-price { display: grid; flex: 0 0 auto; gap: 2px; justify-items: end; color: var(--green-dark); }
.booking-summary-price small { color: var(--muted); font-size: .56rem; font-weight: 850; text-transform: uppercase; }
.booking-summary-price strong { font-size: 1.15rem; }
.booking-summary-facts { display: grid; grid-template-columns: 1.4fr 1fr; gap: 1px; margin: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 10px; background: var(--line); }
.booking-summary-facts div { min-width: 0; padding: 10px 11px; background: #fff; }
.booking-summary-facts dt { color: var(--muted); font-size: .57rem; font-weight: 800; text-transform: uppercase; }
.booking-summary-facts dd { margin: 3px 0 0; overflow-wrap: anywhere; color: var(--green-dark); font-size: .7rem; font-weight: 780; }
.booking-response-deadline { margin: 0; color: #7c4a0b; font-size: .7rem; font-weight: 800; }
.booking-summary-card[data-deadline-state="urgent"] { border-color: #d7831d; box-shadow: 0 0 0 3px rgba(215,131,29,.12); }
.booking-response-deadline[data-kind="urgent"] { padding: 10px 12px; border-radius: 10px; background: #fff1d8; font-size: .78rem; }
.booking-response-deadline[data-kind="expired"], .booking-response-deadline[data-kind="unavailable"], .booking-response-deadline[data-kind="closed"] { padding: 10px 12px; color: #8b2118; border-radius: 10px; background: #fff0ee; font-size: .78rem; }
.booking-accept-boundary { margin: 0; padding: 10px 12px; color: #31534d; border-left: 3px solid var(--green); background: var(--mint-pale); font-size: .72rem; line-height: 1.45; }
.booking-summary-actions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: auto; }
.booking-summary-actions .button, .booking-summary-card > .button { min-height: 46px; }
.booking-dashboard-empty { margin-top: 18px; padding: 22px; border: 1px dashed #b8cac4; border-radius: 13px; text-align: center; }
.booking-dashboard-empty strong { color: var(--green-dark); }
.booking-dashboard-empty p { margin: 5px 0 0; color: var(--muted); }
.booking-history-section { display: block; }
.booking-history-section > summary { cursor: pointer; color: var(--green-dark); font-weight: 850; }
.booking-history-section > summary span { display: inline-grid; min-width: 24px; height: 24px; margin-left: 5px; place-items: center; border-radius: 50%; background: #e8f3ef; font-size: .7rem; }
.booking-dashboard-feedback { position: sticky; bottom: 14px; margin-top: 18px; padding: 13px 16px; border: 1px solid var(--homle-line, #dcd4d1); border-radius: 12px; background: #eff9f5; color: var(--green-dark); box-shadow: 0 10px 30px rgba(16,36,33,.14); font-weight: 750; }
.booking-dashboard-feedback[data-kind="error"] { color: #782119; border-color: #dfa9a2; background: #fff2ef; }
.booking-dashboard-feedback:has(.button) { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.booking-dashboard-feedback .button { flex: 0 0 auto; }
@media (max-width: 640px) {
  .booking-dashboard-feedback:has(.button) { align-items: stretch; flex-direction: column; }
  .booking-dashboard-feedback .button { width: 100%; }
}
.landlord-booking-section { margin-bottom: 24px; }
.landlord-waiting-section { margin-top: 20px; padding: 18px; border: 1px solid #e4ad73; border-radius: 16px; background: linear-gradient(145deg,#fff8ed,#fffdf9); }
.landlord-waiting-section > div:first-child h3 { margin: 3px 0 4px; color: #6d3908; font-size: 1.25rem; }
.landlord-waiting-section > div:first-child h3 span { display: inline-grid; min-width: 25px; height: 25px; margin-left: 5px; place-items: center; border-radius: 50%; background: #ffe0b8; font-size: .75rem; vertical-align: middle; }
.landlord-waiting-section > div:first-child > p:last-child { margin: 0; color: var(--muted); font-size: .77rem; }
.landlord-waiting-list { grid-template-columns: 1fr; }
.landlord-waiting-card { border-color: #e4ad73; background: #fffdf9; }
.landlord-waiting-deadline { margin: 0; padding: 11px 13px; color: #6d3908; border-left: 3px solid #d87937; background: #fff2df; font-size: .78rem; font-weight: 820; line-height: 1.45; }
.landlord-waiting-deadline[data-kind="urgent"] { border-color: #b64c1f; background: #ffe7d2; }
.landlord-waiting-deadline[data-kind="expired"], .landlord-waiting-deadline[data-kind="unavailable"] { color: #7e221a; border-color: #a33a30; background: #fff0ed; }
.landlord-history-overview { margin-top: 22px; padding: 20px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 18px; background: #f6fbf8; }
.landlord-history-heading { display: flex; justify-content: space-between; gap: 20px; align-items: end; }
.landlord-history-heading h3 { margin: 4px 0 0; color: var(--green-dark); font-size: clamp(1.25rem, 3vw, 1.7rem); }
.landlord-history-heading > p { max-width: 330px; margin: 0; color: var(--muted); font-size: .82rem; }
.landlord-history-stats { display: grid; grid-template-columns: repeat(4, 1fr); margin: 18px 0; overflow: hidden; border: 1px solid var(--line); border-radius: 15px; background: #fff; }
.landlord-history-stats div { padding: 14px; border-right: 1px solid var(--line); }
.landlord-history-stats div:last-child { border-right: 0; }
.landlord-history-stats dt { color: var(--muted); font-size: .66rem; font-weight: 850; text-transform: uppercase; }
.landlord-history-stats dd { margin: 5px 0 0; color: var(--green-dark); font-size: 1.35rem; font-weight: 900; }
.landlord-previous-cleaners > strong { color: var(--green-dark); }
.landlord-previous-cleaners > p { margin-bottom: 0; color: var(--muted); font-size: .82rem; }
.landlord-previous-cleaner-list { display: grid; gap: 8px; margin-top: 10px; }
.landlord-previous-cleaner { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 11px 13px; border: 1px solid var(--line); border-radius: 13px; background: #fff; }
.landlord-previous-cleaner > div { display: flex; align-items: center; gap: 10px; min-width: 0; }
.landlord-previous-cleaner > div > div { display: grid; min-width: 0; }
.landlord-previous-cleaner small { color: var(--muted); }
.landlord-previous-cleaner > .landlord-previous-actions { display: flex; gap: 10px; align-items: center; justify-content: end; }
.landlord-previous-actions .button { min-height: 42px; padding: .65rem .9rem; }
.landlord-previous-avatar { display: grid; width: 36px; height: 36px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: var(--homle-line-soft, #e8e2e0); color: var(--green-dark); font-weight: 900; }
.landlord-favourite-cleaners { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line); }
.landlord-favourite-heading { display: flex; justify-content: space-between; gap: 18px; align-items: start; }
.landlord-favourite-heading strong { color: var(--green-dark); }
.landlord-favourite-heading p, .landlord-favourite-cleaners > p { margin: 4px 0 0; color: var(--muted); font-size: .82rem; }
.landlord-favourite-list { display: grid; gap: 8px; margin-top: 10px; }
.landlord-favourite-cleaner { display: flex; justify-content: space-between; gap: 15px; align-items: center; padding: 12px 13px; border: 1px solid var(--line); border-radius: 13px; background: #fff; }
.landlord-favourite-identity { display: flex; gap: 10px; align-items: center; min-width: 0; }
.landlord-favourite-identity > div { display: grid; min-width: 0; }
.landlord-favourite-identity small { color: var(--muted); }
.landlord-favourite-actions { display: flex; gap: 10px; align-items: center; }
.landlord-favourite-actions .button { min-height: 42px; padding: .65rem .9rem; }
.landlord-booking-live { display: grid; justify-items: end; gap: 7px; max-width: 310px; color: var(--muted); font-size: .7rem; text-align: right; }
.landlord-booking-live span::before { display: inline-block; width: 8px; height: 8px; margin-right: 7px; border-radius: 50%; background: #82938e; content: ""; }
.landlord-booking-live span[data-kind="live"]::before, .landlord-booking-live span[data-kind="success"]::before { background: var(--homle-success, #137738); }
.landlord-booking-live span[data-kind="attention"]::before { background: #c47718; }
.landlord-booking-live span[data-kind="error"]::before { background: #a13a30; }
.landlord-booking-live .text-button { min-height: 40px; padding: 6px 0; }

/* Authenticated marketplace case operations */
.admin-cases-page .admin-nav > div { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 10px 16px; }
.admin-cases-page .admin-nav .back-link { margin-left: 0; }
.network-status { position: sticky; z-index: 20; top: 10px; margin-bottom: 18px; padding: 12px 16px; border: 1px solid #d9a55f; border-radius: 12px; color: #70420a; background: #fff6df; box-shadow: 0 8px 24px rgba(74,45,10,.12); font-weight: 800; }
.admin-cases-section { padding: 0; overflow: hidden; }
.admin-cases-toolbar { display: flex; align-items: end; justify-content: space-between; gap: 24px; padding: clamp(20px, 4vw, 30px); border-bottom: 1px solid var(--line); }
.admin-cases-toolbar h2 { margin: 0 0 6px; color: var(--green-dark); font-size: clamp(1.5rem, 3vw, 2.1rem); }
.admin-cases-toolbar p { max-width: 690px; margin: 0; color: var(--muted); }
.admin-cases-toolbar label { display: grid; flex: 0 0 min(220px, 34vw); gap: 7px; color: var(--green-dark); font-size: .8rem; font-weight: 900; }
.admin-cases-toolbar select { min-height: 46px; }
.admin-cases-list { display: grid; gap: 0; }
.admin-case-card { display: grid; gap: 18px; padding: clamp(20px, 4vw, 30px); border-bottom: 1px solid var(--line); background: #fff; }
.admin-case-card:last-child { border-bottom: 0; }
.admin-case-card-heading { display: flex; align-items: start; justify-content: space-between; gap: 24px; }
.admin-case-card-heading h3 { margin: 9px 0 4px; color: var(--green-dark); font-size: 1.45rem; }
.admin-case-card-heading p { margin: 0; color: var(--muted); }
.admin-case-card-heading time { color: var(--muted); font-size: .78rem; font-weight: 800; white-space: nowrap; }
.admin-case-status-open { color: #7a4205; border-color: #e1b36e; background: #fff4da; }
.admin-case-status-reviewing { color: #174d65; border-color: #9ecadd; background: #edf8fc; }
.admin-case-status-resolved, .admin-case-status-closed { color: var(--homle-success, #137738); border-color: var(--homle-success, #137738); background: #edf9f5; }
.admin-case-description { max-width: 900px; margin: 0; color: #243d37; font-size: 1rem; line-height: 1.65; white-space: pre-wrap; overflow-wrap: anywhere; }
.admin-case-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 13px; background: #f8fbfa; }
.admin-case-facts div { padding: 12px 14px; border-right: 1px solid var(--line); }
.admin-case-facts div:last-child { border-right: 0; }
.admin-case-facts dt { color: var(--muted); font-size: .67rem; font-weight: 850; text-transform: uppercase; }
.admin-case-facts dd { margin: 4px 0 0; color: var(--green-dark); font-weight: 850; }
.admin-case-resolution { padding: 16px 18px; border-left: 4px solid var(--green); border-radius: 0 12px 12px 0; background: var(--mint-pale); }
.admin-case-resolution strong { color: var(--green-dark); }
.admin-case-resolution p { margin: 6px 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.admin-case-resolution small { color: var(--muted); }
.admin-cases-pagination { display: flex; align-items: center; justify-content: center; gap: 18px; padding: 20px; border-top: 1px solid var(--line); background: #f8fbfa; }
.admin-cases-pagination span { min-width: 70px; color: var(--green-dark); font-weight: 900; text-align: center; }
.admin-case-dialog small { color: var(--muted); line-height: 1.45; }
.admin-case-dialog textarea { resize: vertical; }
.admin-case-confirmation { grid-template-columns: 22px 1fr !important; align-items: start; padding: 14px; border: 1px solid #e1b36e; border-radius: 12px; background: #fff8e8; }
.admin-case-confirmation input { width: 19px; height: 19px; margin-top: 2px; accent-color: var(--green); }
.admin-case-policy-banner { display: grid; grid-template-columns: minmax(220px, .8fr) minmax(300px, 1.2fr); gap: 22px; align-items: center; margin: 0 0 20px; padding: 20px; border: 1px solid var(--homle-line-soft, #e8e2e0); border-left: 5px solid var(--green); border-radius: 16px; background: #edf8f5; }
.admin-case-policy-banner h2, .admin-case-policy-banner p { margin: 0; }
.admin-case-policy-banner h2 { font-size: 1.2rem; }
.admin-case-policy { display: grid; gap: 10px; padding: 16px; border: 1px solid #c8ddd7; border-radius: 14px; background: #f4faf8; }
.admin-case-policy h3, .admin-case-policy p, .admin-case-policy ul { margin: 0; }
.admin-case-policy ul { padding-left: 22px; }
.admin-case-policy li + li { margin-top: 5px; }
.admin-case-priority { display: inline-flex; margin-bottom: 6px; padding: 4px 9px; border-radius: 999px; background: #d7eee8; color: var(--homle-ink-2, #211d1e); font-size: .78rem; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; }
.admin-case-policy-boundary { padding: 10px 12px; border-left: 4px solid #c56b24; background: #fff8ed; font-weight: 700; }

@media (max-width: 820px) {
  .admin-bookings-page .booking-dashboard-stats { grid-template-columns: repeat(2, 1fr); }
  .cleaner-readiness-grid { grid-template-columns: repeat(2,1fr); }
  .cleaner-readiness-grid div:nth-child(2) { border-right: 0; }
  .cleaner-readiness-grid div:nth-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,.17); }
  .booking-dashboard-list { grid-template-columns: 1fr; }
  .booking-dashboard-heading { display: grid; gap: 18px; }
  .landlord-booking-live { justify-items: start; max-width: none; text-align: left; }
  .landlord-history-stats { grid-template-columns: 1fr 1fr; }
  .landlord-history-stats div:nth-child(2) { border-right: 0; }
  .landlord-history-stats div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .booking-dashboard-heading .button { justify-self: start; }
}

@media (max-width: 620px) {
  .booking-dashboard-main { padding-block: 26px 100px; }
  .booking-dashboard-gate { grid-template-columns: 34px 1fr; padding: 18px 15px; border-radius: 18px; }
  .booking-dashboard-gate > span { width: 32px; height: 32px; }
  .booking-dashboard-heading .button { width: 100%; }
  .booking-dashboard-stats { grid-template-columns: 1fr; }
  .admin-bookings-page .booking-dashboard-stats { grid-template-columns: 1fr; }
  .cleaner-overview-heading { display: grid; }
  .cleaner-overview-heading .button { width: 100%; }
  .cleaner-earnings-summary { grid-template-columns: 1fr; }
  .booking-dashboard-stats div { display: grid; grid-template-columns: 1fr auto; align-items: center; padding: 12px 15px; border-right: 0; border-bottom: 1px solid var(--line); }
  .booking-dashboard-stats div:last-child { border-bottom: 0; }
  .booking-dashboard-stats dd { grid-row: 1; grid-column: 2; margin: 0; }
  .booking-dashboard-section, .booking-history-section { padding: 20px 14px; border-radius: 18px; }
  .admin-cases-page .admin-nav { align-items: start; }
  .admin-cases-page .admin-nav > div { display: grid; justify-items: end; gap: 4px; }
  .admin-cases-section { padding: 0; }
  .admin-case-policy-banner { grid-template-columns: 1fr; }
  .admin-cases-toolbar, .admin-case-card-heading { display: grid; align-items: start; }
  .admin-cases-toolbar { gap: 18px; padding: 20px 14px; }
  .admin-cases-toolbar label { width: 100%; }
  .admin-case-card { padding: 20px 14px; }
  .admin-case-card-heading { gap: 9px; }
  .admin-case-card-heading time { white-space: normal; }
  .admin-case-facts { grid-template-columns: 1fr; }
  .admin-case-facts div { border-right: 0; border-bottom: 1px solid var(--line); }
  .admin-case-facts div:last-child { border-bottom: 0; }
  .admin-cases-pagination { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
  .admin-cases-pagination span { grid-column: 1 / -1; grid-row: 1; }
  .admin-cases-pagination .button { width: 100%; }
  .booking-section-heading { display: grid; }
  .booking-private-pill { justify-self: start; }
  .booking-summary-heading { display: grid; }
  .booking-summary-price strong { font-size: 1.4rem; }
  .booking-summary-facts { grid-template-columns: 1fr; }
  .booking-summary-actions { display: grid; }
  .booking-summary-actions .button, .booking-summary-card > .button { width: 100%; }
  .landlord-history-heading, .landlord-previous-cleaner { align-items: stretch; flex-direction: column; }
  .landlord-previous-cleaner > .landlord-previous-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .landlord-previous-actions .button, .landlord-previous-actions .text-button { width: 100%; text-align: center; }
  .landlord-history-overview { padding: 16px 12px; }
  .landlord-history-stats { grid-template-columns: 1fr; }
  .landlord-history-stats div { display: grid; grid-template-columns: 1fr auto; align-items: center; border-right: 0; border-bottom: 1px solid var(--line); }
  .landlord-history-stats div:nth-child(2) { border-bottom: 1px solid var(--line); }
  .landlord-history-stats div:last-child { border-bottom: 0; }
  .landlord-history-stats dd { margin: 0; }
  .landlord-favourite-heading, .landlord-favourite-cleaner { align-items: stretch; flex-direction: column; }
  .landlord-favourite-actions { display: grid; grid-template-columns: 1fr auto; }
  .landlord-favourite-actions .button { width: 100%; }
}

/* Private account update inbox */
.notifications-main { min-height: calc(100vh - 160px); padding-block: clamp(32px, 6vw, 72px) 96px; }
.notifications-heading { display: flex; justify-content: space-between; gap: 24px; align-items: end; margin-bottom: 24px; }
.notifications-heading h1 { margin: 5px 0 8px; color: var(--green-dark); font-size: clamp(2.55rem, 7vw, 5rem); }
.notifications-heading p:last-child { max-width: 680px; margin: 0; color: var(--muted); }
.notifications-summary { display: flex; justify-content: space-between; gap: 16px; padding: 14px 18px; border: 1px solid var(--line); border-radius: 15px; background: rgba(255,255,255,.82); color: var(--muted); }
.notifications-summary strong { color: var(--green-dark); }
.notification-list { display: grid; gap: 12px; margin-top: 16px; }
.notification-card { display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; gap: 16px; align-items: center; padding: 20px; border: 1px solid var(--line); border-radius: 20px; background: #fff; box-shadow: 0 9px 28px rgba(16,36,33,.05); }
.notification-card-unread { border-color: var(--homle-line-soft, #e8e2e0); background: linear-gradient(145deg, #eaf9f4, #fff); }
.notification-marker { display: grid; width: 34px; height: 34px; place-items: center; border-radius: 50%; background: #edf2ef; color: var(--muted); font-weight: 900; }
.notification-card-unread .notification-marker { background: var(--green); color: #fff; font-size: 1.35rem; }
.notification-card h2 { margin: 0 0 4px; color: var(--green-dark); font-size: 1.08rem; }
.notification-card p { margin: 0 0 7px; color: var(--muted); }
.notification-card time { color: var(--homle-muted, #665f61); font-size: .8rem; font-weight: 750; }
.notification-action { min-width: 135px; text-align: center; white-space: nowrap; }
.notification-empty { margin-top: 16px; }
.notification-empty .button { margin-top: 10px; }
.notification-feedback { margin-top: 16px; }
.notification-load-more { display: block; margin: 20px auto 0; }
.workspace-role-nav[hidden] { display: none !important; }
.notifications-page .workspace-identity-pill { color: var(--homle-ink-2, #211d1e); border-color: var(--homle-line-soft, #e8e2e0); background: #edf8f5; }
.notifications-page.cleaner-workspace-page .workspace-identity-pill { color: #073e38; border-color: var(--homle-line-soft, #e8e2e0); background: var(--homle-beam, #7be8ac); }
.directory-nav a[data-notification-link] { display: inline-flex; gap: 6px; align-items: center; }
.notification-nav-count { display: inline-grid; min-width: 20px; height: 20px; padding-inline: 5px; place-items: center; border-radius: 999px; background: var(--green); color: #fff; font-size: .68rem; font-weight: 900; line-height: 1; }
@media (max-width: 680px) {
  .dashboard-partial-status { grid-template-columns: auto minmax(0,1fr); }
  .dashboard-partial-status .button { grid-column: 1 / -1; width: 100%; }
  .role-account-avatar { width: 56px; height: 56px; flex-basis: 56px; border-radius: 18px; }
  .role-dashboard-person { padding: 12px; }
  .cleaner-dashboard-nav a[aria-current="page"], .landlord-dashboard-nav a[aria-current="page"] { display: inline-flex; }
  .workspace-identity-pill { display: none; }
  .account-menu summary { width: 40px; height: 40px; }
  .account-avatar { width: 34px; height: 34px; }
  .account-menu-panel { position: fixed; top: 72px; right: 12px; left: 12px; min-width: 0; }
  .notifications-main { padding-block: 27px 90px; }
  .cleaner-workspace-page .nav-wrap, .landlord-dashboard-page .nav-wrap { flex-wrap: wrap; gap: 10px 14px; padding-block: 8px; }
  .cleaner-workspace-page .directory-nav, .landlord-dashboard-page .directory-nav { order: 3; width: 100%; gap: 18px; padding: 4px 2px 7px; overflow-x: auto; scrollbar-width: thin; }
  .cleaner-workspace-page .directory-nav a, .landlord-dashboard-page .directory-nav a { display: inline-flex; flex: 0 0 auto; min-height: 32px; align-items: center; }
  .cleaner-workspace-page .account-menu, .landlord-dashboard-page .account-menu { margin-left: auto; }
  .cleaner-profile-steps, .landlord-workspace-tabs { top: 132px; }
  .notifications-page .directory-nav a { display: block; }
  .notifications-heading { display: grid; align-items: stretch; }
  .notifications-heading .button { width: 100%; }
  .notifications-summary { align-items: start; flex-direction: column; }
  .notification-card { grid-template-columns: 34px minmax(0, 1fr); padding: 17px 14px; border-radius: 17px; }
  .notification-action { grid-column: 1 / -1; width: 100%; }
  .notification-load-more { width: 100%; }
}

/* Protected test-payment operations */
.admin-payment-boundary { border-color: #f2c572; background: #fff8e8; }
.admin-payment-card .admin-case-card-heading { align-items: flex-start; }
.admin-payment-facts { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.admin-payment-next { margin: 0; padding: .85rem 1rem; border-left: 4px solid var(--green); border-radius: 0 12px 12px 0; background: #edf8f5; color: var(--ink); }
.admin-payment-next p { margin: .25rem 0 0; color: var(--muted); }
.admin-payment-next-payout-wait, .admin-payment-next-refresh { border-color: #b16f16; background: #fff8e8; }
.admin-payment-next-refund-review { border-color: #b43b2b; background: #fff0ed; }
.admin-payment-waiting, .admin-payment-warning { margin: 0; padding: .8rem 1rem; border-left: 4px solid #b16f16; background: #fff8e8; color: #684300; }
.admin-payment-warning { border-color: #b43b2b; background: #fff0ed; color: #8a1c0e; }
.admin-payment-case-handoff { align-items: center; gap: 1rem; }
.admin-payment-case-handoff > .button { flex: 0 0 auto; }
.admin-payment-confirmation-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; margin: 0; }
.admin-payment-confirmation-facts div { padding: .75rem; border: 1px solid var(--line); border-radius: .75rem; background: var(--mist); }
.admin-payment-confirmation-facts dt { color: var(--muted); font-size: .82rem; }
.admin-payment-confirmation-facts dd { margin: .2rem 0 0; font-weight: 800; }
.admin-bookings-list { display: grid; gap: 1rem; }
.admin-booking-card-attention { border-left: 5px solid #d97904; }
.admin-booking-next { margin: .9rem 0; padding: .85rem 1rem; border-radius: 12px; background: #edf8f5; }
.admin-booking-next p { margin: .25rem 0 0; }
.admin-booking-match-readiness { margin: .9rem 0; padding: .9rem 1rem; border: 1px solid var(--homle-line-soft, #e8e2e0); border-radius: 12px; background: #f7fcfb; }
.admin-booking-match-readiness p { margin: .3rem 0 .75rem; }
@media (max-width: 680px) {
  .admin-payment-facts, .admin-payment-confirmation-facts { grid-template-columns: 1fr 1fr; }
  .admin-payment-card .booking-summary-actions { display: grid; grid-template-columns: 1fr; }
  .admin-payment-card .booking-summary-actions .button { width: 100%; min-height: 3rem; }
  .admin-payment-case-handoff { align-items: stretch; }
  .admin-payment-case-handoff > .button { width: 100%; }
}

/* Final role-dashboard composition. Kept after shared dashboard rules so the two account homes remain distinct. */
.cleaner-dashboard-page .cleaner-dashboard-identity {
  display: grid;
  grid-template-areas: "identity welcome action" "identity boundary boundary";
  grid-template-columns: minmax(220px,.5fr) minmax(320px,1fr) auto;
  gap: 18px 30px;
  align-items: start;
}
.cleaner-dashboard-identity > .role-dashboard-person { grid-area: identity; }
.cleaner-dashboard-identity > .role-dashboard-welcome { grid-area: welcome; }
.cleaner-dashboard-identity > .role-dashboard-boundary { grid-area: boundary; }
.cleaner-dashboard-identity > .button { grid-area: action; align-self: start; }
.cleaner-dashboard-page .cleaner-dashboard-identity h1 { max-width: 620px; font-size: clamp(2.4rem,5vw,4.6rem); }
.cleaner-dashboard-page .cleaner-dashboard-identity .role-dashboard-welcome > p:last-child { color: rgba(255,255,255,.82); }
.landlord-dashboard-page .landlord-dashboard-identity {
  display: grid;
  grid-template-areas: "identity welcome" "boundary boundary" "stats stats";
  grid-template-columns: minmax(220px,.48fr) minmax(0,1fr);
  gap: 18px 34px;
  align-items: start;
}
.landlord-dashboard-identity > .role-dashboard-person { grid-area: identity; }
.landlord-dashboard-identity > .role-dashboard-welcome { grid-area: welcome; }
.landlord-dashboard-identity > .role-dashboard-boundary { grid-area: boundary; }
.landlord-dashboard-identity > .landlord-dashboard-stats { grid-area: stats; }
.landlord-dashboard-page .landlord-dashboard-identity h1 { max-width: 680px; font-size: clamp(2.4rem,5vw,4.7rem); }
.landlord-dashboard-page .landlord-dashboard-identity .role-dashboard-welcome > p:last-child { color: var(--muted); }
@media (max-width: 900px) {
  .cleaner-dashboard-page .cleaner-dashboard-identity,
  .landlord-dashboard-page .landlord-dashboard-identity {
    grid-template-areas: "identity" "welcome" "boundary" "action" "stats";
    grid-template-columns: 1fr;
  }
  .cleaner-dashboard-identity > .button { justify-self: start; }
}
@media (max-width: 680px) {
  .cleaner-dashboard-page .cleaner-dashboard-identity h1,
  .landlord-dashboard-page .landlord-dashboard-identity h1 { font-size: clamp(2.35rem,12vw,3.7rem); }
  .cleaner-dashboard-identity > .button { width: 100%; }
}

/* Homle red-and-black visual layer, integrated over the complete marketplace UI. */
.main-nav > a:not(.button), .directory-nav a { position: relative; }
.main-nav > a:not(.button)::after, .directory-nav a::after { content: ""; position: absolute; right: 0; bottom: -4px; left: 0; height: 2px; border-radius: 2px; background: var(--brand); transform: scaleX(0); transform-origin: left; transition: transform .28s var(--ease); }
.main-nav > a:not(.button):hover::after, .directory-nav a:hover::after, .directory-nav a[aria-current="page"]::after { transform: scaleX(1); }
.service-card, .stat-grid article, .availability-gate, .availability-add-card, .availability-list-section,
.settings-shell, .account-card, .quote-card, .form-card { transition: box-shadow .35s var(--ease), transform .35s var(--ease), border-color .35s var(--ease); }
.service-card:hover { border-color: rgba(215, 24, 42, .25); box-shadow: var(--shadow-sm); transform: translateY(-4px); }
.service-card.featured:hover { transform: translateY(-14px); }
.stat-grid article:hover { border-color: rgba(215, 24, 42, .22); box-shadow: var(--shadow-sm); }
input, select, textarea { transition: border-color .2s var(--ease), box-shadow .2s var(--ease), background .2s var(--ease); }
input:hover:not(:focus), select:hover:not(:focus), textarea:hover:not(:focus) { border-color: #b9a8ab; }
.text-button { color: var(--brand-dark); }
.text-button:hover { color: var(--brand); }
.benefit-list li > span { color: #fff; background: var(--brand); }
dialog[open] { animation: homle-dialog-in .3s var(--ease); }
dialog::backdrop { animation: homle-fade-in .3s ease; }
@keyframes homle-dialog-in { from { opacity: 0; transform: translateY(10px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes homle-fade-in { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: no-preference) {
  .hero-copy > * { animation: homle-rise-in .7s var(--ease) backwards; }
  .hero-copy > *:nth-child(2) { animation-delay: .07s; }
  .hero-copy > *:nth-child(3) { animation-delay: .14s; }
  .hero-copy > *:nth-child(4) { animation-delay: .21s; }
  .hero-copy > *:nth-child(5) { animation-delay: .28s; }
}
@keyframes homle-rise-in { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .hero-copy > *, dialog[open], dialog::backdrop { animation: none !important; }
  .service-card:hover, .service-card.featured:hover, .button:hover { transform: none; }
  html { scroll-behavior: auto; }
}

/* Red-and-black identity across the role-specific and transactional workspaces. */
.eyebrow.light,
.brief-hero .eyebrow,
.account-side .eyebrow,
.cleaner-publish-section .eyebrow,
.landlord-scan-boundary .eyebrow,
.booking-payment-summary .eyebrow { color: var(--homle-eyebrow, #8a5347); }

.account-side,
.brief-hero,
.cleaner-publish-section,
.landlord-scan-boundary,
.booking-payment-summary {
  color: var(--homle-ink, #0b090a);
  border-color: var(--homle-line, rgba(11,9,10,.12));
  background: var(--homle-surface, #fbf9f3);
  box-shadow: var(--homle-shadow-sm, 0 1px 2px rgba(11,9,10,.05), 0 6px 16px rgba(11,9,10,.06));
}
.brief-hero .hero-lead,
.account-side-note,
.cleaner-publish-section > div > p:last-child,
.landlord-scan-boundary p:last-child,
.booking-payment-summary p:last-child { color: var(--homle-muted, #665f61); }
.brief-steps span,
.account-steps li > span,
.landlord-scan-boundary > span { color: #fff; background: var(--brand); }
.landlord-scan-boundary .button { color: #fff; background: var(--homle-coral-action, #c8102e); }

.cleaner-site-header { color: #fff; border-bottom-color: #3b3033; background: #171417; }
.cleaner-site-header .cleaner-workspace-pill { color: #fff; border-color: #ff8c97; background: var(--brand-dark); }
.cleaner-dashboard-page { background: linear-gradient(180deg, #171417 0, #171417 180px, #f7f5f2 420px); }
.cleaner-dashboard-page .booking-dashboard-heading {
  border-color: rgba(255, 114, 127, .42);
  background: radial-gradient(circle at 100% 0, rgba(215, 24, 42, .68), transparent 45%), linear-gradient(135deg, #1b1719, #4f0d16);
  box-shadow: 0 22px 55px rgba(20, 17, 20, .25);
}
.cleaner-dashboard-page .booking-dashboard-heading .button-outline { color: #fff; border-color: #ff8c97; background: var(--brand); }
.role-account-avatar { color: #fff; border-color: #ff8c97; background: var(--brand-dark); }
.landlord-role-avatar { color: #fff; border-color: #ff8c97; background: #20191b; }
.account-avatar,
.landlord-selected-cleaner-avatar,
.profile-avatar { background: linear-gradient(145deg, #211a1c, var(--brand)); }

.cleaner-publish-section .button-light,
.landlord-scan-boundary .button,
.booking-payment-summary .button-light { border-color: var(--homle-line, rgba(11,9,10,.12)); box-shadow: var(--homle-shadow-sm, 0 1px 2px rgba(11,9,10,.05), 0 6px 16px rgba(11,9,10,.06)); }

/* Homle marketplace surface.
   Presentation only: form names, routes, data attributes and role boundaries
   are untouched.

   A second `:root` used to sit here, two and a half thousand lines below the
   first, redeclaring the entire palette. Both looked authoritative; only this
   one won, so editing the tokens at the top of the file changed nothing. Its
   values are folded into the single `:root` above and sourced from
   homle-tokens.css, so there is one place to change a colour and one answer
   when you do. */

body {
  /* Cream, as the landing page. The old surface was a cool grey with a printed
     grid over it, which is what made walking from the landing page into the app
     feel like leaving the product. */
  background: var(--homle-cream, #f2eee9);
}

.shell { width: min(calc(100% - 44px), 1240px); }
.site-header,
.admin-header,
.landlord-dashboard-page .site-header,
.cleaner-site-header {
  color: #fff;
  border-top: 4px solid var(--brand);
  border-bottom: 1px solid #302a2c;
  background: rgba(11, 9, 10, .96);
  box-shadow: 0 10px 34px rgba(11, 9, 10, .16);
}
.site-header .brand,
.site-header .header-sign-in,
.site-header .main-nav > a:not(.button),
.site-header .directory-nav a,
.site-header .account-nav a,
.admin-header .brand,
.admin-header a { color: #fff; }
.site-header .brand img,
.admin-header .brand img {
  padding: 3px;
  border-radius: 11px;
  background: #fff;
  box-shadow: 0 0 0 1px rgba(255,255,255,.28);
}
.site-header .header-sign-in { color: #ff9aa8; }
.site-header .menu-toggle { color: #fff; border-color: #54494c; background: #211d1e; }
.site-header .button-outline { color: #fff; border-color: #fff; background: transparent; }
.site-header .button-outline:hover { color: var(--ink); border-color: #fff; background: #fff; }
.site-header .workspace-identity-pill,
.landlord-dashboard-page .landlord-workspace-pill,
.cleaner-site-header .cleaner-workspace-pill {
  color: #fff;
  border-color: #ff8294;
  background: var(--brand-dark);
}
.main-nav > a:not(.button)::after,
.directory-nav a::after { background: #ff6178; }

.button {
  min-height: 50px;
  border-radius: 12px;
  background: var(--brand);
  box-shadow: 0 10px 25px rgba(227, 25, 55, .24);
  font-weight: 800;
}
.button:hover { background: #ff2143; border-color: #ff2143; box-shadow: 0 15px 34px rgba(227, 25, 55, .32); }
.button-outline { color: var(--ink); border-color: var(--ink); background: transparent; }
.button-outline:hover { color: #fff; border-color: var(--ink); background: var(--ink); }
.button-light { color: var(--ink); border-color: #fff; background: #fff; }
.text-button { font-weight: 800; }

.hero {
  min-height: min(760px, calc(100vh - 70px));
  display: grid;
  align-items: center;
  padding: 88px 0;
  color: #fff;
  background:
    radial-gradient(circle at 84% 20%, rgba(227, 25, 55, .54), transparent 26%),
    linear-gradient(118deg, #0b090a 0%, #171214 62%, #390a12 100%);
}
.hero::before {
  opacity: .6;
  background-image: linear-gradient(rgba(255,255,255,.055) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.055) 1px, transparent 1px);
  background-size: 34px 34px;
  mask-image: none;
  -webkit-mask-image: none;
}
.hero h1 { max-width: 800px; color: #fff; font-size: clamp(3.2rem, 7vw, 6.3rem); line-height: .94; }
.hero .eyebrow { color: #ff8294; }
.hero-lead,
.hero .pilot-note { color: #d9d0d2; }
.hero .button-outline { color: #fff; border-color: #fff; }
.hero .button-outline:hover { color: var(--ink); background: #fff; }
.match-card {
  padding: 28px;
  color: var(--ink);
  border: 0;
  border-left: 7px solid var(--brand);
  border-radius: 18px;
  background: #fffefd;
  box-shadow: 18px 18px 0 rgba(227, 25, 55, .22), var(--shadow-lg);
  transform: rotate(1deg);
}
.match-card::before { display: none; }
.property-icon { color: #fff; background: var(--ink); }
.cleaner-avatar { color: #fff; background: var(--brand); }
.route-line span { border-color: var(--brand); }
.route-line i { background: repeating-linear-gradient(90deg, var(--brand) 0 7px, transparent 7px 13px); }

.trust-strip { color: #fff; border: 0; background: var(--brand); }
.trust-grid div { border-color: rgba(255,255,255,.25); }
.trust-grid strong { font-family: var(--font-display); }
.trust-grid span { color: #ffe5e9; }

.section { background: #fffefd; }
.marketplace-demo-section,
.process-section,
.forms-section { background: var(--surface); }
.marketplace-demo-card,
.service-card,
.steps li {
  border-color: #cfc6c3;
  border-radius: 16px;
  background: #fffefd;
  box-shadow: 0 10px 0 rgba(11, 9, 10, .04);
}
.marketplace-demo-card:hover { border-color: var(--brand); box-shadow: 8px 8px 0 var(--brand-tint); }
.service-card { border-top: 5px solid var(--ink); }
.service-card.featured {
  color: #fff;
  border-color: var(--brand);
  background: var(--ink);
  box-shadow: 12px 12px 0 var(--brand);
}
.service-card.featured p { color: #d8d0d2; }
.steps { gap: 12px; }
.steps li { border-top: 6px solid var(--brand); }
.steps li > span { color: var(--brand); }
.cleaner-section {
  color: #fff;
  background: linear-gradient(120deg, var(--brand-deep), var(--brand) 70%, #ff3552);
}
.cleaner-grid > div > p:not(.eyebrow),
.benefit-list small { color: #ffe2e7; }
.benefit-list li { border-color: rgba(255,255,255,.28); }
.benefit-list li > span { color: var(--ink); background: #fff; }

.form-card {
  overflow: hidden;
  gap: 0;
  padding: 0;
  border-color: #cfc6c3;
  border-radius: 20px;
  box-shadow: var(--shadow);
}
.form-card > .form-intro {
  align-self: stretch;
  position: static;
  padding: clamp(28px, 5vw, 58px);
  color: #fff;
  background: linear-gradient(145deg, #0b090a, #2b1116);
}
.form-card > .form-intro .eyebrow { color: #ff8294; }
.form-card > .form-intro > p { color: #d8d0d2; }
.form-card > .form-intro .form-promise { color: #fff; border-color: #ff6178; background: rgba(227,25,55,.16); }
.form-card > .form-intro .form-promise span { color: #e8dfe1; }
.form-card > form { padding: clamp(26px, 5vw, 54px); background: #fffefd; }
label { color: var(--ink); }
input, select, textarea {
  min-height: 48px;
  color: var(--ink);
  border: 1px solid #bdb2af;
  border-radius: 10px;
  background: #fff;
}
input:focus, select:focus, textarea:focus { border-color: var(--brand); box-shadow: 0 0 0 4px rgba(227, 25, 55, .13); }
.guided-progress li.current span { border-color: var(--brand); background: var(--brand); }
.guided-progress li.complete span { color: var(--brand-dark); border-color: #ed8d9c; background: var(--brand-tint-pale); }
.guided-progress li.complete::after,
.guided-progress li.current::after { background: #ed8d9c; }

.site-footer,
.account-footer { color: #cfc4c7; border-top: 5px solid var(--brand); background: var(--ink); }
.site-footer .brand { color: #fff; }
.footer-links a:hover { color: #ff8294; }

.account-page {
  background: var(--homle-cream, #f7f4eb);
}
.account-grid { gap: 18px; }
.account-card,
.account-side { border-radius: 18px; box-shadow: var(--shadow-lg); }
.account-card { border: 0; border-top: 7px solid var(--brand); }
.account-side { background: linear-gradient(145deg, var(--brand-dark), #7f0a1d); }
.account-provider-button { color: #fff; background: var(--ink); border-color: var(--ink); box-shadow: none; }
.account-provider-button:hover { color: #fff; background: #30292b; border-color: #30292b; }

.booking-dashboard-page,
.landlord-dashboard-page,
.cleaner-dashboard-page,
.directory-page,
.quote-page,
.brief-page,
.settings-page,
.notifications-page,
.admin-page { background: var(--homle-cream, #f7f4eb); }
.booking-dashboard-heading,
.cleaner-dashboard-page .booking-dashboard-heading,
.landlord-dashboard-page .landlord-dashboard-identity {
  padding: clamp(24px, 4vw, 38px);
  color: #fff;
  border: 0;
  border-left: 7px solid var(--brand);
  border-radius: 18px;
  background: linear-gradient(125deg, #0b090a, #211d1e 70%, #4f0b16);
  box-shadow: var(--shadow);
}
.booking-dashboard-heading h1,
.booking-dashboard-heading .eyebrow,
.landlord-dashboard-page .landlord-dashboard-identity h1,
.landlord-dashboard-page .landlord-dashboard-identity .eyebrow { color: #fff; }
.booking-dashboard-heading p:last-child,
.landlord-dashboard-page .landlord-dashboard-identity .role-dashboard-welcome > p:last-child { color: #ddd4d6; }
.role-dashboard-person { border-color: #51474a; background: rgba(255,255,255,.08); }
.role-account-avatar,
.landlord-role-avatar { color: #fff; border-color: #ff8294; background: var(--brand); }
.role-dashboard-person small,
.role-dashboard-person span { color: #d7cdcf; }
.role-dashboard-boundary { color: #e2d9db; border-color: #ff6178; background: rgba(227,25,55,.13); }
.dashboard-next-action {
  color: #fff;
  border: 0;
  border-radius: 16px;
  background: var(--brand);
  box-shadow: 10px 10px 0 var(--ink);
}
.dashboard-next-action .eyebrow,
.dashboard-next-action p { color: #ffe4e8; }
.dashboard-next-action .button { color: var(--ink); border-color: #fff; background: #fff; box-shadow: none; }
.booking-dashboard-stats,
.booking-dashboard-section,
.booking-history-section,
.landlord-workspace-panel,
.cleaner-work-overview,
.directory-filters,
.directory-state,
.directory-cleaner-card,
.quote-card,
.brief-panel,
.settings-shell,
.notification-card,
.active-journey-card,
.active-progress-card,
.active-photo-card,
.active-review-card,
.active-dispute-card,
.active-message-card,
.active-property-card,
.active-job-actions {
  border-color: #cfc6c3;
  border-radius: 16px;
  box-shadow: 0 10px 28px rgba(11,9,10,.08);
}
.cleaner-work-overview {
  border: 0;
  background: linear-gradient(135deg, #0b090a, #2b1116);
  box-shadow: 10px 10px 0 var(--brand);
}
.cleaner-overview-heading .eyebrow,
.cleaner-readiness-grid dt,
.cleaner-earnings-summary span { color: #ff8294; }
.landlord-workspace-tabs,
.cleaner-profile-steps {
  border-color: #2d2729;
  background: var(--ink);
  box-shadow: var(--shadow-sm);
}
.landlord-workspace-tabs button,
.cleaner-profile-steps a { color: #d8d0d2; }
.landlord-workspace-tabs button[aria-selected="true"],
.cleaner-profile-steps a[aria-current="step"] { color: #fff; background: var(--brand); }
.booking-dashboard-stats dd,
.booking-section-heading h2,
.directory-cleaner-identity h3,
.notifications-heading h1 { color: var(--ink); }
.booking-pending-section { border-left: 5px solid var(--brand); background: #fff; }
.booking-private-pill,
.status-pill,
.notification-nav-count { color: #fff; border-color: var(--brand); background: var(--brand); }
.directory-cleaner-card { border-top: 5px solid var(--ink); }
.directory-cleaner-photo { border-color: var(--brand-tint); background: var(--brand); }
.directory-filters { border-top: 5px solid var(--brand); }

.brief-hero {
  background: var(--homle-cream, #f7f4eb);
}
.brief-panel { border-top: 5px solid var(--ink); }
.quote-card { border-top: 7px solid var(--brand); }
.quote-details .quote-total { background: var(--brand-tint-pale); }
.admin-header { position: sticky; z-index: 20; top: 0; }
.admin-badge { color: #fff; background: var(--brand); }
.admin-auth,
.admin-section,
.stat-grid article { border-top: 5px solid var(--ink); border-radius: 16px; }

dialog { border-radius: 16px !important; }
dialog::backdrop { background: rgba(11,9,10,.74) !important; }

@media (max-width: 980px) {
  .form-card { grid-template-columns: 1fr; }
  .form-card > .form-intro { position: static; }
  .hero { min-height: 0; }
}

@media (max-width: 680px) {
  .shell { width: min(calc(100% - 28px), 1240px); }
  .site-header { border-top-width: 3px; }
  .nav-wrap { min-height: 66px; }
  .main-nav { color: #fff; border-color: #3a3234; background: #0b090a; }
  .main-nav > a:not(.button) { color: #fff; }
  .hero { padding: 58px 0 62px; }
  .hero h1 { font-size: clamp(3rem, 15vw, 4.5rem); }
  .hero-actions { display: grid; }
  .hero-actions .button { width: 100%; }
  .match-card { margin: 20px 5px 10px 0; box-shadow: 8px 8px 0 rgba(227,25,55,.3), var(--shadow); }
  .trust-grid div { padding: 18px 0; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.24); }
  .trust-grid div:last-child { border-bottom: 0; }
  .section { padding-block: 68px; }
  .service-card.featured { box-shadow: 7px 7px 0 var(--brand); }
  .form-card > .form-intro,
  .form-card > form { padding: 24px 18px; }
  .account-card,
  .account-side { border-radius: 16px; }
  .booking-dashboard-heading,
  .cleaner-dashboard-page .booking-dashboard-heading,
  .landlord-dashboard-page .landlord-dashboard-identity { padding: 22px 17px; border-left-width: 5px; }
  .dashboard-next-action { box-shadow: 6px 6px 0 var(--ink); }
  .cleaner-work-overview { box-shadow: 6px 6px 0 var(--brand); }
  .landlord-workspace-tabs,
  .cleaner-profile-steps { border-radius: 12px; }
  .landlord-workspace-tabs button,
  .cleaner-profile-steps a { min-height: 44px; }
  .booking-dashboard-section,
  .booking-history-section,
  .brief-panel { border-radius: 14px; }
}

/* ══════════════════════════════════════════════════
   ROOM SCAN — full-screen guided capture
   Motion and proportions follow the approved scan
   prototype; the camera, speech and detections behind
   it are real rather than simulated.
   ══════════════════════════════════════════════════ */
.scan-page{--scan-red:#D91435;--scan-red-hot:#FF2D4F;--scan-ok:#149E52;--scan-bone:#FFFFFF;--scan-dim:rgba(255,255,255,.62);--scan-ghost:rgba(255,255,255,.42);--scan-ease:cubic-bezier(.16,1,.3,1);--scan-ease-io:cubic-bezier(.65,0,.35,1);background:#050506;color:#fff;height:100%;overflow:hidden}
.scan-stage{position:relative;height:100vh;height:100dvh;display:flex;flex-direction:column}

.scan-top{position:relative;z-index:10;padding:max(22px,env(safe-area-inset-top)) 24px 22px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:linear-gradient(180deg,rgba(0,0,0,.82),transparent)}
.scan-close{width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.14);color:#fff;cursor:pointer;display:grid;place-items:center;transition:background .3s,transform .3s;backdrop-filter:blur(10px);text-decoration:none;flex-shrink:0}
/* Spoken guidance. Off by default; the waves fill in while it is on. */
.scan-speech{width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.14);color:rgba(255,255,255,.55);cursor:pointer;display:grid;place-items:center;backdrop-filter:blur(10px);flex-shrink:0;margin-left:auto}
.scan-speech .scan-speech-waves{opacity:.25}
.scan-speech.on{color:#fff;border-color:rgba(255,255,255,.4)}
.scan-speech.on .scan-speech-waves{opacity:1}
/* The automatic capture assists' off switches. Hidden unless the camera
   actually supports them; the torch lights amber while on. */
.scan-assist{height:40px;border-radius:999px;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.14);color:rgba(255,255,255,.75);cursor:pointer;display:grid;place-items:center;backdrop-filter:blur(10px);flex-shrink:0}
.scan-torch{width:40px}
.scan-torch.on{color:#F5C877;border-color:rgba(245,200,119,.55);background:rgba(240,168,48,.18)}
.scan-zoom{padding:0 12px;font:inherit;font-size:11px;font-weight:750;letter-spacing:.03em;color:#fff;white-space:nowrap}
/* A frozen or reopened frame is the choose-and-confirm state: the walking
   chrome (the found list and the walk-around hint) must not stack on top of the
   selection hints — a field trial showed three instruction layers at once. */
.vf.picking~.deck [data-found]{display:none}
.vf.picking~.deck [data-hint]{display:none}
.scan-close:hover,.scan-close:focus-visible{background:rgba(255,255,255,.18);transform:rotate(90deg)}
.scan-room-lbl{display:flex;align-items:center;gap:9px;padding:9px 17px;border-radius:100px;background:rgba(0,0,0,.55);border:1px solid rgba(255,255,255,.13);backdrop-filter:blur(14px);font-size:13px;font-weight:600;letter-spacing:-.01em;min-width:0}
.scan-room-lbl span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scan-count{border:0;font:inherit;cursor:pointer}
.scan-progress{position:absolute;z-index:11;top:calc(max(22px,env(safe-area-inset-top)) + 55px);left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;margin:0;padding:8px 12px;border:1px solid rgba(255,255,255,.13);border-radius:999px;background:rgba(0,0,0,.58);backdrop-filter:blur(14px);font-size:11px;white-space:nowrap;pointer-events:none}
.scan-progress b{color:var(--scan-red-hot);font-size:9px;letter-spacing:.12em;text-transform:uppercase}
.scan-progress span{color:#fff;font-weight:700}
.scan-progress-meter{position:relative;width:42px;height:3px;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.2);flex-shrink:0}
.scan-progress-meter i{position:absolute;inset:0;border-radius:inherit;background:var(--scan-red-hot);transform:scaleX(0);transform-origin:left;transition:transform .36s var(--scan-ease)}
.scan-progress-meter[data-level="1"] i{transform:scaleX(.25)}
.scan-progress-meter[data-level="2"] i{transform:scaleX(.5)}
.scan-progress-meter[data-level="3"] i{transform:scaleX(.75)}
.scan-progress-meter[data-level="4"] i{transform:scaleX(1);background:var(--scan-ok)}
.rec-dot{width:7px;height:7px;border-radius:50%;background:var(--scan-red-hot);animation:scanRecBlink 1.1s ease-in-out infinite;flex-shrink:0}
@keyframes scanRecBlink{50%{opacity:.25}}

.vf{position:absolute;inset:0;overflow:hidden;background:#08080A}
/* No filter on the live feed. A `filter` on a full-screen <video> is repainted
   for every camera frame, and `.scanning` stays on for the whole room read — a
   costly effect held for seconds to shift contrast by 6%. The mesh and flash
   already signal that the room is being read, using opacity only. */
.vf-feed{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vf-capture{position:absolute;left:-9999px;width:1px;height:1px}
.vf-blocked{position:absolute;inset:0;z-index:9;display:grid;align-content:center;gap:14px;padding:32px;text-align:center;background:rgba(5,5,6,.94);backdrop-filter:blur(18px)}
.vf-blocked h2{font-size:21px;font-weight:800;letter-spacing:-.03em}
.vf-blocked p{font-size:14px;color:var(--scan-dim);line-height:1.6;max-width:34ch;margin:0 auto}
.vf-blocked-actions{display:grid;gap:10px;justify-items:center;margin-top:6px}

/* The detection layer must sit above the frozen still (z-index 2), or the boxes
   are painted behind the photograph they describe and are never seen. */
[data-detection-layer]{position:absolute;inset:0;z-index:3;pointer-events:none}
.det-box{position:absolute;margin:0;padding:0;appearance:none;font:inherit;color:inherit;border:1.5px solid var(--scan-red-hot);border-radius:6px;background:rgba(217,20,53,.09);opacity:0;transform:scale(.94);transition:opacity .5s var(--scan-ease),transform .5s var(--scan-ease);pointer-events:none}
/* A box only becomes a target once the frame is frozen and there is something
   stable to aim at. */
.det-box.pickable{pointer-events:auto;cursor:pointer}
.det-box.pickable:focus-visible{outline:3px solid #fff;outline-offset:4px}
.det-box.picked{border-color:var(--scan-ok);border-width:2.5px;background:rgba(46,212,122,.16)}
.det-box.picked .det-tag{background:var(--scan-ok);color:#0A0A0B}
.det-box.show{opacity:1;transform:scale(1)}
.det-box::before,.det-box::after{content:"";position:absolute;width:11px;height:11px;border:2px solid var(--scan-red-hot)}
.det-box::before{top:-2px;left:-2px;border-right:0;border-bottom:0}
.det-box::after{bottom:-2px;right:-2px;border-left:0;border-top:0}
.det-tag{top:-14px;border-radius:99px;padding:3px 9px;box-shadow:0 2px 10px rgba(0,0,0,.45)}
.det-tag em{font-style:normal;opacity:.65;margin-left:5px}

/* The detector's own state and the live framing guidance ("move slowly",
   "too dark"), shown over the viewfinder while the model loads so a slow
   connection explains itself instead of looking like a camera that finds
   nothing. At the TOP, under the step pill: the third field trial showed the
   bottom position sits exactly where thumbs and the shutter live, so the one
   line telling the customer what to change went unread. (This replaces a
   `.sweep` overlay that animated `top` — a layout property — and whose
   trigger class was never applied by any code path.) */
.scan-detector-state{position:absolute;left:14px;right:14px;top:calc(max(22px,env(safe-area-inset-top)) + 96px);z-index:24;margin:0;padding:9px 13px;border-radius:12px;font-size:12.5px;line-height:1.45;color:#fff;background:rgba(8,8,10,.82);pointer-events:none}
.scan-detector-state[data-kind="off"]{background:rgba(90,26,32,.86)}
.scan-detector-state[data-kind="guide"]{background:rgba(122,72,12,.88)}
.mesh{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .6s;background-image:linear-gradient(rgba(217,20,53,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(217,20,53,.18) 1px,transparent 1px);background-size:34px 34px;mask-image:radial-gradient(ellipse 62% 52% at 50% 50%,#000,transparent 78%);-webkit-mask-image:radial-gradient(ellipse 62% 52% at 50% 50%,#000,transparent 78%)}
.mesh.on{opacity:1;animation:scanMeshPulse 2.6s ease-in-out infinite}
@keyframes scanMeshPulse{0%,100%{opacity:.85}50%{opacity:.4}}

.reticle{position:absolute;inset:0;pointer-events:none}
.ret-c{position:absolute;width:44px;height:44px;border:2.5px solid rgba(255,255,255,.85);transition:all .5s var(--scan-ease)}
.ret-tl{top:15%;left:9%;border-right:0;border-bottom:0;border-radius:10px 0 0 0}
.ret-tr{top:15%;right:9%;border-left:0;border-bottom:0;border-radius:0 10px 0 0}
.ret-bl{bottom:26%;left:9%;border-right:0;border-top:0;border-radius:0 0 0 10px}
.ret-br{bottom:26%;right:9%;border-left:0;border-top:0;border-radius:0 0 10px 0}
.vf.scanning .ret-c{border-color:var(--scan-red-hot);box-shadow:0 0 22px rgba(255,45,79,.55)}
.vf.scanning .ret-tl{top:11%;left:6%}
.vf.scanning .ret-tr{top:11%;right:6%}
.vf.scanning .ret-bl{bottom:22%;left:6%}
.vf.scanning .ret-br{bottom:22%;right:6%}

.flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none;z-index:8}
.flash.pop{animation:scanFlashPop .42s var(--scan-ease)}
@keyframes scanFlashPop{0%{opacity:0}12%{opacity:.92}100%{opacity:0}}

.deck{position:relative;z-index:6;margin-top:auto;padding:20px 24px max(34px,env(safe-area-inset-bottom));background:linear-gradient(0deg,rgba(0,0,0,.94) 45%,transparent)}
.deck-hint{text-align:center;font-size:13.5px;color:var(--scan-dim);margin-bottom:18px;min-height:20px;font-weight:500;transition:opacity .4s,transform .4s}
.deck-hint b{color:var(--scan-bone);font-weight:700}
.deck-row{display:flex;align-items:center;justify-content:center;gap:34px}
.deck-camera-alt{display:block;margin:28px auto 0;padding:5px 8px;border:0;background:transparent;color:rgba(255,255,255,.74);font:inherit;font-size:11px;font-weight:650;text-decoration:underline;text-underline-offset:4px;cursor:pointer}
.deck-camera-alt:hover{color:#fff}
.deck-camera-alt:focus-visible{outline:2px solid #fff;outline-offset:3px;border-radius:5px}
/* .deck-note-alt is gone: the typed-note entry moved into the deck row itself,
   in the slot the removed video-mode button occupied. */
.shutter{width:78px;height:78px;border-radius:50%;border:3.5px solid rgba(255,255,255,.9);background:none;cursor:pointer;display:grid;place-items:center;position:relative;transition:transform .25s var(--scan-ease)}
.shutter i{width:60px;height:60px;border-radius:50%;background:var(--scan-red);display:block;transition:all .22s var(--scan-ease)}
.shutter:hover i{background:var(--scan-red-hot)}
.shutter:active{transform:scale(.9)}
.shutter:active i{transform:scale(.82)}
.shutter:disabled{opacity:.4;cursor:not-allowed}
.shutter::after{content:"";position:absolute;inset:-9px;border-radius:50%;border:2px solid var(--scan-red);opacity:0;animation:scanShutterRing 2.4s ease-out infinite}
@keyframes scanShutterRing{0%{opacity:.7;transform:scale(.92)}70%{opacity:0;transform:scale(1.22)}100%{opacity:0}}
.deck-btn{width:58px;height:58px;border-radius:50%;flex-shrink:0;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.16);color:#fff;cursor:pointer;display:grid;place-items:center;transition:all .3s var(--scan-ease);backdrop-filter:blur(10px);position:relative}
.deck-btn:hover:not(:disabled){background:rgba(255,255,255,.18);transform:translateY(-3px)}
.deck-btn.rec{background:var(--scan-red);border-color:var(--scan-red);animation:scanRecPulse 1.3s ease-in-out infinite}
@keyframes scanRecPulse{0%,100%{box-shadow:0 0 0 0 rgba(217,20,53,.65)}70%{box-shadow:0 0 0 15px rgba(217,20,53,0)}}
.deck-btn:disabled{opacity:.3;cursor:not-allowed}
.deck-btn.ready{background:var(--scan-ok);border-color:var(--scan-ok)}
.deck-btn-lbl{position:absolute;bottom:-19px;left:50%;transform:translateX(-50%);font-size:8px;letter-spacing:.16em;color:var(--scan-ghost);text-transform:uppercase;white-space:nowrap}

.voice{position:absolute;left:20px;right:20px;bottom:180px;z-index:30;background:rgba(10,10,12,.94);backdrop-filter:blur(26px);border:1px solid rgba(217,20,53,.34);border-radius:24px;padding:20px 22px;opacity:0;transform:translateY(26px) scale(.97);pointer-events:none;transition:all .55s var(--scan-ease);box-shadow:0 24px 60px -18px rgba(0,0,0,.9)}
.voice.on{opacity:1;transform:none;pointer-events:auto}
.voice-head{display:flex;align-items:center;gap:10px;margin-bottom:15px}
.voice-head span{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--scan-red-hot)}
.voice-time{margin-left:auto;font-size:12px;color:var(--scan-dim);font-variant-numeric:tabular-nums}
.voice-done{margin-left:auto;padding:7px 12px;color:#fff;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(255,255,255,.1);font:inherit;font-size:11px;font-weight:750;cursor:pointer}
.voice-done:hover{background:rgba(255,255,255,.18)}
/* Stop is the one control that must never be hunted for while recording: filled
   red, first in the header, generous touch target. The old rule here hid the
   panel's only button during recording, which left stopping to an unlabelled
   toggle — that rule is gone, visibility is owned by the script. */
.voice-stop{margin-left:auto;padding:9px 18px;min-height:34px;color:#fff;border:0;border-radius:999px;background:var(--scan-red);font:inherit;font-size:12px;font-weight:800;letter-spacing:.04em;cursor:pointer}
.voice-stop:hover{background:var(--scan-red-hot)}
.voice-cancel,.voice-delete{padding:7px 12px;color:rgba(255,255,255,.85);border:1px solid rgba(255,255,255,.22);border-radius:999px;background:none;font:inherit;font-size:11px;font-weight:700;cursor:pointer}
.voice-cancel:hover,.voice-delete:hover{background:rgba(255,255,255,.12)}
.voice-delete{margin-left:auto}
.voice-delete:not([hidden])~.voice-done{margin-left:0}
.voice.recording .voice-time{margin-left:auto}
.voice:not(.recording) .voice-time{display:none}
.wave{display:none;align-items:center;gap:3px;height:44px;margin-bottom:15px;justify-content:center}
.voice.recording .wave{display:flex}
/* Full-height bars scaled from the centre. Animating `transform` keeps the wave
   on the compositor; animating `height` (as this used to) put 34 layout passes on
   the main thread every 70ms, while the camera was still playing behind it. */
.wave b{width:3px;border-radius:3px;background:var(--scan-red);display:block;height:100%;transform:scaleY(.2);transition:transform .11s linear;will-change:transform}
.voice-note-label{display:block;margin-bottom:7px;color:var(--scan-bone);font-size:12px;font-weight:750}
.voice-txt{width:100%;min-height:94px;max-height:26vh;padding:12px 13px;color:var(--scan-bone);border:1px solid rgba(255,255,255,.2);border-radius:13px;background:rgba(255,255,255,.07);font:inherit;font-size:14.5px;font-weight:400;line-height:1.55;letter-spacing:-.005em;resize:vertical}
.voice-txt:focus{border-color:var(--scan-red-hot);box-shadow:0 0 0 3px rgba(217,20,53,.2);outline:0}
.voice-note-help{margin:8px 0 0;color:var(--scan-dim);font-size:11px;line-height:1.45}
@keyframes scanBlink{50%{opacity:0}}
.voice-tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}
.vtag{padding:5px 11px;border-radius:100px;background:rgba(217,20,53,.16);border:1px solid rgba(217,20,53,.34);color:var(--scan-red-hot);font-size:9px;letter-spacing:.1em;text-transform:uppercase;animation:scanTagIn .45s var(--scan-ease) backwards}
@keyframes scanTagIn{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}

.scan-results{position:fixed;inset:0;z-index:30;overflow-y:auto;background:#FFFFFF;color:#0A0A0B}
.scan-results-in{max-width:560px;margin:0 auto;padding:max(30px,env(safe-area-inset-top)) 22px max(40px,env(safe-area-inset-bottom))}
.scan-results .eyebrow{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#D91435;font-weight:700}
.scan-results h2{font-size:clamp(28px,7vw,38px);font-weight:800;letter-spacing:-.035em;line-height:1.08;margin:10px 0 12px}
.scan-results-lede{font-size:14.5px;color:#5C5C64;line-height:1.6;margin-bottom:24px}
.res-hero{border-radius:24px;padding:26px;margin-bottom:24px;background:linear-gradient(150deg,#D91435,#8E0A22);color:#fff}
.res-hero-top{display:flex;align-items:center;gap:11px;margin-bottom:14px;font-size:10px;letter-spacing:.2em;text-transform:uppercase;opacity:.85}
.res-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}
.res-cell{background:rgba(255,255,255,.12);border-radius:14px;padding:14px 12px;text-align:center}
.res-cell b{display:block;font-size:19px;font-weight:800;letter-spacing:-.02em}
.res-cell span{display:block;margin-top:3px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;opacity:.8}
.res-hero-note{font-size:13.5px;line-height:1.6;opacity:.95}
.res-hero-note:empty{display:none}

/* ── Customer scan review ─────────────────────────────────────────────────
   The one screen where a customer is asked to check what the scan got wrong,
   so the correcting controls are given the same visual weight as the findings
   rather than being tucked away as a secondary action. */
.scan-review{margin-bottom:24px}
.scan-review-h3{font-size:17px;font-weight:650;margin:26px 0 6px}
.scan-review-level{border:1.5px solid var(--line,#E4DED6);border-radius:20px;padding:20px;margin-bottom:16px}
.scan-review-level b{display:block;font-size:20px;font-weight:680;line-height:1.25}
.scan-review-level>span{display:block;font-size:11px;letter-spacing:.16em;text-transform:uppercase;opacity:.6;margin-top:4px}
.scan-review-level p{margin:12px 0 0;font-size:14.5px;line-height:1.6}
.scan-review-estimate{border:1.5px solid var(--line,#E4DED6);border-radius:20px;padding:20px;margin-bottom:16px}
.scan-review-estimate-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:10px}
.scan-review-estimate-head b{font-size:30px;font-weight:700;letter-spacing:-.02em}
.scan-review-estimate-head span{font-size:14px;opacity:.75}
.scan-review-estimate summary{cursor:pointer;font-size:14px;font-weight:600;margin-top:14px}
.scan-review-lines{list-style:none;margin:12px 0 0;padding:0}
.scan-review-line{display:flex;justify-content:space-between;gap:16px;padding:7px 0;font-size:14px;border-bottom:1px solid var(--line,#E4DED6)}
.scan-review-line:last-child{border-bottom:0}
/* A refusal is given warning weight, not hidden as a missing price. */
.scan-review-refusal{border:1.5px solid #D91435;border-radius:20px;padding:20px;margin-bottom:16px;background:#FFF5F6}
.scan-review-refusal b{display:block;font-size:16px;margin-bottom:8px}
.scan-review-refusal p{margin:0;font-size:14.5px;line-height:1.6}
.scan-review-questions{border:1.5px solid var(--line,#E4DED6);border-radius:20px;padding:20px;margin-bottom:16px}
.scan-review-question-list{list-style:none;margin:14px 0 0;padding:0}
.scan-review-question{padding:12px 0;border-top:1px solid var(--line,#E4DED6)}
.scan-review-question p{margin:0;font-size:14.5px;line-height:1.55;font-weight:550}
.scan-review-room{margin-bottom:20px}
.scan-review-room-name{font-size:15px;font-weight:650;margin:0 0 8px}
.scan-review-object{border:1.5px solid var(--line,#E4DED6);border-radius:16px;padding:14px;margin-bottom:10px}
.scan-review-object-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.scan-review-object-head b{font-size:15px;font-weight:620}
.scan-review-state{font-size:12.5px;opacity:.75;text-align:right;flex-shrink:0}
.scan-review-detail{margin:6px 0 0;font-size:13px;line-height:1.5;opacity:.8}
/* The recommended action under a finding — distinct from the evidence line so
   "what was seen" and "what will be done" read as different statements. */
.scan-review-action{margin:4px 0 0;font-size:13px;line-height:1.5;font-weight:650;color:var(--ink,#1a1c1e)}
.scan-review-action::before{content:"→ "}
.scan-review-object-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
/* 44px minimum so every correction is reachable with a thumb on a phone. */
.scan-review-edit,.scan-review-remove,.scan-review-grade{min-height:44px;border-radius:12px;border:1.5px solid var(--line,#E4DED6);background:#fff;padding:0 14px;font:inherit;font-size:14px;cursor:pointer}
.scan-review-remove{border-color:#E9B8C0;color:#9E0C23}
.scan-review-grade{flex:1 1 140px}
.scan-review-edit:focus-visible,.scan-review-remove:focus-visible,.scan-review-grade:focus-visible{outline:2.5px solid #D91435;outline-offset:2px}
/* Measuring from the room photo. A modal over the review step: the photo, the
   tap marks, and one instruction at a time. */
.scan-measure{position:fixed;inset:0;background:rgba(10,10,12,.72);z-index:60;display:grid;place-items:center;padding:14px}
.scan-measure-in{background:#fff;border-radius:18px;max-width:560px;width:100%;max-height:92vh;overflow-y:auto;padding:18px 18px 16px}
.scan-measure-eyebrow{margin:0;font-size:11px;letter-spacing:.14em;text-transform:uppercase;opacity:.6}
.scan-measure-in h3{margin:2px 0 8px}
.scan-measure-instruction{margin:0 0 10px;font-size:14.5px;font-weight:650}
.scan-measure-problem{margin:0 0 10px;font-size:14px;color:#9E0C23}
.scan-measure-stage{position:relative;border-radius:12px;overflow:hidden;background:#0a0a0c;touch-action:manipulation}
.scan-measure-stage img{display:block;width:100%;height:auto;cursor:crosshair}
.scan-measure-stage svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.scan-measure-choices{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0}
.scan-measure-chip{min-height:40px;border-radius:999px;border:1.5px solid var(--line,#E4DED6);background:#fff;padding:0 14px;font:inherit;font-size:13.5px;cursor:pointer}
.scan-measure-chip.picked{border-color:#D91435;background:#FDF0F2;font-weight:700}
.scan-measure-confirm{margin:12px 0 0;padding:12px;border-radius:12px;background:#F7F4EF}
.scan-measure-confirm p{margin:0 0 10px;font-size:14.5px}
.scan-measure-confirm-actions,.scan-measure-actions{display:flex;flex-wrap:wrap;gap:8px}
.scan-measure-actions{margin-top:12px;justify-content:flex-end}
.scan-measure-open{margin:6px 0 10px}
.scan-measure-pending{display:flex;align-items:center;gap:8px}
@media (prefers-color-scheme:dark){
  .scan-review-object,.scan-review-edit,.scan-review-remove,.scan-review-grade{background:transparent;color:inherit}
  .scan-review-refusal{background:rgba(217,20,53,.12)}
}
.scan-results-h{font-size:15px;font-weight:700;margin:26px 0 13px}
.det-list{display:flex;flex-direction:column;gap:10px}
.det-item{display:flex;align-items:center;gap:13px;padding:15px;border:1px solid rgba(10,10,11,.10);border-radius:16px}
.det-item .ic{width:34px;height:34px;border-radius:10px;background:rgba(217,20,53,.08);display:grid;place-items:center;flex-shrink:0;font-size:13px;font-weight:800;color:#D91435}
.det-item .nm{font-size:14px;font-weight:700;letter-spacing:-.01em}
.det-item .ds{font-size:12.5px;color:#5C5C64;margin-top:2px;line-height:1.5}
.det-item .rt{margin-left:auto;text-align:right;flex-shrink:0}
.det-item .rt b{display:block;font-size:13px;font-weight:700}
.det-item .rt span{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:#149E52}
.note-card{margin-top:22px;padding:18px;border-radius:18px;background:rgba(217,20,53,.05);border:1px solid rgba(217,20,53,.16)}
.note-card .lbl{display:flex;align-items:center;gap:8px;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#D91435;font-weight:700;margin-bottom:10px}
.note-card p{font-size:14px;line-height:1.62;color:#0A0A0B}
.scan-results-boundary{margin-top:22px;padding:13px 15px;border-left:3px solid #C77A00;background:#FFF9EA;color:#6b5a46;font-size:12.5px;line-height:1.55;border-radius:0 10px 10px 0}
.scan-results-actions{display:grid;gap:11px;margin-top:26px}

.scan-toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:40;padding:12px 18px;border-radius:100px;background:rgba(10,10,12,.94);color:#fff;font-size:13px;font-weight:600;backdrop-filter:blur(14px);box-shadow:0 18px 40px -12px rgba(0,0,0,.8);max-width:calc(100vw - 40px);text-align:center}

@media (max-width: 400px){
  .deck-row{gap:26px}
  .voice{bottom:168px;left:14px;right:14px;padding:17px 18px}
}
@media (prefers-reduced-motion: reduce){
  .rec-dot,.mesh.on,.shutter::after,.deck-btn.rec,.voice-txt .cur{animation:none}
  .shot{animation:none}
  .vf-feed,.det-box,.ret-c,.voice,.hub-room,.hub-chip{transition-duration:.01ms}
}

.vf-still{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2}
/* Choosing what the room gets read for. */
.pick{display:grid;gap:10px;margin-bottom:14px}
.pick-hint{margin:0;font-size:12.5px;line-height:1.5;color:var(--scan-dim);text-align:center}
.pick-row{display:flex;gap:10px;justify-content:center}
.pick-row .button{min-height:44px}
.vf.picking{cursor:crosshair}

/* The hub: choose a room, review the scan, return to a room. One screen that
   covers the camera; the camera keeps running behind it. */
.hub{position:absolute;inset:0;z-index:26;background:rgba(6,6,8,.98);overflow-y:auto;-webkit-overflow-scrolling:touch}
.hub-in{max-width:460px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;gap:18px;padding:calc(env(safe-area-inset-top) + 20px) 22px calc(env(safe-area-inset-bottom) + 20px)}
.hub-close{position:static;align-self:flex-end}
.hub-head h2{font-size:23px;font-weight:800;letter-spacing:-.03em;margin:0 0 6px}
.hub-sub{margin:0;font-size:14px;line-height:1.55;color:var(--scan-dim)}
.hub-progress{display:flex;align-items:center;gap:9px;margin:0;padding:10px 12px;border:1px solid rgba(255,255,255,.13);border-radius:12px;background:rgba(255,255,255,.05);font-size:12.5px;color:var(--scan-dim)}
.hub-progress b{color:var(--scan-red-hot);font-size:10px;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}
.hub-progress span{line-height:1.4}
.hub-rooms{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.hub-rooms:empty{display:none}
.hub-room-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}
.hub-room{width:100%;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;align-items:center;gap:2px 12px;padding:14px 16px;border:1px solid rgba(255,255,255,.14);border-radius:15px;background:rgba(255,255,255,.05);color:var(--scan-bone);text-align:left;cursor:pointer;transition:background .18s var(--scan-ease),border-color .18s var(--scan-ease)}
.hub-room:hover,.hub-room:focus-visible{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.28)}
.hub-room-name{grid-column:1;font-size:16px;font-weight:750}
.hub-room-meta{grid-column:1;font-size:12.5px;color:var(--scan-dim)}
/* The objects actually picked, plus whether a voice note is attached. */
.hub-room-detail{grid-column:1;font-size:12px;color:var(--scan-dim);opacity:.82;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hub-room-edit{grid-column:2;grid-row:1 / span 2;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--scan-red-hot)}
.hub-room-remove{min-width:72px;padding:8px;border:1px solid rgba(255,255,255,.14);border-radius:15px;background:transparent;color:var(--scan-dim);font:inherit;font-size:11px;font-weight:750;cursor:pointer}
.hub-room-remove:hover,.hub-room-remove:focus-visible{border-color:var(--scan-red-hot);color:var(--scan-red-hot);background:rgba(217,20,53,.08)}
.hub-add{display:grid;gap:10px;padding-top:4px}
.hub-add-lbl{margin:0;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--scan-dim)}
.hub-choices{display:flex;flex-wrap:wrap;gap:9px}
.hub-choices:empty{display:none}
.hub-chip{padding:11px 16px;min-height:44px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(255,255,255,.06);color:var(--scan-bone);font-size:14px;font-weight:700;cursor:pointer;transition:background .18s var(--scan-ease),border-color .18s var(--scan-ease)}
.hub-chip:hover,.hub-chip:focus-visible{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.34)}
.hub-other{display:flex;gap:9px}
.hub-other-input{flex:1;min-width:0;padding:12px 14px;min-height:44px;border:1px solid rgba(255,255,255,.2);border-radius:12px;background:rgba(255,255,255,.06);color:#fff;font-size:14px}
.hub-other-input::placeholder{color:rgba(255,255,255,.42)}
.hub-other .button{min-height:44px;white-space:nowrap}
.hub-finish{margin-top:auto;min-height:52px;font-size:16px}
.hub-finish:disabled{opacity:.4;cursor:not-allowed}
.scan-count{border:0;font:inherit;cursor:pointer}
@media (prefers-reduced-motion: reduce){
  .hub-room,.hub-chip{transition-duration:.01ms}
}
.scan-consent{position:absolute;inset:0;z-index:25;background:rgba(5,5,6,.99);display:grid;place-items:center;padding:26px}
.scan-consent-in{max-width:430px;text-align:left}
.scan-consent h2{font-size:22px;font-weight:800;letter-spacing:-.03em;margin-bottom:12px}
.scan-consent p{font-size:14px;line-height:1.62;color:var(--scan-dim);margin-bottom:12px}
.scan-consent-detail{padding:14px;border-radius:14px;background:rgba(217,20,53,.10);border:1px solid rgba(217,20,53,.30);color:var(--scan-bone)}
.scan-consent-detail strong{font-weight:700}
.scan-consent-actions{display:grid;gap:10px;margin:18px 0 12px}
.scan-consent-note{font-size:12.5px;color:var(--scan-ghost);margin:0}
.scan-discard{position:absolute;inset:0;z-index:36;display:grid;place-items:center;padding:22px;background:rgba(5,5,6,.96)}
.scan-discard-in{width:min(100%,420px);padding:26px;border:1px solid rgba(255,255,255,.16);border-radius:24px;background:#111114;box-shadow:0 28px 80px rgba(0,0,0,.62);color:var(--scan-bone)}
.scan-discard-eyebrow{margin:0 0 10px;color:var(--scan-red-hot);font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
.scan-discard h2{margin:0 0 10px;color:#fff;font-size:clamp(24px,7vw,31px);font-weight:820;letter-spacing:-.035em;line-height:1.05}
.scan-discard-copy{margin:0;color:var(--scan-dim);font-size:14px;line-height:1.6}
.scan-discard-actions{display:grid;gap:10px;margin-top:22px}
.scan-discard-actions .button{width:100%;min-height:52px}
.scan-discard-actions [data-discard-confirm]{border-color:rgba(255,255,255,.18);color:#fff;background:transparent}
.scan-discard-actions [data-discard-confirm]:hover{border-color:var(--scan-red-hot);color:var(--scan-red-hot)}
.scan-item-editor{
  position:absolute;inset:0;z-index:38;display:grid;align-items:end;
  padding:16px 12px max(16px,env(safe-area-inset-bottom));background:rgba(5,5,6,.78)
}
.scan-item-editor[hidden]{display:none}
.scan-item-editor-in{
  width:min(100%,480px);margin:0 auto;padding:22px;border:1px solid rgba(255,255,255,.16);
  border-radius:24px;background:#111114;box-shadow:0 28px 80px rgba(0,0,0,.66);color:var(--scan-bone)
}
.scan-item-editor-eyebrow{margin:0 0 8px;color:var(--scan-red-hot);font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
.scan-item-editor h2{margin:0 0 18px;color:#fff;font-size:clamp(23px,6vw,30px);font-weight:820;letter-spacing:-.035em;line-height:1.05}
.scan-item-editor-label,.scan-item-condition legend{display:block;margin:0 0 8px;color:rgba(255,255,255,.78);font-size:12px;font-weight:700}
.scan-item-editor-name{
  width:100%;min-height:52px;margin:0 0 18px;padding:12px 14px;border:1px solid rgba(255,255,255,.24);
  border-radius:13px;background:#09090b;color:#fff;font:inherit;font-size:16px
}
.scan-item-editor-name:focus{border-color:var(--scan-red-hot);outline:3px solid rgba(217,20,53,.22)}
.scan-item-condition{margin:0;padding:0;border:0}
.scan-item-condition-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.scan-item-condition-options label{position:relative;cursor:pointer}
.scan-item-condition-options input{position:absolute;opacity:0;pointer-events:none}
.scan-item-condition-options span{
  display:grid;place-items:center;min-height:48px;border:1px solid rgba(255,255,255,.18);
  border-radius:13px;background:rgba(255,255,255,.06);color:#fff;font-size:13px;font-weight:750
}
.scan-item-condition-options input:focus-visible + span{outline:3px solid #fff;outline-offset:2px}
.scan-item-condition-options input:checked + span{border-color:var(--scan-red-hot);background:rgba(217,20,53,.22);box-shadow:inset 0 0 0 1px var(--scan-red-hot)}
.scan-item-condition-options label:first-child input:checked + span{border-color:var(--scan-ok);background:rgba(46,212,122,.18);box-shadow:inset 0 0 0 1px var(--scan-ok)}
.scan-item-editor-help{margin:12px 0 0;color:var(--scan-dim);font-size:12px;line-height:1.5}
.scan-item-editor-actions{display:grid;grid-template-columns:1fr 1.35fr;gap:10px;margin-top:18px}
.scan-item-editor-actions .button{width:100%;min-height:52px}
@media (prefers-reduced-motion: reduce){
  .scan-discard{backdrop-filter:none}
}

/* ══════════════════════════════════════════════════
   LANDLORD JOURNEY — six guided steps
   One question per screen with a progress rail, as in
   the approved booking prototype.
   ══════════════════════════════════════════════════ */
.journey-page{--j-red:#D91435;--j-red-hot:#FF2D4F;--j-ok:#149E52;--j-ink:#0A0A0B;--j-dim:#5C5C64;--j-ghost:#93939C;--j-line:rgba(10,10,11,.10);--j-ease:cubic-bezier(.16,1,.3,1);background:#fff;color:var(--j-ink);min-height:100%}

.rail{position:fixed;top:0;left:0;right:0;z-index:880;background:rgba(255,255,255,.92);backdrop-filter:blur(20px);border-bottom:1px solid var(--j-line)}
.rail-in{max-width:1180px;margin:0 auto;padding:16px 28px;display:flex;align-items:center;gap:18px}
.rail-back{width:36px;height:36px;border-radius:50%;flex-shrink:0;background:none;border:1px solid var(--j-line);color:var(--j-ink);cursor:pointer;display:grid;place-items:center;transition:background .3s,transform .3s}
.rail-back:hover{background:rgba(10,10,11,.05);transform:translateX(-3px)}
.rail-back[hidden]{display:none}
.rail-steps{flex:1;display:flex;gap:6px}
.rail-seg{flex:1;height:3px;background:rgba(10,10,11,.09);border-radius:2px;overflow:hidden}
.rail-seg i{display:block;height:100%;width:0;background:var(--j-red);border-radius:2px;transition:width .7s var(--j-ease)}
.rail-seg.done i{width:100%}
.rail-seg.now i{width:100%;background:linear-gradient(90deg,var(--j-red),var(--j-red-hot))}
.rail-lbl{font-size:10px;letter-spacing:.2em;color:var(--j-ghost);text-transform:uppercase;white-space:nowrap;font-weight:600}
@media(max-width:640px){.rail-lbl{display:none}}

.journey-main{padding-top:104px;padding-bottom:80px}
.wrap-n{max-width:660px;margin:0 auto;padding:0 28px}
.jstep[hidden]{display:none}
.jstep{animation:jstepIn .5s var(--j-ease)}
@keyframes jstepIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

.eyebrow{font-size:10.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--j-red);margin-bottom:20px;display:flex;align-items:center;gap:11px;font-weight:700}
.eyebrow::before{content:"";width:26px;height:1px;background:var(--j-red)}
h2.pg{font-size:clamp(28px,7vw,36px);font-weight:800;letter-spacing:-.035em;line-height:1.08;margin-bottom:11px}
.pgs{font-size:15px;line-height:1.62;color:var(--j-dim);margin-bottom:30px;max-width:46ch}

.field{margin-bottom:22px}
.field label{display:block;font-size:12.5px;font-weight:700;color:var(--j-dim);margin-bottom:9px}
.field .hint{font-size:12px;color:var(--j-ghost);margin-top:8px;line-height:1.5}
.inp{width:100%;padding:17px 19px;border-radius:16px;background:rgba(10,10,11,.035);border:1.5px solid var(--j-line);color:var(--j-ink);font-family:inherit;font-size:16px;font-weight:500;transition:border-color .3s,background .3s,box-shadow .3s}
.inp::placeholder{color:var(--j-ghost)}
.inp:focus{outline:none;border-color:var(--j-red);background:rgba(217,20,53,.04);box-shadow:0 0 0 4px rgba(217,20,53,.12)}
.inp.ok{border-color:var(--j-ok)}
textarea.inp{resize:vertical;line-height:1.6;font-size:15px}
.err{color:var(--j-red);font-size:12.5px;margin-top:8px;font-weight:600}
.err[hidden]{display:none}

.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:15px 30px;border:none;border-radius:100px;font-family:inherit;font-size:14.5px;font-weight:600;letter-spacing:-.005em;cursor:pointer;transition:transform .35s var(--j-ease),box-shadow .35s var(--j-ease),background .3s;text-decoration:none}
.btn-p{background:var(--j-red);color:#fff;box-shadow:0 8px 30px -8px rgba(217,20,53,.7)}
.btn-p:hover{transform:translateY(-2px);box-shadow:0 16px 44px -10px rgba(217,20,53,.9)}
.btn-p:active{transform:translateY(0) scale(.98)}
.btn-lg{padding:19px 40px;font-size:15.5px}
.btn-full{width:100%}
.btn:disabled{opacity:.32;cursor:not-allowed;transform:none;box-shadow:none}
.btn-ghost{background:none;border:none;color:var(--j-dim);font-size:13.5px;font-weight:600;cursor:pointer;padding:12px;font-family:inherit;width:100%;transition:color .3s}
.btn-ghost:hover{color:var(--j-ink)}

.trust{display:flex;gap:26px;flex-wrap:wrap;justify-content:center;margin-top:32px}
.tchip{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--j-dim);font-weight:500}
.tchip svg{flex-shrink:0}

.supply{display:flex;align-items:center;gap:13px;padding:18px 20px;border-radius:16px;margin-bottom:22px;border:1px solid rgba(20,158,82,.3);background:rgba(20,158,82,.06);animation:jstepIn .5s var(--j-ease)}
.supply.none{border-color:rgba(199,122,0,.3);background:rgba(199,122,0,.07)}
.supply[hidden]{display:none}
.supply-dot{width:9px;height:9px;border-radius:50%;background:var(--j-ok);flex-shrink:0}
.supply.none .supply-dot{background:#C77A00}
.supply-head{font-size:14.5px;font-weight:700}
.supply-detail{font-size:12.5px;color:var(--j-dim);margin-top:2px;line-height:1.5}

.opt-list{display:grid;gap:11px;margin-bottom:28px}
.opt{display:block;width:100%;text-align:left;padding:18px 20px;border-radius:16px;border:1.5px solid var(--j-line);background:none;cursor:pointer;font-family:inherit;transition:border-color .3s,background .3s,transform .3s}
.opt:hover{transform:translateY(-2px);border-color:rgba(217,20,53,.35)}
.opt.on{border-color:var(--j-red);background:rgba(217,20,53,.05)}
.opt-name{display:block;font-size:15px;font-weight:700;letter-spacing:-.01em;color:var(--j-ink)}
.opt-detail{display:block;font-size:13px;color:var(--j-dim);margin-top:4px;line-height:1.55}

.scan-invite{padding:22px;border-radius:20px;border:1px solid rgba(217,20,53,.2);background:rgba(217,20,53,.04)}
.scan-invite-h{font-size:15px;font-weight:800;letter-spacing:-.01em;margin-bottom:6px}
.scan-invite-p{font-size:13.5px;color:var(--j-dim);line-height:1.6;margin-bottom:16px}

.res-hero{border-radius:24px;padding:26px;margin-bottom:26px;background:linear-gradient(150deg,#D91435,#8E0A22);color:#fff}
.res-hero-top{display:flex;align-items:center;gap:11px;margin-bottom:14px;font-size:10px;letter-spacing:.2em;text-transform:uppercase;opacity:.85}
.res-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}
.res-cell{background:rgba(255,255,255,.12);border-radius:14px;padding:14px 12px;text-align:center}
.res-cell b{display:block;font-size:18px;font-weight:800;letter-spacing:-.02em}
.res-cell span{display:block;margin-top:3px;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;opacity:.8}
.res-hero-note{font-size:13px;line-height:1.6;opacity:.95}

.day-strip{display:flex;gap:9px;overflow-x:auto;padding-bottom:4px}
.day{flex-shrink:0;width:58px;padding:12px 0;border-radius:14px;border:1.5px solid var(--j-line);background:none;cursor:pointer;font-family:inherit;text-align:center;transition:border-color .3s,background .3s,transform .3s}
.day:hover{transform:translateY(-2px)}
.day.on{border-color:var(--j-red);background:rgba(217,20,53,.06)}
.day span{display:block;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--j-ghost);font-weight:700}
.day b{display:block;font-size:17px;font-weight:800;margin-top:3px;color:var(--j-ink)}

.chips{display:flex;gap:9px;flex-wrap:wrap}
.chip{padding:11px 18px;border-radius:100px;border:1.5px solid var(--j-line);background:none;cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--j-ink);transition:border-color .3s,background .3s,transform .3s}
.chip:hover{transform:translateY(-2px)}
.chip.on{border-color:var(--j-red);background:rgba(217,20,53,.06);color:var(--j-red)}

.cleaner-list{display:grid;gap:11px;margin-bottom:24px}
.cleaner{display:block;width:100%;text-align:left;padding:18px 20px;border-radius:16px;border:1.5px solid var(--j-line);background:none;cursor:pointer;font-family:inherit;transition:border-color .3s,background .3s,transform .3s}
.cleaner:hover{transform:translateY(-2px);border-color:rgba(217,20,53,.35)}
.cleaner.on{border-color:var(--j-red);background:rgba(217,20,53,.05)}
.cleaner-name{font-size:15px;font-weight:700;letter-spacing:-.01em}
.cleaner-meta{font-size:12.5px;color:var(--j-dim);margin-top:4px}

.summary{display:grid;grid-template-columns:auto 1fr;gap:11px 18px;padding:22px;border-radius:18px;border:1px solid var(--j-line);margin-bottom:20px}
.summary dt{font-size:12.5px;color:var(--j-dim);font-weight:600}
.summary dd{font-size:14px;font-weight:700;text-align:right;overflow-wrap:anywhere}

.journey-property{padding:22px;border:1px solid var(--j-line);border-radius:20px;margin-bottom:20px;background:rgba(10,10,11,.018)}
.journey-property-heading{display:block}
.journey-property-heading .eyebrow{margin:0 0 7px;font-size:9px}
.journey-property-heading h3{font-size:18px;line-height:1.2}
.journey-property-heading>span{display:block;max-width:none;margin-top:8px;text-align:left}
.journey-property-options{display:grid;gap:9px}
.journey-property-option{width:100%;padding:14px 16px;border:1.5px solid var(--j-line);border-radius:14px;background:#fff;color:var(--j-ink);font:600 13.5px/1.45 inherit;text-align:left;cursor:pointer}
.journey-property-option:hover,.journey-property-option:focus-visible{border-color:rgba(217,20,53,.45);outline:none}
.journey-property-option.on{border-color:var(--j-red);background:rgba(217,20,53,.05)}
.journey-property-new-toggle{margin-top:8px}
.journey-property-new{padding-top:16px;border-top:1px solid var(--j-line)}
.journey-property-new>p{margin-bottom:16px;color:var(--j-dim);font-size:12.5px;line-height:1.55}
.journey-property-new .field:last-child{margin-bottom:0}
.journey-photo-consent{display:flex;align-items:flex-start;gap:10px;margin:0 0 10px;color:var(--j-dim);font-size:12.5px;line-height:1.55}
.journey-photo-consent input{width:18px;height:18px;margin-top:1px;accent-color:var(--j-red);flex:0 0 auto}
.journey-media-state{margin:0 0 18px;color:var(--j-dim);font-size:12.5px;line-height:1.55}
.checkout-note{padding:14px 16px;border-left:3px solid #C77A00;background:#FFF9EA;color:#6b5a46;font-size:13px;line-height:1.55;border-radius:0 12px 12px 0;margin-bottom:22px}
.jstate{font-size:13px;color:var(--j-dim);margin-top:14px;line-height:1.55}
.jstate[hidden]{display:none}

.jtoast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:900;padding:12px 18px;border-radius:100px;background:rgba(10,10,12,.94);color:#fff;font-size:13px;font-weight:600;box-shadow:0 18px 40px -12px rgba(0,0,0,.4);max-width:calc(100vw - 40px);text-align:center}
.jtoast[hidden]{display:none}

@media (prefers-reduced-motion: reduce){
  .jstep,.supply{animation:none}
  .btn,.opt,.chip,.day,.cleaner,.rail-back,.rail-seg i{transition-duration:.01ms}
}

@media(max-width:520px){
  .journey-property{padding:18px}
  .journey-property-heading{display:block}
  .journey-property-heading>span{display:block;max-width:none;margin-top:8px;text-align:left}
}

/* ══════════════════════════════════════════════════
   LANDLORD DASHBOARD — scan hero
   The scan is how every booking starts, so it leads the
   page. The whole banner is one target into the guided
   journey; the motion suggests the scanner it opens.
   ══════════════════════════════════════════════════ */
.scan-hero{
  position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,340px);gap:32px;align-items:center;
  padding:38px 40px;margin-bottom:34px;border-radius:28px;overflow:hidden;
  background:linear-gradient(145deg,#151519 0%,#0C0C10 55%,#17070C 100%);
  color:#fff;text-decoration:none;isolation:isolate;
  box-shadow:0 26px 60px -28px rgba(10,10,11,.62);
  transition:transform .55s cubic-bezier(.16,1,.3,1),box-shadow .55s cubic-bezier(.16,1,.3,1);
  animation:scanHeroIn .8s cubic-bezier(.16,1,.3,1) backwards;
}
@keyframes scanHeroIn{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
.scan-hero:hover,.scan-hero:focus-visible{transform:translateY(-4px);box-shadow:0 36px 80px -30px rgba(217,20,53,.5)}
.scan-hero:focus-visible{outline:3px solid #FF2D4F;outline-offset:3px}
.scan-hero:active{transform:translateY(-1px) scale(.995)}

/* A slow red bloom behind the copy, so the banner breathes rather than sits. */
.scan-hero-glow{position:absolute;inset:-40% -10% auto auto;width:60%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(217,20,53,.42),transparent 62%);filter:blur(12px);z-index:-2;animation:scanHeroGlow 9s ease-in-out infinite}
@keyframes scanHeroGlow{0%,100%{transform:translate(0,0) scale(1);opacity:.85}50%{transform:translate(-8%,6%) scale(1.12);opacity:1}}
.scan-hero-grid{position:absolute;inset:0;z-index:-1;opacity:.5;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:38px 38px;mask-image:radial-gradient(ellipse 75% 70% at 70% 40%,#000,transparent 76%);-webkit-mask-image:radial-gradient(ellipse 75% 70% at 70% 40%,#000,transparent 76%)}
/* The scanner's own sweep, slowed right down so it reads as ambient. */
.scan-hero-sweep{position:absolute;left:0;right:0;height:150px;z-index:-1;background:linear-gradient(180deg,transparent,rgba(255,45,79,.16) 45%,rgba(255,45,79,.42) 50%,rgba(255,45,79,.16) 55%,transparent);animation:scanHeroSweep 6.5s cubic-bezier(.65,0,.35,1) infinite}
@keyframes scanHeroSweep{0%{top:-150px;opacity:0}12%{opacity:1}88%{opacity:1}100%{top:100%;opacity:0}}

.scan-hero-body{display:block;min-width:0}
.scan-hero-eyebrow{display:inline-flex;align-items:center;gap:9px;font-size:10.5px;font-weight:700;letter-spacing:.26em;text-transform:uppercase;color:#FF8095;margin-bottom:16px}
.scan-hero-dot{width:7px;height:7px;border-radius:50%;background:#FF2D4F;box-shadow:0 0 0 0 rgba(255,45,79,.7);animation:scanHeroPulse 2.1s ease-out infinite}
@keyframes scanHeroPulse{0%{box-shadow:0 0 0 0 rgba(255,45,79,.7)}70%{box-shadow:0 0 0 11px rgba(255,45,79,0)}100%{box-shadow:0 0 0 0 rgba(255,45,79,0)}}
.scan-hero-title{display:block;font-size:clamp(25px,3.4vw,36px);font-weight:800;letter-spacing:-.035em;line-height:1.1;margin-bottom:14px}
.scan-hero-copy{margin-bottom:22px}
.scan-hero-cta{gap:12px}
.scan-hero-button{width:100%;justify-content:center}
.scan-hero:hover .scan-hero-button{background:#FF2D4F;gap:14px}
.scan-hero-time{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.5);font-weight:600}

/* A suggestion of the viewfinder, not a fake photo of someone's home. */
.scan-hero-frame{position:relative;aspect-ratio:4/3;border-radius:18px;border:1px solid rgba(255,255,255,.13);background:linear-gradient(160deg,rgba(255,255,255,.07),rgba(255,255,255,.015));overflow:hidden}
.scan-hero-reticle{position:absolute;inset:15%}
.scan-hero-reticle i{position:absolute;width:24px;height:24px;border:2.5px solid rgba(255,255,255,.85);transition:inset .5s cubic-bezier(.16,1,.3,1)}
.scan-hero-reticle i:nth-child(1){top:0;left:0;border-right:0;border-bottom:0;border-radius:7px 0 0 0}
.scan-hero-reticle i:nth-child(2){top:0;right:0;border-left:0;border-bottom:0;border-radius:0 7px 0 0}
.scan-hero-reticle i:nth-child(3){bottom:0;left:0;border-right:0;border-top:0;border-radius:0 0 0 7px}
.scan-hero-reticle i:nth-child(4){bottom:0;right:0;border-left:0;border-top:0;border-radius:0 0 7px 0}
.scan-hero:hover .scan-hero-reticle{inset:11%}
.scan-hero:hover .scan-hero-reticle i{border-color:#FF2D4F;box-shadow:0 0 18px rgba(255,45,79,.5)}

/* The labels the scanner produces, arriving in turn. */
.scan-hero-tag{position:absolute;display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:5px;background:#D91435;color:#fff;font-size:8.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;opacity:0;transform:scale(.9);animation:scanHeroTag 6.5s cubic-bezier(.16,1,.3,1) infinite}
.scan-hero-tag em{font-style:normal;opacity:.7}
.scan-hero-tag-1{top:26%;left:14%;animation-delay:.9s}
.scan-hero-tag-2{top:50%;right:11%;animation-delay:1.6s}
.scan-hero-tag-3{bottom:20%;left:22%;animation-delay:2.3s}
@keyframes scanHeroTag{0%{opacity:0;transform:scale(.9)}8%{opacity:1;transform:scale(1)}42%{opacity:1;transform:scale(1)}52%{opacity:0;transform:scale(.96)}100%{opacity:0}}

@media (max-width: 820px){
  .scan-hero{grid-template-columns:1fr;padding:30px 26px;gap:26px}
  .scan-hero-frame{aspect-ratio:16/9;order:-1}
  .scan-hero-copy{margin-bottom:22px}
}
@media (max-width: 460px){
  .scan-hero{padding:26px 22px;border-radius:22px}
  .scan-hero-cta{gap:12px}
  .scan-hero-button{width:100%;justify-content:center}
}

/* Everything ambient stops; the banner stays perfectly usable. */
@media (prefers-reduced-motion: reduce){
  .scan-hero,.scan-hero-glow,.scan-hero-sweep,.scan-hero-dot,.scan-hero-tag{animation:none}
  .scan-hero-tag{opacity:1;transform:none}
  .scan-hero-sweep{display:none}
  .scan-hero,.scan-hero-button,.scan-hero-reticle,.scan-hero-reticle i{transition-duration:.01ms}
}

/* Sections below the hero rise in as the page settles. */
.landlord-booking-section,.landlord-workspace-tabs,.landlord-workspace-panel{animation:scanHeroRise .7s cubic-bezier(.16,1,.3,1) backwards}
.landlord-booking-section{animation-delay:.08s}
.landlord-workspace-tabs{animation-delay:.16s}
.landlord-workspace-panel{animation-delay:.22s}
@keyframes scanHeroRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){
  .landlord-booking-section,.landlord-workspace-tabs,.landlord-workspace-panel{animation:none}
}

/* The scan mounted over whatever page opened it. The stage keeps the same
   presentation it had as a standalone page; only the framing changes. */
.scan-overlay{position:fixed;inset:0;z-index:1000;background:#050506;color:#fff;--scan-red:#D91435;--scan-red-hot:#FF2D4F;--scan-ok:#149E52;--scan-bone:#FFFFFF;--scan-dim:rgba(255,255,255,.62);--scan-ghost:rgba(255,255,255,.42);--scan-ease:cubic-bezier(.16,1,.3,1);--scan-ease-io:cubic-bezier(.65,0,.35,1);animation:scanOverlayIn .32s cubic-bezier(.16,1,.3,1)}
@keyframes scanOverlayIn{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}
.scan-overlay .scan-stage{height:100%}
@media (prefers-reduced-motion: reduce){.scan-overlay{animation:none}}

/* ── Feel upgrades (site-wide, matched to the upgrade kit) ──────────────── */

/* Press: a real touch on every button family. Keep each component's existing
   colour feedback while making transform timing consistent. */
.button { transition: transform var(--dur-fast) var(--ease-spring), box-shadow .25s var(--ease), background .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease); }
.deck-btn { transition: transform var(--dur-fast) var(--ease-spring), box-shadow .25s var(--ease), background .3s var(--scan-ease, var(--ease)), border-color .3s var(--scan-ease, var(--ease)), opacity .3s var(--scan-ease, var(--ease)); }
.button:active { transform: translateY(0) scale(.96); transition-duration: var(--dur-tap); }
.deck-btn:active:not(:disabled) { transform: scale(.94); transition-duration: var(--dur-tap); }

/* The account menu should land, not snap, when it opens. */
.account-menu[open] .account-menu-panel { transform-origin: top right; animation: homle-dialog-in .18s var(--ease); }

/* Toasts fade and lift instead of blinking in and out. */
.scan-toast, .jtoast { transition: opacity .2s var(--ease), transform .2s var(--ease); }
.scan-toast[hidden], .jtoast[hidden] { display: block; visibility: hidden; opacity: 0; transform: translateX(-50%) translateY(8px); pointer-events: none; }

/* Waiting states read as imminent, not broken. */
@keyframes homle-shimmer { to { background-position: -200% 0; } }
.skeleton { background: linear-gradient(90deg, #ece7e2 25%, #f7f3ef 37%, #ece7e2 63%); background-size: 200% 100%; animation: homle-shimmer 1.2s linear infinite; border-radius: 10px; min-height: 14px; }

/* A blocked field answers back. */
@keyframes homle-field-shake { 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } }
.field-error { animation: homle-field-shake .3s var(--ease); border-color: var(--brand) !important; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .button, .deck-btn { transition: none; }
  .account-menu[open] .account-menu-panel { animation: none; }
  .scan-toast, .jtoast { transition: none; }
  .skeleton { animation: none; }
  .field-error { animation: none; }
  ::view-transition-old(root), ::view-transition-new(root) { animation-duration: .001ms; }
}

/* Cross-page navigation: a soft crossfade instead of a white flash. Progressive
   enhancement — same-origin, Chrome/Edge today, ignored elsewhere. */
@view-transition { navigation: auto; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration: .25s; }

/* Account-first guard for the camera journey. A copied link or installed-app
   shortcut must never collect room photographs before a private Landlord
   workspace has been recovered. */
.journey-access{
  min-height:100dvh;
  display:grid;
  place-items:center;
  padding:32px 20px;
  background:var(--cream,#f6f2eb);
}
.journey-access[hidden]{display:none}
.journey-access-card{
  width:min(100%,560px);
  padding:clamp(28px,7vw,48px);
  border:1px solid rgba(24,18,15,.12);
  border-radius:28px;
  background:#fff;
  box-shadow:0 22px 60px rgba(35,22,18,.12);
}
.journey-access-card img{display:block;border-radius:15px;margin-bottom:24px}
.journey-access-card h1{font-size:clamp(2rem,7vw,3.5rem);line-height:1.02;margin:.6rem 0 1rem}
.journey-access-card>p:not(.eyebrow){color:#615b57;line-height:1.65}
.journey-access-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:28px}
.journey-access-actions .btn-ghost{padding:14px 6px}

/* ── Detected objects glow rather than being boxed ─────────────────────────
   A hard rectangle reads as a machine asserting a measurement it has not taken:
   the box edge is exactly where the object is NOT, and four of them over a real
   room look like an error state. A soft halo says "this, here" without claiming
   a boundary, and leaves the camera visible through it — which matters because
   the Landlord is aiming while it is drawn.

   Built from box-shadow and a radial gradient, both of which composite on the
   GPU. No blur filter: `filter: blur()` on a moving element forces a repaint of
   everything beneath it and is what makes this kind of effect stutter on a
   mid-range phone while the detector is already using the GPU. */
.det-box{
  border:none;
  background:
    radial-gradient(ellipse at center,rgba(217,20,53,.20) 0%,rgba(217,20,53,.10) 45%,transparent 72%);
  border-radius:22%;
  box-shadow:
    0 0 0 1.5px rgba(255,255,255,.30),
    0 0 14px 2px rgba(217,20,53,.50),
    0 0 34px 8px rgba(217,20,53,.24),
    inset 0 0 20px rgba(255,255,255,.07);
  /* Slower and softer than the old box: a halo that snaps looks like flicker,
     and the tracker deliberately holds a track for a few frames after it is
     lost so an object does not blink out when a hand passes it. */
  transition:opacity .42s var(--scan-ease),transform .42s var(--scan-ease),box-shadow .42s var(--scan-ease);
}
/* The corner ticks belonged to the rectangle. */
.det-box::before,.det-box::after{content:none}

/* Breathing, so a live highlight is visibly live rather than a frozen artefact
   the Landlord starts to ignore. Opacity only — nothing here lays out. */
.det-box.show{opacity:1;transform:scale(1);animation:scanGlowBreathe 2.4s ease-in-out infinite}
@keyframes scanGlowBreathe{0%,100%{opacity:.90}50%{opacity:1}}

/* The reader at work, made visible where the customer is already looking:
   while a walking read is genuinely in flight, a thin bright line sweeps up
   and down inside each glow — the sixth field report's own suggestion. It is
   gated on the `.is-reading` class the overlay sets from real read state, so
   the animation never claims analysis that is not happening. Transform-only,
   like everything else over the live camera; the corner-tick ::before is
   content:none in this design, so the slot is free. */
[data-detection-layer].is-reading .det-box.show::before{
  content:"";left:10%;right:10%;top:0;width:auto;height:12%;border:0;
  border-radius:99px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.7),transparent);
  animation:scanSweepLine 1.5s ease-in-out infinite alternate;
}
@keyframes scanSweepLine{from{transform:translateY(0)}to{transform:translateY(733%)}}

/* Saved. Green, brighter, and it stops breathing — a settled state reads as
   "done" where a pulsing one reads as "still working". */
.det-box.picked{
  background:radial-gradient(ellipse at center,rgba(46,212,122,.24) 0%,rgba(46,212,122,.12) 45%,transparent 72%);
  box-shadow:
    0 0 0 2px rgba(255,255,255,.42),
    0 0 16px 3px rgba(46,212,122,.60),
    0 0 40px 10px rgba(46,212,122,.28);
  animation:none;
  opacity:1;
}
.det-box.pickable:focus-visible{outline:3px solid #fff;outline-offset:4px}
.det-tag{top:-14px;border-radius:99px;padding:3px 9px;box-shadow:0 2px 10px rgba(0,0,0,.45)}

/* ── What the walk has found so far ────────────────────────────────────────
   Sits above the deck, capped in height and scrollable, so a room with a lot in
   it cannot push the shutter and the mic off a small screen. */
.found{
  position:relative;z-index:26;margin:0 0 10px;padding:9px 11px 10px;
  /* Solid rather than a backdrop blur. A blurred backdrop over a LIVE camera
     recomposites the feed behind it every single frame, on a phone that is
     already running inference — the cost is invisible in a mockup and obvious in
     the hand. A slightly more opaque panel reads the same and costs nothing. */
  border-radius:14px;background:rgba(8,8,10,.88);
}
.found-head{margin:0 0 7px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.72);display:flex;align-items:center;gap:7px}
.found-busy{width:9px;height:9px;border-radius:50%;background:var(--scan-red-hot);animation:scanFoundPulse 1.1s ease-in-out infinite}
@keyframes scanFoundPulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}
.found-list{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;max-height:23vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
.found-item{display:inline-flex;align-items:center;gap:2px;border-radius:99px;background:rgba(255,255,255,.10);animation:scanFoundIn .34s var(--scan-ease) both}
@keyframes scanFoundIn{from{opacity:0;transform:translateY(5px) scale(.94)}to{opacity:1;transform:none}}
/* Seen from a second angle, or confirmed. Both mean the room is sure. */
.found-item.is-sure{background:rgba(46,212,122,.17)}
.found-item.is-confirmed .found-name::before{content:"✓ ";color:var(--scan-ok)}
.found-name{appearance:none;border:0;background:none;font:inherit;color:#fff;font-size:12.5px;padding:6px 3px 6px 11px;cursor:pointer;max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.found-remove{appearance:none;border:0;background:none;color:rgba(255,255,255,.55);font-size:15px;line-height:1;padding:6px 10px 6px 4px;cursor:pointer;border-radius:99px}
.found-remove:hover,.found-remove:focus-visible{color:#fff}
.found-name:focus-visible,.found-remove:focus-visible{outline:2px solid #fff;outline-offset:-2px}

@media (prefers-reduced-motion:reduce){
  .det-box.show,.found-busy,.found-item{animation:none}
  [data-detection-layer].is-reading .det-box.show::before{content:none;animation:none}
}

/* ── Condition on the found-item rows ──────────────────────────────────────
   The grade is the answer being paid for, so it sits on the row rather than
   behind a tap. Colour carries meaning here, so each grade also reads as a word
   — "clean", "heavy" — for anyone who cannot separate the greens from the reds. */
.found-grade{font-style:normal;font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:2px 6px;border-radius:99px;margin-left:2px;vertical-align:middle}
.found-grade[data-grade="clean"]{background:rgba(46,212,122,.22);color:#7BE8AC}
.found-grade[data-grade="light"]{background:rgba(255,255,255,.14);color:rgba(255,255,255,.86)}
.found-grade[data-grade="medium"]{background:rgba(240,168,48,.22);color:#F5C877}
.found-grade[data-grade="heavy"]{background:rgba(217,20,53,.26);color:#FF9AAB}
.found-grade[data-grade="uncertain"]{background:rgba(240,168,48,.12);color:#F5C877;outline:1px solid rgba(245,200,119,.48)}
/* Said out loud rather than only shown dimmer: an uncertain reading that looks
   merely quiet still reads as a fact. */
.found-name[data-unsure="true"]{opacity:.72}
.found-name[data-unsure="true"]::after{content:" ?";opacity:.75;font-weight:700}

/* Pressed. Confirmed on the press itself, before any work — the button used to
   stay lit while a vision model was called, which reads as a dead control. */
.button.saved{background:var(--scan-ok);border-color:var(--scan-ok);color:#0A0A0B}

/* ── The glow carries the verdict ──────────────────────────────────────────
   On review, an object's glow takes the colour of its condition, so the answer
   sits on the thing itself rather than only in the side list. Grades are also
   written as words in the tag — colour alone would exclude anyone who cannot
   separate the greens from the reds. Same box-shadow/gradient technique as the
   base glow: composites on the GPU, no blur filters over the camera. */
.det-box[data-grade="heavy"]{
  background:radial-gradient(ellipse at center,rgba(217,20,53,.26) 0%,rgba(217,20,53,.13) 45%,transparent 72%);
  box-shadow:0 0 0 1.5px rgba(255,255,255,.34),0 0 16px 3px rgba(217,20,53,.62),0 0 38px 9px rgba(217,20,53,.30);
}
.det-box[data-grade="medium"]{
  background:radial-gradient(ellipse at center,rgba(240,168,48,.22) 0%,rgba(240,168,48,.11) 45%,transparent 72%);
  box-shadow:0 0 0 1.5px rgba(255,255,255,.32),0 0 15px 2px rgba(240,168,48,.55),0 0 34px 8px rgba(240,168,48,.26);
}
.det-box[data-grade="light"]{
  background:radial-gradient(ellipse at center,rgba(255,255,255,.14) 0%,rgba(255,255,255,.07) 45%,transparent 72%);
  box-shadow:0 0 0 1.5px rgba(255,255,255,.30),0 0 13px 2px rgba(255,255,255,.34),0 0 30px 7px rgba(255,255,255,.15);
}
/* Clean is quiet on purpose. It stays visible — "we looked, it is fine" is part
   of the assessment — but the room's attention belongs to what needs work. */
.det-box[data-grade="clean"]{
  background:radial-gradient(ellipse at center,rgba(46,212,122,.12) 0%,rgba(46,212,122,.05) 45%,transparent 72%);
  box-shadow:0 0 0 1px rgba(46,212,122,.35),0 0 10px 2px rgba(46,212,122,.22);
  animation:none;opacity:.85;
}
.det-box[data-grade="heavy"] .det-tag{background:var(--scan-red-hot)}
.det-box[data-grade="medium"] .det-tag{background:#B87A18}
.det-box[data-grade="clean"] .det-tag{background:var(--scan-ok);color:#0A0A0B}

/* Selection must stay visible on a graded box. The grade rules above share
   specificity with `.picked` and come later in the file, so they were winning:
   tapping a graded object out of the room left virtually the same glow, and on
   a clean object exactly the same one — easy to save the wrong selection.

   The distinction is carried by opacity, not by colour or animation, so it
   survives reduced-motion and does not depend on telling red from green:
   kept = the full graded glow, removed = the same box faded to a remnant. */
.det-box.pickable[data-grade]:not(.picked){opacity:.32;animation:none}
.det-box.pickable[data-grade]:not(.picked) .det-tag{text-decoration:line-through;opacity:.8}

/* ── The tester's readout (?scanDebug=1) ──────────────────────────────────
   Hidden for customers; the brief's no-technical-clutter rule stands. For a
   tester it turns a screenshot into a diagnosis: "reads 0/4, detector off" and
   "reads 4/4, last read 3200ms" are different bugs, and until now no photo of
   the scanner could tell them apart. */
.scan-debug{position:absolute;top:70px;right:10px;z-index:30;margin:0;padding:8px 10px;display:grid;grid-template-columns:auto auto;gap:2px 10px;border-radius:10px;background:rgba(8,8,10,.82);font:10.5px/1.5 ui-monospace,monospace;color:rgba(255,255,255,.85);pointer-events:none;max-width:46vw}
.scan-debug dt{opacity:.55;text-transform:uppercase;letter-spacing:.06em;font-size:9px;align-self:center}
.scan-debug dd{margin:0;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Administrator scan accuracy review. */
.admin-truth-queue{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.admin-truth-row{border:1px solid var(--line,#E4DED6);border-radius:12px;padding:12px}
.admin-truth-row>p{margin:0 0 6px}
.admin-truth-form{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:6px}
.admin-truth-form select{min-height:40px;border-radius:10px;border:1.5px solid var(--line,#E4DED6);padding:0 10px;font:inherit}
.admin-truth-form details{flex-basis:100%}
.admin-truth-kind{display:inline-flex;align-items:center;gap:4px;margin:4px 10px 0 0;font-size:13.5px}
