@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@300;400;500;600&family=Noto+Sans+JP:wght@300;400;500&family=Noto+Sans+TC:wght@300;400;500;600&display=swap');

:root {
    --black: #050505;
    --deep: #0e0e0e;
    --cyan: #29d8ff;
    --blue: #0d2c4f;
    --silver: #b8c2cc;
    --white: #fff;
    --line: rgba(255,255,255,.12);
    --glass: rgba(255,255,255,.055);
    --page: min(1240px, calc(100vw - 8vw));
    --ease: cubic-bezier(.22, 1, .36, 1);
}

* { box-sizing: border-box; }
html { background: var(--black); color-scheme: dark; scroll-behavior: smooth; }
body {
    margin: 0;
    overflow-x: hidden;
    color: var(--white);
    background: var(--black);
    font-family: Manrope, "Noto Sans TC", "Noto Sans JP", sans-serif;
    font-size: 16px;
    font-weight: 300;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
}
body.loading { overflow: hidden; }
::selection { color: var(--black); background: var(--cyan); }
img { display: block; max-width: 100%; }
h1, h2, h3, p { margin: 0; }

.grain {
    position: fixed; inset: -100%; z-index: 20; pointer-events: none; opacity: .035;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E");
    animation: grain .23s steps(2) infinite;
}
@keyframes grain { 0%{transform:translate(0)} 25%{transform:translate(2%,-3%)} 50%{transform:translate(-4%,2%)} 75%{transform:translate(3%,4%)} 100%{transform:translate(-2%,-1%)} }

#particle-field { position: fixed; inset: 0; z-index: 0; width: 100%; height: 100%; pointer-events: none; opacity: .52; }
main, footer { position: relative; z-index: 1; }
.panel { position: relative; overflow: clip; }
.section-space { padding: clamp(8rem, 14vw, 14rem) 0; }
.section-shell { width: var(--page); margin: 0 auto; position: relative; z-index: 2; }
.kicker { color: var(--cyan); font-size: .72rem; font-weight: 600; letter-spacing: .28em; text-transform: uppercase; }
.display-title {
    max-width: 980px; margin-top: 1.2rem; font-size: clamp(2.7rem, 6vw, 6.8rem); line-height: .98;
    font-weight: 300; letter-spacing: -.055em; text-wrap: balance;
}
.display-title.narrow { max-width: 850px; }

.loader {
    position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; background: #030303;
    overflow: hidden; will-change: transform;
}
.loader::before, .loader::after { content: ""; position: absolute; inset: 0; pointer-events: none; }
.loader::before { background: radial-gradient(circle at 50% 48%, rgba(41,216,255,.09), transparent 32%); }
.loader::after { top: auto; height: 1px; background: linear-gradient(90deg, transparent, var(--cyan), transparent); box-shadow: 0 0 30px var(--cyan); opacity: .55; animation: scan 1.5s ease-in-out infinite; }
@keyframes scan { from{transform:translateY(-30vh)} to{transform:translateY(-75vh)} }
.loader-smoke { position: absolute; width: 65vw; height: 45vw; border-radius: 50%; filter: blur(60px); background: rgba(13,44,79,.17); animation: smoke 4s ease-in-out infinite alternate; }
@keyframes smoke { to { transform: translate(8vw,-6vw) scale(1.2); opacity: .35; } }
.loader-core { position: relative; width: min(380px, 78vw); text-align: center; }
.loader-mark, .brand-symbol, .footer-mark { position: relative; width: 58px; height: 46px; margin: 0 auto 2rem; }
.loader-mark span, .loader-mark i, .brand-symbol span, .brand-symbol i, .footer-mark span, .footer-mark i { position: absolute; top: 0; width: 2px; height: 100%; background: var(--cyan); box-shadow: 0 0 16px rgba(41,216,255,.6); }
.loader-mark span, .brand-symbol span, .footer-mark span { left: 12px; }
.loader-mark i, .brand-symbol i, .footer-mark i { right: 12px; }
.loader-mark::before, .brand-symbol::before, .footer-mark::before { content: ""; position: absolute; left: 12px; top: 22px; width: 34px; height: 2px; background: var(--cyan); transform: skewY(-24deg); box-shadow: 0 0 16px rgba(41,216,255,.6); }
.loader-name { font-size: clamp(1.25rem, 4vw, 1.8rem); letter-spacing: .12em; }
.loader-tag { margin-top: .45rem; color: var(--silver); font-size: .67rem; letter-spacing: .24em; text-transform: uppercase; }
.loader-tag b { color: var(--cyan); }
.loader-track { height: 1px; margin-top: 2.6rem; background: rgba(255,255,255,.1); overflow: hidden; }
.loader-track i { display: block; width: 0; height: 100%; background: var(--cyan); box-shadow: 0 0 15px var(--cyan); }
.loader-percent { display: block; margin-top: .8rem; color: var(--silver); font-size: .68rem; letter-spacing: .16em; text-align: right; }

.hero { height: 100svh; min-height: 680px; display: grid; place-items: center; isolation: isolate; }
.hero-media { position: absolute; inset: -6%; background: url('../images/hero-stage.webp') center/cover no-repeat; transform: scale(1.06); filter: saturate(.78) contrast(1.08); will-change: transform; }
.hero-vignette { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(5,5,5,.54), rgba(5,5,5,.04) 38%, rgba(5,5,5,.82)), radial-gradient(circle, transparent 22%, rgba(5,5,5,.45) 95%); }
.hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(5,5,5,.55), transparent 30%, transparent 70%, rgba(5,5,5,.55)); }
.light-beam { position: absolute; top: -15%; width: 15vw; height: 115%; filter: blur(18px); opacity: .12; background: linear-gradient(180deg, var(--cyan), transparent 72%); transform-origin: top; }
.beam-a { left: 18%; transform: rotate(-13deg); animation: beam-a 8s ease-in-out infinite alternate; }
.beam-b { right: 18%; transform: rotate(13deg); animation: beam-b 10s ease-in-out infinite alternate; }
@keyframes beam-a { to { transform: rotate(-5deg) translateX(6vw); opacity: .22; } }
@keyframes beam-b { to { transform: rotate(6deg) translateX(-5vw); opacity: .18; } }
.hero-content { position: relative; z-index: 2; width: min(900px, 90vw); text-align: center; }
.hero-eyebrow { margin-bottom: 2rem; color: rgba(255,255,255,.58); }
.brand-symbol { width: 72px; height: 57px; margin-bottom: 2.2rem; transform: scale(1.15); }
.brand-symbol span, .brand-symbol i { width: 3px; }
.brand-symbol span { left: 13px; }.brand-symbol i { right: 13px; }
.brand-symbol::before { left: 13px; top: 27px; width: 46px; height: 3px; }
.brand-lockup h1 { display: flex; flex-direction: column; align-items: center; line-height: .9; }
.brand-lockup h1 > span { margin-bottom: 1.1rem; font-size: clamp(1.15rem, 2.2vw, 1.6rem); font-weight: 400; letter-spacing: .62em; transform: translateX(.31em); }
.brand-lockup strong { font-size: clamp(6.5rem, 19vw, 14.5rem); font-weight: 500; letter-spacing: -.065em; text-shadow: 0 0 40px rgba(41,216,255,.16); }
.brand-lockup em { margin-top: .3rem; color: var(--silver); font-size: clamp(1rem, 2.2vw, 1.55rem); font-style: normal; font-weight: 300; letter-spacing: .48em; transform: translateX(.24em); }
.hero-pillar { margin-top: 2.4rem; font-size: .73rem; font-weight: 500; letter-spacing: .34em; text-transform: uppercase; }
.hero-pillar span { color: var(--cyan); margin: 0 .55rem; }
.hero-position {
    width: fit-content; margin: 1.25rem auto 0; padding: .58rem 1rem;
    border: 1px solid rgba(41,216,255,.28); background: rgba(5,5,5,.34);
    color: rgba(255,255,255,.92); font-size: 1rem; font-weight: 400; letter-spacing: .14em;
    backdrop-filter: blur(12px); box-shadow: inset 0 0 22px rgba(41,216,255,.035), 0 0 26px rgba(41,216,255,.06);
}
.hero-line { margin-top: .85rem; color: rgba(255,255,255,.63); font-size: .9rem; letter-spacing: .09em; }
.scroll-cue { position: absolute; z-index: 3; bottom: 2.5rem; left: 50%; display: flex; flex-direction: column; align-items: center; gap: .75rem; transform: translateX(-50%); }
.scroll-cue span { color: rgba(255,255,255,.52); font-size: .58rem; letter-spacing: .25em; white-space: nowrap; }
.scroll-cue i { width: 1px; height: 46px; background: linear-gradient(var(--cyan), transparent); animation: scroll-line 2s ease-in-out infinite; transform-origin: top; }
@keyframes scroll-line { 0%,100%{transform:scaleY(.25);opacity:.4} 50%{transform:scaleY(1);opacity:1} }

.about { min-height: 100vh; display: flex; align-items: center; background: radial-gradient(circle at 20% 50%, rgba(13,44,79,.27), transparent 30%), var(--black); }
.about-grid { display: grid; grid-template-columns: .35fr 1fr 1.15fr; gap: clamp(2rem, 7vw, 8rem); align-items: start; }
.section-number { color: rgba(255,255,255,.08); font-size: clamp(6rem, 14vw, 13rem); line-height: .75; font-weight: 500; writing-mode: vertical-rl; }
.about-copy { padding-top: 6.7rem; }
.about-copy > p { margin-bottom: 1rem; color: var(--silver); font-size: clamp(1.1rem, 1.65vw, 1.45rem); line-height: 1.9; }
.pillars { display: flex; flex-wrap: wrap; gap: .7rem 1.2rem; margin-top: 4rem; padding-top: 1.4rem; border-top: 1px solid var(--line); }
.pillars span { color: var(--cyan); font-size: .72rem; letter-spacing: .18em; text-transform: uppercase; }
.orb { position: absolute; width: 35vw; height: 35vw; border: 1px solid rgba(41,216,255,.12); border-radius: 50%; filter: blur(.2px); }
.orb::before, .orb::after { content:""; position:absolute; border:1px solid rgba(41,216,255,.08); border-radius:50%; }
.orb::before { inset: 12%; }.orb::after { inset: 29%; }
.orb-left { left: -18vw; bottom: -8vw; }

.event-info { background: var(--deep); }
.event-timeline { position: relative; display: grid; grid-template-columns: repeat(3,1fr); gap: 3vw; margin-top: 8rem; }
.event-line { position: absolute; left: 0; right: 0; top: 1rem; height: 1px; background: rgba(255,255,255,.12); }
.event-line i { display:block; width:100%; height:100%; background:linear-gradient(90deg,var(--cyan),rgba(41,216,255,.12)); transform-origin:left; }
.event-point { position: relative; padding: 3.5rem 2rem 1rem 0; }
.event-point::before { content:""; position:absolute; top:.65rem; left:0; width:.7rem; height:.7rem; border:1px solid var(--cyan); border-radius:50%; background:var(--deep); box-shadow:0 0 22px rgba(41,216,255,.7); }
.event-point > span { color: rgba(255,255,255,.15); font-size: 4rem; line-height:1; }
.event-point small { display:block; margin-top:2.2rem; color:var(--cyan); font-size:.65rem; letter-spacing:.23em; }
.event-point h3 { margin-top:.8rem; max-width: 300px; font-size:clamp(1.35rem,2vw,2rem); font-weight:300; line-height:1.4; }

.flow { background: linear-gradient(180deg, #080808, #050505); }
.flow-track { position: relative; display:grid; grid-template-columns:repeat(5,1fr); margin-top:8rem; }
.flow-progress { position:absolute; top:4.65rem; left:7%; right:7%; height:1px; background:rgba(255,255,255,.1); }
.flow-progress i { display:block; width:100%; height:100%; background:var(--cyan); box-shadow:0 0 12px rgba(41,216,255,.5); transform-origin:left; }
.flow-step { position:relative; text-align:center; }
.flow-step > span { color:rgba(255,255,255,.22); font-size:.68rem; letter-spacing:.15em; }
.flow-step > i { position:relative; display:block; width:13px; height:13px; margin:3.35rem auto 2.6rem; border:2px solid var(--black); border-radius:50%; background:var(--cyan); box-shadow:0 0 0 1px var(--cyan),0 0 25px rgba(41,216,255,.7); }
.flow-step h3 { max-width:150px; margin:auto; font-size:1rem; font-weight:400; letter-spacing:.05em; }

.pricing { background: radial-gradient(circle at 50% 55%, rgba(13,44,79,.38), transparent 40%), #070707; }
.price-glow { position:absolute; left:50%; bottom:0; width:55vw; height:16vw; background:var(--cyan); filter:blur(150px); opacity:.08; transform:translateX(-50%); }
.price-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1.3rem; margin-top:6rem; }
.price-card { position:relative; min-height:430px; padding:2.4rem; display:flex; flex-direction:column; justify-content:space-between; border:1px solid rgba(255,255,255,.13); background:linear-gradient(135deg,rgba(255,255,255,.075),rgba(255,255,255,.018)); backdrop-filter:blur(18px); transition:transform .7s var(--ease),border-color .7s,box-shadow .7s; }
.price-card:hover { transform:translateY(-12px); border-color:rgba(41,216,255,.55); box-shadow:0 30px 90px rgba(0,0,0,.5),inset 0 0 40px rgba(41,216,255,.05); }
.price-card.featured { border-color:rgba(41,216,255,.36); background:linear-gradient(135deg,rgba(41,216,255,.12),rgba(255,255,255,.02)); transform:translateY(-1.6rem); }
.price-card.featured:hover { transform:translateY(-2.3rem); }
.price-card > span { color:var(--cyan); font-size:.66rem; letter-spacing:.18em; }
.price-card h3 { margin-top:auto; font-size:1.15rem; font-weight:400; letter-spacing:.18em; }
.price-card p { margin:.3rem 0; font-size:clamp(3rem,5vw,5.3rem); line-height:1; letter-spacing:-.06em; }
.price-card p small { margin-right:.4rem; color:var(--cyan); font-size:.85rem; letter-spacing:.08em; }
.price-card em { color:var(--silver); font-size:.78rem; font-style:normal; letter-spacing:.12em; }

.services { background:#070707; }
.service-grid { display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--line); border-left:1px solid var(--line); margin-top:6rem; }
.service-item { min-height:380px; padding:2rem; display:flex; flex-direction:column; border-right:1px solid var(--line); border-bottom:1px solid var(--line); transition:background .6s; }
.service-item:hover { background:rgba(41,216,255,.035); }
.service-item > span { margin-top:auto; color:rgba(255,255,255,.25); font-size:.65rem; }
.service-item h3 { margin-top:.8rem; max-width:190px; font-size:1.15rem; font-weight:300; line-height:1.55; }
.line-icon { position:relative; width:72px; height:72px; color:var(--cyan); }
.line-icon::before,.line-icon::after,.line-icon i,.line-icon span { content:""; position:absolute; display:block; border:1px solid currentColor; }
.line-icon.glass::before { left:18px; top:7px; width:34px; height:46px; border-radius:4px 4px 18px 18px; transform:skew(-5deg); }
.line-icon.glass::after { left:18px; top:32px; width:34px; border-width:1px 0 0; transform:rotate(-7deg); }
.line-icon.glass i { left:34px; top:53px; height:12px; border-width:0 0 0 1px; }
.line-icon.glass span { left:24px; top:65px; width:22px; border-width:1px 0 0; }
.line-icon.people::before,.line-icon.people::after { width:17px;height:17px;border-radius:50%;top:7px; }
.line-icon.people::before { left:12px }.line-icon.people::after { right:12px }
.line-icon.people i,.line-icon.people span { top:31px;width:27px;height:28px;border-radius:20px 20px 5px 5px; }
.line-icon.people i { left:3px }.line-icon.people span { right:3px }
.line-icon.room::before { inset:9px 4px 7px; border-radius:4px; }
.line-icon.room::after { left:14px;right:14px;bottom:18px;height:18px;border-radius:4px 4px 0 0; }
.line-icon.room i { left:20px;right:20px;top:21px;border-width:1px 0 0; }
.line-icon.dish::before { left:10px;bottom:16px;width:50px;height:24px;border-radius:50px 50px 5px 5px; }
.line-icon.dish::after { left:5px;bottom:10px;width:60px;border-width:1px 0 0; }
.line-icon.dish i { left:34px;top:12px;height:20px;border-width:0 0 0 1px; }

.drinks { min-height:100svh; display:flex; align-items:center; }
.drinks-media { position:absolute; inset:-5%; background:url('../images/gallery-07-drinks.webp') center/cover no-repeat; filter:saturate(.7); }
.drinks-overlay { position:absolute; inset:0; background:linear-gradient(90deg,rgba(5,5,5,.92) 12%,rgba(5,5,5,.48) 58%,rgba(5,5,5,.22)),linear-gradient(180deg,#050505 0,transparent 20%,transparent 80%,#050505 100%); }
.drinks-content { padding:10rem 0; }
.massive-title { margin-top:1rem; max-width:900px; font-size:clamp(4rem,11vw,11rem); font-weight:300; line-height:.82; letter-spacing:-.075em; }
.drinks-lead { max-width:580px; margin-top:3.5rem; font-size:clamp(1.05rem,1.8vw,1.5rem); line-height:1.75; }
.drinks-note { margin-top:1.4rem; color:var(--silver); font-size:.78rem; letter-spacing:.07em; }

.guidelines {
    isolation: isolate;
    background:
        radial-gradient(circle at 12% 22%, rgba(13,44,79,.3), transparent 27%),
        radial-gradient(circle at 88% 65%, rgba(41,216,255,.055), transparent 30%),
        linear-gradient(180deg, #050505, #0b0b0b 46%, #050505);
}
.guidelines::before {
    content:""; position:absolute; inset:-20%; z-index:-1; opacity:.32;
    background:linear-gradient(115deg, transparent 28%, rgba(41,216,255,.055) 43%, transparent 58%);
    animation: guideline-gradient 14s ease-in-out infinite alternate;
}
@keyframes guideline-gradient { to { transform:translate3d(9%,4%,0) rotate(2deg); } }
.guideline-ambient { position:absolute; inset:0; z-index:-1; overflow:hidden; pointer-events:none; }
.guideline-ambient::before,.guideline-ambient::after {
    content:""; position:absolute; width:55vw; height:55vw; border-radius:50%; filter:blur(100px); opacity:.11;
    background:rgba(41,216,255,.26); animation:guideline-smoke 16s ease-in-out infinite alternate;
}
.guideline-ambient::before { left:-32vw; top:15%; }
.guideline-ambient::after { right:-34vw; bottom:4%; animation-delay:-8s; }
@keyframes guideline-smoke { to { transform:translate3d(8vw,-5vw,0) scale(1.18); opacity:.18; } }
.guideline-ambient i,.guideline-ambient span { position:absolute; display:block; width:1px; height:42%; top:10%; background:linear-gradient(var(--cyan),transparent); opacity:.09; filter:blur(.3px); }
.guideline-ambient i { left:19%; transform:rotate(18deg); }
.guideline-ambient span { right:17%; top:52%; transform:rotate(-16deg); }
.guideline-heading { display:grid; grid-template-columns:.8fr 1.2fr; gap:1rem 6vw; align-items:end; }
.guideline-kicker { grid-column:1; }
.guideline-subtitle { grid-column:2; grid-row:1; justify-self:end; color:rgba(255,255,255,.4); font-size:.68rem; font-weight:500; letter-spacing:.28em; }
.guideline-title { grid-column:1/-1; margin-top:1.4rem; padding-bottom:1.5rem; border-bottom:1px solid rgba(41,216,255,.22); }
.guideline-intro { grid-column:2; max-width:650px; margin-top:1.8rem; color:#aeb7c2; font-size:clamp(1rem,1.45vw,1.22rem); line-height:1.9; }
.guideline-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(6rem,10vw,10rem) clamp(3rem,8vw,8rem); margin-top:9rem; }
.guideline-item { position:relative; min-height:430px; padding:0 clamp(1rem,2.6vw,2.6rem) 3rem; background:linear-gradient(145deg,rgba(255,255,255,.045),rgba(255,255,255,.012)); border-left:1px solid rgba(41,216,255,.22); backdrop-filter:blur(14px); }
.guideline-item:nth-child(even) { margin-top:5rem; }
.guideline-item::after { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(135deg,rgba(41,216,255,.045),transparent 42%); opacity:.65; }
.guideline-meta { position:relative; z-index:1; display:flex; align-items:flex-end; justify-content:space-between; transform:translateY(-2.7rem); }
.guideline-number { color:var(--cyan); font-size:clamp(5.6rem,9vw,9rem); font-weight:300; line-height:.75; letter-spacing:-.08em; text-shadow:0 0 38px rgba(41,216,255,.18); }
.guideline-icon { width:55px; height:55px; color:var(--cyan); opacity:.85; }
.guideline-icon svg { width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:1.35; stroke-linecap:round; stroke-linejoin:round; }
.guideline-line { position:relative; z-index:1; display:block; width:100%; height:1px; margin:-.8rem 0 2.2rem; background:linear-gradient(90deg,var(--cyan),rgba(41,216,255,.08)); transform-origin:left; }
.guideline-item h3 { position:relative; z-index:1; max-width:440px; font-size:clamp(1.35rem,2vw,2rem); font-weight:400; line-height:1.45; letter-spacing:-.025em; }
.guideline-item > p { position:relative; z-index:1; margin-top:1.3rem; color:#aeb7c2; font-size:.94rem; line-height:1.85; }
.guideline-item ul { position:relative; z-index:1; display:flex; flex-wrap:wrap; gap:.55rem; margin:1.4rem 0 0; padding:0; list-style:none; }
.guideline-item li { padding:.34rem .68rem; color:rgba(255,255,255,.8); border:1px solid rgba(255,255,255,.12); background:rgba(0,0,0,.2); font-size:.78rem; line-height:1.5; }
.guideline-item .guideline-after { color:rgba(255,255,255,.68); border-left:2px solid rgba(41,216,255,.45); padding-left:1rem; }
.guideline-notice { margin-top:11rem; padding:clamp(2rem,4vw,4rem); display:grid; grid-template-columns:auto 1fr; gap:clamp(1.5rem,4vw,3.5rem); align-items:center; border:1px solid rgba(41,216,255,.32); background:linear-gradient(110deg,rgba(41,216,255,.09),rgba(255,255,255,.025)); box-shadow:0 30px 90px rgba(0,0,0,.35),inset 0 0 60px rgba(41,216,255,.025); backdrop-filter:blur(18px); }
.guideline-notice > span { display:grid; place-items:center; width:62px; height:62px; border:1px solid var(--cyan); border-radius:50%; color:var(--cyan); font-size:1.5rem; font-weight:500; box-shadow:0 0 30px rgba(41,216,255,.12); }
.guideline-notice strong { display:block; font-size:clamp(1.25rem,2.2vw,2rem); font-weight:400; line-height:1.55; }
.guideline-notice p { max-width:850px; margin-top:.9rem; color:#aeb7c2; font-size:.88rem; line-height:1.8; }

.gallery-section { background:#050505; }
.gallery-heading { display:grid; grid-template-columns:1.4fr .6fr; gap:4rem; align-items:end; }
.gallery-intro { max-width:340px; padding-bottom:.6rem; color:var(--silver); font-size:1rem; }
.masonry { width:min(1500px,94vw); margin:7rem auto 0; columns:3; column-gap:1rem; }
.gallery-item { position:relative; margin:0 0 1rem; break-inside:avoid; overflow:hidden; background:#0d0d0d; }
.gallery-item img { width:100%; height:auto; min-height:280px; object-fit:cover; filter:saturate(.78) brightness(.84); transition:transform 1.4s var(--ease),filter 1.2s; }
.gallery-item:nth-child(3n+1) img { aspect-ratio:4/5; }
.gallery-item:nth-child(3n+2) img { aspect-ratio:16/11; }
.gallery-item:nth-child(3n) img { aspect-ratio:1/1; }
.gallery-item:hover img { transform:scale(1.055); filter:saturate(1) brightness(1); }
.gallery-item::after { content:""; position:absolute; inset:0; background:linear-gradient(transparent 60%,rgba(0,0,0,.8)); pointer-events:none; }
.gallery-item figcaption { position:absolute; left:1.4rem; right:1.4rem; bottom:1.2rem; z-index:2; display:flex; align-items:center; gap:1rem; color:rgba(255,255,255,.86); font-size:.72rem; letter-spacing:.08em; }
.gallery-item figcaption span { color:var(--cyan); font-size:.6rem; }

.weekly { background:linear-gradient(180deg,#080808,#0d0d0d); }
.week-list { margin-top:6rem; border-top:1px solid var(--line); }
.week-row { position:relative; min-height:100px; display:grid; grid-template-columns:70px 1fr 1fr; align-items:center; border-bottom:1px solid var(--line); overflow:hidden; }
.week-row::before { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(41,216,255,.1),transparent 70%); transform:translateX(-102%); transition:transform .7s var(--ease); }
.week-row:hover::before { transform:translateX(0); }
.week-row > span { color:var(--cyan); font-size:.62rem; }
.week-row h3 { position:relative; font-size:clamp(1.35rem,2.5vw,2.1rem); font-weight:300; }
.week-row p { position:relative; color:var(--silver); font-size:.83rem; letter-spacing:.16em; text-transform:uppercase; }
.week-row i { position:absolute; right:0; width:48px; height:1px; background:var(--cyan); transform:scaleX(.35); transform-origin:right; transition:transform .6s; }
.week-row:hover i { transform:scaleX(1); }
.weekly-note { margin-top:2rem; color:var(--silver); font-size:.78rem; text-align:right; }

.notice { background:#0d0d0d; }
.notice-grid { display:grid; grid-template-columns:1fr 1fr; gap:8vw; }
.notice-list { margin:0; padding:0; list-style:none; border-top:1px solid var(--line); }
.notice-list li { display:grid; grid-template-columns:50px 1fr; gap:1rem; padding:1.5rem 0; border-bottom:1px solid var(--line); }
.notice-list span { color:var(--cyan); font-size:.65rem; letter-spacing:.15em; }
.notice-list p { color:var(--silver); font-size:.95rem; }

.contact { min-height:92vh; display:flex; align-items:center; text-align:center; background:radial-gradient(circle at 50% 50%,rgba(13,44,79,.3),transparent 38%),#050505; }
.contact-rings,.contact-rings::before,.contact-rings::after,.contact-rings i,.contact-rings span { position:absolute; left:50%; top:50%; border:1px solid rgba(41,216,255,.09); border-radius:50%; transform:translate(-50%,-50%); }
.contact-rings { width:64vw;height:64vw; }
.contact-rings::before,.contact-rings::after { content:""; }
.contact-rings::before { width:78%;height:78%; }.contact-rings::after{width:54%;height:54%}.contact-rings i{width:31%;height:31%}.contact-rings span{width:12%;height:12%;box-shadow:0 0 100px rgba(41,216,255,.12)}
.contact-content .kicker { text-align:center; }
.contact-title { max-width:970px; margin-left:auto; margin-right:auto; }
.line-card { max-width:760px; margin:5rem auto 0; display:grid; grid-template-columns:1.35fr .65fr; text-align:left; border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.045); backdrop-filter:blur(20px); }
.line-card > div { padding:2rem 2.3rem; }
.line-card > div + div { border-left:1px solid var(--line); }
.line-card span { color:var(--cyan); font-size:.64rem; font-weight:600; letter-spacing:.2em; }
.line-card p { margin-top:.6rem; color:var(--silver); font-size:.9rem; }
.line-card .placeholder { color:var(--white); letter-spacing:.25em; }

footer { min-height:70vh; padding:9rem 4vw 3rem; display:flex; flex-direction:column; align-items:center; justify-content:center; background:#020202; text-align:center; border-top:1px solid rgba(255,255,255,.07); }
.footer-mark { width:44px;height:35px;margin-bottom:2rem;transform:scale(.8); }
.footer-brand { font-size:clamp(3rem,8vw,7rem); line-height:1; font-weight:500; letter-spacing:-.05em; }
.footer-brand span { display:block; margin-top:1rem; color:var(--silver); font-size:.18em; font-weight:300; letter-spacing:.38em; text-transform:uppercase; }
footer > p:nth-of-type(2) { margin-top:4rem; color:var(--silver); font-size:.7rem; letter-spacing:.3em; text-transform:uppercase; }
footer > p:nth-of-type(3) { margin-top:.5rem; font-size:.68rem; letter-spacing:.22em; }
footer > p b { color:var(--cyan); }
footer small { margin-top:5rem; color:rgba(255,255,255,.38); font-size:.62rem; letter-spacing:.12em; }

.reveal,.line-reveal,.reveal-image { will-change:transform,opacity; }

@media (max-width: 900px) {
    :root { --page: min(100% - 2.5rem, 700px); }
    .section-space { padding:7rem 0; }
    .hero { min-height:620px; }
    .brand-lockup strong { font-size:clamp(6rem,30vw,10rem); }
    .brand-lockup h1 > span { letter-spacing:.42em; }
    .about-grid { grid-template-columns:1fr; gap:2rem; }
    .section-number { position:absolute; right:0; top:-2rem; font-size:8rem; writing-mode:initial; }
    .about-copy { padding-top:2rem; }
    .event-timeline { grid-template-columns:1fr; gap:0; margin-top:4rem; padding-left:2rem; }
    .event-line { left:.3rem; right:auto; top:1rem; bottom:1rem; width:1px; height:auto; }
    .event-point { padding:0 0 3.7rem 2rem; }
    .event-point::before { left:-2.05rem; }
    .event-point > span { font-size:2.6rem; }
    .event-point small { margin-top:.8rem; }
    .flow-track { grid-template-columns:1fr; margin-top:4rem; padding-left:1rem; }
    .flow-progress { left:1.35rem;right:auto;top:1rem;bottom:1rem;width:1px;height:auto; }
    .flow-step { display:grid; grid-template-columns:40px 36px 1fr; align-items:center; padding:1.4rem 0; text-align:left; }
    .flow-step > i { margin:0 auto; }.flow-step h3{margin:0;max-width:none}.flow-step > span{font-size:.6rem}
    .price-grid { grid-template-columns:1fr; }
    .price-card,.price-card.featured { min-height:350px; transform:none; }.price-card.featured:hover{transform:translateY(-12px)}
    .service-grid { grid-template-columns:repeat(2,1fr); }
    .service-item { min-height:320px; }
    .gallery-heading { grid-template-columns:1fr; gap:1.5rem; }
    .guideline-heading { grid-template-columns:1fr; }
    .guideline-kicker,.guideline-subtitle,.guideline-title,.guideline-intro { grid-column:1; }
    .guideline-subtitle { grid-row:auto; justify-self:start; margin-top:.6rem; }
    .guideline-title { margin-top:1rem; }
    .guideline-intro { margin-top:1rem; }
    .guideline-grid { gap:6rem 2rem; margin-top:7rem; }
    .guideline-item { min-height:470px; padding-left:1.5rem; padding-right:1.5rem; }
    .guideline-item:nth-child(even) { margin-top:3rem; }
    .masonry { columns:2; }
    .notice-grid { grid-template-columns:1fr; gap:4rem; }
    .contact-rings { width:110vw;height:110vw; }
}

@media (max-width: 600px) {
    body { font-size:15px; }
    .section-space { padding:6rem 0; }
    .display-title { font-size:clamp(2.6rem,13vw,4.2rem); }
    .hero { min-height:650px; }
    .hero-media { inset:0; background-position:58% center; transform:none; }
    .hero-content { margin-top:-2rem; }
    .hero-eyebrow { font-size:.58rem; letter-spacing:.2em; }
    .brand-symbol { transform:scale(.85); margin-bottom:1.4rem; }
    .brand-lockup h1 > span { font-size:1rem; letter-spacing:.35em; margin-bottom:.8rem; }
    .brand-lockup strong { font-size:clamp(5.6rem,32vw,8rem); }
    .brand-lockup em { font-size:.86rem; letter-spacing:.3em; }
    .hero-pillar { font-size:.6rem; letter-spacing:.16em; }.hero-pillar span{margin:0 .25rem}
    .hero-position { max-width: 88vw; margin-top: 1.1rem; padding: .55rem .75rem; font-size: .94rem; line-height: 1.55; letter-spacing: .08em; }
    .hero-line { max-width:85vw; margin:.75rem auto 0; font-size:.8rem; }
    .scroll-cue { bottom:1.5rem; }
    .about-copy > p { font-size:1rem; line-height:1.8; }
    .event-point h3 { font-size:1.15rem; }
    .price-grid { margin-top:4rem; }.price-card{padding:1.8rem;min-height:310px}.price-card p{font-size:3.8rem}
    .service-grid { grid-template-columns:1fr; }.service-item{min-height:250px}.line-icon{transform:scale(.85);transform-origin:left top}
    .drinks { min-height:88svh; }.drinks-media{background-position:57% center}.drinks-overlay{background:linear-gradient(90deg,rgba(5,5,5,.94),rgba(5,5,5,.48)),linear-gradient(180deg,#050505,transparent 25%,transparent 75%,#050505)}
    .massive-title { font-size:clamp(3.5rem,19vw,6rem); }
    .guideline-grid { grid-template-columns:1fr; gap:5.5rem; margin-top:6rem; }
    .guideline-item,.guideline-item:nth-child(even) { min-height:0; margin-top:0; padding:0 1.2rem 2.6rem; }
    .guideline-meta { transform:translateY(-2rem); }
    .guideline-number { font-size:5.8rem; }
    .guideline-icon { width:46px; height:46px; }
    .guideline-item h3 { font-size:1.35rem; }
    .guideline-item > p { font-size:.9rem; }
    .guideline-notice { grid-template-columns:1fr; margin-top:7rem; text-align:left; }
    .guideline-notice > span { width:50px; height:50px; }
    .masonry { width:calc(100% - 1.5rem); columns:1; }
    .gallery-item img,.gallery-item:nth-child(n) img { min-height:0; aspect-ratio:4/3; }
    .gallery-item:nth-child(4n+1) img { aspect-ratio:4/5; }
    .week-row { grid-template-columns:42px 1fr; min-height:90px; }.week-row p{grid-column:2;font-size:.65rem;margin-top:-1.5rem}.week-row i{display:none}
    .line-card { grid-template-columns:1fr; margin-top:3.5rem; }.line-card > div + div{border-left:0;border-top:1px solid var(--line)}
    footer { min-height:65vh; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior:auto; }
    *, *::before, *::after { animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; }
    .grain,#particle-field,.light-beam { display:none; }
    .hero-media { transform:none!important; }
}
