/* Camp Mercury Utah Salon Graph — live page V4. Scoped to the hair-salon graph feature. */
.utah-graph-section{padding:30px 0 38px;background:linear-gradient(115deg,#F4EBE3 0%,#E8DCD2 40%,#D8B7A6 78%,#CBA08C 100%)}
.utah-graph-wrap{width:min(var(--max),calc(100% - 2*var(--pad)));margin:0 auto}
.graph-heading h2{margin:.15rem 0 .35rem}
.graph-heading p:not(.eyebrow){max-width:1080px;margin:0 0 1rem;line-height:1.55}
.graph-title{font-size:clamp(2.15rem,3.25vw,3.35rem);line-height:1.06;white-space:nowrap;letter-spacing:-.02em}
.graph-cta{margin:8px 0 4px;display:inline-flex}
.graph-viewport{width:100%;height:auto;overflow:auto;background:#F7F0E9;border:1px solid #D6B9A9;border-radius:20px;box-shadow:0 15px 35px #5E142014;scrollbar-color:#C7A694 transparent;overscroll-behavior-x:contain}
#salon-graph{width:100%;height:auto;min-width:1120px;display:block;touch-action:pan-x pan-y;font-family:inherit}
.graph-caption{font-size:.83rem;color:#4C3B37;line-height:1.55;margin:12px 0 0}
.texas-county{fill:#E8DCD2;stroke:#BD9584;stroke-width:1.5}
.graph-label{cursor:pointer}.graph-label text{fill:#25242B;font-size:12px;font-weight:700}.graph-label:hover text,.graph-label:focus text{fill:#901823;text-decoration:underline}
.graph-label-bg{fill:#F7F0E9;fill-opacity:.96;stroke:#D6B9A9;stroke-width:1}
.graph-label .graph-city{fill:#901823;font-weight:600;font-size:11.4px}
.graph-leader{stroke:#901823;stroke-width:1.22;opacity:.62;fill:none;pointer-events:none}.graph-node{fill:#901823;fill-opacity:.78;stroke:#FFF;stroke-width:1.5;cursor:pointer}.graph-node:hover,.graph-node:focus{fill:#5E1420;fill-opacity:1;stroke:#F4B78F;stroke-width:3}.graph-node.highlighted{stroke:#F1BB55;stroke-width:4;fill-opacity:1}.graph-anchor{fill:#901823;opacity:.16;pointer-events:none}
.graph-modal[hidden]{display:none}.graph-modal{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:18px}.graph-modal-backdrop{position:absolute;inset:0;background:#171315cc}.graph-modal-panel{position:relative;z-index:1;background:#F7F0E9;color:#25242B;border-radius:18px;padding:26px;width:min(100%,620px);max-height:92vh;overflow:auto;box-shadow:0 20px 75px #0005}.graph-modal-panel h2{font-size:1.5rem;margin:8px 0}.graph-modal-close{float:right;border:1px solid #C7A694;border-radius:10px;background:#fff;padding:9px 13px;color:#901823;font-weight:700;cursor:pointer}.graph-modal iframe{display:block;width:100%;min-height:400px;border:0;background:#fff}.graph-modal-panel .btn{display:inline-flex}.graph-modal-open{overflow:hidden}
@media(max-width:960px){.graph-title{font-size:clamp(1.9rem,4.5vw,2.65rem);white-space:normal}}
@media(max-width:720px){#salon-graph{width:1220px;min-width:1220px}.graph-viewport{border-radius:14px}.graph-modal-panel{padding:18px}.graph-heading h2{font-size:clamp(1.65rem,7vw,2.4rem);white-space:normal}}
@media(prefers-reduced-motion:reduce){.graph-node{transition:none}}

/* Modal V8 button hit area and stacking fix. */
.graph-modal-panel{isolation:isolate;position:relative;z-index:2}
#graph-modal-close{position:relative!important;z-index:20!important;pointer-events:auto!important;touch-action:manipulation;cursor:pointer;min-height:48px}
.graph-modal-backdrop{z-index:0}

/* Hair salon V9 page: all blades use the same site container, Utah sandstone tones. */
:root{--hair-cream:#F7F0E9;--hair-clay:#D8B7A6;--hair-edge:#D6B9A9}
.hair-top-blade,.utah-graph-section{background:none!important}
.hair-top-blade{padding:clamp(26px,3vw,40px) 0}
.hair-top-grid{display:grid;grid-template-columns:minmax(0,1.52fr) minmax(260px,.68fr);gap:clamp(25px,4vw,55px);align-items:center}
.hair-top-copy h1{font-size:clamp(2.1rem,3.4vw,3.45rem);max-width:none;margin:0 0 16px}
.hair-top-copy p{max-width:760px}
.hair-top-copy .lead{font-size:clamp(1.06rem,1.3vw,1.18rem);margin-bottom:12px}
.hair-top-copy .price{font-size:clamp(1.7rem,2.6vw,2.4rem);margin:12px 0 2px}
.hair-price-note{margin:0 0 14px!important}
.hair-shortcut{padding:clamp(22px,2.5vw,34px);border-radius:22px;background:#F7F0E9;border:1px solid #D6B9A9;box-shadow:0 9px 25px rgba(72,37,33,.08)}
.hair-shortcut .url{font-size:clamp(1.22rem,2vw,1.65rem);overflow-wrap:anywhere}
.hair-shortcut .eyebrow{margin-bottom:8px}
.hair-shortcut-arrow{display:block;text-align:center;font-size:1.8rem;color:#901823;margin:6px}
.hair-shortcut h2{font-size:clamp(1.12rem,1.6vw,1.38rem);margin:0 0 8px}
.hair-shortcut p:last-child{margin:0}
.utah-graph-section{padding:clamp(26px,3vw,40px) 0}
.utah-graph-wrap{width:min(var(--max),calc(100% - 2*var(--pad)))}
.graph-intro{margin:0 0 16px}.graph-intro h2{font-size:clamp(1.5rem,2.1vw,2.15rem);margin:0 0 8px}
.graph-intro p{max-width:100%;margin:0;line-height:1.5;font-size:1rem;color:#333036}
/* Scoped to only this service page: same content width across editorial and FAQ blades. */
main .faqs{max-width:none;width:min(var(--max),calc(100% - 2*var(--pad)));margin-inline:auto}
main .section .wrap,main .section-sm .wrap{max-width:none}
main .gradient-zone .section,main .gradient-zone .section-sm{background:transparent!important}
main .gradient-zone{background:linear-gradient(115deg,#F4EBE3 0%,#E8DCD2 43%,#D8B7A6 82%,#CBA08C 100%)}
main .gradient-zone .card,main .gradient-zone .cta-panel{background:#F7F0E9!important;color:#25242B!important;border:1px solid #D6B9A9}
main .gradient-zone .cta-panel .eyebrow{color:#901823!important}
main .gradient-zone .cta-panel .lead{color:#333036!important}
main .gradient-zone .cta-panel .btn.alt{background:#901823;color:#fff;border-color:#901823}
@media(max-width:840px){.hair-top-grid{grid-template-columns:1fr;gap:20px}.hair-shortcut{max-width:520px}}
@media(max-width:720px){.hair-top-blade,.utah-graph-section{padding:26px 0}.hair-top-copy h1{font-size:clamp(2rem,7.5vw,3rem)}.hair-shortcut{padding:20px}}

/* V10: compact hero; map follows directly; consistent V9 color system. */
.hair-top-blade{padding:clamp(20px,2.3vw,30px) 0 12px!important}
.hair-top-grid{align-items:center}
.hair-top-copy .lead{margin-bottom:10px}
.hair-map-guide{margin-top:clamp(16px,2vw,24px)}
.hair-map-guide h2{font-size:clamp(1.32rem,1.9vw,1.7rem);margin:0 0 8px;letter-spacing:-.02em}
.hair-map-guide p{font-size:clamp(.92rem,1.05vw,1rem);line-height:1.5;margin:0;max-width:850px}
.hair-shortcut .url{font-size:clamp(.88rem,1.25vw,1.04rem)!important;font-weight:500!important;white-space:nowrap!important;overflow-wrap:normal!important;word-break:normal!important;letter-spacing:-.025em}
.utah-graph-section{padding:10px 0 clamp(24px,3vw,36px)!important}
.hair-offer{display:flex;align-items:center;gap:12px 22px;flex-wrap:wrap;margin:22px 0 2px}
.hair-offer-price{color:#901823;font-size:clamp(1.25rem,2vw,1.65rem);font-weight:800;line-height:1.25;margin:0}
.hair-offer-note{margin:0;color:#25242B}
.hair-offer .btn{margin-left:auto}
@media(max-width:840px){.hair-shortcut .url{font-size:clamp(.88rem,2vw,1.04rem)!important}}
@media(max-width:720px){.hair-top-blade{padding:22px 0 8px!important}.utah-graph-section{padding-top:8px!important}.hair-top-grid{gap:14px}.hair-map-guide{margin-top:14px}.hair-offer .btn{margin-left:0}.hair-shortcut .url{font-size:clamp(.83rem,3.6vw,1.04rem)!important}}

/* V11: scalable geography/market context, scoped to the hair-salons research page. */
.market-context{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr) minmax(0,1.05fr);gap:12px;margin:0 0 16px;align-items:stretch}
.market-context>div{background:#F7F0E9;border:1px solid #D6B9A9;border-radius:16px;padding:16px;min-width:0}
.market-section-label{color:#901823;text-transform:uppercase;letter-spacing:.08em;font-size:.76rem;font-weight:800;margin-bottom:11px}
.market-locator-content{display:flex;align-items:center;gap:10px}.market-locator-content img{display:block;width:45%;height:auto;flex:none}.market-locator-content strong{font-size:1.08rem}.market-locator-content p{font-size:.85rem;line-height:1.45;margin:4px 0 0;color:#53443e}
.market-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}.market-metrics>div{min-width:0}.market-metrics strong{display:block;font-size:clamp(1.2rem,1.8vw,1.7rem);line-height:1.12;color:#25242B}.market-metrics span{display:block;color:#51443f;font-size:.78rem;line-height:1.4;margin-top:4px}
.market-key p{font-size:.81rem;line-height:1.5;margin:7px 0;color:#51443f}.market-bubbles{height:40px;display:flex;align-items:center;gap:13px}.market-bubbles i{border-radius:50%;background:#901823;opacity:.8;display:block;flex:none}.market-bubbles i:nth-child(1){width:9px;height:9px}.market-bubbles i:nth-child(2){width:19px;height:19px}.market-bubbles i:nth-child(3){width:31px;height:31px}.market-bubbles span{font-size:.74rem;color:#51443f}
.market-source-note{color:#594c45;font-size:.76rem;line-height:1.5;margin:10px 2px 0}.market-source-note a{text-decoration:underline;color:#741923}
.hair-data-story{padding:10px 0 28px}.hair-data-story-panel{max-width:100%;border:1px solid #D6B9A9;background:#F7F0E9;border-radius:20px;padding:clamp(22px,3vw,36px)}.hair-data-story-panel h2{margin:4px 0 12px;font-size:clamp(1.5rem,2.4vw,2.15rem)}.hair-data-story-panel p:not(.eyebrow){max-width:1000px;line-height:1.65}.hair-data-story-foot{font-weight:750;color:#901823}.hair-data-story-panel .btn{margin-top:4px}
@media(max-width:1050px){.market-context{grid-template-columns:repeat(2,minmax(0,1fr))}.market-key{grid-column:1/-1}}
@media(max-width:650px){.market-context{grid-template-columns:1fr}.market-key{grid-column:auto}.market-locator-content img{width:43%;max-width:210px}.market-context>div{padding:15px}.market-metrics strong{font-size:1.5rem}}

/* V12: hero remains compact; animated map is the first major feature. */
.hair-top-blade{padding:clamp(14px,1.6vw,22px) 0 0!important}
.hair-top-copy .lead{margin-bottom:0;line-height:1.43}
.utah-graph-section{padding:4px 0 26px!important}
.graph-first-heading{font-size:clamp(1.2rem,1.7vw,1.48rem);margin:0 0 9px;color:#25242B;letter-spacing:-.02em}
.market-context{margin:14px 0 0;grid-template-columns:minmax(0,1.05fr) minmax(0,1.35fr) minmax(0,1.05fr)}
.market-locator-content{gap:8px}
.market-locator-content img{width:53%;max-width:240px}
.market-key .market-bubbles{height:35px}
.market-key p{margin:6px 0}
@media(max-width:840px){.hair-shortcut{max-width:none}.market-context{grid-template-columns:repeat(2,minmax(0,1fr))}.market-key{grid-column:1/-1}}
@media(max-width:720px){.hair-top-blade{padding:16px 0 0!important}.hair-top-grid{gap:10px}.hair-shortcut{order:2}.utah-graph-section{padding-top:4px!important}.graph-first-heading{margin-bottom:8px}}
@media(max-width:650px){.market-context{grid-template-columns:1fr}.market-key{grid-column:auto}.market-locator-content img{max-width:220px}}

/* On phones, keep the advertising offer after the map, not before it. */
.hair-shortcut-mobile{display:none}
@media(max-width:720px){.hair-shortcut-desktop{display:none}.hair-shortcut-mobile{display:block;margin:12px 0 0;max-width:none}}

/* V13: map-first reusable 75/25 desktop layout; a stacked mobile presentation. */
.salon-map-layout{display:grid;grid-template-columns:minmax(0,3fr) minmax(250px,1fr);gap:12px;align-items:start}
.salon-map-main{min-width:0}
.salon-map-sidebar{min-width:0;display:flex;flex-direction:column;gap:12px}
.salon-map-sidebar .market-context{display:flex!important;flex-direction:column;gap:12px;margin:0!important;min-width:0}
.salon-map-sidebar .market-context>div{padding:15px;min-width:0}
.salon-map-sidebar .market-locator-content{display:flex;flex-direction:column;align-items:flex-start;gap:7px}
.salon-map-sidebar .market-locator-content img{width:100%;max-width:100%;height:auto;aspect-ratio:16/9;object-fit:contain}
.salon-map-sidebar .market-locator-content strong{font-size:.96rem}
.salon-map-sidebar .market-locator-content p{font-size:.78rem}
.salon-map-sidebar .market-metrics{gap:12px 8px}
.salon-map-sidebar .market-metrics strong{font-size:clamp(1.15rem,1.8vw,1.6rem)}
.salon-map-sidebar .market-metrics span{font-size:.7rem}
.salon-map-sidebar .market-source-note{margin:0 4px;font-size:.68rem;line-height:1.55;overflow-wrap:anywhere}
.salon-map-main .graph-viewport{margin:0}
@media(max-width:1000px){.salon-map-layout{grid-template-columns:minmax(0,1fr)}.salon-map-sidebar .market-context{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))}.salon-map-sidebar .market-locator-content img{max-height:145px}.salon-map-sidebar .market-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.salon-map-sidebar .market-context{grid-template-columns:1fr}.salon-map-sidebar .market-locator-content{flex-direction:row;align-items:center}.salon-map-sidebar .market-locator-content img{width:52%;max-width:240px}.salon-map-sidebar .market-metrics strong{font-size:1.5rem}}

/* V14: offer-led, map-first composition, responsive desktop fit (2026-10-30). */
.hair-top-blade{padding:clamp(12px,1.8vw,22px) 0 4px!important}
.hair-top-grid{display:block!important}
.hair-top-copy{max-width:1100px}
.hair-top-copy h1{max-width:1100px;font-size:clamp(2rem,3.05vw,3.25rem);line-height:1.1;margin:0 0 5px!important}
.hair-top-copy .eyebrow{margin:0 0 6px}
.hair-top-copy .lead{max-width:990px!important;font-size:clamp(.97rem,1.14vw,1.1rem);line-height:1.42;margin:0 0 5px!important}
.hair-url-value{margin:0 0 7px!important;color:#901823;font-weight:800;font-size:clamp(1.26rem,2.1vw,1.8rem);letter-spacing:-.025em}
.hair-exclusivity{margin:0 0 4px!important;font-weight:650;font-size:.9rem}
.hair-inline-link{font-size:.93rem;font-weight:700;color:#901823;text-decoration:underline;text-underline-offset:3px}
.utah-graph-section{padding:4px 0 22px!important}
.graph-first-heading{margin:0 0 4px;font-size:clamp(1.3rem,1.75vw,1.65rem)}
.graph-brief{font-size:.9rem;line-height:1.4;max-width:1000px;margin:0 0 10px}
/* Remove overflow from desktop by making the SVG fit the available graph panel. */
@media(min-width:1250px){.salon-map-main .graph-viewport{overflow:hidden!important}.salon-map-main #salon-graph{width:100%!important;min-width:0!important;max-width:100%!important}}
/* On smaller desktops the map gets full width rather than shrinking labels too far. */
@media(min-width:1001px) and (max-width:1249px){.salon-map-layout{grid-template-columns:minmax(0,1fr)!important}.salon-map-sidebar .market-context{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))}.salon-map-main .graph-viewport{overflow:hidden!important}.salon-map-main #salon-graph{width:100%!important;min-width:0!important}}
/* Preserve horizontal exploration for tablet and mobile; never hide inaccessible labels. */
@media(max-width:1000px){.salon-map-main .graph-viewport{overflow-x:auto!important}.salon-map-main #salon-graph{min-width:1120px!important;width:1120px!important}}
@media(max-width:720px){.hair-top-blade{padding:12px 0 4px!important}.hair-top-copy h1{font-size:clamp(1.9rem,7vw,2.7rem)}.hair-top-copy .lead{font-size:.98rem}.graph-brief{font-size:.86rem}.salon-map-main #salon-graph{min-width:1220px!important;width:1220px!important}}
.hair-city-cta{padding-block:clamp(20px,3vw,36px)}
.hair-city-cta h2{margin:.1rem 0 .5rem}
.hair-city-cta p:not(.eyebrow){max-width:830px;margin:0 0 1rem}

/* V15 — tighter hero and more legible research map. Keep labels and interactions. */
@media (min-width:1001px){
  .hair-top-blade{padding-top:8px!important;padding-bottom:2px!important}
  .hair-top-copy{max-width:100%!important}
  .hair-top-copy h1{max-width:none!important;font-size:clamp(2rem,2.65vw,2.9rem)!important;line-height:1.07!important;margin-bottom:4px!important}
  .hair-top-copy .lead{max-width:1050px!important}
  .salon-map-layout{grid-template-columns:minmax(0,4fr) minmax(220px,1fr)!important;gap:10px}
  .salon-map-sidebar .market-context>div{padding:12px}
  .salon-map-sidebar .market-section-label{font-size:.7rem}
  .graph-label text{font-size:14px}
  .graph-label .graph-city{font-size:12.3px}
  .graph-label-bg{stroke:#C69A89;stroke-width:1.15}
  .texas-county{stroke:#C19A89;stroke-width:1.15}
  .hair-city-cta p:not(.eyebrow){max-width:100%;line-height:1.5}
}
/* Preserve a narrower-screen full-width map and horizontal swipe on phones. */
@media (min-width:1001px) and (max-width:1350px){
  .salon-map-layout{grid-template-columns:minmax(0,1fr)!important}
  .salon-map-sidebar .market-context{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:1000px){.hair-top-copy h1{line-height:1.09!important}.hair-city-cta p:not(.eyebrow){max-width:100%}}

/* V18: full-artwork SVG zoom. The script computes a tight viewBox after labels are placed.
   Keep normal SVG aspect ratio and allow increased height when zooming. */
.salon-map-main #salon-graph{height:auto;aspect-ratio:auto;display:block}
@media (min-width:1250px){.salon-map-main .graph-viewport{overflow:hidden!important}}
@media (min-width:1001px) and (max-width:1249px){.salon-map-main .graph-viewport{overflow:hidden!important}}
/* Touch devices retain swipe behavior and a fixed minimum artwork width. */
@media (max-width:1000px){.salon-map-main .graph-viewport{overflow-x:auto!important}}

/* V19: concise research context and simplified locator. */
.salon-map-sidebar .market-locator-content{display:block!important}
.salon-map-sidebar .market-locator-content img{display:block;width:100%!important;max-width:100%!important;height:auto!important}
.salon-map-sidebar .market-key p{margin-bottom:0!important}
.salon-map-sidebar .market-metrics span{line-height:1.35}
@media(max-width:720px){.salon-map-sidebar .market-locator-content img{width:100%!important;max-width:100%!important}}

/* V20: final audience-focused copy and compact sidebar components. */
.graph-brief{font-size:clamp(1rem,1.2vw,1.13rem)!important;line-height:1.55!important;max-width:1100px!important;}
.salon-map-sidebar .locator-population{margin:4px 0 0;font-size:.88rem;line-height:1.3;}
.salon-map-sidebar .locator-population strong{font-size:1.2rem;}
.salon-map-sidebar .market-uses{padding:12px;background:#F7F0E9;border:1px solid #dcb8a9;border-radius:16px;}
.salon-map-sidebar .market-uses p{font-size:.83rem;line-height:1.45;margin:5px 0 0;}
@media(min-width:1100px){.hair-city-cta .hair-cta-heading{font-size:clamp(1.7rem,2.25vw,2.15rem)!important;letter-spacing:-.035em;}}

/* Market context: concise discovery card and accessibility-conscious entrance. */
.market-discovery ul{padding-left:1.1em;margin:10px 0 12px;display:grid;gap:7px;font-size:.86rem;line-height:1.4}
.market-discovery li::marker{color:#901823}
.market-discovery .market-discovery-takeaway{margin:8px 0 0;font-size:.86rem;line-height:1.5}
.market-discovery-takeaway span{color:#901823;font-weight:700;overflow-wrap:anywhere}
.market-metrics strong{font-variant-numeric:tabular-nums;display:block}
@keyframes cm-map-reveal{from{opacity:.18;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
#salon-graph.cm-map-enter{animation:cm-map-reveal .9s ease-out both}
@media(prefers-reduced-motion:reduce){#salon-graph.cm-map-enter{animation:none!important}}

/* Texas: 79 individual labels require a taller map while keeping all entries accessible. */
.texas-graph-section .graph-viewport{background:#F7F0E9}
.texas-graph-section .graph-label text{font-size:15.2px}
.texas-graph-section .graph-label .graph-city{font-size:12.2px}
.texas-graph-section .graph-label-bg{fill:#F7F0E9;stroke:#D6B9A9}
.texas-graph-section .texas-county{stroke:#BD9584;stroke-width:1.05;fill:#E8DCD2}
.texas-graph-section .texas-outline{fill:none;stroke:#7D1221;stroke-width:3;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.texas-graph-section .graph-leader{stroke:#901823;stroke-width:1.05;opacity:.42}
.texas-graph-section .graph-label:hover .graph-label-bg,.texas-graph-section .graph-label:focus .graph-label-bg{stroke:#901823;stroke-width:2;fill:#fff}
.texas-graph-section .graph-node:focus,.texas-graph-section .graph-label:focus{outline:none}
.texas-graph-section .graph-label:focus .graph-label-bg{stroke:#bd6b18;stroke-width:2.4}
.texas-sample-note{font-size:.73rem;line-height:1.45;margin:12px 0 0;color:#5C504B}
.texas-sample-note a{color:#901823}
/* Preserve swipe interaction on smaller screens; allow the full 79-label drawing. */
@media(max-width:1000px){.texas-graph-section .salon-map-main #salon-graph{min-width:1160px!important;width:1160px!important}}
@media(max-width:720px){.texas-graph-section .salon-map-main #salon-graph{min-width:1160px!important;width:1160px!important}}

.texas-swipe-note{display:none;color:#901823;font-size:.88rem;font-weight:750;margin:0 0 8px}
@media(max-width:1000px){.texas-swipe-note{display:block}}

/* V3: geographically constrained, softly moving circles and narrower four-side labels. */
.texas-graph-section .graph-label text{font-size:14px;font-weight:750}
.texas-graph-section .graph-label .graph-city{font-size:11.2px}
.texas-graph-section .graph-label-bg{stroke:#C9A594;stroke-width:1.05}
.texas-graph-section .graph-leader{stroke-width:.82;opacity:.25;transition:opacity .2s ease}
.texas-graph-section .graph-leader.highlighted{stroke-width:2;opacity:.9}
.texas-graph-section .graph-label.highlighted .graph-label-bg{stroke:#901823;stroke-width:2;fill:#fff}
.texas-graph-section .graph-node{stroke-width:1.4;fill-opacity:.87}
.texas-graph-section .graph-node.highlighted{stroke:#5E1420;stroke-width:2.3;fill-opacity:1}
.texas-graph-section .graph-anchor{opacity:.13;r:1.8}

/* V4: larger cropped Texas and clearly labeled out-of-crop Amarillo inset. */
.texas-graph-section .graph-label text{font-size:15.3px}
.texas-graph-section .graph-label .graph-city{font-size:12.6px}
.texas-graph-section .texas-crop-edge{stroke:#901823;stroke-width:3;stroke-dasharray:7 5;fill:none;pointer-events:none}
.texas-panhandle-bg{fill:#f6e5d9;stroke:#ab6b62;stroke-width:1.5;stroke-dasharray:7 4}
.texas-panhandle-title{fill:#901823;font-size:16px;font-weight:800;letter-spacing:.7px}
.texas-panhandle-subtitle{fill:#493c38;font-size:14px;font-weight:600}
.texas-panhandle-note{fill:#64544e;font-size:10.7px}
.texas-graph-section .graph-inset-node{stroke:#fff;stroke-width:1.9}

/* V7 (Texas only): freely positioned, collision-cleared salon labels and legible sidebar. */
.texas-graph-section .graph-label text{font-size:15.5px;font-weight:750}
.texas-graph-section .graph-label .graph-city{font-size:12.2px}
.texas-graph-section .graph-label-bg{fill:#F7F0E9;fill-opacity:.97;stroke:#C9A594;stroke-width:1.15}
.texas-graph-section .graph-leader{stroke-width:.9;opacity:.3}
.texas-graph-section .graph-leader.highlighted{stroke-width:2.1;opacity:.95}
/* Avoid breaking a seven-digit number in the narrow sidebar. */
.salon-map-sidebar .market-metrics{grid-template-columns:minmax(0,.84fr) minmax(0,1.16fr);column-gap:8px;row-gap:15px}
.salon-map-sidebar .market-metrics strong{white-space:nowrap;overflow-wrap:normal;word-break:normal;letter-spacing:-.025em;font-size:clamp(1.1rem,1.75vw,1.48rem)}
.salon-map-sidebar .market-metrics span{overflow-wrap:normal;word-break:normal;line-height:1.38}
.salon-map-sidebar .market-metrics a{color:#901823;text-decoration:underline;text-underline-offset:2px}
@media(min-width:1001px) and (max-width:1350px){
  .salon-map-sidebar .market-metrics strong{font-size:clamp(1.15rem,2.4vw,1.58rem)}
}
@media(max-width:650px){
  .salon-map-sidebar .market-metrics{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}
  .salon-map-sidebar .market-metrics strong{font-size:clamp(1.35rem,5.5vw,1.6rem)}
}

/* Texas V8: make the active salon obvious without changing the moving geography. */
.texas-graph-section .graph-viewport.texas-has-active-salon .graph-leader:not(.highlighted){opacity:.055}
.texas-graph-section .graph-viewport.texas-has-active-salon .graph-leader.highlighted{stroke:#7D1221;stroke-width:2.6;opacity:1}
.texas-graph-section .graph-viewport.texas-has-active-salon .graph-node.highlighted{stroke:#F8C875;stroke-width:3.8;fill-opacity:1;filter:drop-shadow(0 1px 3px rgba(80,20,20,.35))}
.texas-graph-section .graph-viewport.texas-has-active-salon .graph-label.highlighted .graph-label-bg{stroke:#901823;stroke-width:2.3;fill:#fff}
.texas-salon-hover-card[hidden]{display:none!important}
.texas-salon-hover-card{
  position:fixed;z-index:9200;width:254px;max-width:calc(100vw - 24px);padding:13px 15px;
  color:#25242B;background:#FFF9F4;border:1.5px solid #B46D67;border-radius:12px;
  box-shadow:0 14px 36px rgba(63,26,24,.22);font-family:inherit;line-height:1.36
}
.texas-hover-name{font-size:1rem;font-weight:800;line-height:1.2;overflow-wrap:anywhere}
.texas-hover-city{font-size:.8rem;color:#65514B;margin-top:3px}
.texas-hover-count{font-size:.91rem;font-weight:750;color:#901823;margin:10px 0 11px;font-variant-numeric:tabular-nums}
.texas-salon-hover-card .texas-hover-link{display:inline-flex;color:#901823;font-size:.87rem;font-weight:800;text-decoration:underline;text-underline-offset:3px}
.texas-salon-hover-card .texas-hover-link:focus-visible{outline:3px solid #901823;outline-offset:4px;border-radius:2px}
@media (prefers-reduced-motion:reduce){.texas-graph-section .graph-leader{transition:none!important}}
