:root{
  --bg:#0f1a2b;
  --ink:#131722;
  --muted:#6b7280;
  --card:#101826;
  --panel:#0b1320;
  --surface:#ffffff;
  --brand:#172c51;
  --brand-2:#233a6a;
  --gold:#cba35b;
  --line:#e5e7eb;
  --focus:#7aa2ff;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:"Noto Sans JP", system-ui, -apple-system, Segoe UI, Roboto, "Yu Gothic", Meiryo, sans-serif;
  color:var(--ink);
  background:#f6f7fb;
}

/* utility */
.container{width:min(1120px, calc(100% - 3rem)); margin-inline:auto}
.sp-only{display:none}
.pc-only{display:initial}
@media (max-width: 768px){
  .sp-only{display:initial}
  .pc-only{display:none}
}

/* buttons */
.btn{
  display:inline-flex; align-items:center; justify-content:center;
  gap:.5rem; padding:.9rem 1.2rem; border-radius:14px;
  font-weight:700; text-decoration:none; transition:.2s ease;
  border:1px solid transparent;
}
.btn:focus-visible{outline:3px solid var(--focus); outline-offset:2px}
.btn-primary{background:var(--brand); color:#fff; border-color:transparent}
.btn-primary:hover{background:var(--brand-2)}
.btn-ghost{background:transparent; border-color:var(--line); color:var(--ink)}
.btn-ghost:hover{background:#f1f3f8}
.btn-outline{background:transparent; border-color:var(--ink); color:var(--ink)}
.btn-outline:hover{background:#111827; color:#fff}
.btn-gold{background:var(--gold); color:#1a1a1a}
.btn-gold:hover{filter:brightness(.95)}
.btn-full{width:100%}
.btn-lg{padding:1.05rem 1.4rem; font-size:1.1rem}

/* header */
.site-header{
  position:sticky; top:0; z-index:50; background:rgba(15,26,43,.9); backdrop-filter: blur(8px);
  border-bottom:1px solid rgba(255,255,255,.08); color:#fff;
}
.header-wrap{display:flex; align-items:center; justify-content:space-between; padding:1rem 0}
.brand{display:flex; align-items:center; gap:.75rem; color:#fff}
.brand-mark{font-family:"Marcellus", serif; font-size:1.4rem; letter-spacing:.08em}
.brand-line{font-weight:700; letter-spacing:.06em}
.site-nav{display:flex; gap:1rem}
.nav-link{color:#cbd5e1; text-decoration:none; font-weight:600}
.nav-link:hover{color:#fff}
.header-cta{margin-left:1rem}
@media (max-width: 900px){
  .site-nav{display:none}
}

/* hero */
.hero{
  background:linear-gradient(180deg, var(--bg), #0f1a2b 60%, #162742);
  color:#fff; padding-block:4rem 2rem;
}
.hero-grid{display:grid; grid-template-columns: 1.2fr .8fr; gap:2rem; align-items:center}
.hero-visual img{width:100%; height:auto; border-radius:20px; box-shadow: 0 20px 60px rgba(0,0,0,.35)}
.kicker{color:#cbd5e1; letter-spacing:.06em}
.display{font-family:"Marcellus", serif; font-size: clamp(2rem, 5vw, 3.2rem); line-height:1.1; margin:.3rem 0 1rem}
.lead{color:#e5e7eb; font-weight:400}
.hero-cta{display:flex; gap:.8rem; margin-top:1.2rem; flex-wrap:wrap}
.hero-meta{display:flex; gap:.6rem; margin-top:1rem}
.badge{background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.18); padding:.45rem .7rem; border-radius:999px; font-size:.85rem}

/* countdown */
.countdown{margin-top:1.5rem; background:rgba(0,0,0,.25); border:1px solid rgba(255,255,255,.18); border-radius:16px; padding:1rem}
.cd-label{font-weight:700; color:#e5e7eb}
.cd-time{display:flex; gap:1rem; margin:.6rem 0}
.cd-time div{background:#0b1320; padding:.6rem .8rem; border-radius:12px; text-align:center; min-width:70px}
.cd-time strong{font-family:"Marcellus", serif; font-size:1.6rem}
.cd-note{color:#cbd5e1; margin:.2rem 0 0}
@media (max-width: 768px){
  .hero-grid{grid-template-columns: 1fr}
}

/* sections */
.section{padding-block:4rem}
.section-title{font-family:"Marcellus", serif; font-size: clamp(1.6rem, 3.6vw, 2.2rem); margin:0 0 1rem}
.section-lead{color:var(--muted); margin:.2rem 0 2rem}
.section-accent{background:#0f172a; color:#fff}
.section-tint{background:#f1f4fb}

/* cards */
.cards{display:grid; grid-template-columns: repeat(3, 1fr); gap:1rem}
.card{background:#fff; border:1px solid var(--line); border-radius:16px; padding:1.2rem; box-shadow:0 8px 26px rgba(2,6,23,.05)}
.card h3{margin:.2rem 0 .6rem}
.card p{color:var(--muted)}
@media (max-width: 900px){ .cards{grid-template-columns:1fr} }

/* register grid */
.register-grid{display:grid; grid-template-columns: repeat(3, 1fr); gap:1rem}
.reg-card{background:#111827; color:#fff; border:1px solid rgba(255,255,255,.08); border-radius:16px; padding:1.2rem}
.reg-head{margin-bottom:1rem}
.reg-time{color:#cbd5e1; margin:.3rem 0 0}
.tag{display:inline-block; padding:.2rem .6rem; border-radius:999px; font-size:.75rem; font-weight:700; border:1px solid rgba(255,255,255,.2)}
.tag.live{background:#0b3b8f}
.tag.archive{background:#3b2a0b}
@media (max-width: 1100px){ .register-grid{grid-template-columns: repeat(2, 1fr)} }
@media (max-width: 680px){ .register-grid{grid-template-columns:1fr} }

/* invite (案内状) */
.invite{background:#fff; border:1px solid var(--line); border-radius:16px; padding:1.5rem; box-shadow:0 8px 26px rgba(2,6,23,.05)}
.bullets{margin:.6rem 0 1rem 1.2rem}
.bullets li{margin:.2rem 0}
.invite-actions{display:flex; gap:.6rem; flex-wrap:wrap}

/* speakers */
.speakers{display:grid; grid-template-columns:1fr 1fr; gap:1rem}
.speaker{display:grid; grid-template-columns:160px 1fr; gap:1rem; background:#fff; border:1px solid var(--line); border-radius:16px; padding:1rem}
.speaker img{width:100%; height:160px; object-fit:cover; border-radius:12px}
.speaker-body p{margin:.3rem 0}
.text-dim{color:var(--muted)}
.small{font-size:.9rem}
@media (max-width: 900px){
  .speakers{grid-template-columns:1fr}
  .speaker{grid-template-columns:1fr}
  .speaker img{height:220px}
}

/* quotes */
.quotes{display:grid; grid-template-columns:1fr 1fr; gap:1rem}
.quotes blockquote{background:#fff; border-left:4px solid var(--gold); margin:0; padding:1rem; border-radius:8px}
.quotes cite{display:block; margin-top:.6rem; color:#var(--muted); font-style:normal}
@media (max-width: 900px){ .quotes{grid-template-columns:1fr} }

/* CTA strip */
.section-cta{background:linear-gradient(90deg, #152137, #1f3257); color:#fff; padding-block:3rem}
.cta-wrap{display:grid; grid-template-columns:1fr auto; gap:1rem; align-items:center}
.cta-title{font-family:"Marcellus", serif; font-size: clamp(1.6rem, 3.8vw, 2.4rem); margin:0}
.cta-sub{color:#d1d5db; margin:0}
@media (max-width: 900px){ .cta-wrap{grid-template-columns:1fr} }

/* footer */
.site-footer{background:#0b1320; color:#cbd5e1; padding:2rem 0}
.footer-grid{display:grid; grid-template-columns:1fr auto; gap:1rem; align-items:start}
.brand--footer .brand-mark{color:#fff}
.footer-links{display:flex; gap:1rem; flex-wrap:wrap}
.footer-links a{color:#cbd5e1; text-decoration:none}
.footer-links a:hover{color:#fff}

/* focus & reduced motion */
:focus-visible{outline:3px solid var(--focus); outline-offset:2px}
@media (prefers-reduced-motion: reduce){
  *{animation:none !important; transition:none !important}
}