/* Csillagtérkép · prototípus. Az esküvő estéjének valódi égboltja, amely csillagtérképpé gyűlik össze. */

@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:300 700;font-display:swap;src:url(fonts/cormorant-garamond-normal.woff2) format('woff2')}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:300 700;font-display:swap;src:url(fonts/cormorant-garamond-italic.woff2) format('woff2')}
@font-face{font-family:'Jost';font-style:normal;font-weight:300 700;font-display:swap;src:url(fonts/jost-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Jost';font-style:normal;font-weight:300 700;font-display:swap;src:url(fonts/jost-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{
  --night:#070b1c;
  --night-2:#0c1330;
  --night-3:#131c40;
  --text:#ece6d8;
  --muted:#a9aec4;
  --gold:#d8b46f;
  --gold-soft:rgba(216,180,111,.42);
  --rule:rgba(169,174,196,.18);
  --serif:'Cormorant Garamond',Georgia,serif;
  --sans:'Jost',system-ui,sans-serif;
  --ease-out:cubic-bezier(.16,.84,.24,1);
  /* Z-rétegek: oldal < nyitójelenet < hullócsillag */
  --z-scene:40;--z-meteor:45;
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;background:var(--night)}
body{margin:0;background:var(--night);color:var(--text);font:400 1.2rem/1.6 var(--serif);font-feature-settings:'kern' 1;-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.locked{overflow:hidden;height:100svh}
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}
p{margin:0 0 1em}

/* ───────────── Fejléc: éjszakai égbolt, benne a csillagtérkép ───────────── */
.hero{position:relative;min-height:100svh;display:grid;grid-template-rows:1fr auto;justify-items:center;overflow:hidden;isolation:isolate;
  background:radial-gradient(120% 70% at 50% 100%,#1b2650 0%,transparent 60%),linear-gradient(180deg,#04060f 0%,#0a1028 55%,#121a3c 100%)}
.hero-sky{position:absolute;inset:0;z-index:-2;background:url(kepek/tejut.webp) 50% 0/cover no-repeat;opacity:.55;-webkit-mask-image:linear-gradient(180deg,#000 40%,transparent 92%);mask-image:linear-gradient(180deg,#000 40%,transparent 92%)}
.hero-horizon{position:absolute;left:0;right:0;bottom:0;z-index:-1;width:100%;height:auto;max-height:34svh;object-fit:cover;object-position:50% 100%;pointer-events:none}
.hero-chart-wrap{align-self:center;padding:max(28px,4svh) 20px 0}
.chart{display:block;width:min(88vw,58svh,640px);aspect-ratio:1;height:auto}
.hero.is-hidden .chart{visibility:hidden}
.hero-text{position:relative;text-align:center;padding:2svh 24px max(30px,6svh);transition:opacity 1s ease .2s,transform 1.1s var(--ease-out) .2s}
.hero.is-hidden-text .hero-text{opacity:0;transform:translateY(14px)}
.names{margin:0;font:300 clamp(2.4rem,7.4vw,4.6rem)/1 var(--serif);letter-spacing:.08em;text-transform:uppercase;color:var(--text);text-wrap:balance}
.names i{font:italic 300 .8em/1 var(--serif);letter-spacing:0;text-transform:none;color:var(--gold);margin:0 .18em}
.when{margin:.7em 0 .25em;font:500 clamp(1.1rem,2.4vw,1.35rem)/1.4 var(--serif);letter-spacing:.04em;color:var(--text)}
.coords{margin:0;font:400 .875rem/1.5 var(--sans);letter-spacing:.06em;color:var(--muted);font-variant-numeric:tabular-nums}
@media (min-width:1000px){
  .hero{grid-template-columns:1fr 1fr;grid-template-rows:1fr;align-items:center;padding:0 max(48px,calc((100vw - 1240px) / 2))}
  .hero-chart-wrap{padding:0;justify-self:end}
  .chart{width:min(46vw,82svh,720px)}
  .hero-text{text-align:left;justify-self:start;padding:0 0 0 clamp(32px,4vw,72px);max-width:32rem}
  .names{font-size:clamp(3rem,4.6vw,4.8rem);line-height:1.02}
  .names i{display:block;margin:.12em 0}
}

/* ───────────── Nyitójelenet ───────────── */
.scene{position:fixed;inset:0;z-index:var(--z-scene);touch-action:manipulation;cursor:pointer;-webkit-tap-highlight-color:transparent}
.scene canvas{position:absolute;inset:0;width:100%;height:100%}
.scene-ui{position:absolute;inset:0;display:grid;grid-template-rows:auto 1fr auto;justify-items:center;pointer-events:none;padding:max(20px,4svh) 24px max(24px,5svh)}
.scene-title{margin:0;font:italic 500 clamp(1.15rem,2.6vw,1.4rem)/1.3 var(--serif);color:var(--muted);text-align:center;transition:opacity .6s ease}
.scene-bottom{grid-row:3;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;transition:opacity .6s ease}
.scene-hint{margin:0;font:italic 500 clamp(1.2rem,3vw,1.45rem)/1.3 var(--serif);color:var(--text);min-height:1.3em;text-shadow:0 1px 12px rgba(0,0,0,.6)}
.scene-skip{pointer-events:auto;appearance:none;background:none;border:0;padding:8px 4px;font:500 .875rem/1 var(--sans);color:var(--muted);text-decoration:underline;text-underline-offset:4px;text-decoration-color:rgba(169,174,196,.4);cursor:pointer}
.scene-skip:hover{color:var(--text)}
.scene.is-gathering .scene-title,.scene.is-gathering .scene-bottom{opacity:0}

/* ───────────── Oldal ───────────── */
main,footer{position:relative}
.wrap{width:min(100% - 40px,1180px);margin-inline:auto}
section{padding:clamp(80px,12vw,150px) 0}
.h2{margin:0 0 .45em;font:300 clamp(2.4rem,5.6vw,3.8rem)/1.05 var(--serif);letter-spacing:-.005em;color:var(--text)}
.h2 em{font-style:italic;color:var(--gold)}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 26px;border:1px solid var(--gold);border-radius:999px;background:var(--gold);color:#0b0f22;font:600 .95rem/1 var(--sans);letter-spacing:.02em;text-decoration:none;cursor:pointer;transition:background .25s ease,color .25s ease,transform .15s ease}
.btn:hover{background:#e6c788}
.btn:active{transform:translateY(1px)}
.btn.ghost{background:transparent;color:var(--gold)}
.btn.ghost:hover{background:rgba(216,180,111,.1)}

/* Meghívás: nagy, nyugodt mondat */
.invite{text-align:center}
.invite-text{max-width:30ch;margin:0 auto;font:300 clamp(1.7rem,4.2vw,2.6rem)/1.35 var(--serif);color:var(--text);text-wrap:balance}
.invite-text em{font-style:italic;color:var(--gold)}
.invite-meta{margin:2.2em auto 0;display:flex;flex-wrap:wrap;justify-content:center;gap:12px 40px;font:400 .95rem/1.4 var(--sans);color:var(--muted)}
.invite-meta b{display:block;font:500 1.35rem/1.3 var(--serif);color:var(--text);letter-spacing:.02em}
.invite .btn{margin-top:2.4em}

/* Történet: holdfényes portré */
.story{display:grid;gap:clamp(40px,6vw,96px);align-items:center}
.moon{position:relative;width:min(78vw,380px);aspect-ratio:1;margin:0 auto;border-radius:50%;overflow:hidden;box-shadow:0 0 0 1px rgba(216,180,111,.3),0 0 80px 10px rgba(150,170,230,.12)}
.moon img{width:100%;height:100%;object-fit:cover;filter:url(#holdfeny) contrast(1.05)}
.moon::after{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 34% 30%,rgba(255,255,255,.14),transparent 55%),radial-gradient(circle at 70% 78%,rgba(7,11,28,.5),transparent 60%)}
.story-text p{font-size:clamp(1.25rem,2vw,1.4rem);max-width:36ch;color:var(--text)}
.story-text p+p{color:var(--muted)}
@media (min-width:860px){.story{grid-template-columns:5fr 6fr}.moon{margin:0 0 0 auto}}

/* Program: az este íve */
.evening{background:linear-gradient(180deg,var(--night) 0%,var(--night-2) 30%,var(--night-2) 70%,var(--night) 100%)}
.evening-head{text-align:center;margin-bottom:clamp(40px,6vw,72px)}
.evening-head p{color:var(--muted)}
.path{position:relative;list-style:none;margin:0;padding:0}
.path li{position:relative;display:grid;grid-template-columns:4.6rem 1fr;gap:20px;padding:0 0 30px}
.path li::before{content:"";position:absolute;left:calc(4.6rem + 9px);top:.95em;bottom:-.25em;width:1px;background:linear-gradient(var(--gold-soft),rgba(216,180,111,.12))}
.path li:last-child::before{display:none}
.path li::after{content:"";position:absolute;left:calc(4.6rem + 5px);top:.62em;width:9px;height:9px;border-radius:50%;background:#fff6dd;box-shadow:0 0 10px 3px rgba(255,230,170,.55)}
.p-time{font:500 1.45rem/1.2 var(--serif);color:var(--gold);text-align:right;font-variant-numeric:lining-nums}
.p-what{padding-left:16px}
.p-what h3{margin:0 0 .15em;font:500 1.4rem/1.25 var(--serif);color:var(--text)}
.p-what p{margin:0;color:var(--muted);font-size:1.12rem;line-height:1.5}
.arc{display:none}
@media (min-width:1000px){
  .path{display:grid;grid-template-columns:repeat(var(--n,6),1fr);gap:24px;padding-top:40px}
  .path li{--lift:var(--arc,0px);display:flex;flex-direction:column;align-items:center;text-align:center;padding:0;transform:translateY(var(--lift))}
  .path li::after{order:-1}
  .path li::before{display:none}
  .path li::after{position:relative;display:block;left:auto;top:auto;margin:0 auto 18px;width:11px;height:11px}
  .p-time{text-align:center;padding:0;display:block;margin-bottom:.3em}
  .p-what{padding:0}
  .arc{display:block;position:absolute;left:0;right:0;top:0;width:100%;height:150px;pointer-events:none;overflow:visible}
  .path-wrap{position:relative}
}

/* Helyszín: koordináták */
.place{display:grid;gap:40px;align-items:center}
.place-coords{font:300 clamp(3rem,10vw,6.6rem)/.95 var(--serif);color:var(--text);letter-spacing:-.01em;font-variant-numeric:lining-nums}
.place-coords span{display:block}
.place-coords small{font-size:.38em;color:var(--gold);letter-spacing:.04em;margin-left:.15em}
.place-card .h2{font-size:clamp(2rem,4.6vw,3rem);margin-bottom:.2em}
.place-card p{color:var(--muted);max-width:34ch}
.place-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
@media (min-width:860px){.place{grid-template-columns:1.1fr 1fr;gap:80px}}

/* Tudnivalók */
.good{display:grid;border-top:1px solid var(--rule)}
.good div{padding:26px 0;border-bottom:1px solid var(--rule)}
.good h3{margin:0 0 .3em;font:italic 500 1.45rem/1.2 var(--serif);color:var(--gold)}
.good p{margin:0;max-width:42ch;color:var(--text)}
@media (min-width:860px){.good{grid-template-columns:repeat(2,1fr);column-gap:64px}}

/* Visszajelzés */
.rsvp-box{max-width:640px;margin:0 auto;padding:clamp(32px,6vw,56px) clamp(22px,6vw,56px);background:linear-gradient(180deg,rgba(19,28,64,.9),rgba(12,19,48,.9));border:1px solid rgba(216,180,111,.22);border-radius:22px;box-shadow:0 40px 80px -50px rgba(0,0,0,.8)}
.rsvp-box .h2{text-align:center}
.rsvp-intro{text-align:center;color:var(--muted);max-width:30rem;margin:0 auto 2em}
.field{display:grid;gap:8px;margin:0 0 22px}
.field>label,.field legend{font:500 .9rem/1.4 var(--sans);color:var(--text)}
.field small{font:400 .8125rem/1.45 var(--sans);color:var(--muted)}
fieldset.field{border:0;padding:0;margin:0 0 22px}
fieldset.field legend{margin-bottom:10px}
.input{width:100%;min-height:50px;padding:12px 14px;border:1px solid rgba(169,174,196,.35);border-radius:12px;background:rgba(5,8,22,.55);font:400 1.1rem/1.4 var(--serif);color:var(--text);transition:border-color .2s ease,box-shadow .2s ease}
.input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(216,180,111,.18)}
select.input option{background:#0c1330}
textarea.input{min-height:96px;resize:vertical}
.choice{display:grid;gap:10px}
.choice label{display:flex;align-items:center;gap:12px;min-height:54px;padding:12px 16px;border:1px solid rgba(169,174,196,.3);border-radius:12px;background:rgba(5,8,22,.4);font:500 1.15rem/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(--muted);border-radius:50%;flex:none;display:grid;place-items:center}
.choice input::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px 2px rgba(216,180,111,.6);transform:scale(0);transition:transform .2s var(--ease-out)}
.choice input:checked::after{transform:scale(1)}
.choice label:has(input:checked){border-color:var(--gold);background:rgba(216,180,111,.08)}
.choice input:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.cond{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--ease-out)}
.cond>div{overflow:hidden}
.cond.show{grid-template-rows:1fr}
.form-error{min-height:1.4em;margin:0 0 12px;font:500 .875rem/1.4 var(--sans);color:#ffb4a8}
.rsvp-submit{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:8px}
.demo-note{font:400 .8125rem/1.45 var(--sans);color:var(--muted);text-align:center;margin:0}
.thanks{text-align:center;padding:20px 0}
.thanks p:first-child{font:300 2.4rem/1.15 var(--serif);color:var(--gold);margin-bottom:.4em}

/* Hullócsillag a visszajelzés után */
.meteor{position:fixed;z-index:var(--z-meteor);top:0;left:0;width:220px;height:2px;border-radius:2px;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(255,240,210,.9));box-shadow:0 0 12px 2px rgba(255,230,180,.6)}

/* Zárás: horizont */
.closing{position:relative;padding:clamp(100px,16vw,200px) 0 0;text-align:center;overflow:hidden}
.closing p.big{margin:0 0 .2em;font:300 clamp(2.2rem,6vw,3.6rem)/1.1 var(--serif);color:var(--text)}
.closing p.big em{color:var(--gold)}
.closing .sub{color:var(--muted)}
.closing img{width:100%;height:auto;margin-top:clamp(30px,6vw,80px)}
.closing-foot{position:absolute;left:0;right:0;bottom:16px;display:flex;justify-content:center}
.replay{appearance:none;background:none;border:0;font:500 .875rem/1 var(--sans);color:var(--muted);text-decoration:underline;text-underline-offset:4px;cursor:pointer;padding:10px}

/* Belépőkód */
.gate{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:24px;background:radial-gradient(120% 80% at 50% 0%,#141d44,var(--night))}
.gate form{width:min(100%,420px);text-align:center}
.gate h1{margin:0 0 .3em;font:300 2.4rem/1.1 var(--serif);letter-spacing:.06em;text-transform:uppercase}
.gate p{color:var(--muted)}
.gate .input{text-align:center;letter-spacing:.12em;font-size:1.4rem}
.gate-star{width:10px;height:10px;margin:0 auto 28px;border-radius:50%;background:#fff6dd;box-shadow:0 0 18px 6px rgba(255,230,170,.55)}

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

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .js .rv{opacity:1;transform:translateY(var(--lift,0px))}
}

/* Formázott szövegek (BKSablon.fmt) */
.story-text h3{margin:1.2em 0 .3em;font:italic 400 1.45rem/1.25 var(--serif);color:var(--gold)}
.story-text ul,.good .txt ul{margin:0 0 1em;padding-left:1.1em;color:var(--text)}
.story-text li,.good .txt li{margin:.2em 0}
.good .txt p{margin:0 0 .5em;max-width:42ch;color:var(--text)}
.szerk{--bk-edit:rgba(216,180,111,.6)}

/* Kérdéscímkék a sablon talpas betűjével (elegánsabb, mint a félkövér talpatlan) */
.field>label,.field>legend,.field label:not(.choice label),.field legend{font:500 1.35rem/1.25 var(--serif);letter-spacing:0}
