@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
.hub-home{--ink:#fff;--paper:#080808;--muted:#a3a39f;--lime:#dfff46;background:#080808;color:#fff;font-family:'DM Sans',sans-serif}.hub-home header{position:absolute;inset:0 0 auto;height:88px;z-index:20;background:linear-gradient(180deg,#000c,#0005,transparent);padding:0 4.5vw;box-shadow:none}.hub-logo{font:800 28px/1 'Manrope',sans-serif;letter-spacing:-2px}.hub-home nav{font-size:13px;font-weight:400;gap:27px}.hub-home nav a{color:#fff;opacity:.78}.hub-home nav a:hover{opacity:1;color:white}.hub-home .hero{min-height:720px;aspect-ratio:2/1;background:#080808}.hub-home .hero-bg{background:linear-gradient(90deg,#080808 0%,rgba(8,8,8,.88) 25%,rgba(8,8,8,.18) 62%,transparent 100%),linear-gradient(0deg,rgba(8,8,8,.62),transparent 45%),url('assets/porto-hero.png') center/cover}.hub-home .hero-copy{width:58%;max-width:800px;padding:150px 0 50px 5vw}.hub-back{display:inline-block;font-size:12px;color:#ffffff99;margin-bottom:70px}.hub-home h1{font:800 clamp(54px,6vw,95px)/.88 'Manrope',sans-serif;letter-spacing:-.07em;margin:20px 0;text-shadow:0 5px 35px #000c}.hub-tools{display:flex;flex-wrap:wrap;gap:8px;max-width:550px}.hub-home .button{border-radius:3px;font-weight:700}.hub-tools .button{font-size:10px;min-height:38px;padding:10px 12px;background:#08080866;border:1px solid #ffffff35}.hub-location{font-size:21px;margin:30px 0 20px}.hub-date{color:var(--lime);font-size:15px;font-weight:700}.hub-date span{color:#fff9;border-left:1px solid #fff5;margin-left:12px;padding-left:15px;font-weight:400;font-size:12px}.hub-home .pink,.hub-home .nav-ticket{background:var(--lime);color:#111}.hub-home .hero-actions .pink{font-size:14px;min-height:50px}.hub-home #language{color:white;background:#ffffff09;border:1px solid #ffffff35;padding:12px;border-radius:3px}.festival-navigation{display:flex;gap:32px;padding:24px 5vw;border-block:1px solid #ffffff20;background:#121210;font-size:12px;flex-wrap:wrap}.festival-navigation a:hover{color:var(--lime)}.hub-home .section{padding:65px 5vw;background:#080808;border-color:#ffffff20}.hub-home .passes{background:#121210}.hub-home .section .eyebrow{color:var(--lime);font-size:10px;letter-spacing:.17em}.hub-home h2{font:800 clamp(30px,3.5vw,48px)/1.05 'Manrope',sans-serif;letter-spacing:-.055em}.hub-home .price,.hub-home .price.featured{background:#ffffff03;border:1px solid #ffffff29;color:#fff}.hub-home .price.featured{border-top:3px solid var(--lime);background:#dfff4605}.hub-home .price p,.hub-home .booking-note,.hub-home .card-meta,.hub-home .section-desc,.hub-home .row-controls span{color:#ffffff99}.hub-home .tag{color:var(--lime);background:#dfff4612}.hub-home .outline{border-color:#ffffff35}.hub-home .text-link{border-color:#ffffff70}.hub-home .card-art{border-radius:3px}.hub-home .card-art h3{font-family:'Manrope',sans-serif;font-weight:800;letter-spacing:-.055em}.hub-home .explore{background:#121210}.hub-home .weather{background:#080808}.hub-home .weather-day{background:linear-gradient(140deg,#162029,#101313);border:1px solid #ffffff26}.hub-home .weather-day h3{color:#fff9;text-transform:uppercase;font-size:11px;letter-spacing:.06em}.hub-home .weather-temp{font-family:'Manrope',sans-serif;color:white}.hub-home .weather-note,.hub-home .weather-day p,.hub-home .weather-temp small{color:#fff9}.hub-home footer{background:#080808;border-top:1px solid #ffffff20}.hub-home footer .brand strong{font-family:'Manrope',sans-serif;font-size:28px;letter-spacing:-2px}.hub-home footer p,.hub-home footer>span{color:#888}.hub-home .row-controls button:hover{background:#dfff4620}.hub-home :focus-visible{outline-color:var(--lime)}
@media(max-width:760px){.hub-home header{height:78px}.hub-home nav{background:#101010;top:78px;padding:25px}.hub-home .hero{min-height:850px;aspect-ratio:auto}.hub-home .hero-bg{height:65%;background:linear-gradient(0deg,#080808 0%,rgba(8,8,8,.85) 18%,rgba(8,8,8,.05) 80%),url('assets/porto-hero.png') 75% center/cover}.hub-home .hero-copy{width:100%;padding:345px 24px 40px}.hub-back{margin-bottom:24px}.hub-home h1{font-size:56px;margin:20px 0}.hub-tools{gap:8px}.hub-tools .button{font-size:9px;padding:10px}.hub-location{margin-top:25px}.hub-home .hero-actions{max-width:none}.festival-navigation{padding:20px 24px;gap:18px;font-size:11px}.hub-home .section{padding:42px 6%}.hub-home .hub-logo{font-size:26px}}
.hub-logo{font-size:25px;letter-spacing:-1.7px}.hub-logo span{font-weight:600}.hub-home .hub-back{font-size:10px;letter-spacing:.15em;color:#dfff46}.hub-home header nav{gap:23px}@media(max-width:1000px) and (min-width:761px){.hub-home header nav{gap:13px;font-size:11px}.hub-logo{font-size:22px}}@media(max-width:760px){.hub-home .hub-logo{font-size:23px}}
.hub-home .hero{width:100%;aspect-ratio:auto;height:max(720px,50vw)}@media(max-width:760px){.hub-home .hero{height:auto;min-height:850px}}
.hub-location-date{display:flex;align-items:baseline;gap:24px;flex-wrap:wrap;margin:30px 0 20px}.hub-location-date .hub-location,.hub-location-date .hub-date{margin:0;font-size:21px;line-height:1.4}@media(max-width:760px){.hub-location-date{gap:8px 20px}}
.event-quick-actions{display:flex;flex-wrap:wrap;gap:7px;margin:20px 0 28px;width:max-content;max-width:calc(100vw - 10vw)}.event-countdown{display:flex;align-items:center;gap:9px;min-height:38px;padding:0 11px;border:1px solid #ffffff33;border-radius:3px;background:#0808086b;backdrop-filter:blur(8px)}.event-countdown-label{color:#ffffff8c;font-size:8px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.event-countdown>span:not(.event-countdown-label){display:grid;grid-template-columns:auto auto;align-items:baseline;gap:3px}.event-countdown strong{color:#fff;font:750 14px/1 'Manrope',sans-serif}.event-countdown small{color:var(--lime);font-size:7px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.event-action-button{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:0 11px;border:1px solid #ffffff33;border-radius:3px;background:#0808086b;color:#fff;font-size:10px;font-weight:700;backdrop-filter:blur(8px)}.event-action-button span{color:var(--lime);font-size:15px}.event-action-button:hover{background:#ffffff15}#share-status:empty{display:none}#share-status{font-size:12px;color:var(--lime)}.event-countdown-live{color:var(--lime);font-size:11px;font-weight:700}@media(max-width:760px){.event-quick-actions{width:auto;max-width:100%;gap:7px}.event-countdown{flex-basis:100%;width:max-content;flex-grow:0}}
.hub-home .anniversary{background:#080808;padding-block:85px;border-bottom:1px solid #ffffff16}.anniversary h2{max-width:960px;margin-bottom:35px}.anniversary-copy{max-width:960px;font-size:18px;line-height:1.8;color:#ffffffa6}.anniversary-copy p{margin:0 0 24px}.anniversary-copy p:first-child{color:#fff;font-size:21px}.anniversary-copy p:last-child{color:#dfff46;margin-bottom:0}@media(max-width:760px){.hub-home .anniversary{padding-block:48px}.anniversary-copy{font-size:16px;line-height:1.75}.anniversary-copy p:first-child{font-size:18px}}

.travel-airport{display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:14px;height:92px;box-sizing:border-box;margin-bottom:20px;padding:15px 16px;border:1px solid rgba(223,255,70,.3);background:rgba(223,255,70,.07)}.travel-airport small{grid-column:1/-1;margin-bottom:5px;color:rgba(255,255,255,.45);font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.travel-airport strong{color:var(--lime);font:800 25px "Manrope"}.travel-airport span,.travel-search-location strong{color:#fff;font:700 14px/1.5 "DM Sans"}.travel-search-location{grid-template-columns:1fr}.travel-date-inputs{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:28px}.travel-date-inputs label{margin:0}.travel-date-inputs input{color-scheme:dark}
.event-travel{padding:100px 8vw 110px;color:#fff;background:#0e0e0d}.event-travel>header{margin-bottom:45px}.event-travel>header h2{max-width:850px;margin:10px 0 0;font:700 clamp(46px,5.5vw,82px)/.92 "Manrope";letter-spacing:-.06em}.travel-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid rgba(255,255,255,.15)}.travel-grid article{display:flex;flex-direction:column;min-height:520px;padding:48px;border-right:1px solid rgba(255,255,255,.15)}.travel-grid article:last-child{border-right:0;background:#151513}.travel-index{color:var(--lime);font-size:10px;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.travel-grid h3{margin:60px 0 14px;font:700 clamp(32px,3vw,48px)/1 "Manrope";letter-spacing:-.045em}.travel-grid article>p{max-width:520px;min-height:55px;margin:0 0 35px;color:rgba(255,255,255,.55);line-height:1.65}.travel-grid label,.travel-location{display:grid;gap:8px;margin-bottom:18px;color:rgba(255,255,255,.45);font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.travel-grid input,.travel-location{min-height:55px;padding:0 16px;border:1px solid rgba(255,255,255,.2);background:#090909;color:#fff;font:600 14px "DM Sans"}.travel-location{justify-content:center}.travel-location strong{color:#fff;font-size:13px;letter-spacing:0;text-transform:none}.travel-dates{display:flex;gap:24px;margin-bottom:32px}.travel-dates span{display:grid;gap:5px;color:rgba(255,255,255,.4);font-size:10px;text-transform:uppercase}.travel-dates strong{color:#fff;font-size:12px}.travel-grid a{display:inline-flex;align-items:center;justify-content:center;width:max-content;min-height:50px;padding:0 19px;border:1px solid var(--lime);color:#111;background:var(--lime);font-size:11px;font-weight:800}.travel-actions{display:flex;flex-wrap:wrap;gap:10px}.stay-actions{padding-top:18px}.travel-actions a:last-child{color:#fff;background:transparent;border-color:rgba(255,255,255,.3)}@media(max-width:900px){.event-travel{padding:75px 24px}.travel-grid{grid-template-columns:1fr}.travel-grid article{min-height:0;padding:32px 24px;border-right:0;border-bottom:1px solid rgba(255,255,255,.15)}.travel-grid h3{margin-top:38px}.travel-grid article>p{min-height:0}.travel-airport{height:auto;min-height:92px}.travel-actions{align-items:stretch;flex-direction:column}.stay-actions{padding-top:0}.travel-grid article>a,.travel-actions a{width:100%}}
.festival-story-layout{display:grid;grid-template-columns:3fr 2fr;gap:1px;background:#292925}.hub-home .festival-story-layout .anniversary{padding:clamp(28px,4vw,64px);background:#121210;border:0}.festival-story-layout .anniversary h2{font-size:clamp(36px,4vw,60px);line-height:1;letter-spacing:-.06em}.festival-story-layout .anniversary-copy{font-size:18px;line-height:1.75}.festival-sidebar{display:flex;flex-direction:column;gap:1px;min-width:0}.connected-panel,.roommate-panel{padding:clamp(28px,4vw,64px)}.connected-panel{background:linear-gradient(145deg,#35152c,#171315)}.connected-panel p:not(.eyebrow),.roommate-panel p:not(.eyebrow){color:#ffffff8c;line-height:1.7;font-size:14px;margin:24px 0}.connected-panel>a{color:var(--lime);font-size:12px;border-bottom:1px solid}.festival-sidebar h2,.hub-home .festival-sidebar .passes h2{font-size:36px;line-height:1.05}.festival-sidebar .eyebrow{color:var(--lime);font-size:10px}.hub-home .festival-sidebar .passes{padding:clamp(28px,4vw,64px);background:#15170e}.festival-sidebar .passes .subtle{display:none}.festival-sidebar .price-grid{display:grid;width:100%;grid-template-columns:1fr;gap:12px;overflow:visible}.hub-home .festival-sidebar .price{min-height:0;padding:20px;display:grid;grid-template-columns:1fr auto;column-gap:12px}.festival-sidebar .price-top{min-height:0;grid-column:1;align-content:start;gap:8px}.festival-sidebar .amount{grid-column:2;grid-row:1 / span 2;font-size:44px;margin:0}.festival-sidebar .amount span{font-size:23px;margin-top:5px}.festival-sidebar .amount small{font-size:10px}.festival-sidebar .price p{grid-column:1;margin:12px 0 16px;font-size:12px}.festival-sidebar .price .button{grid-column:1 / -1;min-height:38px;padding:10px;margin:0}.festival-sidebar .booking-note{text-align:left;line-height:1.6}.roommate-panel{background:#141b1b;flex:1}.roommate-link{display:flex;justify-content:space-between;align-items:center;padding:18px;border:1px solid #ffffff30;font-size:12px;line-height:1.5;gap:20px}.roommate-link span{color:var(--lime);font-size:23px}.travel-heading{margin-bottom:45px}.hub-home .travel-heading .eyebrow{color:var(--lime)}.hub-home .travel-heading h2,.hub-home .event-travel .travel-grid h3{font:700 clamp(32px,3.5vw,54px)/1.05 'Manrope',sans-serif;letter-spacing:-.06em}.travel-grid form{display:flex;flex-direction:column;flex:1;min-width:0}.travel-grid input{width:100%;min-width:0}.travel-grid input[type=hidden]{display:none}.travel-grid button{display:inline-flex;align-items:center;justify-content:center;width:max-content;min-height:50px;padding:0 19px;border:1px solid var(--lime);color:#111;background:var(--lime);font-size:11px;font-weight:800;cursor:pointer}.travel-actions button:last-child{color:#fff;background:transparent;border-color:#ffffff4d}.travel-grid article{min-width:0}.travel-grid input:focus-visible{outline:2px solid var(--lime);outline-offset:2px}@media(max-width:900px){.festival-story-layout{grid-template-columns:1fr}.hub-home .festival-story-layout .anniversary,.connected-panel,.roommate-panel,.hub-home .festival-sidebar .passes{padding:36px 24px}.festival-story-layout .anniversary h2{font-size:36px}.travel-grid button{width:100%}.festival-sidebar .price-grid{grid-auto-flow:row;grid-auto-columns:auto}.travel-grid .travel-date-inputs{grid-template-columns:1fr 1fr}.travel-grid .travel-date-inputs input{padding:0 8px;font-size:12px}}
/* Unified pink accent and action buttons. */
.hub-home{--lime:#df2d70;--pink:#df2d70}.hub-home .hub-back,.hub-home .anniversary-copy p:last-child{color:var(--pink)}.hub-home .pink,.hub-home .nav-ticket,.hub-home .price .button,.hub-home .travel-grid button,.hub-home .travel-actions button:last-child{background:var(--pink);border:1px solid var(--pink);color:#fff;border-radius:3px;min-height:50px;padding:0 22px;font:700 14px 'DM Sans',sans-serif;cursor:pointer;transition:transform .2s,background .2s}.hub-home .event-action-button,.hub-home .row-controls button{background:var(--pink);border-color:var(--pink);color:#fff}.hub-home .event-action-button span{color:#fff}.hub-home .event-action-button:hover,.hub-home .row-controls button:hover,.hub-home .price .button:hover,.hub-home .travel-grid button:hover,.hub-home .pink:hover{background:#c92361;border-color:#c92361;transform:translateY(-2px)}.hub-home .price.featured{background:#df2d7008;border-top-color:var(--pink)}.hub-home .tag{background:#df2d7018;color:#ff8db8}.hub-home .travel-airport{border-color:#df2d704d;background:#df2d7012}.hub-home .menu-toggle{color:var(--pink)}
/* Pink actions, original lime editorial accents. */
.hub-home{--lime:#dfff46;--pink:#df2d70}.hub-home .hub-back,.hub-home .anniversary-copy p:last-child{color:var(--lime)}.hub-home .price.featured{background:#dfff4605;border-top-color:var(--lime)}.hub-home .tag{background:#dfff4612;color:var(--lime)}.hub-home .travel-airport{border-color:#dfff464d;background:#dfff4612}
@media(max-width:760px){
 .hub-home #news-row,.hub-home #porto-row{grid-auto-columns:calc((100% - 12px)/2);gap:12px}
 .hub-home #news-row .card-art h3,.hub-home #porto-row .card-art h3{font-size:clamp(15px,4vw,22px);left:11px;right:10px;bottom:13px;line-height:1.12}
 .hub-home #news-row .card-art .category,.hub-home #porto-row .card-art .category{left:11px;top:12px;font-size:7px;letter-spacing:.8px}
 .hub-home #news-row .card-meta,.hub-home #porto-row .card-meta{font-size:9px;gap:5px}
}
/* Lift editorial tile titles slightly above the bottom edge. */
.hub-home #news-row .card-art h3,.hub-home #porto-row .card-art h3{bottom:30px}
@media(max-width:760px){.hub-home #news-row .card-art h3,.hub-home #porto-row .card-art h3{bottom:23px}}
.hub-home .festival-sidebar .passes-book{display:flex;width:100%;margin-top:18px;min-height:50px}.festival-sidebar .price p{margin-bottom:0}
.hub-home.lineup-page{background:#080808}.hub-home.lineup-page header{position:relative;background:#080808;border-bottom:1px solid #ffffff20}.hub-home.lineup-page .page-main{background:radial-gradient(ellipse at top right,#172237 0%,#080808 60%);padding:65px 5vw 90px;min-height:80vh}.hub-home.lineup-page .page-main>.back-link{color:#ffffff80;font-size:12px}.hub-home.lineup-page .page-main>h1{font:800 clamp(48px,6vw,86px)/1 'Manrope',sans-serif;letter-spacing:-.065em;margin:42px 0 24px}.hub-home.lineup-page .page-lead{color:#ffffff99;font-size:18px;line-height:1.8;max-width:700px}.hub-home.lineup-page .lineup-image{max-width:560px;border:1px solid #ffffff25;border-radius:3px;margin-top:35px}.hub-home.lineup-page .page-main .button{background:var(--pink);color:#fff;border-color:var(--pink)}@media(max-width:760px){.hub-home.lineup-page .page-main{padding:36px 24px 60px}.hub-home.lineup-page .page-lead{font-size:16px}}
.connected-panel>a{display:table;margin-top:16px}
.connected-panel>a{display:inline-block;margin-top:16px}.connected-panel>a+a{margin-left:22px}

.hub-home .anniversary-copy{text-align:justify}

.mobile-menu-bottom{display:none}
@media(max-width:760px){
 .hub-home header .menu-toggle{display:flex;position:relative;z-index:102;width:46px;height:46px;flex-direction:column;justify-content:center;align-items:center;gap:7px;padding:0;border:1px solid #ffffff30;border-radius:50%;color:white}
 .menu-toggle span{display:block;width:20px;height:2px;background:currentColor;transition:transform .2s}
 .mobile-menu-open .menu-toggle span:first-child{transform:translateY(4.5px) rotate(45deg)}
 .mobile-menu-open .menu-toggle span:last-child{transform:translateY(-4.5px) rotate(-45deg)}
 .hub-home header.mobile-menu-open{position:fixed;inset:0 0 auto;z-index:100;height:78px;background:#080808;border-bottom:1px solid #ffffff20}
 .hub-home header.mobile-menu-open .site-logo{position:relative;z-index:102}
 .hub-home header nav.open{position:fixed;inset:78px 0 0;height:calc(100dvh - 78px);box-sizing:border-box;display:flex;flex-direction:column;align-items:stretch;gap:0;margin:0;padding:12px 24px max(24px,env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain;background:rgba(8,8,8,.98);backdrop-filter:blur(20px);box-shadow:none;animation:menu-reveal .2s ease-out}
 .hub-home header nav.open>a{display:flex;align-items:center;min-height:56px;padding:10px 0;border-bottom:1px solid #ffffff18;font:600 clamp(22px,6vw,28px)/1.2 'Manrope',sans-serif;letter-spacing:-.03em;color:#fff;opacity:1}
 .hub-home header nav.open>a[aria-current=page]{color:var(--pink)}
 .hub-home header nav.open>a[aria-current=page]::after{content:'';width:6px;height:6px;border-radius:50%;background:var(--pink);margin-left:auto}
 .mobile-menu-open .mobile-menu-bottom{display:block;margin-top:auto;padding-top:24px}
 .hub-home header nav .mobile-menu-pass{display:flex;justify-content:center;align-items:center;min-height:52px;border-radius:4px;background:var(--pink);color:#fff;opacity:1;font:700 15px 'DM Sans',sans-serif}
 .mobile-menu-socials{display:flex;justify-content:center;gap:28px;margin-top:10px}
 .hub-home header nav .mobile-menu-socials a{display:flex;align-items:center;min-height:44px;font-size:13px;opacity:1}
 .mobile-menu-bottom p{margin:8px 0 0;text-align:center;font-size:11px;color:#888}
 .menu-toggle:focus-visible,.hub-home header nav a:focus-visible{outline:2px solid var(--lime);outline-offset:4px}
}
@keyframes menu-reveal{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.hub-home header nav.open{animation:none}.menu-toggle span{transition:none}}
