/* RangeFinder Wyoming — business detail page */

/* detail root */
.detail-root{padding-block:clamp(1.25rem,3vw,2rem) clamp(1.5rem,4vw,3rem)}

/* breadcrumb */
.detail-crumbs{font-size:var(--text-xs);color:var(--color-text-faint);display:flex;gap:.4rem;align-items:center;margin-bottom:var(--space-5);flex-wrap:wrap}
.detail-crumbs a:hover{color:var(--color-primary)}
.detail-crumbs .crumb-cat{color:var(--color-text-muted)}

/* header banner (SVG mountain hero) */
.detail-hero{margin-bottom:var(--space-6)}
.detail-banner{position:relative;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--color-border);min-height:210px;display:flex;align-items:flex-end;background:var(--color-surface-offset)}
.banner-svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.banner-scrim{position:absolute;inset:0;background:linear-gradient(to top, rgba(10,18,13,.82), rgba(10,18,13,.5) 55%, rgba(10,18,13,0) 100%)}
.banner-overlay{position:relative;z-index:2;display:flex;align-items:center;gap:var(--space-4);padding:var(--space-5) var(--space-6);width:100%}
.banner-ico{width:58px;height:58px;border-radius:var(--radius-md);background:rgba(255,255,255,.16);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:grid;place-items:center;font-size:1.9rem;flex-shrink:0;border:1px solid rgba(255,255,255,.28)}
.banner-titles{min-width:0}
.detail-banner .detail-name{color:#fff;margin-bottom:.1rem;text-shadow:0 1px 3px rgba(0,0,0,.4)}
.detail-banner .detail-cat{color:rgba(255,255,255,.88);margin-bottom:0;text-shadow:0 1px 2px rgba(0,0,0,.4)}
.banner-note{position:absolute;top:.6rem;right:.7rem;z-index:3;font-size:var(--text-xs);color:#fff;background:rgba(10,18,13,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);padding:.25rem .55rem;border-radius:var(--radius-full);max-width:62%;text-align:right;line-height:1.4}
@media (max-width:600px){
  .detail-banner{min-height:158px}
  .banner-overlay{padding:var(--space-4);gap:.6rem}
  .banner-ico{width:46px;height:46px;font-size:1.4rem}
  .detail-banner .detail-name{font-size:clamp(1.25rem,1rem+2vw,1.55rem)}
  .banner-note{font-size:10px;max-width:48%;padding:.2rem .45rem}
}

/* header block */
.detail-head{display:grid;grid-template-columns:1fr auto;gap:var(--space-6);align-items:start;margin-bottom:var(--space-8)}
.detail-head-left{min-width:0}
.detail-ico{width:56px;height:56px;border-radius:var(--radius-md);background:var(--color-surface-offset);display:grid;place-items:center;font-size:1.8rem;margin-bottom:var(--space-4)}
.detail-name{font-family:var(--font-display);font-weight:600;font-size:clamp(1.6rem,1.2rem+1.5vw,2.2rem);letter-spacing:-.015em;line-height:1.1;margin-bottom:.4rem}
.detail-cat{font-size:var(--text-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:500;margin-bottom:var(--space-4)}
.detail-badges{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}

/* Provider-supplied "Starting at" price pill on the detail hero. Featured &
   Spotlight plans only — the server does the plan gate before this renders.
   Presented as an owner-set claim (not a RangeFinder estimate), so it lives
   as its own pill next to the badges rather than mimicking a verified badge. */
.starting-price{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:.4rem;margin-top:.7rem;padding:.55rem .85rem;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-body);max-width:100%}
.starting-price .sp-label{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.starting-price .sp-amt{font-size:var(--text-lg);color:var(--color-text);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.starting-price .sp-unit{font-size:var(--text-sm);color:var(--color-text);font-weight:500}
.starting-price .sp-note{font-size:var(--text-xs);color:var(--color-text-muted);font-style:italic;flex-basis:100%}
.starting-price .sp-tip{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem;border-radius:50%;background:var(--color-border);color:var(--color-text-muted);font-size:.7rem;font-weight:700;font-style:italic;cursor:help;margin-left:.15rem;user-select:none}
@media (min-width:520px){.starting-price .sp-note{flex-basis:auto}}

/* Quote-form extras — date + party + budget row shown only when the business
   posted a starting price. Mirrors the standard lead form spacing. */
.quote-detail-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin-bottom:.6rem}
.quote-detail-row .bf-label{display:flex;flex-direction:column;gap:.25rem;font-size:var(--text-xs);color:var(--color-text-muted)}
.quote-detail-row input,.quote-detail-row select{width:100%;font-family:var(--font-body);font-size:var(--text-sm);padding:.5rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text);box-sizing:border-box;-webkit-appearance:none;appearance:none}
.quote-detail-row input:focus,.quote-detail-row select:focus{outline:2px solid var(--color-primary);outline-offset:1px;background:var(--color-surface);border-color:var(--color-primary)}
@media (max-width:640px){.quote-detail-row{grid-template-columns:1fr}}
.detail-actions{display:flex;flex-direction:column;gap:.6rem;min-width:200px}
.detail-actions .btn{justify-content:center}
@media (max-width:760px){
  .detail-head{grid-template-columns:1fr}
  .detail-actions{flex-direction:row;flex-wrap:wrap}
  .detail-actions .btn{flex:1;min-width:120px}
}

/* description */
.detail-desc{font-size:var(--text-base);color:var(--color-text-muted);line-height:1.65;max-width:64ch;margin-bottom:var(--space-8)}

/* info grid */
.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5);margin-bottom:var(--space-8)}
@media (max-width:760px){.detail-grid{grid-template-columns:1fr}}

.detail-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5)}
.detail-card h3{font-family:var(--font-body);font-weight:600;font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-faint);margin-bottom:var(--space-4);display:flex;align-items:center;gap:.5rem}
.detail-card h3 .dc-ico{font-size:1rem}

/* hours */
.hours-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}
.hours-table tr+tr{border-top:1px solid var(--color-divider)}
.hours-table td{padding:.5rem 0;color:var(--color-text)}
.hours-table td:first-child{color:var(--color-text-muted);width:40%}
.hours-table td:last-child{text-align:right;font-variant-numeric:tabular-nums}
.hours-note{font-size:var(--text-xs);color:var(--color-text-faint);font-style:italic;margin-top:var(--space-3);line-height:1.5}
.hours-status{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--text-xs);font-weight:500;padding:.2rem .55rem;border-radius:var(--radius-full);margin-bottom:var(--space-3)}
.hours-status.open{background:color-mix(in oklab,var(--color-primary) 15%,transparent);color:var(--color-primary)}
.hours-status.closed{background:var(--color-surface-offset);color:var(--color-text-muted)}
.hours-status.byapt{background:color-mix(in oklab,var(--color-accent) 16%,transparent);color:var(--color-accent)}

/* review breakdown */
.review-summary{display:flex;align-items:baseline;gap:.6rem;margin-bottom:var(--space-4)}
.review-avg{font-family:var(--font-display);font-weight:600;font-size:2rem;color:var(--color-text);line-height:1}
/* No aggregated rating — a word, not a 2rem numeral, so it can't read as a score. */
.review-avg.is-unrated{font-size:1.1rem;color:var(--color-text-muted)}
.review-stars{color:var(--color-star);font-size:1rem;letter-spacing:1px}
.review-count{font-size:var(--text-sm);color:var(--color-text-muted)}
.breakdown-rows{display:flex;flex-direction:column;gap:.5rem}
.breakdown-row{display:grid;grid-template-columns:1.4rem 1fr 2rem;align-items:center;gap:.6rem;font-size:var(--text-xs);color:var(--color-text-muted)}
.breakdown-row .b-label{font-variant-numeric:tabular-nums;text-align:right}
.breakdown-bar{height:8px;background:var(--color-surface-offset);border-radius:var(--radius-full);overflow:hidden}
.breakdown-bar .b-fill{display:block;height:100%;background:linear-gradient(90deg,var(--color-primary),color-mix(in oklab,var(--color-primary) 70%,var(--color-accent)));border-radius:inherit;transition:width .5s cubic-bezier(.16,1,.3,1)}
.breakdown-row .b-count{font-variant-numeric:tabular-nums;text-align:right}
.review-source{font-size:var(--text-xs);color:var(--color-text-faint);font-style:italic;margin-top:var(--space-4);line-height:1.5}

/* credentials list */
.cred-list{list-style:none;display:flex;flex-direction:column;gap:.55rem}
.cred-list li{display:flex;align-items:flex-start;gap:.5rem;font-size:var(--text-sm);color:var(--color-text)}
.cred-list li .cred-check{color:var(--color-primary);flex-shrink:0;font-weight:700;margin-top:1px}
.cred-empty{font-size:var(--text-sm);color:var(--color-text-muted)}

/* facts list (key/value) */
.fact-list{display:flex;flex-direction:column;gap:.6rem}
.fact{display:grid;grid-template-columns:7.5rem 1fr;gap:.6rem;font-size:var(--text-sm)}
.fact .fact-k{color:var(--color-text-muted)}
.fact .fact-v{color:var(--color-text);word-break:break-word}
.fact .fact-v a:hover{text-decoration:underline;color:var(--color-primary)}

/* service tags */
.tag-list{display:flex;flex-wrap:wrap;gap:.4rem}
.tag{font-size:var(--text-xs);font-weight:500;padding:.25rem .65rem;border-radius:var(--radius-full);background:var(--color-surface-offset);color:var(--color-text-muted)}

/* claim + license capture */
.detail-claim{background:color-mix(in oklab,var(--color-primary) 8%,var(--color-surface));border:1px dashed color-mix(in oklab,var(--color-primary) 40%,var(--color-border));border-radius:var(--radius-lg);padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}
.detail-claim p{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:.2rem}
.detail-claim-intro strong{font-size:var(--text-base);color:var(--color-text)}
.claim-form{display:flex;flex-direction:column;gap:.7rem;max-width:520px}
.claim-form .field-row{display:flex;flex-direction:column}
.claim-form .bf-label{display:flex;flex-direction:column;gap:.25rem;font-size:var(--text-sm);color:var(--color-text-muted)}
.claim-form input{font-family:var(--font-body);font-size:var(--text-base);padding:.55rem .7rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text)}
.claim-form input:focus{outline:none;border-color:var(--color-primary)}
.claim-form .btn{align-self:flex-start}
.claim-form-hint{font-size:var(--text-xs);color:var(--color-text-faint);font-style:italic}
.detail-claim-note{margin-top:0;font-size:var(--text-sm);color:var(--color-primary)}
.detail-claim-note:empty{display:none}

/* not found */
.detail-notfound{text-align:center;padding:var(--space-16) var(--space-4);max-width:520px;margin-inline:auto}
.detail-notfound .nf-ico{font-size:2.5rem;display:block;margin-bottom:var(--space-4)}
.detail-notfound h2{font-size:var(--text-lg);margin-bottom:.5rem}
.detail-notfound p{color:var(--color-text-muted);margin-bottom:var(--space-5)}

/* skeleton */
.detail-skeleton .skel{background:var(--color-surface-offset);border-radius:var(--radius-md);animation:skelpulse 1.4s ease-in-out infinite}
@keyframes skelpulse{0%,100%{opacity:.6}50%{opacity:.9}}
.skel-crumb{width:200px;height:14px;margin-bottom:var(--space-5)}
.skel-line{height:24px;margin-bottom:.6rem}
.skel-line.w-40{width:40%}
.skel-line.w-70{width:70%}
.skel-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5);margin-top:var(--space-6)}
.skel-card{height:180px;border-radius:var(--radius-lg)}
@media (max-width:760px){.skel-grid{grid-template-columns:1fr}}

/* related */
.detail-related-title{font-size:var(--text-lg);margin-bottom:var(--space-5)}
.detail-related .card:hover{cursor:pointer}

/* ---- reviews honest scaffold ---- */
.sub-title{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-faint);margin:var(--space-4) 0 var(--space-3)}
.sub-rows{display:flex;flex-direction:column;gap:.55rem}
.sub-row{display:grid;grid-template-columns:7rem 1fr 1.5rem;align-items:center;gap:.6rem;font-size:var(--text-xs);color:var(--color-text-muted)}
.sub-label{font-weight:500}
.sub-bar{height:8px;background:var(--color-surface-offset);border-radius:var(--radius-full);overflow:hidden}
.sub-fill{display:block;height:100%;background:linear-gradient(90deg,var(--color-primary),color-mix(in oklab,var(--color-primary) 70%,var(--color-accent)));border-radius:inherit;transition:width .5s cubic-bezier(.16,1,.3,1)}
.sub-val{text-align:right;font-variant-numeric:tabular-nums;color:var(--color-text-faint)}
.review-ext{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-divider)}
.review-ext-label{font-size:var(--text-xs);color:var(--color-text-faint);margin-bottom:.4rem}
.review-ext-links{display:flex;flex-wrap:wrap;gap:.4rem}
.review-ext-link{font-size:var(--text-xs);font-weight:500;padding:.3rem .7rem;border-radius:var(--radius-full);background:var(--color-surface-offset);color:var(--color-text-muted);text-decoration:none}
.review-ext-link:hover{background:color-mix(in oklab,var(--color-primary) 12%,var(--color-surface-offset));color:var(--color-primary)}
.review-form{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--color-divider)}
.review-form-label{font-size:var(--text-sm);font-weight:600;margin-bottom:.5rem;color:var(--color-text)}
.review-form-stars{display:flex;flex-direction:row;justify-content:flex-start;gap:.15rem;margin-bottom:.5rem}
.rf-star{cursor:pointer;font-size:1.25rem;color:var(--color-text-faint);line-height:1}
.rf-star input{position:absolute;opacity:0;width:0;height:0}
.rf-star span{pointer-events:none}
.rf-star:hover span{color:var(--color-accent)}
.rf-star input:checked ~ span{color:var(--color-star)}
.rf-star input:focus-visible ~ span{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:2px}
.review-form-title,.review-form-text{width:100%;font-family:var(--font-body);font-size:var(--text-sm);padding:.5rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text);box-sizing:border-box;-webkit-appearance:none;appearance:none}
.review-form-text{resize:vertical;min-height:5.5rem}
.review-form-title::placeholder,.review-form-text::placeholder{color:var(--color-text-muted);opacity:1}
.review-form-title:focus,.review-form-text:focus{outline:2px solid var(--color-primary);outline-offset:1px;background:var(--color-surface);border-color:var(--color-primary)}
.review-form-foot{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-top:.6rem}
.review-form-hint{font-size:var(--text-xs);color:var(--color-text-faint)}
.review-form-note{font-size:var(--text-xs);color:var(--color-primary);margin-top:.4rem;min-height:1em}

/* ---- post-submit handoff + email previews ---- */
.handoff-panel{margin-top:var(--space-4);padding:var(--space-5);border:1px solid color-mix(in oklab,var(--color-primary) 30%,var(--color-border));border-radius:var(--radius-lg);background:color-mix(in oklab,var(--color-primary) 5%,var(--color-surface))}
.handoff-head{display:flex;align-items:center;gap:.7rem;margin-bottom:var(--space-4)}
.handoff-check{flex-shrink:0;width:34px;height:34px;border-radius:var(--radius-full);background:var(--color-primary);color:#fff;display:grid;place-items:center;font-size:1.1rem;font-weight:700}
.handoff-title{font-family:var(--font-display);font-weight:600;font-size:var(--text-lg);line-height:1.2}
.handoff-sub{font-size:var(--text-xs);color:var(--color-text-faint);margin-top:.1rem}
.handoff-next{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:.5rem}
.handoff-steps{margin:0 0 var(--space-5) 1.1rem;font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.6}
.handoff-steps li+li{margin-top:.25rem}
.email-block{margin-bottom:var(--space-4)}
.email-label{font-size:var(--text-xs);font-weight:600;color:var(--color-text);margin-bottom:.4rem}
.email-note{display:block;font-weight:400;font-style:italic;color:var(--color-text-faint);margin-top:.2rem;line-height:1.5}
.email-preview{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;background:var(--color-surface-2)}
.email-head{background:var(--color-surface-offset);padding:.6rem .8rem;border-bottom:1px solid var(--color-divider)}
.email-row{display:grid;grid-template-columns:3.5rem 1fr;gap:.5rem;font-size:var(--text-xs);line-height:1.5}
.email-row+.email-row{margin-top:.15rem}
.email-k{color:var(--color-text-faint);font-weight:500}
.email-v{color:var(--color-text);word-break:break-word}
.email-body{margin:0;padding:.7rem .8rem;font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text);white-space:pre-wrap;word-wrap:break-word;line-height:1.55}
/* Deferred account creation CTA on the lead-confirmation panel */
.handoff-track{margin-top:var(--space-4);padding:var(--space-4);border-radius:var(--radius-md);background:color-mix(in oklab,var(--color-primary) 8%,var(--color-surface));border:1px solid color-mix(in oklab,var(--color-primary) 25%,var(--color-border))}
.handoff-track-title{font-size:var(--text-sm);font-weight:700;color:var(--color-text);margin-bottom:.2rem}
.handoff-track-sub{font-size:var(--text-xs);color:var(--color-text-muted);line-height:1.5;margin-bottom:var(--space-3)}
.handoff-track-sub:last-child{margin-bottom:0}
.handoff-direct{margin-top:var(--space-5);padding:var(--space-4);border-radius:var(--radius-md);background:color-mix(in oklab,var(--color-accent) 8%,var(--color-surface));border:1px solid color-mix(in oklab,var(--color-accent) 22%,var(--color-border))}
.handoff-direct-title{font-size:var(--text-sm);font-weight:600;color:var(--color-text);margin-bottom:.2rem}
.handoff-direct-sub{font-size:var(--text-xs);color:var(--color-text-muted);line-height:1.5;margin-bottom:var(--space-3)}
.handoff-ctas{display:flex;flex-wrap:wrap;gap:.5rem}
.handoff-ctas .btn{flex:1;min-width:140px;justify-content:center}
@media (max-width:520px){
  .handoff-ctas .btn{flex:1 1 100%}
}

/* ---- asset demo label ---- */
.asset-label{font-size:var(--text-xs);color:var(--color-text-faint);font-style:italic;margin-bottom:var(--space-3);line-height:1.5}

/* ---- photo gallery ---- */
.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:var(--space-3)}
.photo-tile{position:relative;aspect-ratio:1/1;border-radius:var(--radius-md);border:1px solid var(--color-border);overflow:hidden;padding:0;background:var(--color-surface-2);cursor:pointer;transition:border-color var(--transition-interactive),transform var(--transition-interactive)}
.photo-tile:hover{border-color:var(--color-primary)}
.photo-tile img{width:100%;height:100%;object-fit:cover;display:block}
.photo-cap{position:absolute;left:0;right:0;bottom:0;font-size:10px;color:#fff;background:linear-gradient(to top,rgba(10,18,13,.78),rgba(10,18,13,0));padding:.5rem .4rem .3rem;text-align:left;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.photo-empty-hero{position:relative;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--color-border);min-height:120px;display:flex;align-items:center;justify-content:center}
.photo-empty-hero .banner-svg{position:absolute;inset:0;width:100%;height:100%}
.photo-empty-note{position:relative;z-index:2;font-size:var(--text-xs);color:#fff;background:rgba(10,18,13,.5);padding:.25rem .6rem;border-radius:var(--radius-full)}

/* hero photo overlay (fail-safe over the SVG banner) */
.banner-photo{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}
.banner-photo.is-broken{display:none}
.detail-banner.has-photo{cursor:zoom-in}
/* let clicks fall through the title overlay to the hero photo (opens lightbox) */
.detail-banner.has-photo .banner-overlay,.detail-banner.has-photo .banner-scrim{pointer-events:none}

/* hero thumbnail strip */
.detail-gallery{display:flex;gap:.5rem;margin-top:.6rem;flex-wrap:wrap}
.gallery-thumb{width:84px;height:64px;border-radius:var(--radius-md);border:1px solid var(--color-border);overflow:hidden;padding:0;cursor:pointer;background:var(--color-surface-2);transition:border-color var(--transition-interactive)}
.gallery-thumb:hover{border-color:var(--color-primary)}
.gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block}

/* lightbox */
.rf-lightbox{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center}
.rf-lightbox.is-open{display:flex}
.lb-backdrop{position:absolute;inset:0;background:rgba(6,10,8,.9)}
.lb-stage{position:relative;z-index:2;max-width:min(94vw,1100px);max-height:92vh;display:flex;align-items:center;gap:.5rem}
.lb-figure{margin:0;max-width:100%;max-height:92vh;display:flex;flex-direction:column;align-items:center;gap:.6rem}
.lb-img{max-width:82vw;max-height:82vh;object-fit:contain;border-radius:var(--radius-md);box-shadow:0 8px 40px rgba(0,0,0,.5)}
.lb-cap{color:rgba(255,255,255,.9);font-size:var(--text-sm);text-align:center;max-width:70ch}
.lb-close{position:absolute;top:-2.6rem;right:0;z-index:3;background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:var(--radius-full);width:2.2rem;height:2.2rem;font-size:1.5rem;line-height:1;cursor:pointer}
.lb-prev,.lb-next{background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:var(--radius-full);width:2.6rem;height:2.6rem;font-size:1.8rem;line-height:1;cursor:pointer;flex-shrink:0}
.lb-prev:hover,.lb-next:hover,.lb-close:hover{background:rgba(255,255,255,.28)}
/* Mobile pass: lightbox controls stay >=44px tap targets on small screens. */
@media (max-width:768px){
  .lb-close{width:44px;height:44px;top:-3.2rem;font-size:1.6rem}
  .lb-prev,.lb-next{width:44px;height:44px;font-size:1.6rem}
}

/* ---- booking calendar + form ---- */
.booking-cal{margin-bottom:var(--space-4)}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}
.cal-month{font-size:var(--text-sm);font-weight:600;color:var(--color-text)}
.cal-nav{width:28px;height:28px;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-2);color:var(--color-text);font-size:1rem;line-height:1;cursor:pointer}
.cal-nav:hover{border-color:var(--color-primary);color:var(--color-primary)}
.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:.2rem;margin-bottom:.3rem}
.cal-dow span{font-size:var(--text-xs);color:var(--color-text-faint);text-align:center;font-weight:500;text-transform:uppercase}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.2rem}
.cal-blank{}
.cal-day{aspect-ratio:1/1;border:none;background:var(--color-surface-2);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--color-text);cursor:pointer;transition:background var(--transition-interactive),color var(--transition-interactive)}
.cal-day:hover{background:var(--color-surface-offset)}
.cal-day.today{font-weight:700;outline:1px solid var(--color-primary);color:var(--color-primary)}
.cal-day.selected{background:var(--color-primary);color:var(--color-text-inverse,#fff)}
.bf-label{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:500;display:flex;flex-direction:column;gap:.25rem}
.bf-label input,.bf-label select,.bf-label textarea{font-family:var(--font-body);font-size:var(--text-sm);padding:.45rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text);width:100%}
.bf-label input:focus,.bf-label select:focus,.bf-label textarea:focus{outline:2px solid var(--color-primary);outline-offset:1px}
.field-row{margin-bottom:var(--space-3)}
.booking-form .btn,.lead-form .btn{margin-top:.4rem}
.booking-note,.lead-note{font-size:var(--text-xs);color:var(--color-primary);margin-top:.5rem;min-height:1em;line-height:1.5}
.booking-comm-note{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-4);line-height:1.55;border-top:1px solid var(--color-divider);padding-top:var(--space-3)}
.booking-comm-note a{color:var(--color-primary)}
.lead-routing-note{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-3);line-height:1.55}
.lead-routing-note a{color:var(--color-primary)}

/* ---- toast ---- */
.rf-toast{position:fixed;left:50%;bottom:var(--space-8);transform:translateX(-50%) translateY(12px);background:var(--color-text);color:var(--color-bg);padding:.7rem 1.1rem;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:500;z-index:9999;box-shadow:var(--shadow-lg);opacity:0;transition:opacity .25s ease,transform .25s cubic-bezier(.16,1,.3,1);pointer-events:none;max-width:90vw;text-align:center}
.rf-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

@media (max-width:520px){
  .sub-row{grid-template-columns:5.5rem 1fr 1.5rem}
  .photo-grid{grid-template-columns:repeat(2,1fr)}
}

/* ---- review signal breakdown + keyword tags ---- */
.keyword-signals{margin-top:var(--space-4)}
.keyword-signals-label{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:.5rem}
.keyword-tags{display:flex;flex-wrap:wrap;gap:.35rem}
.keyword-tag{display:inline-flex;align-items:center;gap:.25rem;font-size:var(--text-xs);font-weight:500;padding:.25rem .55rem;border-radius:var(--radius-full);background:color-mix(in oklab,var(--color-primary) 10%,transparent);color:var(--color-primary);border:1px solid color-mix(in oklab,var(--color-primary) 22%,transparent)}
.keyword-tag.from-cert{background:color-mix(in oklab,var(--color-accent) 12%,transparent);color:var(--color-accent);border-color:color-mix(in oklab,var(--color-accent) 24%,transparent)}
.keyword-tag.from-desc{background:var(--color-surface-offset-2);color:var(--color-text-muted);border-color:var(--color-border)}
.keyword-empty{font-size:var(--text-xs);color:var(--color-text-faint)}
.signal-note{font-size:var(--text-xs);color:var(--color-text-faint);line-height:1.5;margin:.4rem 0 var(--space-3)}

/* ---- demo account: review gating, posted reviews, autofill, favorites ---- */
.detail-head-left .fav-btn{margin-top:.7rem}
.review-form-as{font-size:var(--text-xs);color:var(--color-text-muted);margin:.2rem 0 .6rem}
.review-form-as strong{color:var(--color-text)}
.autofill-note{font-size:var(--text-xs);color:var(--color-accent);background:color-mix(in oklab,var(--color-accent) 8%,var(--color-surface-offset));border:1px solid color-mix(in oklab,var(--color-accent) 30%,transparent);border-radius:var(--radius-sm);padding:.4rem .55rem;margin:0 0 .6rem;line-height:1.4}
.review-posted{margin-top:var(--space-5)}
.review-posted-title{display:flex;align-items:center;gap:.5rem;font-size:var(--text-sm);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:.6rem}
.review-posted-demo{font-size:var(--text-xs);font-weight:400;text-transform:none;letter-spacing:0;color:var(--color-text-faint);font-style:italic}
.review-card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:var(--space-4);margin-bottom:.6rem}
.review-card-demo{border-color:color-mix(in oklab,var(--color-accent) 30%,var(--color-border))}
.review-card-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.4rem}
.review-card-avatar{width:36px;height:36px;flex-shrink:0;display:grid;place-items:center;background:var(--color-primary);color:#fff;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;line-height:1}
.review-card-name{font-weight:600;font-size:var(--text-sm);margin:0}
.review-card-demo-tag{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-accent);background:color-mix(in oklab,var(--color-accent) 14%,transparent);padding:.05rem .35rem;border-radius:var(--radius-sm)}
.review-card-meta{font-size:var(--text-xs);color:var(--color-text-faint);margin:.1rem 0 0}
.review-card-stars{color:var(--color-star);font-size:1rem;letter-spacing:1px;margin-bottom:.3rem}
.review-card-text{font-size:var(--text-sm);color:var(--color-text);line-height:1.55;margin:0}
/* Review provenance chips — verified only for real lead/booking reviews. */
.review-chip{display:inline-block;font-size:var(--text-xs);font-weight:600;padding:.05rem .4rem;border-radius:var(--radius-sm);vertical-align:middle;line-height:1.4}
.review-chip-verified{color:#1a7a4c;background:color-mix(in oklab,#1a7a4c 14%,transparent)}
.review-chip-community{color:var(--color-text-faint);background:color-mix(in oklab,var(--color-text-faint) 12%,transparent);font-weight:500}
/* Owner response, clearly attributed to the business. */
.review-owner-reply{margin-top:.6rem;padding:.55rem .7rem;border-left:3px solid var(--color-primary);background:color-mix(in oklab,var(--color-primary) 6%,var(--color-surface));border-radius:0 var(--radius-sm) var(--radius-sm) 0}
.review-owner-reply-tag{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-primary);margin:0 0 .2rem}
.review-owner-reply-text{font-size:var(--text-sm);color:var(--color-text);line-height:1.5;margin:0}
.review-owner-reply-date{font-size:var(--text-xs);color:var(--color-text-faint);margin:.2rem 0 0}

/* ---- Add to list ------------------------------------------------------- */
.addlist-wrap{position:relative}
.addlist-btn{gap:.4rem}
.addlist-pop{position:absolute;z-index:20;top:calc(100% + .4rem);left:0;min-width:250px;padding:var(--space-3);
  background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}
.addlist-loading,.addlist-empty{margin:0;font-size:var(--text-xs);color:var(--color-text-muted)}
.addlist-options{list-style:none;margin:0 0 var(--space-3);padding:0;display:flex;flex-direction:column;gap:.2rem;max-height:220px;overflow-y:auto}
.addlist-option{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;padding:.4rem .5rem;
  background:none;border:1px solid transparent;border-radius:var(--radius-md);color:var(--color-text);
  font-family:var(--font-body);font-size:var(--text-sm);text-align:left;cursor:pointer}
.addlist-option:hover{background:var(--color-surface-2);border-color:var(--color-border)}
.addlist-count{font-size:var(--text-xs);color:var(--color-text-faint)}
.addlist-new{display:flex;gap:.4rem;align-items:center;padding-top:var(--space-3);border-top:1px solid var(--color-divider)}
.addlist-new-name{flex:1;min-width:0;padding:.4rem .5rem;font-family:var(--font-body);font-size:var(--text-sm);
  color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md)}
