:root{--burgundy: #6B1A1A;--gold: #B8952A;--cream: #FAF7F2;--stone: #F0EBE0;--ink: #1A1410;--muted: #7A6E64;--confirmed: #2D6B4A;--confirmed-bg: #EBF5EE;--tbc: #8B6010;--tbc-bg: #FDF5E0;--font-serif: "Playfair Display", Georgia, serif;--font-sans: "DM Sans", system-ui, sans-serif;--nav-height: 68px;--safe-bottom: env(safe-area-inset-bottom, 0px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:var(--font-sans);background:var(--cream);color:var(--ink);-webkit-font-smoothing:antialiased;overscroll-behavior:none}#root{height:100%;display:flex;flex-direction:column;max-width:430px;margin:0 auto}button{font-family:inherit;cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}.tab-content{flex:1;overflow-y:auto;overflow-x:hidden;padding-bottom:calc(var(--nav-height) + var(--safe-bottom) + 16px);-webkit-overflow-scrolling:touch}.section-title{font-family:var(--font-serif);font-size:1.4rem;font-weight:600;color:var(--burgundy);margin-bottom:12px}.section-subtitle{font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:16px}.card{background:#fff;border-radius:12px;padding:16px;margin-bottom:12px;box-shadow:0 1px 3px #1a141014}.divider{height:1px;background:var(--stone);margin:20px 0}.bottom-nav{position:fixed;bottom:0;left:0;right:0;max-width:430px;margin:0 auto;height:calc(var(--nav-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:#fff;border-top:1px solid var(--stone);display:flex;align-items:flex-start;z-index:100;box-shadow:0 -2px 12px #1a141014}.bottom-nav__tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:10px 4px;min-height:44px;color:var(--muted);transition:color .15s}.bottom-nav__tab--active{color:var(--burgundy)}.bottom-nav__tab:active{opacity:.7}.bottom-nav__icon{font-size:1.25rem;line-height:1}.bottom-nav__label{font-size:.65rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase}.trip-tab{padding-top:0}.trip-header{background:var(--burgundy);color:#fff;padding:48px 20px 28px;text-align:center}.trip-header__eyebrow{font-size:.75rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;opacity:.7;margin-bottom:6px}.trip-header__title{font-family:var(--font-serif);font-size:2rem;font-weight:700;margin-bottom:4px}.trip-header__sub{font-size:.85rem;opacity:.7}.trip-section{padding:20px 16px 0}.trip-section:last-child{padding-bottom:8px}.trip-flights{display:flex;flex-direction:column;gap:12px}.trip-flights__direction{display:flex;flex-direction:column;gap:6px}.trip-flights__label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.trip-flights__leg{display:flex;justify-content:space-between;align-items:center}.trip-flights__route{font-family:var(--font-serif);font-size:.95rem;font-weight:600;color:var(--ink)}.trip-flights__time{font-size:.85rem;font-weight:500;color:var(--burgundy)}.trip-flights__divider{height:1px;background:var(--stone)}.trip-hotel{margin-bottom:12px}.trip-hotel__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}.trip-hotel__name{font-family:var(--font-serif);font-size:1rem;font-weight:600;color:var(--ink)}.trip-hotel__town{font-size:.8rem;color:var(--muted)}.trip-hotel__nights{font-size:.72rem;font-weight:600;color:var(--burgundy);background:#6b1a1a14;padding:3px 8px;border-radius:20px;white-space:nowrap}.trip-hotel__details{display:flex;flex-direction:column;gap:4px}.trip-hotel__detail{font-size:.82rem;color:var(--ink)}.trip-hotel__note{font-size:.78rem;color:var(--muted);margin-top:4px}.trip-car__company{font-family:var(--font-serif);font-size:1rem;font-weight:600;margin-bottom:8px}.trip-car__route{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.trip-car__point{font-size:.83rem;color:var(--ink)}.trip-car__note{font-size:.78rem;color:var(--tbc);background:var(--tbc-bg);padding:8px 10px;border-radius:6px}.trip-weather__summary{font-family:var(--font-serif);font-size:1rem;font-weight:600;color:var(--confirmed);margin-bottom:10px}.trip-weather__rows{display:flex;flex-direction:column;gap:6px}.trip-weather__row{display:flex;justify-content:space-between;align-items:center}.trip-weather__period{font-size:.82rem;color:var(--muted)}.trip-weather__val{font-size:.82rem;font-weight:500;color:var(--ink)}.trip-distance{display:flex;justify-content:space-between;align-items:center;padding:10px 0;gap:12px}.trip-distance--border{border-bottom:1px solid var(--stone)}.trip-distance__route{font-size:.8rem;color:var(--ink);flex:1}.trip-distance__time{font-size:.78rem;font-weight:600;color:var(--burgundy);white-space:nowrap}.trip-neighbourhoods{display:flex;flex-direction:column;gap:8px}.neighbourhood{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 3px #1a141012}.neighbourhood__header{width:100%;text-align:left;padding:14px 16px;display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:44px}.neighbourhood__header:active{background:var(--stone)}.neighbourhood__name{font-family:var(--font-serif);font-size:.95rem;font-weight:700;color:var(--ink)}.neighbourhood__days{font-size:.72rem;font-weight:500;color:var(--muted);margin-top:2px;text-transform:uppercase;letter-spacing:.05em}.neighbourhood__chevron{font-size:.65rem;color:var(--muted);flex-shrink:0}.neighbourhood__body{padding:0 16px 16px;border-top:1px solid var(--stone)}.neighbourhood__context{font-size:.82rem;color:var(--ink);line-height:1.55;padding-top:12px;margin-bottom:14px}.neighbourhood__table{width:100%;border-collapse:collapse;font-size:.75rem}.neighbourhood__table thead th{text-align:left;padding:6px 6px 6px 0;font-size:.67rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);border-bottom:1px solid var(--stone)}.neighbourhood__table tbody tr{border-bottom:1px solid var(--stone)}.neighbourhood__table tbody tr:last-child{border-bottom:none}.neighbourhood__table tbody td{padding:8px 6px 8px 0;vertical-align:top;color:var(--ink);line-height:1.35}.neighbourhood__loc-name{display:block;font-weight:600;font-size:.78rem;color:var(--ink)}.neighbourhood__loc-type{display:block;font-size:.68rem;color:var(--muted);margin-top:1px}.neighbourhood__address{font-size:.72rem;color:var(--muted)}.neighbourhood__from{font-size:.72rem;font-weight:600;color:var(--burgundy);white-space:nowrap}.trip-header__desc{font-size:.83rem;opacity:.75;line-height:1.55;margin-top:10px;font-style:italic}.event-row{display:flex;gap:12px;padding:14px 16px;background:#fff;border-radius:10px;margin-bottom:8px;box-shadow:0 1px 3px #1a141012;min-height:44px}.event-row__accent{width:3px;border-radius:2px;flex-shrink:0;background:var(--stone)}.event-row--confirmed .event-row__accent{background:var(--confirmed)}.event-row--tbc .event-row__accent{background:var(--tbc)}.event-row__content{flex:1;min-width:0}.event-row__time{display:block;font-size:.7rem;font-weight:600;letter-spacing:.04em;color:var(--muted);margin-bottom:2px}.event-row__time--confirmed{color:var(--confirmed)}.event-row__time--tbc{color:var(--tbc)}.event-row__title{font-family:var(--font-serif);font-size:.95rem;font-weight:600;color:var(--ink);line-height:1.3}.event-row__note{font-size:.78rem;color:var(--muted);margin-top:3px;line-height:1.4}.itinerary-tab{padding-top:0}.itinerary-header{background:#fff;border-bottom:1px solid var(--stone);padding:48px 16px 0;position:sticky;top:0;z-index:10}.itinerary-header__title{font-family:var(--font-serif);font-size:1.5rem;font-weight:700;color:var(--burgundy);margin-bottom:12px}.day-selector{display:flex;gap:4px}.day-selector__btn{flex:1;display:flex;flex-direction:column;align-items:center;padding:10px 4px;border-radius:8px 8px 0 0;color:var(--muted);transition:color .15s,background .15s;min-height:44px}.day-selector__btn--active{color:var(--burgundy);background:var(--cream);border-bottom:2px solid var(--burgundy)}.day-selector__label{font-size:.85rem;font-weight:600}.day-selector__date{font-size:.65rem;margin-top:2px}.itinerary-day{padding:16px}.itinerary-day__subtitle{font-size:.78rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:14px}.itinerary-timeline{display:flex;flex-direction:column}.badge{display:inline-block;font-size:.7rem;font-weight:600;padding:3px 8px;border-radius:20px;white-space:nowrap;letter-spacing:.02em}.badge--confirmed{color:var(--confirmed);background:var(--confirmed-bg)}.badge--tbc{color:var(--tbc);background:var(--tbc-bg)}.badge--walkin{color:var(--muted);background:var(--stone)}.tastings-tab{padding-top:0}.tastings-header{background:var(--burgundy);color:#fff;padding:48px 20px 24px}.tastings-header__title{font-family:var(--font-serif);font-size:1.8rem;font-weight:700;margin-bottom:4px}.tastings-header__sub{font-size:.82rem;opacity:.7}.tastings-arc{background:var(--stone);padding:16px;border-bottom:1px solid #e2ddd4}.tastings-arc__overview{font-size:.83rem;color:var(--ink);line-height:1.6;margin-bottom:14px}.tastings-arc__days{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.tastings-arc__day{display:flex;gap:12px;align-items:flex-start}.tastings-arc__day-label{font-family:var(--font-serif);font-size:.85rem;font-weight:700;color:var(--burgundy);width:28px;flex-shrink:0;padding-top:1px}.tastings-arc__day-theme{font-size:.82rem;font-weight:600;color:var(--ink)}.tastings-arc__day-desc{font-size:.78rem;color:var(--muted);margin-top:2px;line-height:1.4}.tastings-arc__diversity{display:flex;flex-direction:column;gap:8px;background:#fff;border-radius:8px;padding:12px}.tastings-arc__stat-label{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:2px}.tastings-arc__stat-value{font-size:.8rem;color:var(--ink);line-height:1.4}.tastings-list{padding:16px;display:flex;flex-direction:column;gap:10px}.producer-card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px #1a141014}.producer-card__header{width:100%;text-align:left;padding:16px;display:flex;flex-direction:column;gap:4px;min-height:44px}.producer-card__header:active{background:var(--stone)}.producer-card__top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.producer-card__meta{display:flex;align-items:center;gap:8px}.producer-card__day{font-size:.72rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.producer-card__chevron{font-size:.65rem;color:var(--muted)}.producer-card__name{font-family:var(--font-serif);font-size:1.05rem;font-weight:700;color:var(--ink);line-height:1.25}.producer-card__type{font-size:.73rem;color:var(--muted);margin-top:2px;font-weight:500}.producer-card__appellation{font-size:.75rem;color:var(--muted);margin-top:1px}.producer-card__address{font-size:.78rem;color:var(--muted);padding:8px 0 12px;border-bottom:1px solid var(--stone);margin-bottom:2px}.producer-card__tier{font-size:.78rem;font-weight:600;color:var(--gold);margin-top:4px}.producer-card__body{padding:0 16px 16px;border-top:1px solid var(--stone)}.producer-card__description{font-size:.84rem;color:var(--ink);line-height:1.55;padding-top:12px}.producer-card__wines{margin-top:14px;background:var(--cream);border-radius:8px;padding:12px}.producer-card__wines-label{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:8px}.producer-card__wines-list{list-style:none;display:flex;flex-direction:column;gap:5px}.producer-card__wine{font-size:.82rem;color:var(--ink);padding-left:12px;position:relative;line-height:1.45}.producer-card__wine:before{content:"·";position:absolute;left:2px;color:var(--gold);font-weight:700}.producer-card__wine-name{font-family:var(--font-serif);font-style:italic;color:var(--burgundy)}.producer-card__wine-note{font-size:.77rem;color:var(--muted)}.food-tab{padding-top:0}.food-header{background:var(--ink);color:#fff;padding:48px 20px 24px}.food-header__title{font-family:var(--font-serif);font-size:1.8rem;font-weight:700;margin-bottom:4px}.food-header__sub{font-size:.82rem;opacity:.6}.food-content{padding:16px}.food-town{margin-bottom:24px}.food-town__name{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:10px;padding-left:2px}.food-town__venues{display:flex;flex-direction:column;gap:8px}.venue-card{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 3px #1a141012}.venue-card__header{width:100%;text-align:left;padding:14px 16px;display:flex;flex-direction:column;gap:4px;min-height:44px}.venue-card__header:active{background:var(--stone)}.venue-card__top{display:flex;justify-content:space-between;align-items:center}.venue-card__meta{display:flex;align-items:center;gap:8px}.venue-card__occasion{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.venue-card__chevron{font-size:.65rem;color:var(--muted)}.venue-card__name{font-family:var(--font-serif);font-size:1rem;font-weight:700;color:var(--ink)}.venue-card__address{font-size:.72rem;color:var(--muted);margin-top:3px}.venue-card__walk{font-weight:600;color:var(--burgundy)}.venue-card__body{padding:0 16px 14px;border-top:1px solid var(--stone)}.venue-card__description{font-size:.83rem;color:var(--ink);line-height:1.5;padding-top:12px}.venue-card__order{margin-top:12px;background:var(--cream);border-radius:8px;padding:10px 12px}.venue-card__order-label{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:5px}.venue-card__order-text{font-size:.83rem;color:var(--ink);line-height:1.5}.wines-tab{padding-top:0}.wines-header{background:var(--gold);color:#fff;padding:48px 20px 24px}.wines-header__title{font-family:var(--font-serif);font-size:1.8rem;font-weight:700;margin-bottom:4px}.wines-header__sub{font-size:.82rem;opacity:.8}.wines-content{padding:20px 16px}.wines-section{margin-bottom:4px}.wines-section__intro{font-size:.83rem;color:var(--muted);line-height:1.55;margin-bottom:14px}.wines-cards{display:flex;flex-direction:column;gap:8px}.appellation-card{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 3px #1a141012}.appellation-card__header{width:100%;text-align:left;padding:14px 16px;min-height:44px}.appellation-card__header:active{background:var(--stone)}.appellation-card__summary{display:flex;justify-content:space-between;align-items:center;gap:12px}.appellation-card__name{font-family:var(--font-serif);font-size:1rem;font-weight:700;color:var(--ink)}.appellation-card__colour{font-size:.75rem;color:var(--muted);margin-top:2px}.appellation-card__chevron{font-size:.65rem;color:var(--muted);flex-shrink:0}.appellation-card__body{padding:0 16px 14px;border-top:1px solid var(--stone)}.appellation-card__character{font-size:.84rem;color:var(--ink);line-height:1.55;padding-top:12px}.appellation-card__aromas-block{margin-top:12px;background:var(--cream);border-radius:8px;padding:10px 12px}.appellation-card__aromas-label{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:4px}.appellation-card__aromas-text{font-size:.82rem;color:var(--ink);font-style:italic;line-height:1.5}.appellation-card__ageing{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--stone)}.appellation-card__ageing-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.appellation-card__ageing-val{font-size:.82rem;font-weight:600;color:var(--burgundy)}.grape-card{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 3px #1a141012}.grape-card__header{width:100%;text-align:left;padding:14px 16px;min-height:44px}.grape-card__header:active{background:var(--stone)}.grape-card__summary{display:flex;justify-content:space-between;align-items:center;gap:12px}.grape-card__name{font-family:var(--font-serif);font-size:1rem;font-weight:700;color:var(--ink)}.grape-card__colour{font-size:.75rem;color:var(--muted);margin-top:2px}.grape-card__chevron{font-size:.65rem;color:var(--muted);flex-shrink:0}.grape-card__body{padding:0 16px 14px;border-top:1px solid var(--stone);display:flex;flex-direction:column;gap:0}.grape-card__description{font-size:.84rem;color:var(--ink);line-height:1.55;padding-top:12px;margin-bottom:10px}.grape-card__section{padding:8px 0;border-top:1px solid var(--stone)}.grape-card__section-label{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:4px}.grape-card__section-text{font-size:.82rem;color:var(--ink);line-height:1.5}.grape-card__aromas{background:var(--cream);border-radius:8px;padding:10px 12px;margin:8px 0}.grape-card__aromas-label{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:4px}.grape-card__aromas-text{font-size:.82rem;color:var(--ink);font-style:italic;line-height:1.5}.grape-card__tip{font-size:.82rem;color:var(--ink);background:var(--tbc-bg);border-radius:8px;padding:10px 12px;margin:8px 0;line-height:1.5;border-top:none}.wine-list-guide{display:flex;flex-direction:column;gap:12px}.wine-list-guide__intro{font-size:.83rem;color:var(--ink);line-height:1.55}.wine-list-guide__section-title{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-top:4px}.wine-list-guide__cards{display:flex;flex-direction:column;gap:8px}.wine-list-card{background:#fff;border-radius:10px;padding:14px 16px;box-shadow:0 1px 3px #1a141012}.wine-list-card--legend{border-left:3px solid var(--gold)}.wine-list-card__header{margin-bottom:8px}.wine-list-card__name{font-family:var(--font-serif);font-size:.95rem;font-weight:700;color:var(--ink)}.wine-list-card__appellation{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:2px}.wine-list-card__desc{font-size:.82rem;color:var(--ink);line-height:1.5}.vintage-table-head{display:grid;grid-template-columns:48px 1fr 1fr 16px;gap:8px;padding:8px 12px;background:var(--ink);color:#fff;font-size:.67rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;border-radius:10px 10px 0 0}.vintage-list{background:#fff;border-radius:0 0 10px 10px;overflow:hidden;box-shadow:0 1px 3px #1a141012;margin-bottom:4px}.vintage-card{border-bottom:1px solid var(--stone)}.vintage-card:last-child{border-bottom:none}.vintage-card__row{width:100%;display:grid;grid-template-columns:48px 1fr 1fr 16px;gap:8px;padding:10px 12px;text-align:left;align-items:center;min-height:44px}.vintage-card__row:active{background:var(--cream)}.vintage-card__year{font-family:var(--font-serif);font-size:.9rem;font-weight:700;color:var(--ink)}.vintage-card__rating{font-size:.73rem;font-weight:600;line-height:1.3}.vintage-card__window{font-size:.7rem;color:var(--muted);line-height:1.3}.vintage-card__chevron{font-size:.6rem;color:var(--muted);justify-self:end}.vintage-card__detail{padding:8px 12px 12px;background:var(--cream);display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--stone)}.vintage-card__char{display:flex;gap:8px;align-items:baseline}.vintage-card__char-label{font-size:.67rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);width:36px;flex-shrink:0}.vintage-card__char-text{font-size:.8rem;color:var(--ink);line-height:1.45}
