/* =========================================================
   Korea–Europe Semiconductor Summit 2026 — Stylesheet
   KOTRA brand tone: calm light page + solid navy accent blocks
   + warm orange highlight — no dark "noisy" full-page background.
   ========================================================= */

:root{
  /* Base surfaces */
  --bg-page:      #eef3fa;   /* light page background (About/Focus/Program/Speakers/Partners/Register) */
  --navy:         #0d3b78;   /* primary KOTRA navy — Hero / Organizer panel / Nav */
  --navy-deep:    #082a54;   /* deepest navy — Footer */
  --bg-panel:     #123a68;   /* navy accent block (glance-card, mobile nav, badges) */
  --bg-panel-2:   #0d2f57;   /* deeper navy block (programme talk rows) */
  --card-light:   #ffffff;   /* white cards sitting on the light page */

  /* Borders */
  --border-soft:  rgba(255,255,255,0.14);   /* borders on navy surfaces */
  --border-light: rgba(13,59,120,0.14);     /* borders on light surfaces */
  --border-cyan:  rgba(232,115,74,0.35);    /* orange accent border (both surfaces) */

  /* Accent (KOTRA orange) + secondary gradient tone */
  --cyan:         #e8734a;   /* accent orange — icons, buttons, highlights */
  --cyan-soft:    #f4a97e;   /* soft orange — text accents on navy */
  --violet:       #14468c;   /* navy-soft, paired with orange in gradients */

  /* Text */
  --text-navy:    #0d3b78;   /* headings on light bg */
  --text-body:    #3c5170;   /* paragraph text on light bg */
  --text-dim:     #6b7f9c;   /* muted/secondary text on light bg */
  --text-dim-navy:#aebedc;   /* muted/secondary text on navy bg */
}

*{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  font-family: 'Inter', system-ui, sans-serif;
  background: var(--bg-page);
  color: var(--text-body);
}
.font-display{ font-family: 'Space Grotesk', 'Inter', sans-serif; }

/* ---------- Plain-CSS text-color fallbacks ----------
   Guards against a slow/failed Tailwind CDN injection: base text
   colors are guaranteed by our own stylesheet, not solely by
   Tailwind utility classes, so content is never invisible.
   NOTE: text-slate-300/400/500/white/cyan-300/400 below are only
   used inside sections that keep the navy background (Hero,
   Organizer, Footer, Nav) — light-background sections use the
   custom .text-body/.text-muted/.text-navy-strong/.text-accent
   classes defined further down instead. */
h1, h2, h3, h4, h5, h6{ color: var(--text-navy); }
p, li, span, label, a, button, td, th{ color: inherit; }
.text-white{ color:#ffffff !important; }
.text-slate-100{ color:#f1f5f9 !important; }
.text-slate-200{ color:#e2e8f0 !important; }
.text-slate-300{ color:#cbd5e1 !important; }
.text-slate-400{ color:#94a3b8 !important; }
.text-slate-500{ color:#64748b !important; }
.text-cyan-300{ color:#f4a97e !important; }
.text-cyan-400{ color:#e8734a !important; }

/* Custom, guaranteed-render text classes for LIGHT-background sections */
.text-body{ color: var(--text-body) !important; }
.text-muted{ color: var(--text-dim) !important; }
.text-navy-strong{ color: var(--text-navy) !important; }
.text-accent{ color: var(--cyan) !important; }
.hover-accent:hover{ color: var(--cyan) !important; }

/* ---------- Section background tone ----------
   Calm light page for content sections; navy used deliberately
   for Hero, Organizer (CTA panel) and Footer to anchor the brand. */
#hero, #organizer{
  background: var(--navy);
  position: relative;
}
#about, #focus, #program, #speakers, #partners, #register{
  background: var(--bg-page);
  position: relative;
}
footer{ background: var(--navy-deep); }

.bg-grid{
  background-image:
    linear-gradient(rgba(13,59,120,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(13,59,120,0.05) 1px, transparent 1px);
  background-size: 44px 44px;
  background-position: center top;
}

.section-pad{ padding: 5.5rem 0; }
@media (max-width: 768px){ .section-pad{ padding: 3.75rem 0; } }

/* ---------- Animated circuit backdrop (fixed, whole page) ---------- */
.circuit-bg{
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse 60% 40% at 15% 8%, rgba(13,59,120,0.05), transparent 60%),
    radial-gradient(ellipse 50% 35% at 90% 20%, rgba(232,115,74,0.05), transparent 60%),
    radial-gradient(ellipse 55% 45% at 50% 95%, rgba(13,59,120,0.04), transparent 60%),
    var(--bg-page);
}
main, header, footer{ position: relative; z-index: 1; }

/* ---------- Logo mark ---------- */
.logo-mark{
  display:inline-flex; align-items:center; justify-content:center;
  width: 54px; height:54px; border-radius: 12px;
  font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:1.15rem;
  letter-spacing:.03em; color:#ffffff;
  background: linear-gradient(135deg, var(--cyan), var(--violet));
  box-shadow: 0 0 22px rgba(232,115,74,0.30);
}

/* ---------- Nav (stays navy — same tone as Hero directly below it) ---------- */
.nav-link{ position:relative; transition:.2s color; }
.nav-link:hover{ color: var(--cyan-soft); }
.nav-link::after{
  content:''; position:absolute; left:0; bottom:-6px; width:0; height:1px;
  background: var(--cyan); transition: width .25s ease;
}
.nav-link:hover::after{ width:100%; }
.nav-cta{
  padding:.5rem 1.1rem; border-radius:999px;
  background: linear-gradient(135deg, var(--cyan), var(--violet));
  color:#ffffff; font-weight:600; transition: filter .2s, transform .2s;
}
.nav-cta:hover{ filter:brightness(1.1); transform: translateY(-1px); }
.nav-menu.open{ display:flex !important; }
#nav-menu.mobile-open{
  position:absolute; top:100%; left:0; right:0;
  flex-direction:column; align-items:flex-start; gap:1rem;
  background: var(--bg-panel); border-bottom:1px solid var(--border-soft);
  padding:1.25rem 1.5rem 1.75rem; display:flex !important;
}

/* ---------- Buttons ---------- */
.btn-primary{
  display:inline-flex; align-items:center; justify-content:center;
  padding:.85rem 1.75rem; border-radius:12px; font-weight:600; font-size:.95rem;
  background: linear-gradient(135deg, var(--cyan), var(--violet));
  color:#ffffff; box-shadow: 0 8px 30px rgba(232,115,74,0.25);
  transition: transform .2s, box-shadow .2s, filter .2s;
  cursor:pointer; border:none;
}
.btn-primary:hover{ transform: translateY(-2px); filter:brightness(1.08); box-shadow: 0 12px 34px rgba(232,115,74,0.35); }
.btn-primary:disabled{ opacity:.6; cursor:not-allowed; transform:none; }
.btn-secondary{
  display:inline-flex; align-items:center; justify-content:center;
  padding:.85rem 1.75rem; border-radius:12px; font-weight:600; font-size:.95rem;
  border:1px solid rgba(255,255,255,0.35); color:#ffffff;
  background: rgba(255,255,255,0.04);
  transition: border-color .2s, background .2s;
}
.btn-secondary:hover{ border-color: rgba(255,255,255,0.6); background: rgba(255,255,255,0.1); }

/* ---------- Section heading helpers ---------- */
.section-tag{
  display:inline-flex; align-items:center; gap:.4rem;
  font-size:.75rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase;
  color: var(--cyan); margin-bottom:.9rem;
}
.section-tag::before{ content:''; width:18px; height:2px; background: var(--cyan); display:inline-block; }
.section-title{
  font-family:'Space Grotesk',sans-serif;
  font-size: clamp(1.75rem, 3.2vw, 2.5rem);
  font-weight:700; line-height:1.2; color: var(--text-navy); margin-bottom:.5rem;
}
#hero .section-title, .organizer-panel .section-title{ color:#fff; }
.text-gradient{
  background: linear-gradient(135deg, var(--cyan), var(--violet));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}

/* ---------- Hero visual (Hero stays solid navy) ---------- */
#hero h1{ color:#ffffff; }
.hero-visual{
  position:relative; width:100%; max-width:560px; aspect-ratio:1/1; margin:0 auto;
}
/* Radial glow layered behind the orbit rings and chip: deep saturated
   navy at the very center (so the chip reads crisp against it), easing
   outward through progressively lighter/softer blue tones, fading to
   fully transparent at the outer ring for a sense of depth and space.
   Placed before the rings/chip in the DOM so it sits behind them. */
.chip-glow-bg{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  width:100%; height:100%; border-radius:50%;
  /* Gradient stops tuned to the two existing orbit rings themselves:
     ring-2 sits at 36% radius (72% diameter) and ring-1 at 50% radius
     (100% diameter) of this same box, so the glow reads as "deep navy
     inside ring-2, progressively lighter/softer out to ring-1" rather
     than an arbitrary gradient unrelated to the visible circles. */
  background: radial-gradient(circle at 50% 50%,
    rgba(8,26,56,0.92) 0%,
    rgba(12,38,82,0.8) 20%,
    rgba(18,56,116,0.6) 36%,
    rgba(44,98,172,0.36) 50%,
    rgba(94,162,230,0.16) 72%,
    rgba(130,190,255,0) 100%);
  pointer-events:none;
}
.orbit-ring{
  position:absolute; border:1px dashed rgba(255,255,255,0.28); border-radius:50%;
  top:50%; left:50%; transform:translate(-50%,-50%);
  animation: spin 30s linear infinite;
}
.ring-1{ width:100%; height:100%; }
.ring-2{ width:72%; height:72%; animation-duration:22s; animation-direction:reverse; }
@keyframes spin{ to{ transform:translate(-50%,-50%) rotate(360deg); } }
/* Chip sized as a % of the SAME box ring-2 uses (width:72%), so it
   scales in lockstep with the existing inner ring at every viewport
   instead of a fixed px value that could drift from it. 71% fills
   ring-2's 72% almost edge-to-edge without crossing its boundary. */
.chip-core{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  width:71%; height:71%; border-radius:28px;
  background:transparent; border:none;
  display:flex; align-items:center; justify-content:center;
  color:#ffffff;
  filter: drop-shadow(0 0 55px rgba(232,115,74,0.38)) drop-shadow(0 0 90px rgba(78,160,255,0.22));
  animation: pulse-glow 4s ease-in-out infinite;
}
/* Premium isometric chip illustration, custom-generated with a
   transparent background. A radial-gradient mask fades its own outer
   28% to fully transparent — this hides any leftover dark halo pixels
   from the background-removal pass right at the image edge, so the
   chip blends into the navy glow behind it with no visible dark ring. */
.chip-core-img{
  width:100%; height:100%;
  background-image: url('../images/hero-chip-premium.png');
  background-size: contain;
  background-position: center;
  background-repeat: no-repeat;
  -webkit-mask-image: radial-gradient(circle at 50% 50%, rgba(0,0,0,1) 70%, rgba(0,0,0,0) 100%);
  mask-image: radial-gradient(circle at 50% 50%, rgba(0,0,0,1) 70%, rgba(0,0,0,0) 100%);
}
@keyframes pulse-glow{
  0%,100%{ filter: drop-shadow(0 0 50px rgba(232,115,74,0.35)) drop-shadow(0 0 80px rgba(78,160,255,0.2)); }
  50%{ filter: drop-shadow(0 0 70px rgba(232,115,74,0.55)) drop-shadow(0 0 100px rgba(78,160,255,0.32)); }
}
.floating-tag{
  position:absolute; display:flex; align-items:center; gap:.5rem;
  font-size:.95rem; font-weight:700; padding:.65rem 1.1rem; border-radius:999px;
  background: rgba(255,255,255,0.1); border:1px solid rgba(255,255,255,0.22);
  color:#ffffff; backdrop-filter: blur(6px);
  box-shadow: 0 6px 18px rgba(0,0,0,0.18);
  animation: float 6s ease-in-out infinite;
  white-space:nowrap;
}
.floating-tag i{ color: var(--cyan-soft); font-size:1.05rem; }
.tag-1{ top:2%;   left:4%;   animation-delay:0s; }
.tag-2{ top:4%;   right:-6%; animation-delay:0.8s; }
.tag-3{ top:42%;  right:-4%; animation-delay:1.6s; }
.tag-4{ bottom:4%; right:0%; animation-delay:2.4s; }
.tag-5{ bottom:-2%; left:16%; animation-delay:3.2s; }
.tag-6{ bottom:20%; left:2%; animation-delay:4s; }
.tag-7{ top:40%;  left:-14%; animation-delay:4.8s; }
@keyframes float{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-10px); } }
@media (max-width: 480px){
  .hero-visual{ max-width:320px; }
  .floating-tag{ font-size:.62rem; padding:.36rem .6rem; gap:.3rem; }
  .floating-tag i{ font-size:.72rem; }
  .tag-1{ top:0%;   left:2%; }
  .tag-2{ top:8%;   right:0%; }
  .tag-3{ top:46%;  right:-6%; }
  .tag-4{ bottom:10%; right:2%; }
  .tag-5{ bottom:0%; left:22%; }
  .tag-6{ bottom:28%; left:4%; }
  .tag-7{ top:44%;  left:-4%; }
}

.scroll-cue{
  position:absolute; bottom:1.5rem; left:50%; transform:translateX(-50%);
  width:24px; height:38px; border:2px solid rgba(255,255,255,0.3); border-radius:14px;
}
.scroll-cue span{
  position:absolute; top:6px; left:50%; width:4px; height:8px; border-radius:2px;
  background: var(--cyan); transform:translateX(-50%);
  animation: scrollcue 1.8s ease-in-out infinite;
}
@keyframes scrollcue{ 0%{ opacity:1; top:6px;} 70%{ opacity:0; top:18px;} 100%{opacity:0; top:6px;} }

/* ---------- Stat / info cards (light cards on the light page) ---------- */
.stat-card{
  padding:1.1rem; border-radius:14px; text-align:center;
  background: var(--card-light); border:1px solid var(--border-light);
  box-shadow: 0 1px 3px rgba(13,59,120,0.06);
}
.stat-num{ display:block; font-family:'Space Grotesk',sans-serif; font-size:1.6rem; font-weight:700; color: var(--navy); }
.stat-label{ display:block; font-size:.72rem; color: var(--text-dim); margin-top:.25rem; letter-spacing:.03em; }

.info-card{
  padding:1.4rem 1.5rem; border-radius:16px;
  background: var(--card-light); border:1px solid var(--border-light);
  box-shadow: 0 1px 3px rgba(13,59,120,0.06);
  transition: border-color .2s, transform .2s;
}
.info-card:hover{ border-color: var(--border-cyan); transform: translateY(-2px); }

/* ---------- Focus cards ---------- */
.focus-card{
  padding:1.75rem 1.5rem; border-radius:18px;
  background: var(--card-light); border:1px solid var(--border-light);
  box-shadow: 0 1px 3px rgba(13,59,120,0.06);
  transition: transform .25s, border-color .25s, box-shadow .25s;
}
.focus-card:hover{
  transform: translateY(-4px); border-color: var(--border-cyan);
  box-shadow: 0 12px 30px rgba(232,115,74,0.14);
}
.focus-icon{
  width:52px; height:52px; border-radius:14px; margin-bottom:1rem;
  display:flex; align-items:center; justify-content:center; font-size:1.4rem;
  background: linear-gradient(135deg, rgba(232,115,74,0.16), rgba(13,59,120,0.10));
  color: var(--navy); border:1px solid var(--border-cyan);
}

/* ---------- Program timeline / schedule ---------- */
.event-meta-bar{
  display:flex; flex-wrap:wrap; gap:1.5rem; justify-content:center;
  padding:1.25rem 1.5rem; border-radius:16px; margin-top:2rem;
  background: var(--card-light); border:1px solid var(--border-light);
}
.event-meta-bar .meta-item{ display:flex; align-items:center; gap:.5rem; font-size:.9rem; color: var(--text-navy); }
.event-meta-bar .meta-item i{ color: var(--cyan); }

.at-a-glance-grid{
  display:grid; grid-template-columns:repeat(2,1fr); gap:1rem; margin-top:2.5rem;
}
@media (min-width: 768px){ .at-a-glance-grid{ grid-template-columns:repeat(4,1fr); } }
.glance-card{
  text-align:center; padding:1.8rem 1rem; border-radius:16px;
  background: var(--bg-panel); border:1px solid var(--border-soft);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  min-height:140px;
}
.glance-num{ font-family:'Space Grotesk',sans-serif; font-size:2.8rem; line-height:1.1; font-weight:700; color:#ffffff; }
.glance-label{ font-size:.95rem; font-weight:600; color: var(--cyan-soft); margin-top:.5rem; letter-spacing:.02em; line-height:1.3; }

.room-legend{ display:flex; flex-wrap:wrap; gap:1rem; justify-content:center; margin-top:1.5rem; }
.room-chip{
  display:inline-flex; align-items:center; gap:.5rem; font-size:.8rem; font-weight:600;
  padding:.5rem 1rem; border-radius:999px; border:1px solid var(--border-light); color: var(--text-navy);
}
.room-chip.room-talks{ border-color: rgba(13,59,120,0.35); color: var(--navy); }
.room-chip.room-match{ border-color: rgba(232,115,74,0.4); color: var(--cyan); }

/* Schedule / Programme (built from JS data, block-based) */
.schedule-list{ margin-top:2.5rem; display:flex; flex-direction:column; gap:2rem; }

.programme-block{
  padding:1.75rem 1.75rem 1.5rem; border-radius:20px;
  background: var(--card-light); border:1px solid var(--border-light);
  box-shadow: 0 1px 4px rgba(13,59,120,0.07);
}
.block-header{
  display:flex; flex-wrap:wrap; align-items:center; gap:.75rem 1.25rem;
  padding-bottom:.9rem; margin-bottom:.4rem; border-bottom:1px solid var(--border-light);
}
.block-code{
  font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:.85rem;
  letter-spacing:.08em; color:#ffffff; padding:.3rem .8rem; border-radius:999px;
  background: var(--cyan);
}
.block-time, .block-room{
  display:inline-flex; align-items:center; gap:.4rem; font-size:.8rem; font-weight:600; color: var(--text-navy);
}
.block-time i, .block-room i{ color: var(--cyan); }
.block-tagline{ font-size:.95rem; color: var(--text-dim); font-style:italic; margin-bottom:1.25rem; }

.schedule-list-inner{ display:flex; flex-direction:column; gap:.75rem; }
.schedule-row{
  display:grid; grid-template-columns: 88px 1fr; gap:1.1rem;
  padding:1rem 1.1rem; border-radius:14px;
  background: var(--bg-panel-2); border:1px solid var(--border-soft);
  transition: border-color .2s, transform .2s;
}
.schedule-row:hover{ border-color: var(--border-cyan); transform: translateX(2px); }
.schedule-row.is-break{
  background: var(--card-light); border:1px dashed var(--border-light); opacity:1;
}
@media (max-width: 640px){
  .schedule-row{ grid-template-columns:1fr; gap:.4rem; }
  .block-header{ flex-direction:column; align-items:flex-start; gap:.5rem; }
}
.schedule-time{
  font-family:'Space Grotesk',sans-serif; font-weight:700; color: var(--cyan);
  font-size:.92rem; white-space:nowrap;
}
.schedule-title{ font-weight:600; color:#fff; font-size:.98rem; margin-bottom:.3rem; line-height:1.4; }
.schedule-row.is-break .schedule-title{ color: var(--text-navy); }
.schedule-desc{ font-size:.82rem; color: var(--text-dim-navy); line-height:1.5; margin-top:.2rem; }
.schedule-row.is-break .schedule-desc{ color: var(--text-dim); }
.schedule-org-line{
  display:flex; align-items:center; gap:.4rem; font-size:.83rem; font-weight:600;
  color: var(--cyan-soft); margin-top:.2rem; flex-wrap:wrap;
}
.schedule-org-link{
  font-weight:500; color: var(--cyan); text-decoration:none;
}
.schedule-org-link:hover{ color: var(--cyan-soft); text-decoration:underline; }
.schedule-speaker-line{
  display:flex; align-items:center; gap:.4rem; font-size:.82rem;
  color: var(--text-dim-navy); margin-top:.15rem;
}
.schedule-room{
  display:inline-flex; align-items:center; gap:.35rem; font-size:.72rem; font-weight:600;
  margin-top:.6rem; padding:.25rem .6rem; border-radius:999px;
  background: rgba(232,115,74,0.12); color: var(--cyan-soft); border:1px solid var(--border-cyan);
}
.schedule-speakers{ display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.75rem; }
.schedule-speaker-pill{
  display:inline-flex; align-items:center; gap:.4rem; font-size:.75rem;
  padding:.3rem .6rem .3rem .3rem; border-radius:999px;
  background: var(--bg-panel-2); border:1px solid var(--border-soft); color:#e5edf7;
}
.schedule-speaker-pill img, .schedule-speaker-pill .pill-avatar-fallback{
  width:20px; height:20px; border-radius:50%; object-fit:cover; flex-shrink:0;
}
.pill-avatar-fallback{
  display:flex; align-items:center; justify-content:center; font-size:.6rem;
  background: linear-gradient(135deg, var(--cyan), var(--violet)); color:#ffffff;
}

/* ---------- Speaker cards (photo + info) ---------- */
.speaker-card{
  padding:1.6rem 1.3rem; border-radius:18px; text-align:center;
  background: var(--card-light); border:1px solid var(--border-light);
  box-shadow: 0 1px 3px rgba(13,59,120,0.06);
  transition: transform .25s, border-color .25s;
  /* Flex column, stretched to the grid row's full height (grid items
     stretch by default) — the Company line is pinned to margin-top:auto
     so it lands on the same horizontal line across every card in a row,
     no matter how many lines the title above it wraps to. */
  display:flex; flex-direction:column; height:100%;
}
.speaker-card:hover{ transform: translateY(-4px); border-color: var(--border-cyan); }
.speaker-avatar{
  width:200px; height:200px; border-radius:20px; margin:0 auto 1.1rem;
  display:flex; align-items:center; justify-content:center; font-size:3.6rem;
  background: linear-gradient(135deg, rgba(13,59,120,0.12), rgba(232,115,74,0.16));
  color: var(--navy); border:3px solid var(--border-cyan);
  overflow:hidden;
}
.speaker-avatar img{ width:100%; height:100%; object-fit:cover; object-position: center 15%; }
.speaker-avatar img[data-fit="top"]{ object-position: center top; }
.speaker-track-badge{
  display:inline-flex; align-items:center; gap:.3rem; font-size:.68rem; font-weight:700;
  letter-spacing:.03em; text-transform:uppercase; color: var(--cyan);
  margin-top:.3rem;
}
.speaker-topic{ font-size:.78rem; color: var(--text-dim); margin-top:.6rem; line-height:1.45; }
.speaker-title{
  font-size:.75rem; color: var(--text-dim); margin-top:.25rem; line-height:1.35;
}
/* Pinned to the bottom of the (flex, stretched) card via margin-top:auto,
   so every card's orange Company line sits on the same horizontal line
   across a row — independent of whether the title above wraps to 1 or 2 lines. */
.speaker-company{ font-size:.78rem; color: var(--cyan); font-weight:700; margin-top:auto; padding-top:.5rem; }
.speaker-contact{
  list-style:none; margin:.7rem 0 0; padding-top:.6rem; border-top:1px dashed var(--border-light);
  display:flex; flex-direction:column; gap:.4rem; text-align:left; font-size:.72rem; color: var(--text-dim); line-height:1.4;
}
.speaker-contact li{ display:flex; align-items:flex-start; gap:.45rem; }
.speaker-contact i{ color: var(--cyan); width:14px; flex-shrink:0; margin-top:.15rem; }
.speaker-contact a{ color: var(--cyan); text-decoration:none; word-break:break-all; }
.speaker-contact a:hover{ color: var(--cyan-soft); text-decoration:underline; }
.speaker-website{
  display:flex; align-items:center; justify-content:center; gap:.35rem; font-size:.72rem;
  color: var(--cyan); margin-top:.5rem; text-decoration:none;
}
.speaker-website:hover{ text-decoration:underline; }
.speaker-website + .speaker-website{ margin-top:.3rem; }

/* ---------- Partner / company logo wall ---------- */
.logo-wall{
  display:grid; grid-template-columns:repeat(2,1fr); gap:1.4rem; margin-top:1.2rem;
}
@media (min-width:640px){ .logo-wall{ grid-template-columns:repeat(3,1fr); } }
@media (min-width:1024px){ .logo-wall{ grid-template-columns:repeat(5,1fr); } }
.logo-slot{
  aspect-ratio: 4/3; border-radius:16px;
  background: var(--card-light); border:1px dashed var(--border-light);
  display:flex; align-items:center; justify-content:center; padding:.55rem;
  transition: border-color .2s, background .2s, transform .2s, box-shadow .2s;
  text-decoration:none; cursor:pointer; overflow:hidden;
}
.logo-slot:hover{ border-color: var(--border-cyan); background: rgba(232,115,74,0.05); transform: translateY(-3px); box-shadow: 0 10px 24px rgba(13,59,120,0.12); }
.logo-slot img{ width:100%; height:100%; object-fit:contain; transform:scale(var(--logo-zoom, 1)); transition: transform .2s; }
.logo-slot.is-empty{ flex-direction:column; gap:.4rem; color: var(--text-dim); font-size:.72rem; text-align:center; }
.logo-slot.is-empty i{ font-size:1.3rem; color: var(--text-dim); }

/* Full-bleed variant: logo image already has its own brand-color
   background (e.g. Samsung's blue panel) — let it fill the whole
   frame edge-to-edge instead of floating on a padded white card. */
.logo-slot.logo-fill{ padding:1.1rem; border-style:solid; border-color:transparent; }
.logo-slot.logo-fill img{ width:100%; height:100%; object-fit:contain; }

/* ---------- Organizer panel (stays navy — CTA anchor section) ---------- */
.organizer-panel{
  padding:2.5rem; border-radius:24px;
  background: var(--navy); border:1px solid var(--border-soft);
}
@media (max-width: 767px){
  /* Below the md breakpoint, Tailwind's "grid md:grid-cols-[1.2fr_1fr]"
     has no explicit column track, so the implicit single-column grid
     sizes itself to content (max-content) instead of the container width
     — that's what let the long "KOTRA München & KAISA" heading overflow
     the card instead of wrapping. Force a real, full-width single column. */
  .organizer-panel{ grid-template-columns: 1fr !important; }
  .organizer-panel > *{ min-width:0; width:100%; }
}
.kotra-badge{
  width:360px; height:230px; border-radius:18px;
  /* Uses the SAME --navy variable as the rest of the site (nav, hero,
     organizer panel) so the badge background is never a different blue
     from a baked-in logo image. */
  background: var(--navy);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  padding:1.8rem 1.2rem; box-sizing:border-box;
  box-shadow: 0 10px 30px rgba(0,0,0,0.25);
}
/* Official KOTRA wordmark (white-on-navy render of the real logo).
   The source PNG's navy fill is a hair off from --navy, so the image is
   feathered with a mask — only the white letterforms stay fully opaque,
   their navy fill fades out before it reaches the badge edge, revealing
   the badge's own --navy background underneath with no visible seam. */
.kotra-badge-logo-img{
  display:block; width:96%; height:auto; max-height:100%; object-fit:contain;
  -webkit-mask-image: radial-gradient(ellipse 54% 48% at 50% 42%, rgba(0,0,0,1) 40%, rgba(0,0,0,0) 100%);
  mask-image: radial-gradient(ellipse 54% 48% at 50% 42%, rgba(0,0,0,1) 40%, rgba(0,0,0,0) 100%);
  /* Punch up the white letterforms so they read crisp/bright against navy. */
  filter: brightness(1.25) contrast(1.3);
}

/* Small label between the two co-host badges in the Organizer panel. */
.co-host-divider{
  display:flex; align-items:center; gap:.6rem; width:100%; max-width:260px;
  font-size:.7rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  color: var(--cyan-soft);
}
.co-host-divider::before, .co-host-divider::after{
  content:''; flex:1; height:1px; background: var(--border-soft);
}

/* KAISA logo badge — the source logo is designed for a white background,
   so (unlike the white-on-navy KOTRA badge) this one keeps a white card.
   Footprint (width/min-height/padding) matches .kotra-badge exactly so
   the two co-host badges read as an equal-size pair, not one dominant
   and one secondary logo. */
.kaisa-badge{
  width:360px; height:230px; border-radius:18px;
  background:#ffffff;
  display:flex; align-items:center; justify-content:center;
  padding:1.8rem 1.2rem; box-sizing:border-box;
  box-shadow: 0 10px 30px rgba(0,0,0,0.25);
}
.kaisa-badge-logo-img{ display:block; width:100%; height:auto; max-height:100%; object-fit:contain; }

/* ---------- Form (light card on the light page) ---------- */
.form-panel{
  padding:2rem; border-radius:22px;
  background: var(--card-light); border:1px solid var(--border-light);
  box-shadow: 0 1px 4px rgba(13,59,120,0.07);
}
.form-field{ display:flex; flex-direction:column; gap:.4rem; }
.form-field label{ font-size:.82rem; font-weight:600; color: var(--text-navy); }
.form-field input, .form-field select, .form-field textarea{
  padding:.7rem .9rem; border-radius:10px; font-size:.92rem;
  background: var(--bg-page); border:1px solid var(--border-light); color: var(--text-navy);
  outline:none; transition: border-color .2s, box-shadow .2s;
}
.form-field input::placeholder, .form-field textarea::placeholder{ color:#8ba0bd; }
.form-field input:focus, .form-field select:focus, .form-field textarea:focus{
  border-color: var(--cyan); box-shadow: 0 0 0 3px rgba(232,115,74,0.15);
}
.form-field select option{ background: #ffffff; color: var(--text-navy); }

/* ---------- Entrance animation (runs once on load, not scroll-gated) ---------- */
/* Content is visible by default; JS adds .animate-in on load to play a subtle
   one-time fade/rise. If JS is slow, disabled, or a tool screenshots the page
   before it runs, content is still fully visible — never stuck at opacity:0. */
[data-animate]{ opacity:1; transform:none; }
[data-animate].animate-in{ animation: fadeUpIn .6s ease both; }
@keyframes fadeUpIn{
  from{ opacity:0; transform: translateY(20px); }
  to{ opacity:1; transform: translateY(0); }
}

/* ---------- Utility ---------- */
.timeline{ list-style:none; margin-top:2.5rem; padding-left:0; position:relative; }
.timeline::before{
  content:''; position:absolute; left:23px; top:6px; bottom:6px; width:2px;
  background: linear-gradient(to bottom, var(--cyan), var(--violet));
  opacity:.5;
}
.timeline-item{ display:flex; gap:1.25rem; margin-bottom:2rem; position:relative; }
.timeline-dot{
  width:48px; height:48px; border-radius:50%; flex-shrink:0; z-index:1;
  display:flex; align-items:center; justify-content:center; font-size:1.1rem;
  background: var(--bg-panel); border:1px solid var(--border-cyan); color:#ffffff;
}
.timeline-time{ font-size:.72rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color: var(--cyan); }
