/* ============================================================
   Innovation Day — stylesheet
   Θέατρο: μαύρο φόντο, κόκκινο βελούδο, χρυσά λαμπάκια.

   Δομή:
     1. Μεταβλητές   2. Βάση      3. Σκηνικό (φώτα, αυλαία, βελανίδι)
     4. Hero/κάδρο   5. Ενότητες  6. Κουτιά με σχήμα   7. Popup
     8. Χορογραφία
   ============================================================ */

/* ---------- 1. Μεταβλητές ---------- */
:root{
  --bg:        #08070A;
  --surface:   #14100F;
  --line:      #3A2E1E;
  --text:      #F4EBD8;
  --muted:     #A8977C;

  --gold:      #E9C46A;
  --gold-hi:   #FFF0C4;
  --gold-2:    #B8862F;
  --gold-dk:   #6E4E14;

  --velvet:    #8E1116;
  --velvet-hi: #C4262B;
  --velvet-dk: #3B0508;

  /* Πόσο βελούδο μένει ορατό σε κάθε πλευρά αφού ανοίξει η αυλαία. */
  --drape: clamp(24px, 9vw, 190px);

  --radius: 4px;
  --pad: clamp(20px, 5vw, 40px);
  --maxw: 940px;

  --ease:   cubic-bezier(.22,.61,.36,1);
  --stagey: cubic-bezier(.16,.84,.24,1);
  --drapey: cubic-bezier(.72,.02,.24,1);
}

/* ---------- 2. Βάση ---------- */
*,*::before,*::after{ box-sizing:border-box; }

html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }

body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
body.is-overture{ overflow:hidden; }

/* Το περιεχόμενο πάντα μπροστά από την αυλαία, και ποτέ κάτω από το βελούδο. */
#app{
  position:relative; z-index:1;
  max-width:calc(var(--maxw) + 2 * var(--drape));
  margin:0 auto;
  padding:0 max(var(--pad), var(--drape));
}

.ic{ width:1em; height:1em; flex:none; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }

/* ---------- 3. Σκηνικό ---------- */

/* Φώτα αίθουσας: θερμές λίμνες φωτός, χωρίς κίνηση που κουράζει. */
.housel{
  position:fixed; inset:0; z-index:-3;
  background:
    radial-gradient(72vmax 46vmax at 50% -12%, rgba(196,38,43,.20), transparent 62%),
    radial-gradient(52vmax 40vmax at 6% 110%,  rgba(233,196,106,.11), transparent 64%),
    radial-gradient(52vmax 40vmax at 94% 110%, rgba(233,196,106,.09), transparent 64%),
    var(--bg);
  animation:breathe 11s ease-in-out infinite alternate;
}
@keyframes breathe{ from{ opacity:.86; } to{ opacity:1; } }

/* Ο προβολέας.
   ΣΗΜΑΝΤΙΚΟ: inset:0 — ακριβώς το viewport. Με οτιδήποτε άλλο, το ποσοστό
   της ακτινικής βαθμίδας μετριέται σε άλλο πλαίσιο από αυτό του δείκτη
   και ο φωτισμός πέφτει δίπλα από το ποντίκι αντί πάνω του. */
.spotlight{
  position:fixed; inset:0; z-index:-2; pointer-events:none;
  --mx:50%; --my:22%;
  background:radial-gradient(34vmax 27vmax at var(--mx) var(--my),
    rgba(255,236,190,.15), rgba(233,196,106,.05) 44%, transparent 70%);
}

/* Σκόνη μέσα στη δέσμη */
.motes{ position:fixed; inset:0; z-index:-2; pointer-events:none; overflow:hidden; }
.mote{
  position:absolute; bottom:-12px;
  width:var(--sz); height:var(--sz); border-radius:50%;
  background:var(--gold); opacity:0;
  animation:float var(--dur) linear var(--del) infinite;
}
@keyframes float{
  0%   { opacity:0; transform:translate3d(0,0,0); }
  12%  { opacity:.55; }
  85%  { opacity:.35; }
  100% { opacity:0; transform:translate3d(var(--dx),-102vh,0); }
}

.grain{
  position:fixed; inset:0; z-index:-1; pointer-events:none; opacity:.26;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.42'/%3E%3C/svg%3E");
}

/* --- Η αυλαία --- */
.curtain{ position:fixed; inset:0; z-index:100; pointer-events:none; }
/* Αφού ανοίξει, πέφτει πίσω από το περιεχόμενο και μένει σαν κάδρο. */
.curtain.is-parked{ z-index:0; }

/* Το βελούδο: φωτορεαλιστική υφή πάνω σε CSS fallback, ώστε η αυλαία να
   παραμένει λειτουργική ακόμη κι αν αργήσει να φορτώσει το asset. */
.curtain__panel{
  position:absolute; top:0; bottom:0; width:52%;
  background:linear-gradient(180deg,#B92329 0%,var(--velvet) 38%,var(--velvet-dk) 100%);
  box-shadow:0 0 90px 22px rgba(0,0,0,.9);
  transition:transform 1.5s var(--drapey);
  will-change:transform;
  overflow:hidden;
}

/* Η ίδια φωτογραφική πλάκα καθρεφτίζεται δεξιά, οπότε ο φωτισμένος ποδόγυρος
   κοιτάζει πάντα προς το άνοιγμα της σκηνής. */
.curtain__panel::before{
  content:''; position:absolute; inset:-1.5%;
  background:url("velvet-curtain-realistic.webp") center / cover no-repeat;
  filter:saturate(.92) contrast(1.04) brightness(.84);
  transform:scale(1.03);
}
.curtain__panel--r::before{ transform:scale(-1.03,1.03); }
.curtain__panel::after{
  content:''; position:absolute; inset:0;
  background:
    var(--edge-lit),
    var(--edge-dark),
    linear-gradient(180deg,rgba(255,155,125,.08),transparent 22%,rgba(0,0,0,.4));
}

/* Η εσωτερική ακμή βλέπει τη σκηνή, άρα πιάνει το φως·
   η εξωτερική χάνεται στο σκοτάδι των παρασκηνίων.
   Η καμπύλη στο border-radius είναι το ύφασμα που μαζεύεται προς τα μέσα. */
.curtain__panel--l{
  left:0;
  border-radius:0 22% 15% 0 / 0 6% 5% 0;
  --edge-lit: linear-gradient(90deg, transparent 70%, rgba(255,138,110,.07) 94%, rgba(255,190,150,.13) 100%);
  --edge-dark:linear-gradient(90deg, rgba(0,0,0,.55), transparent 24%),
              radial-gradient(92% 26% at 100% 0%, rgba(255,170,140,.1), transparent 74%);
}
.curtain__panel--r{
  right:0;
  border-radius:22% 0 0 15% / 6% 0 0 5%;
  --edge-lit: linear-gradient(270deg, transparent 70%, rgba(255,138,110,.07) 94%, rgba(255,190,150,.13) 100%);
  --edge-dark:linear-gradient(270deg, rgba(0,0,0,.55), transparent 24%),
              radial-gradient(92% 26% at 0% 0%, rgba(255,170,140,.1), transparent 74%);
}

/* Ανοιχτή: κάθε φύλλο σταματά αφήνοντας ορατό ένα λωρίδι --drape. */
.curtain.is-open .curtain__panel--l{ transform:translate3d(calc(-100% + var(--drape)),0,0); }
.curtain.is-open .curtain__panel--r{ transform:translate3d(calc( 100% - var(--drape)),0,0); }

/* Το μπορντούρο από πάνω. Δεν ανοίγει ποτέ — κρατάει το κάδρο κλειστό. */
.curtain__valance{
  position:absolute; top:0; left:0; right:0;
  height:clamp(76px,12.5vw,170px);
  /* Το asset έχει πραγματική διαφάνεια: καμία μαύρη ορθογώνια πλάκα κάτω
     από τα drapes. Η ελαφριά υπερκάλυψη κόβει μόνο το κενό της πάνω άκρης. */
  background:url("velvet-valance-transparent-v2.webp") center bottom / 100% 114% no-repeat;
  filter:drop-shadow(0 16px 22px rgba(0,0,0,.42));
}

/* Θερμή λάμψη στην ένωση, λίγο πριν ανοίξει */
.curtain__seam{
  position:absolute; top:0; bottom:0; left:50%; width:2px; margin-left:-1px;
  background:linear-gradient(180deg,transparent,var(--gold) 22%,#fff 50%,var(--gold) 78%,transparent);
  box-shadow:0 0 34px 10px rgba(233,196,106,.6);
  opacity:0;
  transition:opacity .5s ease, transform .5s ease;
}
.curtain.is-lit  .curtain__seam{ opacity:1; transform:scaleX(2.4); }
.curtain.is-open .curtain__seam{ opacity:0; transition-duration:.7s; }

/* ---------- 4. Hero μέσα σε κάδρο με λαμπάκια ---------- */
.hero{
  min-height:100svh;
  display:flex; flex-direction:column; justify-content:center;
  padding:clamp(70px,12vh,110px) clamp(16px,4.5vw,44px) clamp(76px,11vh,104px);
  position:relative;
  --p:0;
}

.marquee{ position:absolute; inset:clamp(10px,2.4vh,30px) 0; pointer-events:none; }
.marquee__frame{
  position:absolute; inset:0;
  border:1px solid rgba(233,196,106,.5);
  border-radius:var(--radius);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.65), 0 0 60px -14px rgba(233,196,106,.4);
}
/* Τα λαμπάκια είναι τέσσερις στρώσεις μιας ακτινικής βαθμίδας — μία ανά πλευρά —
   και η κίνηση είναι απλή μετατόπιση κατά ένα πλακίδιο. Έτσι «τρέχουν» γύρω-γύρω. */
.marquee__bulbs{
  --gap: clamp(21px,4.2vw,32px);
  --bulb: radial-gradient(circle at 50% 50%,
            var(--gold-hi) 0 1.7px,
            var(--gold) 1.7px 3.5px,
            rgba(233,196,106,.45) 3.5px 5.2px,
            rgba(233,196,106,.13) 5.2px 8px,
            transparent 8.5px);
  position:absolute; inset:0;
  background-image:var(--bulb),var(--bulb),var(--bulb),var(--bulb);
  background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;
  background-position:0 0, 0 100%, 0 0, 100% 0;
  background-size:var(--gap) var(--gap);
  /* Η κίνηση ξαναβάφει ένα στοιχείο ύψους οθόνης σε κάθε frame — ακριβό σε
     φθηνά κινητά. Τρέχει μόνο όσο το hero είναι στο κάδρο (frame-lit από την
     app.js)· αλλού τα λαμπάκια απλώς μένουν αναμμένα. */
  animation:chase 2.6s linear infinite;
  animation-play-state:paused;
}
.hero.frame-lit .marquee__bulbs{ animation-play-state:running; }
@keyframes chase{
  to{ background-position:
        var(--gap) 0,
        calc(var(--gap) * -1) 100%,
        0 calc(var(--gap) * -1),
        100% var(--gap); }
}

.masks{
  width:clamp(112px,22vw,154px); height:auto; aspect-ratio:1;
  margin:-8px 0 18px; display:block; object-fit:contain;
  filter:drop-shadow(0 12px 28px rgba(233,196,106,.28)) drop-shadow(0 4px 5px rgba(0,0,0,.82));
}

.eyebrow{
  margin:0 0 16px;
  font-size:.74rem; font-weight:600; letter-spacing:.26em; text-transform:uppercase;
  color:var(--gold-2);
}

.hero__title{
  margin:0;
  font-family:'Cormorant Garamond',Georgia,serif;
  font-size:clamp(3rem,13vw,6rem);
  font-weight:600; line-height:1; letter-spacing:-.01em;
}
/* Το overflow:hidden κόβει και τους κατιόντες χαρακτήρες (ρ, γ, y),
   γι' αυτό ανοίγει μόλις τελειώσει η είσοδος (.is-done από την app.js). */
.hero__title .mask{ display:inline-block; overflow:hidden; vertical-align:bottom; }
.hero__title.is-done .mask{ overflow:visible; }
.hero__title .word{
  display:inline-block;
  background:linear-gradient(175deg,var(--gold-hi) 12%,var(--gold) 46%,var(--gold-2));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}

.hero__tagline{
  margin:18px 0 0; max-width:34ch;
  font-size:clamp(1.02rem,3.4vw,1.22rem);
  color:var(--muted);
}

.hero__meta{
  margin:30px 0 0;
  display:flex; flex-wrap:wrap; gap:10px 22px;
  font-size:.92rem; font-weight:500;
}
.metaline{ display:flex; align-items:center; gap:9px; }
.metaline .ic{ color:var(--gold); font-size:1.05rem; }

/* Parallax με την ανεξάρτητη ιδιότητα `translate`, ώστε να μην ακυρώνει
   τα transform της εμφάνισης (και να μην ακυρώνεται από αυτά). */
.hero__title  { translate:0 calc(var(--p) * -44px); }
.hero__tagline{ translate:0 calc(var(--p) * -28px); }
.hero__meta,
.countdown    { translate:0 calc(var(--p) * -15px); }
.hero__cta    { translate:0 calc(var(--p) *  -7px); }

/* --- Countdown: ψηφία που κυλούν --- */
.countdown{ display:flex; gap:8px; margin:32px 0 0; }
.cd{
  flex:1; min-width:0; padding:13px 6px;
  background:linear-gradient(180deg,rgba(233,196,106,.09),rgba(0,0,0,.25));
  border:1px solid rgba(233,196,106,.28); border-radius:var(--radius);
  text-align:center;
}
.cd b{
  display:block;
  font-family:'Cormorant Garamond',Georgia,serif;
  font-size:clamp(1.7rem,7.2vw,2.4rem); font-weight:700;
  font-variant-numeric:tabular-nums;
  line-height:1; height:1em;
  color:var(--gold);
}
.cd small{
  display:block; margin-top:9px;
  font-size:.63rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted);
}
.digit{ display:inline-block; height:1em; overflow:hidden; vertical-align:top; }
.digit__track{
  display:block;
  transform:translate3d(0,calc(var(--n) * -1em),0);
  transition:transform .62s var(--stagey);
}
.digit__track i{ display:block; height:1em; line-height:1; font-style:normal; }
[data-cd="s"] .digit__track{ transition-duration:.36s; }

.countdown__msg{
  margin:24px 0 0; padding:16px 20px;
  border:1px solid rgba(233,196,106,.4); border-radius:var(--radius);
  background:rgba(233,196,106,.09);
  font-weight:600;
}

/* --- Κουμπιά --- */
.hero__cta{ display:flex; flex-wrap:wrap; gap:12px; margin:30px 0 0; }

.btn{
  position:relative; overflow:hidden;
  display:inline-flex; align-items:center; justify-content:center; gap:9px;
  padding:14px 26px; border:1px solid transparent; border-radius:999px;
  font:inherit; font-weight:600; font-size:.93rem;
  text-decoration:none; cursor:pointer;
  transition:transform .18s var(--ease), background .18s, border-color .18s;
}
.btn:active{ transform:scale(.97); }
.btn .ic{ font-size:1.05rem; }

.btn--primary{
  background:linear-gradient(135deg,var(--gold-hi),var(--gold) 45%,var(--gold-2));
  color:#251503;
  box-shadow:0 8px 30px -10px rgba(233,196,106,.7);
}
/* Φως που σαρώνει το κουμπί, σαν προβολέας που περνάει από πάνω. */
.btn--primary::after{
  content:''; position:absolute; top:0; bottom:0; width:38%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.6),transparent);
  transform:translateX(-220%) skewX(-18deg);
  animation:sweep 5.5s ease-in-out 2.4s infinite;
}
@keyframes sweep{ 0%,72%{ transform:translateX(-220%) skewX(-18deg); } 100%{ transform:translateX(360%) skewX(-18deg); } }

.btn--ghost{ background:rgba(233,196,106,.06); border-color:var(--line); color:var(--text); }
.btn--sm{ padding:9px 18px; font-size:.83rem; }

@media (hover:hover){
  .btn--primary:hover{ transform:translateY(-2px); }
  .btn--ghost:hover{ background:rgba(233,196,106,.14); border-color:var(--gold-2); }
}

.scroll-hint{
  position:absolute; bottom:clamp(26px,5vh,44px); left:50%; margin-left:-12px;
  width:24px; height:38px; border:1.5px solid rgba(233,196,106,.4); border-radius:12px;
}
.scroll-hint span{
  position:absolute; top:8px; left:50%; margin-left:-2px;
  width:4px; height:6px; border-radius:2px; background:var(--gold);
  animation:wheel 1.9s var(--ease) infinite;
}
@keyframes wheel{ 0%{opacity:0;transform:translateY(0)} 30%{opacity:1} 100%{opacity:0;transform:translateY(13px)} }

/* ---------- 5. Ενότητες ---------- */
.section{ padding:clamp(56px,10vw,92px) 0; position:relative; }
.section::before{
  content:''; position:absolute; top:0; left:0; right:0; height:1px;
  background:linear-gradient(90deg,var(--gold),var(--line) 42%,transparent);
  transform:scaleX(0); transform-origin:left center;
}
.js .section.is-in::before{ transform:scaleX(1); transition:transform 1.15s var(--stagey); }

.h2{
  display:flex; align-items:baseline; gap:14px;
  margin:0 0 32px;
  font-family:'Cormorant Garamond',Georgia,serif;
  font-size:clamp(1.9rem,6.5vw,2.7rem); font-weight:600; letter-spacing:0;
}
.h2__num{
  font-family:'Inter',sans-serif;
  font-size:.72rem; font-weight:700; letter-spacing:.18em;
  color:var(--gold-2);
}

.intro p{
  margin:0 0 18px; max-width:56ch;
  font-size:clamp(1.04rem,3.4vw,1.18rem); color:#D6C9B2;
}
.intro p:first-child{ color:var(--text); font-weight:500; }

.stats{ display:flex; flex-wrap:wrap; gap:12px; margin-top:36px; }
.stat b{
  display:block;
  font-family:'Cormorant Garamond',Georgia,serif;
  font-size:2rem; font-weight:700; color:var(--gold); font-variant-numeric:tabular-nums;
}
.stat span{ font-size:.78rem; color:var(--muted); letter-spacing:.06em; }

/* --- Πρόγραμμα --- */
.agenda{ list-style:none; margin:0; padding:0; position:relative; }
.agenda::before{
  content:''; position:absolute; left:7px; top:8px; bottom:8px; width:1px;
  background:linear-gradient(180deg,var(--gold),var(--gold-2) 45%,transparent);
  transform:scaleY(0); transform-origin:top center;
}
.js .is-in .agenda::before{ transform:scaleY(1); transition:transform 1.6s var(--stagey) .15s; }

.agenda li{ position:relative; padding:0 0 26px 34px; }
.agenda li::before{
  content:''; position:absolute; left:2px; top:9px;
  width:11px; height:11px; border-radius:50%;
  background:var(--bg); border:2px solid var(--line);
}
.agenda li.is-key::before{
  border-color:var(--gold); background:var(--gold);
  box-shadow:0 0 0 5px rgba(233,196,106,.14), 0 0 18px 2px rgba(233,196,106,.5);
}
.agenda time{
  display:block; font-size:.78rem; font-weight:700; letter-spacing:.1em;
  color:var(--gold); font-variant-numeric:tabular-nums;
}
.agenda h3{ margin:3px 0 2px; font-size:1.06rem; font-weight:600; }
.agenda p{ margin:0; font-size:.9rem; color:var(--muted); }

/* --- Τοποθεσία --- */
.venue{ display:grid; gap:22px; }
.venue__text h3{ margin:0 0 8px; font-size:1.2rem; font-weight:600; }
.venue address{ font-style:normal; color:var(--muted); line-height:1.8; }
.venue__note{
  margin:16px 0 0; padding-left:14px;
  border-left:2px solid var(--gold-2);
  font-size:.9rem; color:var(--muted);
}
.venue__links{ display:flex; flex-wrap:wrap; gap:9px; margin-top:22px; }

.venue__map{
  border:1px solid var(--line); border-radius:var(--radius); overflow:hidden;
  background:var(--surface); aspect-ratio:16/11;
}
.venue__map iframe{ width:100%; height:100%; border:0; display:block; filter:grayscale(.4) contrast(1.05) brightness(.92); }

@media (min-width:760px){
  .venue{ grid-template-columns:1fr 1.1fr; align-items:start; gap:34px; }
}

/* ============================================================
   6. Κουτιά με σχήμα

   Κάθε κάρτα είναι δύο στρώσεις: η εξωτερική είναι χρυσή, η εσωτερική
   σκούρα και 2px μικρότερη. Και οι δύο κόβονται με το ΙΔΙΟ clip-path,
   οπότε ό,τι περισσεύει διαβάζεται ως χρυσό περίγραμμα που ακολουθεί
   το σχήμα. (Με border δεν γίνεται — το clip-path θα το έκοβε.)
   ============================================================ */
.card{
  position:relative;
  padding:2px;
  background:linear-gradient(155deg,var(--gold-hi),var(--gold) 30%,var(--gold-2) 62%,var(--gold-dk));
  clip-path:var(--shape);
  transition:transform .32s var(--stagey), filter .32s ease;
}
.card__in{
  display:block; height:100%;
  position:relative;
  padding:24px 20px 52px;
  background:linear-gradient(180deg,#171113,#0B090A);
  clip-path:var(--shape);
}
.card__in .ic{ font-size:1.4rem; color:var(--gold); margin-bottom:12px; display:block; }
.card__in h3{ margin:0 0 6px; font-size:1.02rem; font-weight:600; }
.card__in p{ margin:0; font-size:.89rem; color:var(--muted); }

/* Το κουμπί είναι πραγματικό <button> για πληκτρολόγιο, αλλά ο στόχος
   του κλικ απλώνεται σε όλη την κάρτα μέσω του ::after. */
/* Η ταινία που «κόβεται» στη βάση του εισιτηρίου. */
.card__btn{
  position:absolute; left:14px; right:14px; bottom:9px;
  padding:11px 0 8px; border:0; border-top:1px dashed rgba(233,196,106,.4);
  background:none; cursor:pointer;
  color:var(--gold); font:inherit; font-size:.66rem; font-weight:700;
  letter-spacing:.2em; text-transform:uppercase;
  display:flex; align-items:center; justify-content:center; gap:9px;
}
.card__btn::before,.card__btn::after{ content:'★'; font-size:.8em; opacity:.65; }
.card__btn:focus{ outline:none; }
/* Ολόκληρη η κάρτα είναι πατήσιμη (το χειρίζεται η app.js), αλλά το
   πληκτρολόγιο και ο screen reader βλέπουν κανονικό <button>. */
.card:has(.card__btn){ cursor:pointer; }

@media (hover:hover){
  .card:hover{ transform:translateY(-6px); filter:brightness(1.14); }
}
.card:has(.card__btn:focus-visible){ filter:brightness(1.25); transform:translateY(-6px); }

/* --- Εισιτήρια ---------------------------------------------------------
   Κάθε κουτί είναι ένα κόμμα εισιτηρίου παλιάς κοπής: διάτρητες ακμές,
   διπλό περίγραμμα, κατακόρυφος αύξων αριθμός στα πλαϊνά και αποκόμμα
   στη βάση. Το σχήμα γίνεται με mask (όχι με clip-path), γιατί οι
   ημικυκλικές εγκοπές θέλουν καμπύλες που το polygon δεν έχει.

   Το mask μπαίνει και στις ΔΥΟ στρώσεις — χρυσή έξω, σκούρα μέσα —
   ώστε το περίγραμμα να ακολουθεί τις εγκοπές αντί να κόβεται. */
.ticket{ --notch:8px; clip-path:none; }
.ticket, .ticket > .card__in{
  -webkit-mask-repeat:repeat-y; mask-repeat:repeat-y;
  -webkit-mask-composite:source-in; mask-composite:intersect;
}
/* Αν ο browser δεν ξέρει mask-composite, οι δύο στρώσεις ενώνονται αντί να
   τέμνονται: χάνονται οι εγκοπές, μένει απλό ορθογώνιο. Ανεκτή υποχώρηση. */
.ticket--notch{
  -webkit-mask-image:
    radial-gradient(circle var(--notch) at left  50%, transparent 97%, #000 100%),
    radial-gradient(circle var(--notch) at right 50%, transparent 97%, #000 100%);
          mask-image:
    radial-gradient(circle var(--notch) at left  50%, transparent 97%, #000 100%),
    radial-gradient(circle var(--notch) at right 50%, transparent 97%, #000 100%);
  -webkit-mask-size:100% calc(var(--notch) * 2.7);
          mask-size:100% calc(var(--notch) * 2.7);
}
.ticket--notch > .card__in{
  -webkit-mask-image:
    radial-gradient(circle var(--notch) at left  50%, transparent 97%, #000 100%),
    radial-gradient(circle var(--notch) at right 50%, transparent 97%, #000 100%);
          mask-image:
    radial-gradient(circle var(--notch) at left  50%, transparent 97%, #000 100%),
    radial-gradient(circle var(--notch) at right 50%, transparent 97%, #000 100%);
  -webkit-mask-size:100% calc(var(--notch) * 2.7);
          mask-size:100% calc(var(--notch) * 2.7);
}
/* Κομμένες γωνίες, όπως τα κουπόνια */
.ticket--cut{ clip-path:polygon(10px 0,calc(100% - 10px) 0,100% 10px,100% calc(100% - 10px),calc(100% - 10px) 100%,10px 100%,0 calc(100% - 10px),0 10px); }
.ticket--cut > .card__in{ clip-path:polygon(9px 0,calc(100% - 9px) 0,100% 9px,100% calc(100% - 9px),calc(100% - 9px) 100%,9px 100%,0 calc(100% - 9px),0 9px); }
/* Στρογγυλεμένο, με αποκόμμα */
.ticket--stub{ border-radius:7px; }
.ticket--stub > .card__in{ border-radius:5px; }

.ticket > .card__in{ padding:24px 30px 52px; }

/* Διπλό περίγραμμα — η λεπτή γραμμή μέσα από τη χρυσή ακμή */
.ticket__rule{
  position:absolute; inset:9px 21px;
  border:1px solid rgba(233,196,106,.34);
  pointer-events:none;
}
.ticket--cut .ticket__rule{ inset:11px 15px; border-style:dashed; }
.ticket--stub .ticket__rule{ inset:9px 15px; border-width:1px 1px 1px 0; }

/* Ο αύξων αριθμός, κατακόρυφα στα δύο πλαϊνά */
.ticket__serial{
  position:absolute; top:50%; left:10px;
  writing-mode:vertical-rl; transform:translateY(-50%) rotate(180deg);
  font-size:.56rem; font-weight:700; letter-spacing:.22em;
  color:rgba(233,196,106,.5); font-variant-numeric:tabular-nums;
  pointer-events:none;
}
.ticket__serial--r{ left:auto; right:10px; transform:translateY(-50%); }

/* Το αποκόμμα: η διάτρητη γραμμή που «σκίζεται» */
.ticket__tear{
  position:absolute; top:9px; bottom:9px; left:30px;
  border-left:1px dashed rgba(233,196,106,.4);
  pointer-events:none;
}
.ticket--stub > .card__in{ padding-left:46px; }
.ticket--stub .ticket__serial{ left:13px; }

.info{ display:grid; gap:14px; grid-template-columns:repeat(auto-fit,minmax(232px,1fr)); }

/* Στατιστικά: μικρά κουπόνια */
.stat{ flex:1 1 96px; }
.stat > .card__in{ padding:18px 16px; text-align:center; }
.stat .ticket__rule{ inset:6px 12px; }

/* Ομιλητές: εισιτήρια θεάτρου με κομμένες γωνίες */
.speakers{ display:grid; gap:14px; grid-template-columns:repeat(auto-fit,minmax(172px,1fr)); }
.speaker > .card__in{ padding:26px 22px 52px; text-align:center; }
.speaker.is-static > .card__in{ padding-bottom:28px; }
.speaker .av{
  width:54px; height:54px; margin:0 auto 12px;
  display:grid; place-items:center; border-radius:50%;
  background:linear-gradient(135deg,var(--gold-hi),var(--gold-2));
  color:#251503; font-weight:800; font-size:1.02rem;
}
.speaker h3{ margin:0 0 3px; font-size:.97rem; font-weight:600; }
.speaker p{ margin:0; font-size:.81rem; color:var(--muted); }

/* ---------- 7. Popup ---------- */
.modal{
  border:0; padding:0; background:transparent;
  width:min(92vw,560px); max-height:86vh;
  color:var(--text); overflow:visible;
}
.modal::backdrop{ background:rgba(4,3,5,.84); }
.modal__box{
  position:relative;
  padding:clamp(28px,5.5vw,44px);
  border:2px solid var(--gold-2);
  background:linear-gradient(180deg,#181113,#0A0809);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.8), 0 44px 90px -30px #000,
             0 0 70px -22px rgba(233,196,106,.45);
  max-height:86vh; overflow-y:auto;
}
/* Χρυσές γωνίες, σαν κορνίζα αφίσας */
.modal__box::before,.modal__box::after{
  content:''; position:absolute; width:22px; height:22px; pointer-events:none;
  border:2px solid var(--gold);
}
.modal__box::before{ top:8px; left:8px; border-right:0; border-bottom:0; }
.modal__box::after{ bottom:8px; right:8px; border-left:0; border-top:0; }

.modal__x{
  position:absolute; top:10px; right:14px;
  width:38px; height:38px; padding:0;
  background:none; border:0; cursor:pointer;
  color:var(--muted); font-size:1.7rem; line-height:1;
  transition:color .2s;
}
.modal__x:hover{ color:var(--gold); }

.modal__kicker{
  margin:0 0 8px;
  font-size:.68rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase;
  color:var(--gold-2);
}
.modal__title{
  margin:0 0 16px;
  font-family:'Cormorant Garamond',Georgia,serif;
  font-size:clamp(1.6rem,5.5vw,2.1rem); font-weight:600; color:var(--gold);
}
.modal__body{ margin:0; font-size:1rem; color:#D6C9B2; }

.modal[open]{ animation:modalIn .48s var(--stagey); }
.modal[open]::backdrop{ animation:fadeIn .35s ease; }
.modal.is-closing{ animation:modalOut .22s ease forwards; }
.modal.is-closing::backdrop{ animation:fadeOut .22s ease forwards; }
@keyframes modalIn{ from{ opacity:0; transform:translateY(28px) scale(.94); } }
@keyframes modalOut{ to{ opacity:0; transform:translateY(12px) scale(.97); } }
@keyframes fadeIn{ from{ opacity:0; } }
@keyframes fadeOut{ to{ opacity:0; } }

/* ---------- RSVP ---------- */
.rsvp{ padding:26px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); }
.rsvp__deadline{ margin:0 0 22px; font-size:.9rem; color:var(--muted); }
.field{ margin-bottom:16px; }
.field label{ display:block; margin-bottom:7px; font-size:.85rem; font-weight:600; }
.field input,.field select,.field textarea{
  width:100%; padding:13px 15px;
  background:rgba(233,196,106,.05); color:var(--text);
  border:1px solid var(--line); border-radius:var(--radius);
  font:inherit; font-size:1rem;
}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:2px solid var(--gold); outline-offset:1px; border-color:transparent;
}
.field textarea{ min-height:84px; resize:vertical; }
.choice{ display:flex; gap:10px; }
.choice label{
  flex:1; display:flex; align-items:center; justify-content:center; gap:8px;
  padding:14px; border:1px solid var(--line); border-radius:var(--radius);
  cursor:pointer; font-weight:600; font-size:.92rem; margin:0;
  transition:border-color .18s, background .18s;
}
.choice input{ position:absolute; opacity:0; pointer-events:none; }
.choice input:checked + span{ color:var(--gold); }
.choice label:has(input:checked){ border-color:var(--gold); background:rgba(233,196,106,.1); }
.rsvp__done{ text-align:center; padding:34px 20px; }
.rsvp__done h3{ margin:0 0 8px; font-size:1.25rem; }
.rsvp__done p{ margin:0; color:var(--muted); }

/* ---------- Footer ---------- */
.footer{ padding:clamp(48px,9vw,72px) 0 clamp(60px,10vh,90px); text-align:center; position:relative; }
.footer::before{
  content:''; position:absolute; top:0; left:0; right:0; height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
  transform:scaleX(0);
}
.js .footer.is-in::before{ transform:scaleX(1); transition:transform 1.3s var(--stagey); }
.footer__actions{ display:flex; flex-wrap:wrap; justify-content:center; gap:10px; margin-bottom:28px; }
.footer__contact{ margin:0 0 8px; font-size:.9rem; color:var(--muted); }
.footer__contact a{ color:var(--gold); text-decoration:none; }
.footer__sig{ margin:0; font-size:.76rem; color:#6A5C48; letter-spacing:.1em; text-transform:uppercase; }

/* ---------- Toast ---------- */
.toast{
  position:fixed; left:50%; bottom:26px; z-index:120;
  transform:translate(-50%,180%);
  max-width:min(92vw,420px); padding:14px 22px;
  background:#181113; border:1px solid var(--gold-2); border-radius:999px;
  font-size:.9rem; font-weight:500;
  box-shadow:0 16px 40px -12px rgba(0,0,0,.9);
  transition:transform .42s var(--stagey);
}
.toast.is-on{ transform:translate(-50%,0); }

.noscript{ padding:80px 0; }
.noscript h1{ font-size:2rem; color:var(--gold); }

/* ============================================================
   8. Mobile σκηνοθεσία

   Στο μικρό πλάτος το περιεχόμενο παίρνει περισσότερο χώρο από την αυλαία,
   τα βασικά actions γίνονται άνετοι touch στόχοι και τα πυκνά τετράστηλα
   στοιχεία σπάνε σε καθαρό 2×2 grid.
   ============================================================ */
@media (max-width:600px){
  :root{
    --drape:22px;
    --pad:18px;
    --radius:8px;
  }

  body{
    font-size:15px;
    line-height:1.58;
  }

  #app{
    max-width:none;
    padding-left:max(22px,env(safe-area-inset-left));
    padding-right:max(22px,env(safe-area-inset-right));
  }

  .curtain__valance{
    height:82px;
    background-size:100% 108%;
  }

  .hero{
    min-height:100svh;
    justify-content:flex-start;
    padding:96px 14px 72px;
  }

  .marquee{ inset:14px 0 18px; }
  .marquee__bulbs{
    --gap:26px;
    --bulb:radial-gradient(circle at 50% 50%,
      var(--gold-hi) 0 1.35px,
      var(--gold) 1.35px 3px,
      rgba(233,196,106,.42) 3px 4.6px,
      rgba(233,196,106,.11) 4.6px 7px,
      transparent 7.4px);
  }

  .masks{
    width:clamp(116px,34vw,136px);
    margin:0 0 14px;
  }

  .eyebrow{
    margin-bottom:12px;
    font-size:.68rem;
    letter-spacing:.22em;
  }

  .hero__title{
    max-width:7.5ch;
    font-size:clamp(3rem,15.5vw,3.85rem);
    line-height:.92;
    text-wrap:balance;
  }

  .hero__tagline{
    margin-top:18px;
    max-width:29ch;
    font-size:1rem;
    line-height:1.55;
  }

  .hero__meta{
    display:grid;
    gap:11px;
    margin-top:24px;
    font-size:.88rem;
    line-height:1.45;
  }
  .metaline{ align-items:flex-start; gap:10px; }
  .metaline .ic{ margin-top:.15em; }

  .countdown{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
    margin-top:26px;
  }
  .cd{
    padding:15px 8px 13px;
    border-radius:8px;
    background:linear-gradient(180deg,rgba(233,196,106,.11),rgba(0,0,0,.3));
    box-shadow:inset 0 0 18px rgba(233,196,106,.025);
  }
  .cd b{ font-size:2.15rem; }
  .cd small{ margin-top:8px; font-size:.61rem; }

  .hero__cta{
    display:grid;
    gap:10px;
    margin-top:26px;
    width:100%;
  }
  .btn{
    width:100%;
    min-height:50px;
    padding:12px 18px;
  }
  .scroll-hint{ display:none; }

  .section{ padding:52px 0; }
  .h2{
    gap:10px;
    margin-bottom:26px;
    font-size:2.15rem;
    line-height:1.05;
  }
  .h2__num{ font-size:.66rem; }

  .intro p{
    margin-bottom:16px;
    font-size:1.02rem;
  }

  .stats{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:8px;
    margin-top:28px;
  }
  .stat{ min-width:0; }
  .stat > .card__in{ padding:16px 8px; }
  .stat b{ font-size:1.75rem; }
  .stat span{ font-size:.68rem; }

  .agenda li{ padding:0 0 24px 30px; }
  .agenda h3{ font-size:1rem; line-height:1.4; }
  .agenda p{ font-size:.86rem; }

  .venue{ gap:20px; }
  .venue__text h3{ font-size:1.12rem; line-height:1.4; }
  .venue__links{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
  }
  .venue__map{ aspect-ratio:4/3; border-radius:8px; }

  .info{ grid-template-columns:1fr; gap:12px; }
  .ticket > .card__in{ padding:22px 26px 52px; }

  .speakers{ grid-template-columns:1fr; gap:12px; }
  .speaker > .card__in{
    display:grid;
    grid-template-columns:54px minmax(0,1fr);
    grid-template-rows:auto auto;
    column-gap:14px;
    align-items:center;
    padding:20px 26px 52px;
    text-align:left;
  }
  .speaker .av{
    grid-row:1/3;
    margin:0;
  }
  .speaker h3{ align-self:end; }
  .speaker p{ align-self:start; }

  .card__btn{
    min-height:42px;
    padding-top:10px;
  }

  .modal{
    width:calc(100vw - 16px);
    max-height:calc(100dvh - 16px);
    margin:auto 8px 8px;
  }
  .modal__box{
    max-height:calc(100dvh - 16px);
    padding:34px 24px 28px;
    border-radius:16px 16px 4px 4px;
  }
  .modal__body{ font-size:.96rem; }

  .footer{ padding:48px 0 max(64px,calc(44px + env(safe-area-inset-bottom))); }
  .footer__actions{
    display:grid;
    gap:9px;
    justify-content:stretch;
    width:100%;
  }
  .footer__contact{
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    gap:2px 8px;
  }

  .toast{
    bottom:max(14px,env(safe-area-inset-bottom));
    width:calc(100vw - 28px);
    padding:13px 16px;
    border-radius:14px;
    text-align:center;
  }
}

@media (max-width:370px){
  #app{
    padding-left:max(20px,env(safe-area-inset-left));
    padding-right:max(20px,env(safe-area-inset-right));
  }
  .hero{ padding-left:12px; padding-right:12px; }
  .hero__title{ font-size:2.85rem; }
  .stats{ gap:6px; }
  .stat > .card__in{ padding-inline:5px; }
  .venue__links{ grid-template-columns:1fr; }
}

@media (pointer:coarse){
  .btn,.card__btn,.modal__x{ min-height:44px; }
}

/* ============================================================
   9. Χορογραφία

   Το κρύψιμο ισχύει ΜΟΝΟ κάτω από .js — αν η JavaScript δεν τρέξει,
   η σελίδα εμφανίζεται στατική αντί να μείνει λευκή.
   ============================================================ */
.js .act,
.js [data-scene] .anim{ opacity:0; transform:translate3d(0,30px,0); }

.js .hero.is-in .act{
  opacity:1; transform:translate3d(0,0,0);
  transition:opacity .85s var(--stagey) calc(var(--i,0) * 72ms),
             transform .85s var(--stagey) calc(var(--i,0) * 72ms);
}

.js .hero__title .word{ transform:translate3d(0,120%,0) rotate(5deg); opacity:0; }
.js .hero.is-in .hero__title .word{
  transform:translate3d(0,0,0) rotate(0); opacity:1;
  transition:transform 1.05s var(--stagey) calc(.18s + var(--i,0) * 85ms),
             opacity   .7s  var(--stagey) calc(.18s + var(--i,0) * 85ms);
}
.js .hero__title.act{ opacity:1; transform:none; }

.js [data-scene].is-in .anim{
  opacity:1; transform:translate3d(0,0,0);
  transition:opacity .8s var(--stagey) calc(var(--i,0) * 85ms),
             transform .8s var(--stagey) calc(var(--i,0) * 85ms);
}

.js [data-scene] .card.anim{ transform:translate3d(0,36px,0) scale(.95); }
.js [data-scene].is-in .card.anim{ transform:translate3d(0,0,0) scale(1); }

.js .agenda li.anim::before{ transform:scale(0); }
.js .is-in .agenda li.anim::before{
  transform:scale(1);
  transition:transform .5s cubic-bezier(.34,1.56,.64,1) calc(.25s + var(--i,0) * 85ms);
}

/* ---------- Λιγότερη κίνηση, όποτε ζητηθεί ---------- */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  .js .act,
  .js [data-scene] .anim,
  .js .hero__title .word{ opacity:1 !important; transform:none !important; }
  .hero__title .mask{ overflow:visible; }
  .hero__title,.hero__tagline,.hero__meta,.countdown,.hero__cta{ translate:none !important; }
}
