:root {
    --ink: #0F1411;
    --felt: #141C18;
    --surface: #18211C;
    --brass: #C99B4A;
    --brass-dim: rgba(201, 155, 74, .22);
    --parchment: #EDE4D3;
    --smoke: #93A199;
    --serif: "Bodoni Moda", Georgia, serif;
    --sans: "Karla", system-ui, sans-serif;
}

* { box-sizing: border-box }
html { scroll-behavior: smooth }

body {
    margin: 0;
    background: var(--ink);
    color: var(--parchment);
    font-family: var(--sans);
    font-weight: 300;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased
}

body.locked { overflow: hidden }
a { color: inherit }
button { font-family: inherit; cursor: pointer }
:focus-visible { outline: 2px solid var(--brass); outline-offset: 3px }
.wrap { width: min(1180px, 92vw); margin-inline: auto }

.logo { filter: invert(1) sepia(.22) brightness(1.05); display: block }

/* ---------- age gate ---------- */
#gate {
    position: fixed; inset: 0; z-index: 400;
    background: #080B09; display: grid; place-items: center; padding: 24px
}
.gate-card {
    width: min(470px, 100%); text-align: center;
    border: 1px solid var(--brass-dim); background: var(--felt);
    padding: 44px 36px 34px
}
.gate-card img { height: 78px; margin: 0 auto 26px }
.gate-card h1 { font-family: var(--serif); font-weight: 400; font-size: 29px; line-height: 1.25; margin: 0 0 12px }
.gate-card p { color: var(--smoke); font-size: 14.5px; margin: 0 auto 26px; max-width: 36ch }
.gate-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap }
.gate-fine { margin-top: 24px; font-size: 11.5px; color: #61706A; line-height: 1.7 }

/* ---------- buttons ---------- */
.btn {
    border: 1px solid var(--brass); background: transparent; color: var(--brass);
    padding: 12px 26px; font-size: 13px; letter-spacing: .06em; border-radius: 2px;
    transition: background .18s, color .18s; text-decoration: none;
    display: inline-block; text-align: center
}
.btn:hover { background: var(--brass); color: #12180F }
.btn-solid { background: var(--brass); color: #12180F }
.btn-solid:hover { background: #DDB262; border-color: #DDB262 }
.btn-quiet { border-color: rgba(147, 161, 153, .35); color: var(--smoke) }
.btn-quiet:hover { background: transparent; border-color: var(--smoke); color: var(--parchment) }
.btn-sm { padding: 9px 16px; font-size: 12px }

/* ---------- topbar / strip / header ---------- */
.topbar { position: relative; z-index: 60 }
@supports (position: sticky) { .topbar { position: sticky; top: 0; -webkit-transform: translateZ(0); transform: translateZ(0) } }

.topstrip {
    background: var(--brass); color: #0F1411; font-size: 13.5px;
    box-shadow: inset 0 1px 0 rgba(15, 20, 17, .15)
}
.topstrip .wrap { display: flex; align-items: center; justify-content: flex-end; gap: 18px; padding: 8px 0 }
.strip-links { display: flex; gap: 26px }
.topstrip a { text-decoration: none; color: #0F1411; transition: color .15s }
.topstrip a:hover { color: #FFFFFF }

.strip-search { display: flex; align-items: center; margin-left: 4px; }
.strip-search-btn { background: none; border: none; color: #0F1411; cursor: pointer; padding: 2px; display: flex; align-items: center; }
.strip-search-input { width: 0; opacity: 0; border: none; background: none; color: #0F1411; font-size: inherit; font-family: inherit; transition: width .2s ease, opacity .2s ease; padding: 0; }
.strip-search-input.open { width: 130px; opacity: 1; padding: 0 0 0 6px; border-bottom: 1px solid rgba(15, 20, 17, .4); outline: none; }

header {
    background: rgba(15, 20, 17, .93);
    border-bottom: 1px solid rgba(201, 155, 74, .20);
    box-shadow: 0 2px 4px rgba(201, 155, 74, .30), 0 6px 12px rgba(201, 155, 74, .19), 0 13px 26px rgba(201, 155, 74, .11), 0 24px 48px rgba(201, 155, 74, .06), 0 40px 80px rgba(201, 155, 74, .03);
    transition: background .25s ease, box-shadow .25s ease
}
header.scrolled { background: rgba(15, 20, 17, .85) }

.bar { display: grid; grid-template-columns: auto 1fr; align-items: center; padding: 22.8px 0 }
.bar-right { display: flex; align-items: center; justify-content: flex-end; gap: 44px; }

.brand { display: flex; align-items: center; gap: 18px; text-decoration: none }
.logo-wrap { display: block; overflow: hidden; }
.brand img.logo { height: 93.6px; margin-left: -39px; }
.brand-text { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; }
.brand-name { font-family: var(--serif); font-size: 23px; letter-spacing: .16em; white-space: nowrap; text-align: left; }
.brand-tag { font-family: var(--sans); font-size: 11px; letter-spacing: .03em; color: var(--smoke); white-space: nowrap; font-weight: 300; text-align: left; }

nav { display: flex; gap: 34px }
nav a { font-size: 15px; text-decoration: none; color: var(--smoke); transition: color .15s }
nav a:hover { color: var(--parchment) }
nav a[aria-current="page"] { color: var(--parchment) }

.cart-btn {
    position: relative; display: flex; align-items: center; justify-content: center;
    background: none; border: 1px solid var(--brass-dim); color: var(--parchment);
    width: 44px; height: 44px; padding: 0; border-radius: 2px;
}
.cart-btn:hover { border-color: var(--brass) }
.cart-count {
    position: absolute; top: -6px; right: -6px;
    min-width: 19px; height: 19px; border-radius: 50%; background: var(--brass);
    color: #12180F; font-size: 11px; font-weight: 600; display: grid; place-items: center; padding: 0 5px
}
.shop-btn {
    border: 1px solid var(--brass); background: transparent; color: var(--brass);
    padding: 12px 22px; font-size: 13px; letter-spacing: .06em; border-radius: 2px;
    text-decoration: none; transition: background .18s, color .18s;
}
.shop-btn:hover { background: var(--brass); color: #12180F; }

.menu-btn { display: none; flex-direction: column; justify-content: center; gap: 5px; width: 32px; height: 32px; background: none; border: none; padding: 0; }
.menu-btn span { display: block; width: 100%; height: 2px; background: var(--parchment); transition: transform .2s ease, opacity .2s ease; }
.menu-btn.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.menu-btn.open span:nth-child(2) { opacity: 0; }
.menu-btn.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.mobile-nav {
    display: none; position: fixed; top: 0; right: 0; bottom: 0; width: min(300px, 80vw);
    background: var(--felt); border-left: 1px solid var(--brass-dim); z-index: 150;
    flex-direction: column; padding: 90px 28px 28px; gap: 6px;
    transform: translateX(100%); transition: transform .25s ease; overflow-y: auto;
}
.mobile-nav.open { display: flex; transform: translateX(0); }
.mobile-nav a { text-decoration: none; color: var(--parchment); font-size: 17px; padding: 14px 0; border-bottom: 1px solid rgba(147, 161, 153, .14); }

@media (max-width: 900px) {
    .menu-btn { display: flex; }
    .brand span.brand-text { display: none; }
    .brand img.logo { height: 58px; margin-left: -24px; }
    .strip-links { display: none; }
    header nav { display: none; }
}
.mobile-nav-divider { border-top: 1px solid var(--brass-dim); margin: 10px 0; }

/* ---------- footer ---------- */
footer { background: #0B0F0D; border-top: 1px solid rgba(201, 155, 74, .14); padding: 56px 0 40px }
.fgrid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 40px; margin-bottom: 40px }
.fgrid img { height: 56px; margin-bottom: 14px }
.fgrid h5 { font-family: var(--serif); font-weight: 400; font-size: 15px; margin: 0 0 14px; color: var(--brass) }
.fgrid a, .fgrid p { display: block; font-size: 13.5px; color: var(--smoke); text-decoration: none; margin-bottom: 9px }
.fgrid a:hover { color: var(--parchment) }
.warning { border: 1px solid rgba(147, 161, 153, .3); padding: 18px 20px; font-size: 12px; color: #8B978F; line-height: 1.8; margin-bottom: 24px }
.warning b { color: var(--parchment); font-weight: 500 }
.legal { font-size: 11.5px; color: #5C6A63; line-height: 1.8 }

@media (max-width: 900px) {
    .fgrid { grid-template-columns: 1fr 1fr; }
}

/* ---------- hero ---------- */
.hero { position: relative; overflow: hidden; border-bottom: 1px solid rgba(201, 155, 74, .14) }
.hero::after {
    content: ""; position: absolute; top: -20%; right: -10%; width: 60%; height: 120%;
    background: radial-gradient(ellipse at center, rgba(201, 155, 74, .10), transparent 65%);
    pointer-events: none
}
.hero-inner { display: grid; grid-template-columns: 1.05fr .95fr; gap: 40px; align-items: center; padding: 80px 0 92px }
.hero h1 { font-family: var(--serif); font-weight: 400; font-size: clamp(38px, 5.3vw, 66px); line-height: 1.05; margin: 0 0 22px; letter-spacing: -.01em }
.hero h1 em { font-style: italic }
.hero p { font-size: 16.5px; color: var(--smoke); max-width: 46ch; margin: 0 0 32px; line-height: 1.75 }
.hero-cta { display: flex; gap: 14px; flex-wrap: wrap }
.hero-facts { display: flex; gap: 34px; margin-top: 44px; flex-wrap: wrap }
.hero-facts div { max-width: 17ch }
.hero-facts b { display: block; font-family: var(--serif); font-size: 21px; font-weight: 400; color: var(--brass) }
.hero-facts small { font-size: 12.5px; color: #6F7E76; line-height: 1.5; display: block; margin-top: 2px }
.hero-art { position: relative; z-index: 1 }
.hero-art svg { width: 100%; height: auto; display: block }

@keyframes drift {
    0% { opacity: 0; transform: translate(0, 0) scale(.9) }
    22% { opacity: .5 }
    100% { opacity: 0; transform: translate(-26px, -110px) scale(1.5) }
}
.puff { animation: drift 7s ease-out infinite; fill: none; stroke: #B9C6BD; stroke-width: 1.1; opacity: 0 }
.puff:nth-of-type(2) { animation-delay: 2.3s }
.puff:nth-of-type(3) { animation-delay: 4.6s }
@keyframes glow { 0%, 100% { opacity: .55 } 50% { opacity: 1 } }
.ember-glow { animation: glow 3.4s ease-in-out infinite }

/* ---------- sections ---------- */
section { padding: 86px 0 }
.sec-head h2 { font-family: var(--serif); font-weight: 400; font-size: clamp(28px, 3.4vw, 40px); margin: 0; letter-spacing: -.01em }
.sec-head p { color: var(--smoke); font-size: 15px; margin: 8px 0 0; max-width: 56ch }
.rule { height: 1px; background: linear-gradient(90deg, var(--brass-dim), transparent); margin: 26px 0 34px }
.filters { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 32px }
.chip { background: none; border: 1px solid rgba(147, 161, 153, .25); color: var(--smoke); padding: 8px 16px; font-size: 12.5px; border-radius: 2px; transition: .15s }
.chip:hover { color: var(--parchment); border-color: var(--smoke) }
.chip[aria-pressed="true"] { background: var(--brass); border-color: var(--brass); color: #12180F }

/* ---------- cigar cards ---------- */
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(262px, 1fr)); gap: 26px }
.card { background: var(--surface); border: 1px solid rgba(201, 155, 74, .14); display: flex; flex-direction: column; border-radius: 2px }
.stick {
    background: radial-gradient(ellipse at 82% 50%, rgba(201, 155, 74, .12), transparent 60%), linear-gradient(180deg, #121A15, #0D1310);
    padding: 26px 18px; display: grid; place-items: center; min-height: 132px; border-bottom: 1px solid rgba(201, 155, 74, .10)
}
.stick svg { width: 100%; height: auto; max-height: 78px }
.stick img.shot { width: 100%; height: 150px; object-fit: contain; display: block }
.mcard img.shot { width: 100%; height: 170px; object-fit: contain; display: block; margin-bottom: 14px; border-radius: 2px; background: #F4EEE1; padding: 10px }
.card-body { padding: 20px 20px 22px; display: flex; flex-direction: column; flex: 1 }
.card h3 { font-family: var(--serif); font-weight: 400; font-size: 19.5px; margin: 0 0 4px; line-height: 1.2 }
.origin { font-size: 12.5px; color: #6F7E76; margin: 0 0 10px }
.blurb { font-size: 13px; color: var(--smoke); line-height: 1.6; margin: 0 0 16px }
.spec { display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: 12.5px; color: var(--smoke); padding: 7px 0; border-top: 1px solid rgba(147, 161, 153, .12) }
.dots { display: flex; gap: 4px }
.dot { width: 7px; height: 7px; border: 1px solid var(--brass); border-radius: 50% }
.dot.on { background: var(--brass) }
.card-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 18px }
.price { font-family: var(--serif); font-size: 21px; color: var(--parchment) }
.price small { font-size: 11.5px; color: #6F7E76; font-family: var(--sans); display: block; margin-top: 1px }
.added { color: var(--brass) !important; border-color: var(--brass) !important }
.add-cart-btn:hover{background:var(--brass);color:#12180F;}

/* ---------- merch cards ---------- */
.mgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 22px }
.mcard { background: var(--felt); border: 1px solid rgba(201, 155, 74, .12); padding: 24px 20px; display: flex; flex-direction: column; border-radius: 2px }
.mcard .icon { height: 74px; display: grid; place-items: center; margin-bottom: 14px }
.mcard .icon svg { width: 60px; height: 60px; stroke: var(--brass); fill: none; stroke-width: 1.2; stroke-linecap: round; stroke-linejoin: round; opacity: .85 }
.mcard h3 { font-family: var(--serif); font-weight: 400; font-size: 17px; margin: 0 0 5px }
.mcard p { font-size: 13px; color: var(--smoke); margin: 0 0 18px; flex: 1; line-height: 1.6 }

/* ---------- service section ---------- */
.service { background: var(--felt); border-top: 1px solid rgba(201, 155, 74, .14); border-bottom: 1px solid rgba(201, 155, 74, .14) }
.service-inner { display: grid; grid-template-columns: 1fr 1.15fr; gap: 56px; align-items: start }
.tier { display: grid; grid-template-columns: 1fr auto; gap: 18px; align-items: baseline; padding: 22px 0; border-bottom: 1px solid rgba(147, 161, 153, .13) }
.tier:first-child { border-top: 1px solid rgba(147, 161, 153, .13) }
.tier h4 { margin: 0 0 5px; font-family: var(--serif); font-weight: 400; font-size: 19px }
.tier p { margin: 0; font-size: 13.5px; color: var(--smoke); max-width: 44ch }
.tier a { font-size: 12.5px; color: var(--brass); text-decoration: none; white-space: nowrap; }
.tier a:hover { color: #DDB262 }
.note { border-left: 2px solid var(--brass); padding: 4px 0 4px 20px; margin: 28px 0 0; color: var(--smoke); font-size: 14px; line-height: 1.75 }

/* ---------- contact ---------- */
.contact-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 56px }
.cline { padding: 13px 0; border-bottom: 1px solid rgba(147, 161, 153, .13); font-size: 14.5px; display: flex; justify-content: space-between; gap: 20px }
.cline span:last-child { color: var(--smoke); text-align: right }
.cline a { text-decoration: none; color: var(--smoke) }
.cline a:hover { color: var(--brass) }
.social { display: flex; gap: 12px; margin-top: 24px }
.social a { border: 1px solid var(--brass-dim); padding: 9px 18px; font-size: 12.5px; text-decoration: none; color: var(--smoke); border-radius: 2px }
.social a:hover { border-color: var(--brass); color: var(--brass) }

/* ---------- forms, reviews ---------- */
.fgridx { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: start }
.ofield { display: block; margin-bottom: 16px; font-size: 12.5px; letter-spacing: .02em; color: var(--smoke) }
.ofield input, .ofield textarea, .ofield select {
    display: block; width: 100%; margin-top: 6px; background: #0D1310; border: 1px solid rgba(147, 161, 153, .3);
    color: var(--parchment); padding: 12px 13px; border-radius: 2px; font: inherit; font-size: 15px
}
.ofield textarea { resize: vertical; line-height: 1.7 }
.ofield input:focus, .ofield textarea:focus { outline: none; border-color: var(--brass) }
.grid2f { display: grid; grid-template-columns: 1fr 1fr; gap: 0 18px }
.agree { display: flex; gap: 11px; align-items: flex-start; font-size: 13px; color: var(--smoke); margin: 6px 0 20px; line-height: 1.6 }
.agree input { width: auto; margin: 3px 0 0 }
.hp { position: absolute; left: -9999px }
.formnote { font-size: 13.5px; line-height: 1.7; margin: 14px 0 0 }
.formnote.good { color: var(--brass) }
.formnote.bad { color: #C97A6B }
.rgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; margin-top: 34px }
@media (max-width: 900px) { .rgrid { grid-template-columns: 1fr; } }
.rcard { background: var(--surface); border: 1px solid rgba(201, 155, 74, .14); border-radius: 2px; padding: 24px }
.rcard .stars { color: var(--brass); letter-spacing: 3px; font-size: 13px }
.rcard p { font-size: 14px; color: var(--smoke); line-height: 1.8; margin: 12px 0 14px }
.rcard cite { font-style: normal; font-size: 12.5px; color: #6F7E76 }
.rloading { color: var(--smoke); font-size: 14px; padding: 20px 0 }

/* ---------- product popup ---------- */
.open { cursor: zoom-in }
.mcard .open, .card-body .open { cursor: pointer }
#pmodal { position: fixed; inset: 0; z-index: 120; display: none; place-items: center; padding: 24px; background: rgba(6, 9, 7, .82); overflow-y: auto }
#pmodal.open { display: grid }
.pcard { width: min(880px, 100%); background: var(--felt); border: 1px solid var(--brass-dim); border-radius: 2px; display: grid; grid-template-columns: 1fr 1fr; position: relative }
.pclose { position: absolute; top: 12px; right: 14px; z-index: 2; background: rgba(15, 20, 17, .7); border: 1px solid rgba(147, 161, 153, .3); color: var(--parchment); font-size: 22px; line-height: 1; padding: 4px 11px; border-radius: 2px }
.pclose:hover { border-color: var(--brass); color: var(--brass) }
.pshot { display: grid; place-items: center; padding: 28px; background: radial-gradient(ellipse at 60% 40%, rgba(201, 155, 74, .10), transparent 62%), linear-gradient(180deg, #121A15, #0D1310); border-right: 1px solid rgba(201, 155, 74, .14) }
.pshot img { width: 100%; aspect-ratio: 4 / 3; max-height: 420px; object-fit: contain; display: block }
.pshot.light img { background: #FFFFFF; padding: 14px; border-radius: 2px }
.pshot svg { width: 100%; height: auto }
.pbody { padding: 36px 34px }
.pbody h2 { font-family: var(--serif); font-weight: 400; font-size: 29px; line-height: 1.15; margin: 0 0 6px }
.pbody .origin { font-size: 13px; color: #6F7E76; margin: 0 0 16px }
.pbody .blurb { font-size: 15px; color: var(--smoke); line-height: 1.8; margin: 0 0 22px }
.pbody .spec { font-size: 13.5px; padding: 9px 0 }
.pprice { font-family: var(--serif); font-size: 31px; color: var(--parchment); margin: 24px 0 4px }
.pprice small { display: block; font-family: var(--sans); font-size: 12.5px; color: #6F7E76; margin-top: 3px }
.pbody .btn { width: 100%; margin-top: 20px; padding: 14px 26px }
.pnote { font-size: 11.5px; color: #61706A; line-height: 1.6; margin: 14px 0 0; text-align: center }

/* ---------- cart drawer / checkout modal ---------- */
.scrim { position: fixed; inset: 0; background: rgba(6, 9, 7, .72); opacity: 0; visibility: hidden; transition: .25s; z-index: 90 }
.scrim.open { opacity: 1; visibility: visible }
#drawer {
    position: fixed; top: 0; right: 0; height: 100%; width: min(420px, 100%); z-index: 100;
    background: var(--felt); border-left: 1px solid var(--brass-dim);
    transform: translateX(100%); transition: transform .3s cubic-bezier(.4, 0, .2, 1);
    display: flex; flex-direction: column
}
#drawer.open { transform: translateX(0) }
.drawer-top { display: flex; align-items: center; justify-content: space-between; padding: 22px 24px; border-bottom: 1px solid rgba(147, 161, 153, .14) }
.drawer-top h2 { font-family: var(--serif); font-weight: 400; font-size: 21px; margin: 0 }
.x { background: none; border: none; color: var(--smoke); font-size: 24px; line-height: 1; padding: 4px 8px }
.x:hover { color: var(--parchment) }
#lines { flex: 1; overflow-y: auto; padding: 8px 24px }
.line { display: grid; grid-template-columns: 56px 1fr auto; gap: 12px; align-items: start; padding: 18px 0; border-bottom: 1px solid rgba(147, 161, 153, .11) }
.line-img { width: 56px; height: 56px; object-fit: contain; background: #F4EEE1; border-radius: 2px; padding: 5px; }
.line-img-blank { background: var(--surface); }
.line h4 { margin: 0 0 3px; font-family: var(--serif); font-weight: 400; font-size: 16px }
.line small { color: #6F7E76; font-size: 12px }
.qty { display: flex; align-items: center; gap: 10px; margin-top: 10px }
.qty button { width: 25px; height: 25px; background: none; border: 1px solid rgba(147, 161, 153, .3); color: var(--parchment); border-radius: 2px; font-size: 14px; line-height: 1 }
.qty button:hover { border-color: var(--brass); color: var(--brass) }
.qty span { font-size: 13.5px; min-width: 16px; text-align: center }
.line .lp { font-family: var(--serif); font-size: 16px }
.empty { text-align: center; color: var(--smoke); padding: 70px 20px; font-size: 14px; line-height: 1.8 }
.drawer-foot { padding: 22px 24px; border-top: 1px solid rgba(147, 161, 153, .14) }
.row { display: flex; justify-content: space-between; font-size: 14px; margin-bottom: 9px; color: var(--smoke) }
.row.total { color: var(--parchment); font-size: 17px; font-family: var(--serif); margin: 14px 0 18px }
.drawer-foot .btn { width: 100% }
.ship-note { font-size: 11.5px; color: #61706A; margin: 14px 0 0; line-height: 1.6; text-align: center }
#checkout { position: fixed; inset: 0; z-index: 110; display: none; place-items: center; padding: 24px; background: rgba(6, 9, 7, .8) }
#checkout.open { display: grid }
.modal { width: min(500px, 100%); background: var(--felt); border: 1px solid var(--brass-dim); padding: 34px }
.modal h2 { font-family: var(--serif); font-weight: 400; font-size: 23px; margin: 0 0 14px }
.modal p { color: var(--smoke); font-size: 14.5px; line-height: 1.8; margin: 0 0 22px }
.modal .btn { width: 100%; margin-bottom: 10px }

/* ---------- variant picker (used by assets/variant-picker.js) ---------- */
.variant-picker { display: flex; flex-wrap: nowrap; overflow-x: auto; gap: 8px; margin: 10px 0; padding-bottom: 4px; }
.vp-swatch { flex-shrink: 0; width: 40px; height: 40px; border-radius: 3px; border: 2px solid rgba(147, 161, 153, .3); background-size: cover; background-position: center; cursor: pointer; padding: 0; overflow: hidden; transition: border-color .15s ease; }
.vp-swatch.vp-active { border-color: #C99B4A; }
.vp-swatch:hover { border-color: rgba(201, 155, 74, .6); }
.vp-size { flex-shrink: 0; border: 1px solid rgba(147, 161, 153, .4); background: none; color: #EDE4D3; font-size: 12px; padding: 8px 14px; border-radius: 2px; cursor: pointer; transition: .15s; }
.vp-size.vp-active { border-color: #C99B4A; background: #C99B4A; color: #0F1411; }
.vp-size:hover { border-color: #C99B4A; }

@media (max-width: 900px) {
    .hero-inner, .service-inner, .contact-inner, .fgridx { grid-template-columns: 1fr; gap: 40px }
    .grid2f { grid-template-columns: 1fr }
    .hero-inner { padding: 52px 0 62px }
    .hero-art { order: -1; max-width: 400px }
    .pcard { grid-template-columns: 1fr }
    .pshot { border-right: none; border-bottom: 1px solid rgba(201, 155, 74, .14); padding: 20px }
    .pbody { padding: 26px 22px }
    section { padding: 62px 0 }
}

@media (prefers-reduced-motion: reduce) {
    * { animation: none !important; transition: none !important }
    html { scroll-behavior: auto }
}


/* ---------- membership page ---------- */
.masthead{padding:70px 0 20px;border-bottom:1px solid rgba(201,155,74,.14)}
.masthead .eyebrow{font-size:12px;letter-spacing:.1em;color:var(--brass);margin:0 0 12px}
.masthead h1{font-family:var(--serif);font-weight:400;font-size:clamp(30px,4vw,46px);margin:0 0 14px}
.masthead h1 em{font-style:italic}
.masthead .lede{color:var(--smoke);font-size:15.5px;max-width:52ch;margin:0}
.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;padding:56px 0}
.plan{background:var(--surface);border:1px solid rgba(201,155,74,.14);border-radius:2px;padding:28px 24px;display:flex;flex-direction:column}
.plan.featured{border-color:var(--brass);position:relative}
.plan h2{font-family:var(--serif);font-weight:400;font-size:22px;margin:0 0 4px}
.plan .sub{color:var(--smoke);font-size:13px;margin:0 0 16px}
.plan .amount{margin:0 0 16px}
.plan .amount b{font-family:var(--serif);font-size:32px;font-weight:400}
.plan .amount span{color:var(--smoke);font-size:13px;margin-left:6px}
.plan .desc{color:var(--smoke);font-size:14px;line-height:1.7;margin:0 0 18px}
.plan .feats{list-style:none;margin:0 0 22px;padding:0;flex:1}
.plan .feats li{padding:9px 0;border-top:1px solid rgba(147,161,153,.12);font-size:13.5px;color:var(--parchment)}
.plan .feats li.off{color:var(--brass)}
.plan .btn{text-align:center}
.locker{padding:56px 0;border-top:1px solid rgba(201,155,74,.14)}
.locker h2{font-family:var(--serif);font-weight:400;font-size:clamp(24px,3vw,32px);margin:0 0 14px}
.locker>.wrap>p{color:var(--smoke);font-size:14.5px;line-height:1.8;max-width:52ch;margin:0 0 12px}
.locker-inner{margin-top:20px}
.lockcard{background:var(--felt);border:1px solid rgba(201,155,74,.14);border-radius:2px;padding:24px;max-width:360px}
.lockcard h3{font-family:var(--serif);font-weight:400;font-size:18px;margin:0 0 4px}
.lockcard .tagline{color:var(--smoke);font-size:12.5px;margin:0 0 12px}
.lockcard .amount b{font-family:var(--serif);font-size:26px;font-weight:400}
.lockcard .amount span{color:var(--smoke);font-size:13px;margin-left:6px}
.lockcard .btn{margin-top:16px;display:inline-block}
.fine{font-size:11.5px;color:#61706A;line-height:1.7;margin-top:10px}
.sec{padding:56px 0;border-top:1px solid rgba(201,155,74,.14)}
.sec h2{font-family:var(--serif);font-weight:400;font-size:clamp(22px,2.8vw,28px);margin:0 0 14px}
.cta-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:20px}


/* ---------- contact modal (shared, injected by header.js) ---------- */
#contactModal{position:fixed;inset:0;z-index:200;display:none;place-items:center;padding:24px;background:rgba(6,9,7,.82)}
#contactModal.open{display:grid}
.contact-modal-card{width:min(460px,100%);background:var(--felt);border:1px solid var(--brass-dim);border-radius:2px;padding:34px;position:relative}
.contact-modal-close{position:absolute;top:14px;right:16px;background:none;border:none;color:var(--smoke);font-size:22px;line-height:1;cursor:pointer;padding:4px}
.contact-modal-close:hover{color:var(--parchment)}
.contact-modal-card h2{font-family:var(--serif);font-weight:400;font-size:24px;margin:0 0 10px}
.contact-modal-card>p{color:var(--smoke);font-size:14px;line-height:1.7;margin:0 0 22px}
.contact-modal-card .btn{width:100%;margin-top:4px}

.book-modal-card{width:min(560px,100%);max-height:88vh;overflow-y:auto}

#bookModal{position:fixed;inset:0;z-index:200;display:none;place-items:center;padding:24px;background:rgba(6,9,7,.82)}
#bookModal.open{display:grid}

.mobile-nav-close{position:absolute;top:22px;right:22px;background:none;border:none;color:var(--parchment);font-size:30px;line-height:1;cursor:pointer;padding:4px 8px}
.mobile-nav-close:hover{color:var(--brass)}

#reviewModal{position:fixed;inset:0;z-index:200;display:none;place-items:center;padding:24px;background:rgba(6,9,7,.82)}
#reviewModal.open{display:grid}

.review-emoji-row{display:flex;flex-wrap:wrap;gap:6px;margin:-6px 0 12px}
.review-emoji-btn{background:var(--surface);border:1px solid rgba(201,155,74,.18);border-radius:6px;font-size:17px;line-height:1;padding:6px 9px;cursor:pointer;transition:border-color .15s ease,background .15s ease}
.review-emoji-btn:hover{border-color:var(--brass);background:rgba(201,155,74,.1)}

.legal-row{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.staff-login-link{color:var(--smoke);font-size:12px;text-decoration:underline;white-space:nowrap}
.staff-login-link:hover{color:var(--brass)}

#staffLoginModal{position:fixed;inset:0;z-index:200;display:none;place-items:center;padding:24px;background:rgba(6,9,7,.82)}
#staffLoginModal.open{display:grid}
#staffLoginModal .amark{font-family:var(--serif);font-size:20px;letter-spacing:.06em;margin:0 0 18px;text-align:center}
#staffLoginModal .amark span{color:var(--brass)}
#staffLoginModal h2{font-family:var(--serif);font-weight:400;font-size:20px;margin:0 0 8px}
.staff-login-copy{color:var(--smoke);font-size:13.5px;line-height:1.6;margin:0 0 18px}
.staff-login-note{font-size:13px;color:var(--smoke);margin-top:10px;min-height:1em}
.staff-login-note:not(:empty){color:var(--brass)}
.fp-link-oasis{background:none;border:none;color:var(--smoke);font-size:13px;text-decoration:underline;cursor:pointer;display:block;margin:16px auto 0;padding:4px;text-align:center;width:100%}
.fp-link-oasis:hover{color:var(--brass)}

.order-warning{border:1px solid var(--brass-dim);border-left:3px solid var(--brass);padding:16px 20px;margin-top:20px;background:rgba(201,155,74,.05)}
.order-warning b{display:block;color:var(--brass);font-size:12px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:8px}
.order-warning p{color:var(--smoke);font-size:12.5px;line-height:1.8;margin:0}

.gold-highlight{color:var(--brass);font-weight:600}

#reviewDetailModal{position:fixed;inset:0;z-index:200;display:none;place-items:center;padding:24px;background:rgba(6,9,7,.82)}
#reviewDetailModal.open{display:grid}
.rcard-photo{width:44px;height:44px;border-radius:50%;object-fit:cover;margin-bottom:12px;border:1px solid var(--brass-dim)}
.rcard p.rbody{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.read-more-btn{background:none;border:none;color:var(--brass);font-size:12.5px;text-decoration:underline;cursor:pointer;padding:0;margin:0 0 12px;display:block}
.read-more-btn:hover{color:var(--parchment)}
.review-photo-preview img{width:56px;height:56px;border-radius:50%;object-fit:cover;margin:8px 0;border:1px solid var(--brass-dim)}

.service-photo{display:block;width:100%;max-width:380px;margin-top:28px;border-radius:3px;border:1px solid var(--brass-dim)}

a.cart-btn{text-decoration:none}

#reviews-section{scroll-margin-top:200px}

#humidor{scroll-margin-top:200px}

.hero-social{display:flex;justify-content:flex-start;gap:16px;margin-top:22px}
.hero-social a{color:var(--smoke);display:flex;transition:color .15s ease}
.hero-social a:hover{color:var(--parchment)}

.strip-social{display:flex;gap:14px;position:absolute;left:50%;transform:translateX(-50%)}
.topstrip .wrap{position:relative}
.strip-social a{color:#0F1411;display:flex;opacity:.75;transition:opacity .15s ease}
.strip-social a:hover{opacity:1}

#top{scroll-margin-top:200px}

.grid-home{grid-template-columns:repeat(4,1fr)}
.mgrid-home{grid-template-columns:repeat(3,1fr)}
@media (max-width:900px){.grid-home{grid-template-columns:repeat(2,1fr)}.mgrid-home{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.grid-home{grid-template-columns:1fr}.mgrid-home{grid-template-columns:1fr}}

.merch-page-section .mcard{background:#FFFFFF;border-color:rgba(15,20,17,.14)}
.merch-page-section .origin{color:#6F5B3E}
.merch-page-section .blurb{color:#5C5548}

.sec-head h1{font-family:var(--serif);font-weight:400;font-size:clamp(28px,3.4vw,40px);margin:0;letter-spacing:-.01em}

.hero-compact .hero-inner{padding:60px 0 20px}
.hero-compact .hero-inner p:last-child{margin-bottom:0}
.humidor-page-section{padding-top:16px}

.hero-divider{border:none;border-top:1px solid rgba(201,155,74,.25);margin:18px 0}

.merch-tray{
  background:
    repeating-linear-gradient(115deg, rgba(255,255,255,.16) 0px, rgba(255,255,255,.16) 1px, rgba(0,0,0,.1) 1px, rgba(0,0,0,.1) 2px, transparent 2px, transparent 5px),
    linear-gradient(135deg, #b08e4d 0%, #8D6D34 15%, #6b5024 40%, #ad8c4a 55%, #6b5024 75%, #8D6D34 90%, #ab8a49 100%);
  border-radius:6px;padding:36px
}
@media (max-width:560px){.merch-tray{padding:20px}}

.merch-page-section .mcard h3, .merch-page-section .price{color:#0F1411}

.mcard.has-options .open{cursor:pointer;position:relative}
.mcard.has-options .open::after{content:"Select options";position:absolute;left:0;right:0;bottom:100%;margin-bottom:8px;text-align:center;font-size:12px;letter-spacing:.03em;color:var(--brass);opacity:0;transform:translateY(4px);transition:opacity .15s ease,transform .15s ease;pointer-events:none}
.mcard.has-options .open:hover::after{opacity:1;transform:translateY(0)}
.mcard.has-options .open:hover .shot{box-shadow:0 0 0 1px var(--brass) inset}
#pvariants{margin:14px 0}
.pv-label{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--smoke);margin-bottom:8px}
.pv-select{width:100%;margin-top:10px;padding:9px 10px;background:var(--ink);color:var(--parchment);border:1px solid rgba(201,155,74,.3);border-radius:2px;font-family:var(--sans);font-size:14px}

.merch-page-section .mcard img.shot{background:#FFFFFF}



#service{scroll-margin-top:180px}

.news-filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:28px}
.nf-pill{background:transparent;border:1px solid rgba(201,155,74,.35);color:var(--smoke);padding:9px 18px;border-radius:30px;
  font-family:var(--sans);font-size:13px;cursor:pointer;transition:all .15s ease}
.nf-pill:hover{border-color:var(--brass);color:var(--parchment)}
.nf-pill.active{background:var(--brass);border-color:var(--brass);color:var(--ink);font-weight:700}
.news-lead{display:grid;grid-template-columns:1.1fr 1fr;gap:0;background:var(--surface);border:1px solid var(--brass-dim);
  border-radius:4px;overflow:hidden;margin-bottom:56px}
.nl-fig{min-height:320px;background:var(--felt)}
.nl-fig-date{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--brass)}
.nl-fig-date b{font-family:var(--serif);font-size:42px;line-height:1}
.nl-fig-date span{font-size:12px;letter-spacing:.08em;margin-top:6px}
.nl-body{padding:40px;display:flex;flex-direction:column;justify-content:center}
.cat-pill{display:inline-block;background:var(--brass-dim);color:var(--brass);font-size:11px;font-weight:700;letter-spacing:.06em;
  padding:5px 12px;border-radius:20px;margin-bottom:14px;align-self:flex-start}
.nl-body h2{font-family:var(--serif);font-size:clamp(24px,2.6vw,32px);margin:0 0 14px;line-height:1.2;color:var(--parchment)}
.nl-body p{color:var(--smoke);line-height:1.7;margin:0 0 16px}
.n-meta{color:var(--smoke);font-size:13px;margin-bottom:14px}
.read-link{color:var(--brass);font-size:14px;font-weight:700;text-decoration:none}
.read-link:hover{text-decoration:underline}
.more-news-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:28px}
.more-news-head h2{font-family:var(--serif);font-size:26px;margin:0;color:var(--parchment)}
.n-count{color:var(--smoke);font-size:13px}
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.news-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--brass-dim);border-radius:4px;overflow:hidden;padding-bottom:22px}
.nc-fig{height:180px;background:var(--felt)}
.nc-fig-date{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--brass)}
.nc-fig-date b{font-family:var(--serif);font-size:30px;line-height:1}
.nc-fig-date span{font-size:11px;letter-spacing:.06em;margin-top:4px}
.news-card .cat-pill{margin:18px 22px 10px}
.news-card h3{font-family:var(--serif);font-size:19px;margin:0 22px 10px;line-height:1.3;color:var(--parchment)}
.news-card p{color:var(--smoke);font-size:14px;line-height:1.6;margin:0 22px 14px;flex-grow:1}
.news-card .n-meta{margin:0 22px 10px}
.news-card .read-link{margin:0 22px}
@media (max-width:900px){
  .news-lead{grid-template-columns:1fr}
  .nl-fig{min-height:220px}
  .news-grid{grid-template-columns:1fr}
}

.post-rows{display:flex;flex-direction:column;gap:14px}
.post-row{display:flex;align-items:center;gap:20px;background:var(--surface);border:1px solid var(--brass-dim);
  border-radius:6px;padding:16px 20px}
.pr-thumb{width:80px;height:60px;border-radius:4px;overflow:hidden;flex-shrink:0;background:var(--felt)}
.pr-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.pr-thumb-empty{background:linear-gradient(135deg,var(--felt),var(--ink))}
.pr-body{flex-grow:1;min-width:0}
.pr-body h3{font-family:var(--serif);font-size:17px;margin:0 0 8px;color:var(--parchment);font-weight:400}
.pr-tags{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pr-cat{background:rgba(147,161,153,.15);color:var(--smoke);font-size:11px;font-weight:700;letter-spacing:.04em;
  padding:4px 10px;border-radius:20px}
.pr-featured{background:var(--brass-dim);color:var(--brass);font-size:11px;font-weight:700;letter-spacing:.04em;
  padding:4px 10px;border-radius:20px}
.pr-date{color:var(--smoke);font-size:13px}
.pr-actions{display:flex;gap:8px;flex-shrink:0}
.pr-actions form{display:contents}
.pr-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:6px;
  background:var(--ink);border:1px solid var(--brass-dim);color:var(--parchment);font-size:15px;text-decoration:none;
  cursor:pointer}
.pr-btn:hover{border-color:var(--brass);color:var(--brass)}
.pr-btn-active{background:var(--brass);border-color:var(--brass);color:var(--ink)}
.pr-btn-active:hover{color:var(--ink)}
@media (max-width:700px){
  .post-row{flex-wrap:wrap}
  .pr-actions{width:100%;justify-content:flex-start}
}

.article-modal{position:fixed;inset:0;z-index:320;display:none;place-items:center;padding:24px;overflow-y:auto}
.article-modal.open{display:grid}
#articleScrim{display:none}
#articleScrim.open{display:block;position:fixed;inset:0;z-index:310;background:rgba(6,9,7,.82)}
.am-card{position:relative;width:min(720px,100%);max-height:86vh;overflow-y:auto;background:var(--felt);
  border:1px solid var(--brass-dim);border-radius:4px;padding:48px}
.am-close{position:absolute;top:14px;right:16px;background:rgba(15,20,17,.7);border:1px solid rgba(147,161,153,.3);
  color:var(--parchment);font-size:22px;line-height:1;padding:4px 11px;border-radius:2px;cursor:pointer}
.am-close:hover{border-color:var(--brass);color:var(--brass)}
.am-cat{color:var(--brass);font-size:12px;font-weight:700;letter-spacing:.06em;margin-bottom:10px}
.am-content h2{font-family:var(--serif);font-size:clamp(24px,3vw,34px);margin:0 0 10px;color:var(--parchment);line-height:1.2}
.am-meta{color:var(--smoke);font-size:13px;margin-bottom:22px}
.am-img{width:100%;border-radius:4px;margin-bottom:24px;display:block}
.am-body{color:var(--parchment);line-height:1.8;font-size:15.5px}
.am-body p{margin:0 0 16px}
