/*!
 * Temecula Wine Country Map - front-end styles
 * Every rule is namespaced under .tcm so it cannot leak into (or be broken by) the active theme.
 */
.tcm{ position:relative; display:block; width:100%; height:var(--tcm-height,85vh); min-height:560px; overflow:hidden; border-radius:var(--tcm-radius,8px); line-height:1.4; text-align:left; isolation:isolate; }
.tcm .app{ height:100%; }
.tcm .stage{ min-height:0; }
.tcm a{ text-decoration:none; box-shadow:none; }
.tcm h1,.tcm h2,.tcm h3{ text-transform:none; }
.tcm button{ text-transform:none; letter-spacing:normal; box-shadow:none; }
.tcm input[type=text]{ box-shadow:none; margin:0; }
.tcm svg{ max-width:none; }
.tcm .map-title,.tcm .road-label{ user-select:none; }

.tcm{
  --bg:#0b0b0b;
  --bg-2:#111111;
  --surface:#151515;
  --surface-2:#1c1c1c;
  --ink:#f6f3ed;
  --ink-soft:#d5d0c7;
  --ink-dim:#9d988f;
  --gold:#c9a96a;
  --gold-light:#e2c98e;
  --gold-dark:#9d7d45;
  --line:rgba(255,255,255,.10);
  --line-strong:rgba(201,169,106,.38);
  --pin:#7d766a;
  --road:#252525;
  --road-line:#44403a;
  --i15:#171717;
  --accent:var(--gold);
  --accent-ink:#111;
  --shadow: 0 24px 60px rgba(0,0,0,.45);
  --panel-w:390px;
}
.tcm, .tcm *{ box-sizing:border-box; }
.tcm{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:'DM Sans','Segoe UI',sans-serif;
  
  -webkit-font-smoothing:antialiased;
}
.tcm button, .tcm input{ font-family:inherit; }
.tcm button:focus-visible, .tcm a:focus-visible, .tcm input:focus-visible{
  outline:2px solid var(--gold-light);
  outline-offset:2px;
}
.tcm .app{height:100%;
  
  
  display:flex;
  flex-direction:column;
  background:
    radial-gradient(circle at 70% 20%, rgba(201,169,106,.055), transparent 38%),
    var(--bg);
}
.tcm header{
  position:relative;
  z-index:20;
  display:flex;
  align-items:center;
  gap:18px;
  min-height:76px;
  padding:13px 26px;
  background:rgba(10,10,10,.96);
  border-bottom:1px solid var(--line);
  box-shadow:0 8px 30px rgba(0,0,0,.25);
  flex-wrap:wrap;
}
.tcm .brand{
  display:flex;
  align-items:center;
  gap:13px;
  min-width:245px;
  margin-right:5px;
}
.tcm .brand-mark{
  width:40px;
  height:40px;
  flex:none;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--gold);
  color:var(--gold);
  font-size:11px;
  font-weight:700;
  letter-spacing:.08em;
  border-radius:50%;
}
.tcm .brand-copy{ display:flex; flex-direction:column; gap:2px; }
.tcm .brand h1{
  margin:0;
  font-family:'Playfair Display',serif;
  font-size:1.28rem;
  font-weight:600;
  letter-spacing:-.01em;
  color:#fff;
  text-wrap:balance;
}
.tcm .brand span{
  font-size:.66rem;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:.16em;
  color:var(--gold);
}
.tcm .search-wrap{ position:relative; flex:0 1 250px; min-width:180px; }
.tcm .search-wrap input{
  width:100%;
  height:42px;
  padding:0 14px 0 42px;
  border-radius:4px;
  border:1px solid var(--line);
  background:#181818;
  color:var(--ink);
  font-size:.88rem;
  transition:border-color .2s, background .2s, box-shadow .2s;
}
.tcm .search-wrap input::placeholder{ color:#77736d; }
.tcm .search-wrap input:hover{ background:#1d1d1d; }
.tcm .search-wrap input:focus{
  outline:none;
  border-color:var(--gold);
  background:#1b1b1b;
  box-shadow:0 0 0 3px rgba(201,169,106,.10);
}
.tcm .search-wrap svg{
  position:absolute;
  left:14px; top:50%;
  transform:translateY(-50%);
  width:16px; height:16px;
  color:var(--gold);
  pointer-events:none;
}
.tcm .chips{ display:flex; gap:7px; flex:1 1 auto; flex-wrap:wrap; }
.tcm .chip{
  display:flex;
  align-items:center;
  gap:7px;
  padding:7px 11px;
  border-radius:3px;
  border:1px solid var(--line);
  background:transparent;
  color:#aaa59c;
  cursor:pointer;
  font-size:.72rem;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:.05em;
  transition:background .2s, color .2s, border-color .2s, transform .2s;
  -webkit-tap-highlight-color:transparent;
}
.tcm .chip:hover{ border-color:var(--gold-dark); color:var(--gold-light); transform:translateY(-1px); }
.tcm .chip .dot{ width:6px; height:6px; border-radius:50%; background:var(--gold); flex:none; }
.tcm .chip[aria-pressed="true"]{ background:var(--gold); border-color:var(--gold); color:#111; }
.tcm .chip[aria-pressed="true"] .dot{ background:#111; }
.tcm .chip:focus-visible{ outline:2px solid var(--gold-light); outline-offset:2px; }
.tcm .tour-toggle{
  display:flex;
  align-items:center;
  gap:8px;
  height:42px;
  padding:0 17px;
  border:1px solid var(--gold);
  border-radius:3px;
  background:var(--gold);
  color:#111;
  cursor:pointer;
  white-space:nowrap;
  font-size:.73rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.06em;
  transition:background .2s, color .2s, box-shadow .2s, transform .2s;
}
.tcm .tour-toggle:hover{ background:var(--gold-light); box-shadow:0 8px 25px rgba(201,169,106,.18); transform:translateY(-1px); }
.tcm .tour-toggle[aria-pressed="true"]{ background:#111; color:var(--gold); box-shadow:inset 0 0 0 1px var(--gold); }
.tcm .tour-toggle svg{ width:15px; height:15px; }
.tcm .tour-toggle:focus-visible{ outline:2px solid var(--gold-light); outline-offset:2px; }
.tcm .tour-toggle.call-now{
  background:transparent;
  color:var(--gold-light);
  text-decoration:none;
}
.tcm .tour-toggle.call-now:hover{ background:rgba(201,169,106,.14); box-shadow:none; }
.tcm .stage{
  position:relative;
  flex:1;
  overflow:hidden;
  
  background:#f0ead8;
}
.tcm svg.map{ width:100%; height:100%; display:block; cursor:grab; position:relative; z-index:0; }
.tcm svg.map:active{ cursor:grabbing; }
.tcm .map-bg{ fill:#f0ead8; }
.tcm .contour{ fill:none; stroke:#d8cdb0; stroke-width:1; opacity:.5; }
.tcm .road, .tcm .road-line, .tcm .spur, .tcm .spur-line, .tcm .road-label{ pointer-events:none; }
.tcm .road{ fill:none; stroke:#c9a030; stroke-width:7; stroke-linecap:round; stroke-linejoin:round; }
.tcm .spur{ fill:none; stroke:#c9a030; stroke-width:3.5; stroke-linecap:round; stroke-linejoin:round; opacity:.7; }
.tcm .road-casing{ fill:none; stroke:#e8d898; stroke-width:9; stroke-linecap:round; stroke-linejoin:round; opacity:.6; }
.tcm .spur-casing{ fill:none; stroke:#e8d898; stroke-width:5; stroke-linecap:round; stroke-linejoin:round; opacity:.5; }
.tcm .road-label{
  font-family:'DM Sans',sans-serif;
  font-size:11px;
  font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
  fill:#7a6830;
  paint-order:stroke;
  stroke:#f0ead8;
  stroke-width:3px;
}
.tcm .map-title{
  font-family:'Playfair Display',serif;
  font-size:54px;
  font-weight:500;
  fill:#8b6914;
  opacity:.13;
  letter-spacing:.04em;
  pointer-events:none;
  user-select:none;
}
.tcm .route-line{
  fill:none;
  stroke:var(--gold);
  stroke-width:4;
  stroke-dasharray:2 9;
  stroke-linecap:round;
  opacity:0;
  filter:drop-shadow(0 0 5px rgba(201,169,106,.45));
  transition:opacity .3s;
}
.tcm .route-line.show{ opacity:1; animation:dashFlow 1.6s linear infinite; }
@keyframes dashFlow{ to{ stroke-dashoffset:-22; } }
.tcm .pin{ cursor:pointer; }
.tcm .pin circle.halo{
  fill:rgba(201,169,106,.15);
  stroke:var(--gold);
  stroke-width:1;
  opacity:0;
  transition:opacity .2s;
  transform-box:fill-box;
  transform-origin:center;
}
.tcm .pin:hover circle.halo, .tcm .pin.active circle.halo, .tcm .pin:focus-visible circle.halo{ opacity:1; }
.tcm .pin circle.pin-plate{ transition:r .2s; }
.tcm .pin circle.dot{
  fill:none;
  stroke:#6a8a6a;
  stroke-width:2;
  transition:stroke .2s, stroke-width .2s;
}
.tcm .pin rect.tile-frame{
  fill:#fff;
  stroke:#7b1e3a;
  stroke-width:5;
  filter:drop-shadow(0 4px 8px rgba(60,10,25,.35));
  transition:stroke .2s, filter .2s;
}
.tcm .pin:hover rect.tile-frame, .tcm .pin.active rect.tile-frame{
  stroke:#a3294d;
  filter:drop-shadow(0 6px 14px rgba(123,30,58,.55));
}
.tcm .pin .tile-wrap{ transition:transform .2s; transform-box:fill-box; transform-origin:center; }
.tcm .pin:hover .tile-wrap, .tcm .pin.active .tile-wrap{ transform:scale(1.08); }
.tcm .pin .logo-img{ transition:filter .2s; }
.tcm .pin:hover circle.dot{ stroke:#c9a96a; stroke-width:2.5; }
.tcm .pin.active circle.dot{ stroke:var(--gold-light); stroke-width:3; }
.tcm .pin.dim{ opacity:.15; pointer-events:none; }
.tcm .pin.dim .pin-label{ opacity:0!important; }
.tcm .pin:focus{ outline:none; }
.tcm .pin.tour rect.halo{
  fill:rgba(123,30,58,.10);
  stroke:#7b1e3a;
  stroke-width:1;
  animation:pulseWine 2.8s ease-in-out infinite;
  transform-box:fill-box;
  transform-origin:center;
}
@keyframes pulseWine{
  0%,100%{ transform:scale(1); opacity:.45; }
  50%{ transform:scale(1.12); opacity:.9; }
}
.tcm .pin:not(.tour) circle.halo{ fill:rgba(201,169,106,.12); stroke:var(--gold); stroke-width:1; }
.tcm .pin-label{
  font-family:'DM Sans',sans-serif;
  font-size:10px;
  font-weight:500;
  fill:#3d2c0e;
  paint-order:stroke;
  stroke:#f0ead8;
  stroke-width:3px;
  stroke-linejoin:round;
  pointer-events:none;
  opacity:0;
  transition:opacity .15s;
}
.tcm .pin:hover .pin-label, .tcm .pin:focus-visible .pin-label, .tcm .pin.active .pin-label, .tcm .pin.match .pin-label{ opacity:1; }
.tcm .pin-label-tour{
  opacity:1!important;
  font-size:14px;
  font-weight:700;
  fill:#1a0a00;
  stroke:#f0ead8;
  stroke-width:4px;
}
.tcm .tour-badge{ fill:var(--gold); filter:drop-shadow(0 2px 4px rgba(0,0,0,.35)); }
.tcm .tour-badge-txt{
  fill:#111;
  font-family:'DM Sans',sans-serif;
  font-weight:700;
  font-size:9px;
  text-anchor:middle;
  dominant-baseline:middle;
}
.tcm .compass{ opacity:.55; }
.tcm .compass text{
  font-family:'DM Sans',sans-serif;
  font-weight:600;
  fill:var(--ink-dim);
  font-size:13px;
}
.tcm .count-pill{
  position:absolute; top:18px; left:20px; z-index:5;
  padding:7px 13px;
  border:1px solid var(--line);
  border-radius:3px;
  background:rgba(14,14,14,.88);
  backdrop-filter:blur(10px);
  color:#a6a098;
  font-size:.72rem;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:.05em;
  box-shadow:0 8px 25px rgba(0,0,0,.25);
}
.tcm .count-pill strong{ color:var(--gold-light); font-weight:700; }
.tcm .hint{
  position:absolute; top:18px; left:50%;
  transform:translateX(-50%);
  z-index:5;
  padding:7px 16px;
  border:1px solid var(--line);
  border-radius:30px;
  background:rgba(14,14,14,.82);
  backdrop-filter:blur(10px);
  color:#8e8982;
  font-size:.7rem;
  font-weight:500;
  letter-spacing:.04em;
  box-shadow:0 8px 25px rgba(0,0,0,.25);
  pointer-events:none;
  white-space:nowrap;
}
@media (max-width:900px){
.tcm .hint{ display:none; }
}
.tcm .legend{
  position:absolute; left:20px; bottom:20px; z-index:5;
  min-width:205px;
  padding:15px 17px;
  border:1px solid var(--line);
  border-radius:5px;
  background:rgba(14,14,14,.9);
  backdrop-filter:blur(14px);
  box-shadow:var(--shadow);
}
.tcm .legend-title{
  margin-bottom:10px;
  color:var(--gold);
  font-size:.66rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.14em;
}
.tcm .legend-item{ display:flex; align-items:center; gap:9px; margin:7px 0; color:#a5a098; font-size:.72rem; }
.tcm .legend-item .sw{ width:9px; height:9px; border-radius:50%; flex:none; }
.tcm .legend-item .sw.rec{ background:var(--gold-light); box-shadow:0 0 0 3px rgba(201,169,106,.25); }
.tcm .legend-item .sw.other{ background:var(--pin); }
.tcm .zoom-controls{ position:absolute; right:20px; bottom:20px; display:flex; flex-direction:column; gap:6px; z-index:5; }
.tcm .zoom-controls button{
  width:38px; height:38px;
  border:1px solid var(--line);
  border-radius:4px;
  background:rgba(14,14,14,.9);
  color:#e8e3db;
  cursor:pointer;
  font-size:1rem;
  box-shadow:0 8px 20px rgba(0,0,0,.3);
  transition:background .2s, color .2s, border-color .2s;
}
.tcm .zoom-controls button:hover{ background:#202020; color:var(--gold-light); border-color:var(--gold-dark); }
.tcm .panel-backdrop{
  position:absolute; inset:0;
  z-index:25;
  background:rgba(0,0,0,.55);
  opacity:0;
  pointer-events:none;
  transition:opacity .3s;
  display:none;
}
@media (max-width:900px){
.tcm .panel-backdrop{ display:block; }
.tcm .panel-backdrop.show{ opacity:1; pointer-events:auto; }
}
.tcm .panel{
  position:absolute; top:0; right:0; height:100%;
  width:var(--panel-w);
  max-width:90vw;
  z-index:30;
  display:flex;
  flex-direction:column;
  background:linear-gradient(180deg, #171717 0%, #111 100%);
  border-left:1px solid var(--line);
  box-shadow:-25px 0 60px rgba(0,0,0,.55);
  transform:translateX(105%);
  transition:transform .35s cubic-bezier(.22,.61,.36,1);
}
.tcm .panel.open{ transform:translateX(0); }
.tcm .panel-scroll{ padding:38px 34px 35px; overflow-y:auto; }
.tcm .panel-close{
  position:absolute; top:18px; right:18px;
  width:34px; height:34px;
  border:1px solid var(--line);
  border-radius:50%;
  background:#1c1c1c;
  color:#aaa;
  cursor:pointer;
  font-size:.8rem;
  z-index:2;
  transition:background .2s, color .2s, border-color .2s;
}
.tcm .panel-close:hover{ background:var(--gold); border-color:var(--gold); color:#111; }
.tcm .tour-tag{
  display:inline-flex;
  align-items:center;
  margin-bottom:18px;
  padding:6px 11px;
  border:1px solid rgba(201,169,106,.4);
  border-radius:3px;
  background:rgba(201,169,106,.08);
  color:var(--gold-light);
  font-size:.64rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.09em;
}
.tcm .panel-trail{
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:10px;
  color:var(--gold);
  font-size:.65rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.13em;
}
.tcm .panel-trail .dot{ width:6px; height:6px; border-radius:50%; background:var(--gold); }
.tcm .panel h2{
  margin:0 0 10px;
  padding-right:30px;
  font-family:'Playfair Display',serif;
  font-size:2rem;
  line-height:1.18;
  font-weight:600;
  color:#fff;
  text-wrap:balance;
}
.tcm .panel .addr{ margin:0 0 22px; color:#8f8a82; font-size:.78rem; line-height:1.5; }
.tcm .panel .desc{ margin:0 0 28px; color:#c4bfb7; font-size:.9rem; line-height:1.75; }
.tcm .cta-primary, .tcm .cta-secondary, .tcm .cta-call{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  width:100%;
  min-height:47px;
  border-radius:3px;
  text-decoration:none;
  font-size:.72rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.07em;
  transition:background .2s, box-shadow .2s, transform .2s, border-color .2s, color .2s;
}
.tcm .cta-primary{
  border:1px solid var(--gold);
  background:var(--gold);
  color:#111;
}
.tcm .cta-primary:hover{ background:var(--gold-light); box-shadow:0 10px 25px rgba(201,169,106,.18); transform:translateY(-1px); }
.tcm .cta-call{
  border:1px solid var(--gold);
  background:transparent;
  color:var(--gold-light);
  margin-top:10px;
}
.tcm .cta-call:hover{ background:rgba(201,169,106,.12); box-shadow:0 10px 25px rgba(201,169,106,.12); transform:translateY(-1px); }
.tcm .cta-secondary{
  border:1px solid var(--line-strong);
  background:transparent;
  color:var(--ink-soft);
  margin-top:10px;
}
.tcm .cta-secondary:hover{ border-color:var(--gold-dark); color:var(--gold-light); background:rgba(201,169,106,.06); }
.tcm .cta-primary svg, .tcm .cta-secondary svg, .tcm .cta-call svg{ width:15px; height:15px; }
.tcm .placeholder{ padding:45px 34px; color:#98928a; font-size:.88rem; line-height:1.7; }
.tcm .placeholder h3{ margin:0 0 12px; font-family:'Playfair Display',serif; font-size:1.65rem; font-weight:600; color:#fff; }
.tcm .placeholder:before{
  content:'ETC BLACK CAR';
  display:block;
  margin-bottom:13px;
  color:var(--gold);
  font-size:.64rem;
  font-weight:700;
  letter-spacing:.15em;
}
.tcm ::-webkit-scrollbar{ width:8px; }
.tcm ::-webkit-scrollbar-track{ background:#111; }
.tcm ::-webkit-scrollbar-thumb{ background:#3a3732; border-radius:10px; }
.tcm ::-webkit-scrollbar-thumb:hover{ background:var(--gold-dark); }
@media (max-width:900px){
.tcm header{ padding:11px 15px; gap:10px; }
.tcm .brand{ min-width:auto; flex:1; }
.tcm .brand h1{ font-size:1.05rem; }
.tcm .brand span{ font-size:.56rem; }
.tcm .brand-mark{ width:34px; height:34px; }
.tcm .search-wrap{ order:3; flex:1 1 100%; min-width:100%; }
.tcm .chips{ order:4; flex-wrap:nowrap; overflow-x:auto; width:100%; padding-bottom:2px; scrollbar-width:none; }
.tcm .chips::-webkit-scrollbar{ display:none; }
.tcm .chip{ flex:none; }
.tcm .tour-toggle{ font-size:.65rem; padding:0 12px; }
.tcm .legend{ display:none; }
.tcm .panel{
    top:auto; bottom:0; left:0; right:0;
    width:100%; max-width:100%;
    height:auto; max-height:72%;
    border-left:none; border-top:1px solid var(--line);
    border-radius:18px 18px 0 0;
    transform:translateY(105%);
    touch-action:none;
  }
.tcm .panel.open{ transform:translateY(0); touch-action:pan-y; }
.tcm .panel::before{
    content:'';
    position:absolute;
    top:10px; left:50%;
    transform:translateX(-50%);
    width:38px; height:4px;
    border-radius:3px;
    background:var(--line-strong);
  }
.tcm .panel-scroll{ padding:32px 24px 28px; }
.tcm .panel h2{ font-size:1.65rem; }
.tcm .count-pill{ top:12px; left:12px; }
.tcm .zoom-controls{ right:12px; bottom:12px; }
}
@media (prefers-reduced-motion:reduce){
.tcm, .tcm *{ transition:none!important; }
.tcm .pin.tour circle.halo, .tcm .route-line{ animation:none!important; }
}