:root{--ink:#080808;--paper:#fff8ee;--orange:#ff5a1f;--muted:#beb8af;--line:#393631;--peach:#ffc798;font-family:var(--font-body);color:var(--paper);background:var(--ink);font-synthesis:none}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #4e9cf6;outline-offset:5px}button:disabled{cursor:not-allowed}img{max-width:100%;display:block;height:auto}p{font-size:18px;line-height:1.6;max-width:60ch}h1,h2,h3,p{margin-top:0}h1,h2,.display{font-family:var(--font-display);font-weight:var(--font-weight-display);letter-spacing:var(--tracking-heading);line-height:var(--leading-heading)}h2{font-size:clamp(44px,6vw,82px)}h3{font-size:24px;line-height:1.2}small{font-size:14px;line-height:1.5}.wrap{max-width:1440px;margin:auto;padding:0 5vw}.preview{padding:9px 16px;text-align:center;background:var(--peach);color:var(--ink);font-size:13px;font-weight:700}.header{min-height:100px;display:flex;align-items:center;gap:32px}.logo{width:200px;flex-shrink:0;display:block}.nav{display:flex;gap:30px;margin-left:auto;align-items:center}.nav a{min-height:44px;display:flex;align-items:center;font-size:15px}.nav a[aria-current=page]{color:var(--peach)}.language{background:none;border:1px solid var(--line);color:var(--paper);min-height:44px;padding:0 12px;white-space:nowrap}.menu-toggle{display:none}.button{display:inline-flex;min-height:54px;align-items:center;justify-content:center;padding:16px 24px;background:var(--orange);color:var(--ink);font-weight:700;border:0;border-radius:3px}.button:hover{background:#ff7848}.button.secondary{background:transparent;color:inherit;border:1px solid currentColor}.text-link{text-decoration:underline;text-underline-offset:5px;font-weight:700;display:inline-block;padding:12px 0}.skip{position:fixed;left:16px;top:-100px;background:white;color:black;z-index:100;padding:16px}.skip:focus{top:12px}.home-hero{position:relative;display:grid;grid-template-columns:1.04fr 1fr;min-height:610px;align-items:center;padding-top:40px;padding-bottom:65px;overflow:hidden}.home-copy{position:relative;z-index:2;min-width:0}.home-copy h1{font-size:clamp(52px,6.3vw,91px);margin-bottom:25px}.home-copy p{max-width:380px;color:var(--muted);margin-bottom:28px}.can-stage{align-self:stretch;position:relative;display:grid;place-items:center;min-width:0;background:var(--peach);border-radius:50% 50% 40% 40%;transform:rotate(7deg);margin:12px 5px 18px 30px;max-height:540px;isolation:isolate;overflow:hidden}.can-stage img{position:absolute;width:95%;height:95%;object-fit:contain;mix-blend-mode:multiply;transform:rotate(-20deg);left:-20%;top:4%}.can-stage img+img{transform:rotate(8deg);left:25%;top:0}.can-caption{position:absolute;bottom:0;right:8%;color:var(--ink);font-size:13px;transform:rotate(-7deg);font-weight:700;z-index:2}.sale-strip{display:flex;align-items:center;justify-content:space-between;gap:25px;background:var(--orange);color:var(--ink);padding:27px 5vw}.sale-strip p{margin:0;font-size:21px;font-weight:700}.sale-strip span{font-weight:400}.sale-strip .text-link{white-space:nowrap}.split{display:grid;grid-template-columns:1fr 1fr;gap:9vw;padding-top:90px;padding-bottom:90px}.split p{color:var(--muted)}.split h2{max-width:600px}.festival-teaser{position:relative;isolation:isolate;min-height:500px;display:flex;align-items:flex-end;padding-top:130px;padding-bottom:55px;overflow:hidden}.festival-teaser>img,.festival-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}.festival-teaser:after,.festival-hero:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.85),rgba(0,0,0,.02) 100%);z-index:-1}.festival-teaser h2{font-size:clamp(44px,9vw,125px);margin-bottom:16px}.festival-teaser .caption{position:absolute;top:20px;right:5vw;font-size:12px;background:rgba(0,0,0,.6);padding:8px}.festival-hero{position:relative;isolation:isolate;min-height:660px;display:flex;align-items:flex-end;padding-bottom:54px}.festival-hero h1{font-size:clamp(44px,10.8vw,155px);margin-bottom:24px}.festival-hero p{font-size:23px;max-width:520px}.festival-hero .caption{position:absolute;right:5vw;top:22px;font-size:12px;background:rgba(0,0,0,.55);padding:8px}.hero-actions{display:flex;gap:15px;align-items:center;flex-wrap:wrap}.year{display:block;color:var(--peach);font-size:.45em;letter-spacing:0;margin-top:15px}.faq{padding-top:70px;padding-bottom:85px;background:var(--paper);color:var(--ink)}.faq-inner{display:grid;grid-template-columns:1fr 1.3fr;gap:8vw}.faq h2{font-size:54px}.faq details{border-bottom:1px solid #b5afa6;padding:18px 0}.faq summary{font-weight:700;font-size:20px;cursor:pointer;min-height:44px;align-content:center}.faq details p{margin:16px 0}.footer{padding-top:55px;padding-bottom:30px}.footer-top{display:flex;justify-content:space-between;gap:40px}.footer .logo{width:180px}.footer p{font-size:15px;color:var(--muted)}.footer-links{display:flex;gap:30px;align-items:flex-start}.footer-links a{padding:12px 0}.footer-bottom{border-top:1px solid var(--line);padding-top:22px;margin-top:35px;display:flex;justify-content:space-between;gap:20px;font-size:13px;color:var(--muted)}.ticket-main{background:var(--paper);color:var(--ink);padding-top:60px;padding-bottom:80px;min-height:70vh}.ticket-top{max-width:760px;margin-bottom:38px}.ticket-top h1{font-size:clamp(42px,6vw,86px);margin-bottom:22px}.ticket-top p{color:#4f4c46}.ticket-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);gap:5vw}.ticket-form{min-width:0}.ticket-form fieldset{border:0;margin:0 0 36px;padding:0;min-width:0}.ticket-form legend{font-size:23px;font-weight:700;margin-bottom:15px}.pending{padding:18px;background:#eee6db;border-radius:5px;margin:0;font-size:16px}.packages{display:grid;gap:12px}.package{display:flex;align-items:center;gap:12px;padding:18px;border:1px solid #888077;border-radius:5px;cursor:pointer;min-height:75px}.package:has(input:checked){border:2px solid var(--ink);padding:17px;background:#ffebd9}.package input{width:20px;height:20px;accent-color:var(--ink);flex-shrink:0}.package strong{display:block;font-size:17px}.package small{display:block;margin-top:4px;color:#545049}.quantity{display:flex;align-items:center;gap:0}.quantity button{width:48px;height:48px;background:transparent;border:1px solid #888077;font-size:25px}.quantity output{width:64px;text-align:center;font-size:21px}.quantity button:disabled{opacity:.4}.order-summary{background:#fff;border:1px solid #d2c9be;border-radius:8px;padding:28px;height:fit-content;position:sticky;top:24px}.order-summary h2{font:700 26px Arial,sans-serif;letter-spacing:0;margin-bottom:25px}.summary-row{display:flex;justify-content:space-between;gap:18px;padding:13px 0}.summary-row.total{border-top:1px solid #ccc;margin-top:16px;font-weight:700;font-size:19px}.order-summary .button{width:100%;background:#e9e2d8;color:#61594f;margin-top:22px}.order-summary p{font-size:15px;color:#5e574e;line-height:1.5;margin:17px 0 0}.ticket-note{font-size:14px;color:#5e574e}.plain-hero{padding-top:65px;padding-bottom:55px}.plain-hero h1{font-size:clamp(75px,11vw,155px);margin-bottom:30px}.plain-hero p{color:var(--muted);max-width:600px}.contact-block{padding:30px;border:1px solid var(--line);margin-bottom:60px;max-width:620px}.contact-block p:last-child{margin:0}.barski-word{font-size:clamp(110px,22vw,290px);text-align:center;color:var(--ink);background:var(--orange);padding:80px 20px;overflow:hidden;margin:0;letter-spacing:-.06em}.not-found{padding:80px 5vw}
@media(min-width:1600px){.home-hero{min-height:700px}.can-stage{max-height:600px}}
@media(max-width:850px){.header{min-height:85px;gap:15px;flex-wrap:wrap;padding-top:18px;padding-bottom:18px}.logo{width:160px}.language{margin-left:auto}.menu-toggle{display:block;min-height:44px;background:transparent;color:var(--paper);border:1px solid var(--line);padding:0 13px}.nav{display:none;order:4;width:100%;margin:0;gap:12px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:12px}.nav.open{display:flex}.nav a{padding:0 12px 0 0}.home-hero{min-height:520px}.home-copy h1{font-size:clamp(42px,6.4vw,60px)}.can-stage{max-height:400px;margin-left:0;align-self:center;height:370px}.can-caption{display:none}.ticket-layout{gap:25px;grid-template-columns:1.2fr 1fr}.split{gap:40px}.festival-hero{min-height:560px}.footer-links{gap:20px}}
@media(max-width:600px){.wrap{padding-left:6vw;padding-right:6vw}.header{gap:9px}.logo{width:136px}.language,.menu-toggle{font-size:13px;padding:0 10px}.preview{font-size:11px}.home-hero{display:flex;flex-direction:column;align-items:stretch;padding-top:32px;padding-bottom:20px;overflow:hidden}.home-copy h1{font-size:clamp(42px,13.6vw,78px);margin-bottom:18px}.home-copy p{font-size:16px;max-width:300px}.can-stage{width:85%;height:310px;margin:40px auto 25px;align-self:center}.can-stage img{width:95%}.sale-strip{align-items:flex-start;gap:12px;flex-direction:column;padding:24px 6vw}.sale-strip p{font-size:18px}.sale-strip span{display:block;font-size:15px;margin-top:6px}.split{grid-template-columns:1fr;padding-top:55px;padding-bottom:55px;gap:35px}.split h2{font-size:clamp(34px,10.2vw,48px)}.split p{font-size:16px}.festival-teaser{min-height:410px}.festival-teaser h2{font-size:clamp(32px,11.2vw,60px)}.festival-hero{min-height:560px;padding-bottom:32px}.festival-hero>img{object-position:53% center}.festival-hero h1{font-size:clamp(32px,11.3vw,65px)}.festival-hero p{font-size:18px}.hero-actions{gap:12px;align-items:stretch}.hero-actions .button{width:100%}.faq{padding-top:50px;padding-bottom:50px}.faq-inner{grid-template-columns:1fr;gap:10px}.faq h2{font-size:45px}.faq summary{font-size:17px}.faq details p{font-size:16px}.footer-top{flex-direction:column;gap:20px}.footer-links{flex-wrap:wrap;gap:20px}.footer-bottom{flex-direction:column;gap:12px}.ticket-main{padding-top:38px;padding-bottom:45px}.ticket-layout{grid-template-columns:1fr;gap:15px}.ticket-top h1{font-size:clamp(32px,11vw,60px)}.ticket-top p{font-size:16px}.order-summary{position:static;padding:23px}.plain-hero{padding-top:35px}.plain-hero p{font-size:17px}.contact-block{padding:22px}.barski-word{padding:65px 12px}}
@media(prefers-reduced-motion:no-preference){.button{transition:background var(--motion-fast) var(--ease-standard)}.can-stage{animation:arrive .6s ease-out both}@keyframes arrive{from{opacity:0;transform:translateY(12px) rotate(10deg)}to{opacity:1;transform:translateY(0) rotate(7deg)}}}
/* Long brand names retain their words at narrow widths and fallback fonts. */
.contact-block h2{font-size:clamp(28px,8vw,60px)}
.summary-row>*{min-width:0}

/* Approved local catalog; hidden until a verified release feed exists. */
.latest-beers[hidden]{display:none}.latest-beers{padding-top:80px;padding-bottom:80px}.latest-beers>p{max-width:650px;color:#b9b2aa;line-height:1.6}.latest-beer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:35px}.latest-beer-card{min-width:0;padding:26px;border:1px solid #393631;background:#111113}.latest-beer-card img{height:280px;width:100%;object-fit:contain;margin-bottom:24px}.latest-beer-card h3{font-size:24px;line-height:1.2}.latest-beer-card p{font-size:13px;color:#b9b2aa}.latest-beer-card a{display:inline-flex;min-height:44px;align-items:center;font-size:13px;text-decoration:underline;text-underline-offset:5px}@media(max-width:700px){.latest-beer-grid{grid-template-columns:1fr 1fr;gap:12px}.latest-beer-card{padding:16px}.latest-beer-card img{height:200px}.latest-beer-card h3{font-size:20px}}@media(max-width:400px){.latest-beer-grid{grid-template-columns:1fr}}

.sponsor-strip{border-block:1px solid #4c463e;padding-block:24px;display:flex;justify-content:space-between;gap:24px;font-size:13px;line-height:1.6}.festival-sponsors{padding-block:80px}.sponsor-eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:12px}.festival-sponsors h2{font-size:clamp(38px,6vw,80px);line-height:1;margin:20px 0}.sponsor-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:35px}.sponsor-card,.sponsor-inquiry{padding:35px;border-radius:8px;min-height:200px;display:flex;flex-direction:column;justify-content:center}.sponsor-card{background:#f0ebe2;color:#151513}.sponsor-card h3{font-size:clamp(24px,3vw,40px);margin:20px 0}.sponsor-card small{font-size:12px}.sponsor-inquiry{border:1px solid #6a5d4e}.sponsor-inquiry h3{font-size:26px}.sponsor-inquiry a{align-self:flex-start}.faq li{line-height:1.8}.faq details p{line-height:1.7}@media(max-width:650px){.sponsor-strip{flex-direction:column;gap:12px}.sponsor-grid{grid-template-columns:1fr}.sponsor-card,.sponsor-inquiry{padding:24px}.festival-sponsors{padding-block:50px}}

.barski-page-photo{max-width:100%;height:auto}

.festival-brand-lockup{display:flex;align-items:center;gap:clamp(16px,2.5vw,36px);margin-bottom:24px}.festival-brand-lockup .festival-brand-logo{position:static;width:clamp(48px,6vw,86px);height:auto;flex:none;opacity:1;object-fit:contain}.festival-brand-lockup h1{margin:0;font-size:clamp(32px,6.6vw,94px)}@media(max-width:600px){.festival-brand-lockup{gap:14px}.festival-brand-lockup .festival-brand-logo{width:40px}.festival-brand-lockup h1{font-size:8.7vw}.festival-brand-lockup .year{font-size:12px;letter-spacing:.08em}}
/* Visitor surfaces share the cream, olive and berry palette. */
.plain-hero h1{font-size:clamp(38px,10.5vw,145px);overflow-wrap:anywhere}.header .logo,.footer .logo{min-height:44px;display:flex;align-items:center}.plain-hero .eyebrow{font-size:12px;letter-spacing:.14em;color:#c6b9a7}.contact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:#b9ab96;border:1px solid #b9ab96}.intent-card{padding:32px;background:#efe9dd;color:#242c27;min-width:0}.intent-card h2{font-size:clamp(28px,5vw,52px)}.intent-card p{font-size:17px}.intent-card a{overflow-wrap:anywhere}.contact-form-section{display:grid;grid-template-columns:1fr 1fr;gap:7vw;padding:70px 0}.contact-form-section h2{font-size:clamp(32px,5vw,66px)}.contact-form{display:grid;gap:20px;min-width:0}.contact-form label{display:grid;gap:8px;font-weight:700}.contact-form input,.contact-form select,.contact-form textarea,#faq-filter{width:100%;max-width:100%;min-height:48px;border:1px solid #a89a8b;border-radius:4px;padding:12px;font:inherit;background:#fff8ee;color:#242c27}.contact-form textarea{resize:vertical}.contact-form :focus-visible{outline:3px solid #8ac2ff;outline-offset:4px}.contact-form p,.form-note{font-size:14px}.legal-status{border-left:6px solid #aab076;background:#25271d}.contact-block{max-width:880px}.contact-block li{line-height:1.7;margin-bottom:18px}.plain-hero:has(+.legal-status){border-bottom:1px solid #655a4d;margin-bottom:40px}.faq input{margin-top:10px}.split:has(h2):nth-of-type(even){border-top:1px solid #493d35}.footer a{min-height:44px}.footer .text-link{overflow-wrap:anywhere}
@media(max-width:650px){.contact-grid,.contact-form-section{grid-template-columns:1fr}.intent-card{padding:24px}.contact-form-section{gap:24px;padding:45px 0}.plain-hero h1{font-size:clamp(38px,10.5vw,68px)}}
.festival-sponsors h2{font-size:clamp(28px,6vw,80px);overflow-wrap:anywhere}.contact-page .intent-card a.text-link{color:#242c27}.contact-page .intent-card a.text-link:hover{color:#5b1f33}
/* The supplied animation is the player artwork. Keep its caption and control together. */


/* Natural-ratio photographic rail with an exact 5px gap. */
.festival-memory{background:#101310;color:#f5f0e7;padding:64px 0 0;overflow:clip}.memory-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;max-width:1440px;margin:0 auto 40px;padding:0 5vw}.memory-heading-copy{min-width:0}.memory-eyebrow{font-size:11px;letter-spacing:.12em;line-height:1.6;color:#adae9f;margin:0 0 18px}.memory-heading h2{font-size:clamp(44px,6.4vw,92px);line-height:1.02;letter-spacing:-.05em;margin:0 0 16px}.memory-heading-copy>p:last-child{font-size:16px;margin:0;line-height:1.6;color:#c8c7bb}.memory-carousel{width:100%;min-width:0}.memory-stage{--rail-height:min(68svh,720px);height:var(--rail-height);position:relative;overflow:hidden;isolation:isolate}.memory-track{display:flex;gap:5px;height:100%;width:max-content;will-change:transform}.memory-track.is-moving{transition:transform var(--motion-rail) var(--ease-rail)}.memory-frame{flex:none;display:block;width:calc(var(--rail-height) * var(--photo-ratio));height:100%;padding:0;border:0;background:none;cursor:pointer;overflow:hidden}.memory-frame img{display:block;width:100%;height:100%;object-fit:fill}.memory-frame:focus-visible{outline:4px solid #e8c862;outline-offset:-5px}.memory-resume{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);min-height:48px;padding:12px 20px;border:1px solid #eee8d966;border-radius:30px;background:#101310e8;color:#fff8ee;font:700 13px Arial;white-space:nowrap;cursor:pointer;z-index:2}.memory-resume[hidden]{display:none}.memory-credit{max-width:none;width:100%;font-size:11px;letter-spacing:.03em;color:#a5aa9c;text-align:center;margin:0;padding:28px 5vw 40px}.festival-memory button:focus-visible{outline:3px solid #e8c862;outline-offset:3px}.festival-memory .memory-frame:focus-visible{outline-offset:-5px}.festival-music{--art-height:180px;position:relative;flex:none;display:grid;grid-template-columns:calc(var(--art-height) * 1.5) 44px;align-items:center;gap:16px;padding:0;margin:0;background:none}.music-art{height:var(--art-height);overflow:hidden;border-radius:12px;background:#fffdf6}.music-art video{display:block;width:100%;height:100%;object-fit:contain}.music-controls{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;height:100%;min-height:100px}.music-controls button{display:grid;place-items:center;min-height:44px;width:44px;padding:10px;border:1px solid #a5aa9c;border-radius:50%;background:#242c27;color:#fff8ee;cursor:pointer}.music-controls svg{width:22px;height:22px;fill:currentColor}.music-controls button:disabled{opacity:.4;cursor:default}.music-controls .music-pause-visible{position:fixed;bottom:18px;right:18px;z-index:30;box-shadow:0 3px 20px #0006}.music-status:not(.music-error){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.music-status.music-error{position:absolute;top:100%;right:0;width:180px;font-size:12px;color:#ffc5ba;margin-top:8px}
.memory-film{margin:0;padding:56px 5vw;background:#eae4d8;color:#242c27}.memory-film-frame{aspect-ratio:21/9;position:relative;overflow:hidden;background:#252820;border-radius:12px}.memory-film-frame video{display:block;width:100%;height:100%;object-fit:contain}.memory-film-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:grid;place-items:center;width:72px;min-height:72px;padding:20px;border:1px solid #a5aa9c;border-radius:50%;background:#242c27;color:#fff8ee;cursor:pointer;box-shadow:0 4px 24px #0006}.memory-film-play[hidden]{display:none}.memory-film-play svg{width:30px;height:30px;fill:currentColor}.memory-film-status:empty{display:none}.memory-film-status{font-size:14px;line-height:1.5}.memory-film figcaption{display:flex;justify-content:space-between;gap:20px;padding:18px 0 0;font-size:12px;line-height:1.5}.memory-film figcaption span:first-child{font-weight:700;letter-spacing:.03em}

@media(max-width:750px){.festival-memory{padding-top:36px}.memory-heading{padding:0 5vw;margin-bottom:28px;gap:14px;align-items:flex-start}.memory-eyebrow{font-size:9px;letter-spacing:.06em;margin-bottom:14px}.memory-heading h2{font-size:clamp(34px,7.5vw,54px);margin-bottom:12px}.memory-heading-copy>p:last-child{font-size:12px}.memory-stage{--rail-height:min(62svh,560px)}.memory-credit{padding:24px 5vw 30px}.memory-film{padding:32px 5vw}.memory-film figcaption{flex-direction:column;gap:6px;font-size:11px}.music-controls .music-pause-visible{bottom:12px;right:12px}}
@media(prefers-reduced-motion:reduce){.memory-track.is-moving{transition:none}}
.skip:not(:focus){clip-path:inset(50%)}

@media(max-width:950px){.memory-heading{flex-direction:column;align-items:flex-start}.festival-music{align-self:flex-end}}

/* Match the spacious two-column festival introduction above. */
.festival-memory{padding-top:0}.memory-heading{padding-top:90px;padding-bottom:90px;margin-bottom:0;gap:9vw}.memory-heading h2{font-size:clamp(44px,6vw,82px);line-height:.91;letter-spacing:-.035em;margin-bottom:24px}.memory-heading-copy>p:last-child{font-size:18px;line-height:1.6}.memory-eyebrow{font-size:11px;margin-bottom:24px}
@media(max-width:950px){.memory-heading{gap:32px;padding-top:55px;padding-bottom:55px}.memory-heading h2{font-size:clamp(44px,6vw,82px)}.memory-heading-copy>p:last-child{font-size:16px}.festival-music{align-self:flex-start}}

.archive-breweries{list-style:none;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.archive-breweries li{display:flex;justify-content:space-between;gap:16px;padding:16px 0;border-bottom:1px solid #71675b;line-height:1.5;overflow-wrap:anywhere}.archive-breweries span{flex-shrink:0}.legal-document .contact-block{max-width:800px;margin-bottom:24px}.legal-document .contact-block h2{font-family:var(--font-body);font-size:clamp(24px,4vw,32px);letter-spacing:0;line-height:1.2}.legal-document .legal-status{display:inline-block;background:#5b1f33;color:#fff8ee;padding:14px 18px;font-weight:700}.legal-document .plain-hero h1{font-size:clamp(46px,10vw,110px);overflow-wrap:anywhere}@media(max-width:600px){.archive-breweries{grid-template-columns:1fr}}

.legal-document p,.legal-document h1,.legal-document h2{overflow-wrap:anywhere}.festival-music[hidden],.booking-music[hidden]{display:none!important}

.festival-music{--art-height:clamp(130px,20vw,180px)}@media(max-width:600px){.festival-music{--art-height:clamp(100px,35vw,150px);gap:12px}}

/* Contact form: the honeypot a person never sees, the consent line, and the status colours.
   The honeypot is off screen rather than display:none, because a bot that fills hidden fields
   reads the DOM and a person using a screen reader skips it on aria-hidden. */
.hp-field{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.contact-form .contact-consent{grid-template-columns:auto 1fr;align-items:start;gap:12px;font-weight:400;line-height:1.5}
.contact-form .contact-consent input{width:24px;min-height:24px;margin-top:2px}
#contact-status{line-height:1.6}
#contact-status[data-state="sent"]{font-weight:700}
#contact-status[data-state="error"]{color:#8d2f1d;font-weight:700}

/* Contact intent cards use dark links on their paper surface. */
#app .contact-page .intent-card a{color:#5b1f33;--b-control-text:#5b1f33}

/* Shared brewery and festival location, supplied by the owner. */
.brewski-location{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:40px;align-items:start;padding-block:64px}
.brewski-location h2{font-size:clamp(32px,5vw,64px);line-height:1;margin:0 0 24px}
.brewski-location p{line-height:1.6}
.brewski-location iframe{display:block;width:100%;max-width:100%;height:450px;border:0;border-radius:8px;background:#fff8ee}
@media(max-width:600px){.brewski-location{grid-template-columns:minmax(0,1fr);gap:24px;padding-block:40px}.brewski-location iframe{height:320px}}

.shop-coming-soon-image{width:100%;height:auto;margin:0 0 32px}

/* Session 11: host-specific chrome; festival page composition remains shared. */
.festival-announcement{background:#5b1f33;color:#fff8ee}
.festival-header{gap:20px;border-bottom:1px solid #5b1f33}
.festival-site-brand{display:flex;align-items:center;gap:12px;flex-shrink:0;min-height:64px;color:#fff8ee}
.festival-site-brand img{width:32px;height:61px;object-fit:contain}
.festival-site-brand span{font-family:var(--font-display);font-size:25px;line-height:1.1;letter-spacing:-.02em}
.festival-site-brand small{display:block;font-family:var(--font-body);font-size:9px;letter-spacing:.12em;margin-top:7px}
.festival-header .nav{gap:18px}
.festival-header .nav a{font-size:14px}
.header-account{display:inline-flex;align-items:center;justify-content:center;min-height:44px;flex:none;padding:0 14px;border:1px solid #71675b;border-radius:999px;font-size:13px;font-weight:700;white-space:nowrap}
.header-account:hover{border-color:#fff8ee}
.festival-header .nav a[aria-current=page]{color:#fff8ee;text-decoration:underline;text-decoration-color:#ac8150;text-decoration-thickness:3px;text-underline-offset:8px}
.festival-header .cross-brand{border-left:1px solid #71675b;padding-left:18px}
.festival-cross-link{padding-block:12px;background:#5b1f33;font-size:14px;line-height:1.6}
.festival-cross-link a{display:inline-flex;align-items:center;min-height:44px;text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}
.festival-footer{background:#5b1f33;margin-top:32px}
.festival-footer .footer-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}
.festival-footer .footer-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px}
.festival-footer p{color:#fff8ee;margin-top:18px}
.festival-footer a{overflow-wrap:anywhere}
.festival-legal{display:flex;flex-wrap:wrap;gap:0 24px;margin-top:30px;font-size:14px}
.festival-legal a{display:flex;align-items:center;min-height:44px;text-decoration:underline;text-underline-offset:4px}
.festival-footer .footer-bottom{border-color:#ac8150;color:#fff8ee}
.footer-top>*{min-width:0}.footer-links{flex-wrap:wrap;gap:8px 24px}
@media(max-width:1150px){
 .festival-header{flex-wrap:wrap;padding-block:18px;gap:12px}
 .festival-header .language{margin-left:auto}
 .festival-header .menu-toggle{display:block;min-height:44px;padding:0 13px;border:1px solid #71675b;background:transparent;color:#fff8ee}
 .festival-header .nav{display:none;order:4;flex-basis:100%;margin:0}
 .festival-header .nav.open{display:flex;flex-wrap:wrap;gap:4px 24px}
 .festival-header .cross-brand{border-left:0;padding-left:0}
}
@media(max-width:600px){
 .festival-footer .footer-top{grid-template-columns:minmax(0,1fr);gap:24px}
 .festival-header .nav.open{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px}
 .festival-header .nav a{min-height:48px}
 .festival-footer{padding-top:36px}
}
@media(max-width:360px){
 .festival-header .festival-site-brand{flex-basis:100%}
 .festival-header .header-account{margin-left:0}
 .festival-header .language{margin-left:auto}
 .festival-header .menu-toggle{margin-left:auto}
}
@media(max-width:480px){
 .header,.festival-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 10px}
 .header .logo,.festival-header .festival-site-brand{grid-column:1;grid-row:1;width:120px;min-width:0;margin:0}
 .festival-header .festival-site-brand{gap:8px}
 .festival-header .festival-site-brand img{width:25px;height:48px}
 .festival-header .festival-site-brand span{font-size:18px}
 .festival-header .festival-site-brand small{font-size:7px;margin-top:4px}
 .header .header-account{grid-column:2;grid-row:1;margin:0;padding-inline:10px;font-size:12px}
 .header .language{grid-column:1;grid-row:2;justify-self:end;margin:0;padding-inline:9px;font-size:12px}
 .header .menu-toggle{grid-column:2;grid-row:2;margin:0;padding-inline:9px;font-size:12px}
 .header .nav,.header .nav.open,.festival-header .nav,.festival-header .nav.open{grid-column:1/-1;grid-row:3;width:100%}
}

/* First paint placeholder for the single page shell, web/index.html (feature-research/css-loading).
   web/app.js replaces the whole of #app on its first render, so nothing has to remove this: it is
   gone the moment the page renders. The 400 ms gate is why it is written as a delayed animation
   rather than a plain rule · a render that lands sooner than that must never flash a skeleton at
   anybody, and only a load slow enough to be worth explaining ever reveals it. The clock starts
   when this rule reaches the element, which is when the stylesheet lands rather than when the
   navigation began; before that the browser is still blocking the first paint anyway, so there is
   nothing on screen to gate. No motion is involved, so reduced-motion needs nothing here. */
.app-placeholder{opacity:0;animation:app-placeholder-appear 1ms linear 400ms forwards}
@keyframes app-placeholder-appear{to{opacity:1}}
.app-placeholder-header{min-height:100px;display:flex;align-items:center;padding:0 5vw}
.app-placeholder-header img{width:200px}
.app-placeholder-skeleton{padding:40px 5vw;display:grid;gap:18px;max-width:640px}
.app-placeholder-skeleton span{display:block;height:22px;border-radius:3px;background:#1b1a19}
.app-placeholder-skeleton span:first-child{height:64px}
.app-placeholder-skeleton span:last-child{width:60%}
@media(max-width:850px){.app-placeholder-header{min-height:85px}.app-placeholder-header img{width:160px}}

/* Session 26: preserve the entire couple photo and keep copy off every logo.
   This class is emitted only by the brewskival.se landing-page hero. */
.festival-hero-couple{display:block;min-height:0;padding:0;background:var(--ink)}
.festival-hero-couple::after{display:none}
.festival-hero-couple .festival-couple-photo{display:block;width:100%}
.festival-hero-couple .festival-couple-photo img{position:static;display:block;width:100%;height:auto;object-fit:contain;object-position:center;max-width:100%}
.festival-hero-couple .festival-hero-copy{padding:32px 6vw 40px}
.festival-hero-couple .festival-hero-media{position:relative}
.festival-hero-couple .festival-hero-media .festival-brand-lockup{position:absolute;left:3vw;bottom:5%;max-width:32%;margin:0;padding:18px 24px 18px 18px;background:linear-gradient(90deg,rgba(8,8,8,.72),rgba(8,8,8,.45));border-radius:4px}
.festival-hero-couple .festival-hero-media .festival-brand-lockup h1{font-size:clamp(26px,2.9vw,42px);line-height:1;margin:0;text-shadow:0 2px 12px rgba(0,0,0,.5)}
@media(max-width:699px){
  .festival-hero-couple .festival-hero-media .festival-brand-lockup{position:static;background:var(--ink);padding:24px 6vw 0;border-radius:0}
}
@media(min-width:1100px){
  .festival-hero-couple .festival-hero-copy{padding:40px 6vw 48px}
  .festival-hero-couple .festival-brand-lockup{gap:16px}
  .festival-hero-couple .festival-brand-logo{width:56px}
}

#barski-taps,.barski-closing{max-width:1100px;margin-left:auto;margin-right:auto}.barski-closing{margin-top:56px;padding:0 28px 56px}@media(max-width:600px){.barski-closing{padding:0 6vw 40px}}.barski-closing img{display:block;width:100%;height:auto;border-radius:8px}
#barski-tap-list[hidden]{display:none!important}

/* Footer globe space exists before lazy loading. */
.footer>.footer-globe{height:80px;margin-top:24px;max-width:360px}

.barski-visitors{padding-block:24px 40px}

/* Outbid sits directly above festival questions on both sites. */
@media(min-width:851px) and (max-width:1150px){
 .header:not(.festival-header){min-height:85px;gap:15px;flex-wrap:wrap;padding-block:18px}
 .header:not(.festival-header) .logo{width:160px}
 .header:not(.festival-header) .language{margin-left:auto}
 .header:not(.festival-header) .menu-toggle{display:block;min-height:44px;background:transparent;color:var(--paper);border:1px solid var(--line);padding:0 13px}
 .header:not(.festival-header) .nav{display:none;order:4;width:100%;margin:0;gap:12px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:12px}
 .header:not(.festival-header) .nav.open{display:flex}
 .header:not(.festival-header) .nav a{padding-right:12px}
}
.festival-outbid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);align-items:center;gap:5vw;padding-block:64px;background:#5b1f33;color:#fff8ee}
.festival-outbid-copy{min-width:0}
.festival-outbid .eyebrow{font-size:12px;letter-spacing:.12em;margin-bottom:20px}
.festival-outbid h2{font-size:clamp(36px,4.5vw,64px);line-height:1.08;margin-bottom:24px}
.festival-outbid-races{list-style:none;padding:0;margin:0 0 28px;display:grid;gap:14px;font-size:17px;line-height:1.6}
.festival-outbid .hero-actions{flex-wrap:wrap;gap:12px}
.festival-outbid-art{display:flex;align-items:center;justify-content:center;gap:12px;min-width:0}
.festival-outbid-art img{width:calc((100% - 12px)/2);max-width:175px;height:auto}
@media(max-width:750px){
 .festival-outbid{grid-template-columns:minmax(0,1fr);gap:28px;padding-block:40px}
 .festival-outbid .eyebrow{font-size:11px;margin-bottom:16px}
 .festival-outbid h2{font-size:36px}
 .festival-outbid-races{font-size:16px;gap:12px}
 .festival-outbid .hero-actions{flex-direction:column;align-items:stretch}
 .festival-outbid-art img{max-width:125px}
}

/* Align official marks with their text column. Container padding and layout gaps
   provide at least one sixth of the mark width as clear space. */
.sponsor-logo{align-self:flex-start;margin-bottom:24px}
.sponsor-card h3{margin:12px 0 0}
.sponsor-logo img{display:block;width:88px;height:88px}
.festival-partner{display:flex;flex-direction:column;align-items:flex-start;gap:16px;margin-block:32px}
.festival-partner a{display:block}
.festival-partner img{display:block;width:80px;height:80px}
@media(max-width:650px){.festival-partner img{width:64px;height:64px}}

/* The complete announcement strip is a keyboard-accessible ticket link. */
.festival-ticket-banner{display:block;text-decoration:none}
.festival-ticket-banner:hover{text-decoration:underline;text-underline-offset:3px}
.festival-ticket-banner:focus-visible{outline:3px solid currentColor;outline-offset:-3px;text-decoration:underline}
