/* Estély · fekete-arany belépőkártya, sötétzöld este. Szűk hasáb, nagy betűk, sok levegő. */

@font-face{font-family:'Estely Cim';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/estely-cim.woff2) format('woff2')}
@font-face{font-family:'Spectral';font-style:normal;font-weight:300;font-display:swap;src:url(fonts/spectral-light.woff2) format('woff2')}
@font-face{font-family:'Spectral';font-style:italic;font-weight:300;font-display:swap;src:url(fonts/spectral-light-italic.woff2) format('woff2')}
@font-face{font-family:'Spectral';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/spectral-regular.woff2) format('woff2')}

:root{
  --night:#0b1310;
  --night-2:#0f1b17;
  --night-3:#14231e;
  --ivory:#efe7d5;
  --muted:#b9b19d;
  --gold:#d2b071;
  --gold-deep:#a8854a;
  --gold-line:rgba(210,176,113,.38);
  --gold-faint:rgba(210,176,113,.16);
  --card:#0b0d0c;
  --display:'Estely Cim','Didot',Georgia,serif;
  --serif:'Spectral',Georgia,serif;
  --ease:cubic-bezier(.2,.7,.2,1);
  --bk-edit:rgba(210,176,113,.7);
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;background:var(--night)}
body{margin:0;min-height:100vh;background:var(--night);color:var(--ivory);font:300 1.125rem/1.7 var(--serif);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.locked{overflow:hidden;height:100svh;touch-action:none}
img{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
::selection{background:rgba(210,176,113,.35);color:#fff}

/* ───────────── Fejléc: a kártya a lámpa alatt ───────────── */
.hero{position:relative;min-height:100svh;display:grid;place-items:center;padding-bottom:92px;overflow:hidden;isolation:isolate;
  background:
    radial-gradient(60% 46% at 46% 42%,rgba(214,182,120,.10),transparent 70%),
    radial-gradient(120% 90% at 50% 45%,var(--night-3) 0%,var(--night) 62%,#070c0a 100%)}
/* Bársonyos asztallap: finom, nem ismétlődő szálak */
.hero::before{content:"";position:absolute;inset:0;z-index:-1;opacity:.5;pointer-events:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .7 0 0 0 0 .75 0 0 0 0 .7 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)'/%3E%3C/svg%3E")}
.room{position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(70% 55% at 50% 44%,rgba(4,7,6,.15),rgba(4,7,6,.86) 85%);opacity:calc(1 - var(--room,1));transition:opacity .3s linear}
.hero.is-opening .room{transition:none}
.stage{position:relative;z-index:3;perspective:1500px;perspective-origin:50% 8%;padding-top:10px}
.lift{transform-origin:50% 62%;will-change:transform}
.cue{position:absolute;z-index:3;left:50%;bottom:max(14px,2.2svh);transform:translateX(-50%);font:italic 300 .9375rem/1 var(--serif);color:var(--muted);text-decoration:none;padding:10px 12px;transition:opacity .6s ease}
.cue::after{content:"";display:block;width:1px;height:22px;margin:10px auto 0;background:linear-gradient(var(--gold),transparent)}
.hero.is-opening .cue{opacity:0;pointer-events:none}

/* ───────────── A kártya ───────────── */
.card{--lift:1;position:relative;width:var(--cw,90vw);height:var(--ch,150vw);border-radius:4px;overflow:hidden;background:var(--card);container-type:size;
  box-shadow:0 0 0 1px rgba(210,176,113,.12),
    0 calc(2px + 26px * var(--lift)) calc(6px + 60px * var(--lift)) calc(-4px - 10px * var(--lift)) rgba(0,0,0,.7),
    0 calc(1px + 60px * var(--lift)) calc(3px + 120px * var(--lift)) calc(-30px * var(--lift)) rgba(0,0,0,.55)}
.card-gl{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .45s ease}
.card.gl-on .card-gl{opacity:1}
/* CSS-tartalék (WebGL nélkül, vagy amíg a betűk töltődnek): ugyanaz a kártya, festett fóliával */
.card.no-gl,.card:not(.gl-on){background:
  linear-gradient(115deg,transparent 30%,rgba(255,236,190,.06) 46%,transparent 60%),
  radial-gradient(90% 70% at 25% 15%,#16191a,#0a0c0b 70%)}
.card:not(.gl-on)::after{content:"";position:absolute;inset:4.5cqmin;border:max(1.2px,.32cqmin) solid var(--gold-deep);border-radius:5cqmin;pointer-events:none;
  -webkit-mask:radial-gradient(circle at 0 0,transparent 5cqmin,#000 calc(5cqmin + 1px)) top left/51% 51% no-repeat,radial-gradient(circle at 100% 0,transparent 5cqmin,#000 calc(5cqmin + 1px)) top right/51% 51% no-repeat,radial-gradient(circle at 0 100%,transparent 5cqmin,#000 calc(5cqmin + 1px)) bottom left/51% 51% no-repeat,radial-gradient(circle at 100% 100%,transparent 5cqmin,#000 calc(5cqmin + 1px)) bottom right/51% 51% no-repeat}
.card-face{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:12cqw 7cqw 11.5cqw;text-align:center;color:var(--gold)}
.card-face [data-mask]{display:block;width:100%;white-space:nowrap;margin:0;transition:color .45s ease}
.card.gl-on .card-face [data-mask]{color:transparent}
.card.gl-on .c-mono{opacity:0}
.c-kicker{font:italic 300 max(12px,3.9cqw)/1.2 var(--serif);letter-spacing:.02em}
.c-mono{flex:none;width:52cqw;aspect-ratio:1;display:flex;align-items:center;justify-content:center;gap:4cqw;border-radius:50%;
  box-shadow:inset 0 0 0 max(1px,.5cqw) var(--gold-deep),inset 0 0 0 max(2px,1.6cqw) var(--card),inset 0 0 0 max(2.5px,1.85cqw) var(--gold-deep);
  font:400 22cqw/1 var(--display);color:var(--gold);transition:opacity .45s ease}
.c-text{width:100%;display:flex;flex-direction:column;align-items:center}
.c-names{margin:0;font-weight:400;display:flex;flex-direction:column;align-items:center;width:100%}
.c-n{font:400 var(--nfs,14.5cqw)/1.08 var(--display);letter-spacing:.005em}
.c-amp{font:italic 300 max(13px,5.2cqw)/1.25 var(--serif)}
.c-date{margin-top:4.2cqw!important;font:400 max(15px,7.2cqw)/1.15 var(--display);letter-spacing:.06em}
.c-day{font:italic 300 max(13px,4.5cqw)/1.35 var(--serif)}
.c-place{margin-top:1.6cqw!important;font:300 max(12px,4cqw)/1.35 var(--serif)}

/* Fekvő kártya (asztali gép): monogram balra, szöveg jobbra */
.card.is-land .card-face{display:grid;grid-template-columns:44% 1fr;grid-template-rows:auto 1fr;align-items:center;justify-items:center;padding:7.5cqh 8cqh 8.5cqh}
.card.is-land .c-kicker{grid-column:1/-1;font-size:max(12px,3.3cqh)}
.card.is-land .c-mono{grid-row:2;width:66cqh;gap:4.5cqh;font-size:28cqh;box-shadow:inset 0 0 0 max(1px,.6cqh) var(--gold-deep),inset 0 0 0 max(2px,2cqh) var(--card),inset 0 0 0 max(2.5px,2.3cqh) var(--gold-deep)}
.card.is-land .c-text{grid-row:2;padding-inline:2cqh}
.card.is-land .c-n{font-size:var(--nfs,13.5cqh)}
.card.is-land .c-amp{font-size:max(13px,4.6cqh)}
.card.is-land .c-date{margin-top:4.2cqh!important;font-size:max(15px,7cqh)}
.card.is-land .c-day{font-size:max(13px,4cqh)}
.card.is-land .c-place{margin-top:1.4cqh!important;font-size:max(12px,3.6cqh)}

/* ───────────── Nyitás: koppintás, kihagyás ───────────── */
.scene-ui{position:fixed;z-index:30;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;gap:6px;padding:0 20px calc(max(10px,1.6svh) + env(safe-area-inset-bottom));pointer-events:none;transition:opacity .5s ease}
.scene-ui.is-gone{opacity:0}
.scene-ui.is-gone *{pointer-events:none!important}
.scene-hint{margin:0;font:italic 300 1.0625rem/1.3 var(--serif);color:var(--ivory)}
.scene-skip{pointer-events:auto;appearance:none;background:none;border:0;padding:10px 6px;font:400 .875rem/1 var(--serif);color:var(--muted);text-decoration:underline;text-underline-offset:4px;text-decoration-color:rgba(185,177,157,.45);cursor:pointer}
.scene-skip:hover{color:var(--ivory)}

/* ───────────── Az oldal ───────────── */
main,footer{position:relative}
main>section{width:min(100% - 48px,34rem);margin-inline:auto;padding-block:clamp(84px,15vw,150px) 0;text-align:center}
.h2{margin:0 0 .8em;font:400 clamp(2.1rem,8.4vw,3rem)/1.08 var(--display);color:var(--gold);letter-spacing:.005em}
p{margin:0 0 1em}

.invite{padding-top:clamp(96px,18vw,170px)!important}
.invite-text{margin:0 auto;max-width:24ch;font:italic 300 clamp(1.55rem,6.4vw,2.3rem)/1.38 var(--serif);color:var(--ivory);text-wrap:balance}
.when{margin:clamp(56px,12vw,96px) 0 clamp(40px,8vw,64px)}
.when::before{content:"";display:block;width:1px;height:56px;margin:0 auto 34px;background:linear-gradient(transparent,var(--gold))}
.when-date{margin:0;font:400 clamp(2.9rem,13vw,5rem)/1 var(--display);color:var(--gold);letter-spacing:.03em;white-space:nowrap}
.when-day{margin:.7em 0 0;font:italic 300 1.3rem/1.4 var(--serif);color:var(--ivory)}
.when-place{margin:.3em 0 0;font-size:1.125rem;color:var(--muted)}

.btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 28px;border:1px solid var(--gold);border-radius:1px;background:var(--gold);color:#0b1310;font:400 1rem/1 var(--serif);letter-spacing:.04em;text-decoration:none;cursor:pointer;transition:background .25s ease,color .25s ease,transform .15s ease}
.btn:hover{background:#e2c48b}
.btn:active{transform:translateY(1px)}
.btn.ghost{background:transparent;color:var(--gold)}
.btn.ghost:hover{background:rgba(210,176,113,.1)}

.portrait{position:relative;width:min(100%,24rem);margin:0 auto clamp(48px,10vw,72px);aspect-ratio:4/5;background:var(--night-2)}
.portrait img{width:100%;height:100%;object-fit:cover}
.portrait::after{content:"";position:absolute;inset:12px;border:1px solid rgba(239,231,213,.55);pointer-events:none}
.story-text{text-align:left}
.story-text .h2{text-align:center}
.story-text p,.story-text li{font-size:1.1875rem}
.story-text h3{font:400 1.5rem/1.2 var(--display);color:var(--gold);margin:1.4em 0 .4em;text-align:center}
.story-text ul{padding-left:1.1em}
.story-text strong{font-weight:400;color:var(--ivory)}

.order{list-style:none;margin:0;padding:0}
.order li{display:grid;justify-items:center;gap:4px;padding:30px 0}
.order li+li{border-top:1px solid var(--gold-faint)}
.o-time{font:400 clamp(2rem,8vw,2.6rem)/1 var(--display);color:var(--gold);letter-spacing:.04em}
.o-what{margin-top:8px;font:400 1.3rem/1.35 var(--serif);color:var(--ivory)}
.o-desc{font:italic 300 1.0625rem/1.5 var(--serif);color:var(--muted);max-width:28ch}

.venue-kicker{margin:0 0 .4em;font:italic 300 1.125rem/1.3 var(--serif);color:var(--muted)}
.venue-name{margin:0;font:400 clamp(2.3rem,10vw,3.6rem)/1.05 var(--display);color:var(--gold);text-wrap:balance}
.venue-addr{margin:.9em 0 1.6em;color:var(--ivory)}
.venue-addr:empty{display:none}
.venue-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}

.good-list{margin:0;text-align:left}
.good-list>div{padding:22px 0;border-top:1px solid var(--gold-faint)}
.good-list>div:last-child{border-bottom:1px solid var(--gold-faint)}
.good-list dt{font:400 1.5rem/1.2 var(--display);color:var(--gold);margin-bottom:.35em}
.good-list dd{margin:0}
.good-list dd p:last-child{margin-bottom:0}
.good-list ul{margin:0;padding-left:1.1em}
.good-list li{margin:.25em 0}

.rsvp{padding-bottom:clamp(80px,14vw,140px)}
.rsvp-box{position:relative;padding:clamp(36px,8vw,60px) clamp(22px,6vw,48px);background:var(--night-2);border:1px solid var(--gold-line);text-align:left}
.rsvp-box::before{content:"";position:absolute;inset:7px;border:1px solid var(--gold-faint);pointer-events:none}
.rsvp-box .h2{text-align:center;font-size:clamp(1.9rem,7.4vw,2.6rem)}
.rsvp-intro{text-align:center;color:var(--muted);margin:0 auto 2em;max-width:30rem}
.field{display:grid;gap:8px;margin:0 0 24px;border:0;padding:0;min-width:0}
.field>label,.field legend{padding:0;font:400 1rem/1.4 var(--serif);color:var(--ivory)}
.field small{font:italic 300 .9375rem/1.45 var(--serif);color:var(--muted)}
.input{width:100%;min-height:50px;padding:12px 2px;border:0;border-bottom:1px solid rgba(210,176,113,.55);border-radius:0;background:transparent;font:300 1.125rem/1.4 var(--serif);color:var(--ivory);transition:border-color .2s ease}
.input::placeholder{color:rgba(185,177,157,.75)}
.input:focus{outline:none;border-bottom-color:var(--gold);box-shadow:0 1px 0 var(--gold)}
select.input{appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23d2b071' stroke-width='1.2'/%3E%3C/svg%3E") right 4px center/12px no-repeat;padding-right:24px}
select.input option{background:var(--night-2);color:var(--ivory)}
textarea.input{min-height:96px;resize:vertical;border:1px solid rgba(210,176,113,.4);padding:12px}
.choice{display:grid;gap:10px}
.choice label{display:flex;align-items:center;gap:14px;min-height:54px;padding:12px 16px;border:1px solid rgba(210,176,113,.35);font:300 1.125rem/1.3 var(--serif);cursor:pointer;transition:border-color .2s,background .2s}
.choice input{appearance:none;width:18px;height:18px;margin:0;border:1px solid var(--gold);border-radius:50%;flex:none;display:grid;place-items:center}
.choice input::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--gold);transform:scale(0);transition:transform .2s var(--ease)}
.choice input:checked::after{transform:scale(1)}
.choice label:has(input:checked){border-color:var(--gold);background:rgba(210,176,113,.08)}
.cond{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--ease)}
.cond>div{overflow:hidden}
.cond.show{grid-template-rows:1fr}
.form-error{min-height:1.4em;margin:0 0 12px;font:400 .9375rem/1.4 var(--serif);color:#f0a38f}
.rsvp-submit{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:8px}
.demo-note{margin:0;font:italic 300 .875rem/1.45 var(--serif);color:var(--muted);text-align:center}
.thanks{text-align:center;padding:12px 0}
.thanks p:first-child{font:400 2.4rem/1.1 var(--display);color:var(--gold);margin-bottom:.3em}

.closing{padding:clamp(70px,12vw,120px) 24px calc(56px + env(safe-area-inset-bottom));text-align:center;border-top:1px solid var(--gold-faint);background:linear-gradient(var(--night),#070c0a)}
.mini-mono{width:84px;height:84px;margin:0 auto 22px;border-radius:50%;display:flex;align-items:center;justify-content:center;gap:6px;font:400 32px/1 var(--display);color:var(--gold);
  box-shadow:inset 0 0 0 1px var(--gold-deep),inset 0 0 0 5px var(--night),inset 0 0 0 6px var(--gold-deep)}
.closing-names{margin:0;font:400 clamp(2rem,8vw,2.8rem)/1.1 var(--display);color:var(--ivory)}
.closing-date{margin:.5em 0 0;color:var(--muted);letter-spacing:.06em}
.replay{margin-top:28px;appearance:none;background:none;border:0;padding:10px;font:italic 300 1rem/1 var(--serif);color:var(--muted);text-decoration:underline;text-underline-offset:4px;cursor:pointer}
.replay:hover{color:var(--gold)}

/* Belépőkód */
.gate{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:24px;background:radial-gradient(120% 90% at 50% 40%,var(--night-3),var(--night) 70%)}
.gate form{width:min(100%,420px);text-align:center}
.gate h1{margin:0 0 .4em;font:400 2.4rem/1.1 var(--display);color:var(--gold)}
.gate p{color:var(--muted)}
.gate .input{text-align:center;letter-spacing:.14em;font-size:1.4rem}

/* Görgetésre megjelenés */
.js .rv{opacity:0;transform:translateY(16px);transition:opacity .9s ease,transform 1.1s var(--ease)}
.js .rv.in{opacity:1;transform:none}

@media (min-width:900px){
  main>section{width:min(100% - 64px,36rem)}
  .story{width:min(100% - 64px,58rem)!important;display:grid;grid-template-columns:24rem 1fr;gap:64px;align-items:center;text-align:left}
  .story .portrait{margin:0}
  .story-text .h2{text-align:left}
  .story-text h3{text-align:left}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .rv{opacity:1;transform:none;transition:none}
}
