@layer reset, base, components, responsive;
@layer reset {
  *, *::before, *::after { box-sizing: border-box; }
  body, h1, h2, h3, p, figure { margin: 0; }
  img { display: block; max-width: 100%; }
  button, input, textarea { font: inherit; }
  a { color: inherit; }
}
@layer base {
  :root { --ink:#20392f; --paper:#fffefa; --cream:#f3f0e8; --muted:#647067; --line:#dcded5; --wine:#794337; --white:#fff; --serif:Georgia,'Times New Roman',serif; --sans:Arial,Helvetica,sans-serif; }
  html { scroll-behavior: smooth; scroll-padding-top: 2rem; }
  body { background:var(--paper); color:var(--ink); font-family:var(--sans); font-size:1rem; line-height:1.65; -webkit-font-smoothing:antialiased; }
  h1,h2,h3 { font-family:var(--serif); font-weight:400; line-height:1.08; text-wrap:balance; }
  h1 { font-size:clamp(3.25rem,6.2vw,6.25rem); letter-spacing:-.045em; }
  h2 { font-size:clamp(2.3rem,3.5vw,3.5rem); letter-spacing:-.035em; }
  h3 { font-size:1.75rem; letter-spacing:-.025em; }
  p { max-width:70ch; }
  h1,h2,h3,p,a { overflow-wrap:break-word; }
  main, .prose, .content-layout > * { min-width:0; }
  a { text-underline-offset:.25em; }
  :focus-visible { outline:3px solid #a95932; outline-offset:5px; }
  ::selection { background:#d6ddc9; color:var(--ink); }
  .container { width:min(1280px,calc(100% - 96px)); margin-inline:auto; }
  .eyebrow { font-size:.75rem; font-weight:600; letter-spacing:.16em; text-transform:uppercase; }
  .muted { color:var(--muted); }
  .skip-link { position:absolute; left:1rem; top:-100px; z-index:20; background:var(--white); color:var(--ink); padding:.75rem 1rem; }
  .skip-link:focus { top:1rem; }
}
@layer components {
  .topline { border-bottom:1px solid var(--line); padding:.5rem 0; font-size:.75rem; letter-spacing:.075em; text-transform:uppercase; }
  .topline .container { display:flex; justify-content:space-between; gap:1rem; }
  .site-header { position:relative; z-index:5; background:var(--paper); }
  .header-inner { min-height:105px; display:flex; align-items:center; justify-content:space-between; gap:2rem; }
  .wordmark { text-decoration:none; display:inline-flex; flex-direction:column; align-items:center; line-height:.94; flex:none; }
  .wordmark span { font-family:var(--serif); font-size:2.4rem; letter-spacing:.13em; padding-left:.13em; }
  .wordmark small { font-size:.75rem; line-height:2.3; letter-spacing:.22em; padding-left:.22em; }
  .main-nav { display:flex; align-items:center; gap:2.15rem; font-size:.875rem; }
  .main-nav a { text-decoration:none; padding:.6rem 0; }
  .main-nav a:hover, .main-nav a[aria-current='page'] { text-decoration:underline; text-decoration-thickness:1px; }
  .main-nav .nav-cta { border:1px solid var(--ink); padding:.7rem 1.25rem; margin-left:.8rem; }
  .menu-toggle { display:none; background:transparent; color:var(--ink); border:1px solid var(--line); min-height:44px; padding:.5rem 1rem; }
  .hero { position:relative; min-height:640px; isolation:isolate; display:flex; align-items:center; background:#324b35; color:var(--white); overflow:hidden; }
  .hero-media { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 57%; z-index:0; }
  .hero::after { content:''; position:absolute; inset:0; z-index:1; background:linear-gradient(90deg,rgba(15,34,26,.75),rgba(15,34,26,.3) 58%,rgba(15,34,26,.04)); }
  .hero-content { position:relative; z-index:2; padding-block:76px 100px; }
  .hero .eyebrow { display:flex; align-items:center; gap:.9rem; margin-bottom:1.75rem; color:#f1ecdc; }
  .hero .eyebrow::before { content:''; width:36px; height:1px; background:currentColor; }
  .hero h1 { max-width:800px; }
  .hero h1 em { font-weight:400; color:#efe7ce; }
  .hero-description { margin-top:1.65rem; font-size:1.0625rem; line-height:1.8; max-width:440px; color:#f2f2ec; }
  .hero-actions { display:flex; align-items:center; gap:1.7rem; flex-wrap:wrap; margin-top:2rem; }
  .button { display:inline-flex; align-items:center; justify-content:center; gap:1.6rem; min-height:50px; padding:.85rem 1.4rem; background:var(--ink); border:1px solid var(--ink); color:var(--white); text-decoration:none; font-size:.875rem; transition:background .2s, color .2s; }
  .button:hover { background:#3d5446; }
  .button-light { background:var(--paper); color:var(--ink); border-color:var(--paper); }
  .button-light:hover { background:#e5e8dc; }
  .text-link { display:inline-flex; align-items:center; gap:.8rem; font-size:.875rem; text-decoration:none; border-bottom:1px solid; padding:.45rem 0; }
  .hero-caption { z-index:2; position:absolute; right:48px; bottom:26px; font-size:.75rem; letter-spacing:.08em; }
  .intro-strip { border-bottom:1px solid var(--line); }
  .intro-strip .container { display:grid; grid-template-columns:1.4fr 1fr 1fr; align-items:center; padding-block:25px; gap:2rem; }
  .intro-strip p:first-child { font-family:var(--serif); font-size:1.4rem; }
  .intro-strip p:not(:first-child) { font-size:.8125rem; border-left:1px solid var(--line); padding-left:2rem; }
  .section { padding-block:88px; }
  .section-heading { display:flex; justify-content:space-between; align-items:end; gap:2rem; margin-bottom:36px; }
  .section-heading .eyebrow, .section-title .eyebrow { color:var(--wine); margin-bottom:15px; }
  .section-heading p { max-width:360px; font-size:.9375rem; color:var(--muted); }
  .cards { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; }
  .card { min-width:0; }
  .card-image-link { display:block; position:relative; overflow:hidden; background:var(--cream); aspect-ratio:1.4; }
  .card-image { width:100%; height:100%; object-fit:cover; transition:transform .5s; }
  .card-image-link:hover .card-image { transform:scale(1.035); }
  .image-tag { position:absolute; top:15px; left:15px; background:var(--paper); color:var(--ink); padding:.3rem .65rem; font-size:.75rem; letter-spacing:.1em; text-transform:uppercase; }
  .card-body { padding-top:22px; }
  .card-meta { font-size:.75rem; letter-spacing:.12em; text-transform:uppercase; color:var(--wine); margin-bottom:11px; }
  .card h3 a { text-decoration:none; }
  .card h3 a:hover { text-decoration:underline; }
  .card p { color:var(--muted); font-size:.9375rem; margin-top:14px; }
  .card .text-link { margin-top:15px; }
  .editorial-section { background:var(--cream); }
  .editorial-grid { display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:80px; }
  .editorial-photo { width:100%; height:auto; aspect-ratio:1; object-fit:cover; }
  .editorial-copy .eyebrow { color:var(--wine); margin-bottom:20px; }
  .editorial-copy h2 { max-width:440px; }
  .editorial-copy > p:not(.eyebrow) { color:var(--muted); margin-top:24px; }
  .numbered-list { list-style:none; margin:28px 0; padding:0; border-top:1px solid var(--line); }
  .numbered-list li { display:flex; align-items:center; gap:20px; border-bottom:1px solid var(--line); padding:17px 0; font-size:.9375rem; }
  .numbered-list span { font-family:var(--serif); font-size:1.25rem; color:var(--wine); }
  .town-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
  .town-card { padding:28px 24px; text-decoration:none; border-right:1px solid var(--line); }
  .town-card:first-child { padding-left:0; }
  .town-card:last-child { border-right:0; }
  .town-card:hover h3 { text-decoration:underline; }
  .town-card .eyebrow { color:var(--wine); margin-bottom:20px; }
  .town-card h3 { font-size:1.65rem; }
  .town-card p { margin-top:14px; color:var(--muted); font-size:.875rem; }
  .planning-banner { background:var(--ink); color:var(--paper); }
  .planning-inner { display:flex; align-items:center; justify-content:space-between; gap:2rem; padding-block:58px; }
  .planning-inner .eyebrow { color:#d6d7b7; margin-bottom:18px; }
  .planning-inner h2 { font-size:clamp(2rem,3vw,3rem); }
  .faq-layout { display:grid; grid-template-columns:1fr 1.3fr; gap:75px; }
  .faq-layout .section-title > p:last-child { color:var(--muted); margin-top:24px; }
  .faq-list { border-top:1px solid var(--line); }
  details { border-bottom:1px solid var(--line); }
  summary { cursor:pointer; display:flex; justify-content:space-between; gap:1.5rem; padding:23px 0; font-size:1rem; list-style:none; }
  summary::-webkit-details-marker { display:none; }
  summary::after { content:'+'; font-size:1.4rem; line-height:1.1; font-weight:400; }
  details[open] summary::after { content:'−'; }
  details p { margin:0 30px 24px 0; color:var(--muted); font-size:.9375rem; }
  .site-footer { background:var(--cream); padding-top:58px; }
  .footer-main { display:grid; grid-template-columns:2fr 1fr 1fr; gap:50px; padding-bottom:45px; }
  .footer-brand .wordmark { align-items:flex-start; }
  .footer-brand .wordmark span,.footer-brand .wordmark small { padding-left:0; }
  .footer-brand p { max-width:360px; color:var(--muted); font-size:.875rem; margin-top:18px; }
  .footer-links { display:flex; flex-direction:column; align-items:flex-start; gap:11px; font-size:.875rem; }
  .footer-links .eyebrow { margin-bottom:7px; }
  .footer-links a { text-decoration:none; min-height:32px; display:inline-flex; align-items:center; }
  .footer-links a:hover { text-decoration:underline; }
  .footer-bottom { border-top:1px solid var(--line); padding-block:22px; display:flex; justify-content:space-between; gap:20px; color:var(--muted); font-size:.75rem; }
  .breadcrumbs { list-style:none; display:flex; flex-wrap:wrap; gap:10px; padding:25px 0; margin:0; font-size:.8125rem; color:var(--muted); }
  .breadcrumbs li+li::before { content:'/'; margin-right:10px; color:#858c81; }
  .page-hero { padding:34px 0 64px; border-bottom:1px solid var(--line); }
  .page-hero .eyebrow { color:var(--wine); margin-bottom:20px; }
  .page-hero h1 { font-size:clamp(3rem,5.5vw,5rem); max-width:900px; }
  .page-hero .lead { font-size:1.125rem; max-width:720px; color:var(--muted); margin-top:25px; }
  .page-meta { margin-top:23px; font-size:.75rem; color:var(--muted); }
  .wide-photo { height:auto; width:100%; max-height:460px; object-fit:cover; aspect-ratio:2.7; margin-top:40px; }
  .content-layout { display:grid; grid-template-columns:minmax(0,780px) minmax(210px,1fr); gap:85px; align-items:start; }
  .prose h2 { font-size:2.35rem; margin:48px 0 20px; }
  .prose h2:first-child { margin-top:0; }
  .prose h3 { font-size:1.6rem; margin:28px 0 14px; }
  .prose p { margin-bottom:20px; color:#48564d; }
  .prose ul, .prose ol { color:#48564d; padding-left:1.25rem; margin:0 0 24px; }
  .prose li { padding-left:.35rem; margin-bottom:10px; }
  .prose strong { color:var(--ink); }
  .callout { border-left:3px solid var(--wine); background:var(--cream); padding:24px 28px; margin:30px 0; }
  .callout p:last-child { margin-bottom:0; }
  .side-note { padding:25px; background:var(--cream); }
  .side-note .eyebrow { color:var(--wine); margin-bottom:16px; }
  .side-note p { font-size:.9375rem; margin-bottom:18px; }
  .side-note ul { padding-left:18px; font-size:.875rem; }
  .side-note li { margin:10px 0; }
  .side-links { display:flex; flex-direction:column; gap:14px; margin-top:30px; font-size:.875rem; }
  .source-list { margin-top:48px; padding-top:25px; border-top:1px solid var(--line); }
  .source-list h2 { font-size:1.4rem; margin-top:0; }
  .source-list p,.source-list li { font-size:.8125rem; }
  .table-wrap { overflow-x:auto; margin-block:25px; }
  table { width:100%; border-collapse:collapse; text-align:left; font-size:.9375rem; }
  th,td { padding:16px; border-bottom:1px solid var(--line); vertical-align:top; }
  th { color:var(--ink); background:var(--cream); font-weight:600; }
  td { color:#48564d; }
  .guide-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:25px; }
  .guide-box { border:1px solid var(--line); padding:32px; }
  .guide-box .eyebrow { color:var(--wine); margin-bottom:20px; }
  .guide-box p { margin:18px 0; color:var(--muted); }
  .itinerary-step { display:grid; grid-template-columns:88px 1fr; gap:24px; padding:28px 0; border-bottom:1px solid var(--line); }
  .itinerary-step time,.step-time { color:var(--wine); font-size:.875rem; }
  .itinerary-step h3 { margin:0 0 14px; }
  .itinerary-step p { margin:0; }
  .simple-page { max-width:850px; }
  .contact-layout { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:80px; align-items:start; padding-top:35px; }
  .contact-intro { padding-top:20px; }
  .contact-intro > .eyebrow { color:var(--wine); margin-bottom:24px; }
  .contact-intro h1 { font-size:clamp(3.5rem,6vw,5.75rem); }
  .contact-intro h1 em { color:var(--wine); }
  .contact-lead { max-width:350px; margin-top:28px; font-size:1.125rem; color:var(--muted); }
  .contact-email { margin-top:48px; padding-top:28px; border-top:1px solid var(--line); }
  .contact-email .eyebrow { margin-bottom:10px; }
  .contact-email a { font-size:1.125rem; overflow-wrap:anywhere; }
  .contact-note { margin-top:26px; max-width:320px; color:var(--muted); font-size:.875rem; }
  .contact-panel { background:var(--cream); padding:40px; min-width:0; }
  .contact-panel h2 { font-size:2.25rem; }
  .contact-panel-intro { margin-top:12px; color:var(--muted); font-size:.875rem; }
  .contact-form { margin-top:28px; }
  .form-row { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; }
  .form-field { margin-bottom:22px; min-width:0; }
  .form-field label { display:block; margin-bottom:8px; font-size:.875rem; }
  .form-field input,.form-field textarea { width:100%; min-width:0; border:1px solid #9ca69c; border-radius:0; background:var(--paper); color:var(--ink); padding:12px 14px; font-size:1rem; line-height:1.5; }
  .form-field textarea { resize:vertical; min-height:160px; max-height:700px; }
  .form-field input:user-invalid,.form-field textarea:user-invalid { border-color:#963b30; }
  .field-help { margin-top:7px; font-size:.8125rem; color:var(--muted); }
  .form-privacy { font-size:.8125rem; color:var(--muted); margin-bottom:24px; }
  .contact-submit { cursor:pointer; width:100%; }
  .contact-submit:disabled { opacity:.7; cursor:wait; }
  .form-status { font-size:.875rem; color:var(--ink); margin-top:12px; }
  .form-status:empty { display:none; }
  .form-trap { display:none!important; }
}
@layer responsive {
  @media (min-width:1600px) { .hero { min-height:710px; } }
  @media (max-width:1050px) { .container { width:calc(100% - 64px); } .main-nav { gap:1.2rem; } .main-nav .nav-cta { margin-left:0; } .editorial-grid { gap:45px; } .content-layout { gap:45px; } .hero-caption { right:32px; } .town-card { padding:25px 18px; } }
  @media (max-width:1100px) {
    .container { width:calc(100% - 40px); }
    .topline .container span:last-child { display:none; }
    .topline { font-size:.75rem; }
    .header-inner { min-height:87px; flex-wrap:wrap; gap:0; padding-block:14px; }
    .wordmark span { font-size:2rem; }
    .wordmark small { font-size:.75rem; }
    .main-nav { width:100%; flex-wrap:wrap; gap:.35rem 1.2rem; padding-top:16px; }
    .main-nav .nav-cta { padding:.5rem .8rem; }
    .js .menu-toggle { display:block; }
    .js .main-nav { display:none; }
    .js .main-nav.is-open { display:flex; flex-direction:column; align-items:stretch; padding:16px 0 8px; }
    .js .main-nav a { padding:10px 0; }
    .js .main-nav .nav-cta { padding:10px 14px; text-align:center; margin-top:6px; }
    .hero { min-height:600px; }
    .hero-content { padding-block:65px 90px; }
    .hero h1 { font-size:clamp(3.1rem,9.5vw,4.8rem); }
    .hero .eyebrow { font-size:.75rem; }
    .hero-description { max-width:350px; font-size:1rem; }
    .hero-media { object-position:60% center; }
    .hero::after { background:linear-gradient(90deg,rgba(15,34,26,.8),rgba(15,34,26,.35)); }
    .hero-caption { right:20px; bottom:20px; }
    .intro-strip .container { grid-template-columns:1fr; gap:10px; padding-block:23px; }
    .intro-strip p:not(:first-child) { border:0; padding:0; }
    .section { padding-block:58px; }
    .section-heading { display:block; margin-bottom:28px; }
    .section-heading > p, .section-heading > a { margin-top:20px; }
    .cards { grid-template-columns:1fr; gap:36px; }
    .card-image-link { aspect-ratio:1.65; }
    .card-body { padding-top:18px; }
    .editorial-grid { grid-template-columns:1fr; gap:35px; }
    .editorial-photo { aspect-ratio:1.25; }
    .town-grid { grid-template-columns:1fr 1fr; }
    .town-card { padding:24px 18px; border-bottom:1px solid var(--line); }
    .town-card:first-child,.town-card:nth-child(3) { padding-left:0; }
    .town-card:nth-child(even) { border-right:0; }
    .town-card:nth-last-child(-n+2) { border-bottom:0; }
    .planning-inner { flex-direction:column; align-items:flex-start; padding-block:45px; }
    .faq-layout { grid-template-columns:1fr; gap:30px; }
    .footer-main { grid-template-columns:1fr 1fr; gap:35px; }
    .footer-brand { grid-column:1 / -1; }
    .footer-bottom { flex-direction:column; gap:8px; }
    .content-layout { grid-template-columns:1fr; gap:38px; }
    .page-hero { padding:20px 0 40px; }
    .page-hero h1 { font-size:clamp(2.8rem,10vw,4rem); }
    .page-hero .lead { font-size:1.0625rem; }
    .wide-photo { aspect-ratio:1.6; margin-top:30px; }
    .guide-grid { grid-template-columns:1fr; }
    .guide-box { padding:25px; }
    .itinerary-step { grid-template-columns:65px 1fr; gap:15px; }
    th,td { padding:12px; }
    .contact-layout { grid-template-columns:1fr; gap:35px; padding-top:10px; }
    .contact-intro { padding-top:0; }
    .contact-lead { max-width:100%; }
    .contact-email { margin-top:30px; }
    .contact-panel { padding:26px 22px; }
    .form-row { grid-template-columns:1fr; gap:0; }
  }
  @media (max-width:400px) { .contact-intro h1 { font-size:2.8rem; } .contact-panel { padding:24px 16px; } .page-hero h1 { font-size:2.5rem; } }
  @media (max-width:360px) { .hero-actions { gap:1rem; } .hero h1 { font-size:2.85rem; } .town-grid { grid-template-columns:1fr; } .town-card { border-right:0; padding-left:0; } .town-card:nth-child(3) { border-bottom:1px solid var(--line); } }
  @media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *, *::before, *::after { transition:none!important; animation:none!important; } }
  @media print { .topline,.main-nav,.menu-toggle,.planning-banner,.site-footer { display:none!important; } .container { width:100%; } .hero { min-height:0; color:#000; background:none; } .hero-media,.hero::after,.hero-caption { display:none; } .hero h1 em,.hero .eyebrow,.hero-description { color:#000; } .hero-content,.section { padding-block:20px; } .content-layout { display:block; } details p { display:block; } }
}

@layer components {
  .form-status:not(:empty) { padding:14px 16px; border:1px solid var(--line); background:var(--paper); overflow-wrap:anywhere; }
  .form-status[data-state="success"] { color:#20392f; background:#edf5ee; border-color:#789780; }
  .form-status[data-state="error"] { color:#7b291f; background:#fff3ef; border-color:#bc7767; }
}

@layer components {
  .fact-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 24px; margin:28px 0; }
  .fact-grid div { padding:18px 0; border-top:1px solid var(--line); }
  .fact-grid dt { font-size:.8125rem; color:var(--wine); font-weight:600; }
  .fact-grid dd { margin:6px 0 0; }
  .quick-plan,.region-links { display:flex; flex-wrap:wrap; gap:16px 26px; margin-top:24px; }
  .quick-plan { flex-direction:column; align-items:flex-start; }
  .guide-box h2 { font-size:2rem; margin-top:0; }
  .guide-box h3 { font-size:1.35rem; }
  .region-section { padding:32px 0; border-top:1px solid var(--line); }
  .winery-filter { margin:28px 0; padding:20px; background:var(--cream); }
  .winery-filter label { display:block; font-weight:600; margin-bottom:8px; }
  .winery-filter select { max-width:100%; min-height:44px; font:inherit; padding:8px 12px; border:1px solid var(--line); background:var(--paper); color:var(--ink); }
  .winery-filter p { margin:12px 0 0; font-size:.875rem; }
  [hidden] { display:none!important; }
}
@layer responsive {
  @media(max-width:600px) { .fact-grid { grid-template-columns:1fr; } .region-links { flex-direction:column; align-items:flex-start; } }
}
