/* =============================================================
   Edge Hub — Schedule page: annual event timeline (hero, full-bleed)
   ============================================================= */

.sc-hero {
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  padding-top: calc(var(--header-h) + clamp(10px, 2vh, 40px));
  padding-bottom: clamp(28px, 4vh, 56px);
  overflow: hidden;
  background: var(--navy-900);
}

/* background photo + yellow overlay */
.sc-hero-bg { position: absolute; inset: 0; }
.sc-hero-bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.sc-hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--mark-yellow) 88%, #FFFFFF) 0%,
    color-mix(in srgb, var(--mark-yellow) 92%, #B37E10) 100%
  );
  opacity: 0.92;
}

.sc-hero-inner {
  position: relative;
  display: flex;
  flex-direction: column;
  flex: 1;
  width: 100%;
}

.sc-kicker {
  font-family: var(--font-mono);
  font-weight: 700;
  font-size: clamp(0.8rem, 0.95vw, 0.95rem);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--navy-700);
}
.sc-hero h1 {
  margin-top: 8px;
  font-family: var(--font-jp);
  font-weight: 900;
  font-size: clamp(1.4rem, 2.4vw, 2.5rem);
  letter-spacing: 0.02em;
  color: var(--navy-900);
}
.sc-lead {
  margin-top: clamp(4px, 0.8vh, 12px);
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: clamp(0.85rem, 1vw, 1.05rem);
  line-height: 1.7;
  color: var(--navy-800);
}

/* ---------- diagonal timeline (bottom-left → top-right) ---------- */
.sc-tl {
  position: relative;
  flex: 1;
  min-height: calc(12vw + 460px);
  margin-top: clamp(8px, 1.2vh, 20px);
  --baseline: calc(13.6vw + 215px);
}

/* arrow line — thick, rotated upward */
.sc-line {
  position: absolute;
  left: 0;
  right: 44px;
  top: var(--baseline);
  height: 20px;
  border-radius: 999px;
  background: var(--navy-800);
  transform-origin: left center;
  transform: rotate(-9.5deg);
}
.sc-line::after {
  content: "";
  position: absolute;
  right: -44px;
  top: 50%;
  transform: translateY(-50%);
  border-left: 44px solid var(--navy-800);
  border-top: 28px solid transparent;
  border-bottom: 28px solid transparent;
}
.sc-tl:not(.in) .sc-line { transform: rotate(-9.5deg) scaleX(0); }
.sc-tl.in .sc-line {
  transition: transform 1.4s var(--ease-out);
  transform: rotate(-9.5deg) scaleX(1);
}

/* event node — sits on the rotated line via --x / --rise */
.sc-ev {
  position: absolute;
  left: var(--x);
  top: calc(var(--baseline) - var(--rise));
}
.sc-dot {
  position: absolute;
  left: 0;
  top: 0;
  width: 19px;
  height: 19px;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: #FFFFFF;
  border: 5px solid var(--navy-800);
  box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.35);
  z-index: 2;
}
.sc-stem {
  position: absolute;
  left: -1px;
  width: 2px;
  background: var(--navy-800);
  opacity: 0.55;
}
.sc-ev--top .sc-stem { bottom: 11px; height: clamp(22px, 4vh, 34px); }
.sc-ev--bottom .sc-stem { top: 11px; height: clamp(22px, 4vh, 34px); }

.sc-card {
  position: absolute;
  left: 0;
  transform: translateX(-50%);
  width: max-content;
  max-width: clamp(104px, 9.5vw, 148px);
  padding: clamp(7px, 1.2vh, 11px) clamp(9px, 1vw, 13px) clamp(8px, 1.3vh, 12px);
  background: var(--paper-pure);
  border: 1px solid rgba(14, 35, 72, 0.14);
  border-radius: var(--r-md);
  box-shadow: 0 16px 34px -20px rgba(87, 60, 5, 0.5);
  text-align: center;
}
/* keep edge cards inside the container */
.sc-card--first { transform: translateX(calc(-1 * min(50%, 4vw))); }
.sc-card--last { transform: translateX(calc(-100% + min(50%, 3.5vw))); }
.sc-ev--top .sc-card { bottom: clamp(34px, 5.5vh, 45px); }
.sc-ev--bottom .sc-card { top: clamp(34px, 5.5vh, 45px); }
.sc-date {
  display: block;
  font-family: var(--font-mono);
  font-weight: 700;
  font-size: clamp(0.68rem, 1.3vh, 0.76rem);
  letter-spacing: 0.08em;
  color: var(--edge-500);
}
.sc-name {
  display: block;
  margin-top: 4px;
  font-family: var(--font-jp);
  font-weight: 800;
  font-size: clamp(0.74rem, 1.5vh, 0.84rem);
  line-height: 1.45;
  color: var(--ink-900);
}

/* small CTA for upcoming events */
.sc-cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 7px;
  padding: 5px 11px;
  border-radius: var(--r-pill);
  background: var(--navy-800);
  color: #FFFFFF;
  font-family: var(--font-jp);
  font-weight: 800;
  font-size: clamp(0.64rem, 1.25vh, 0.72rem);
  letter-spacing: 0.04em;
  transition: background var(--dur-fast), transform var(--dur-fast) var(--ease-out);
}
.sc-cta svg { width: 11px; height: 11px; }
.sc-cta:hover { background: var(--edge-500); transform: translateY(-1px); }

/* staggered reveal */
.sc-tl:not(.in) .sc-ev {
  opacity: 0;
  transform: translateY(10px);
}
.sc-tl.in .sc-ev {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 0.7s var(--ease-out), transform 0.7s var(--ease-out);
  transition-delay: var(--d, 0s);
}

.sc-note {
  position: absolute;
  right: 0;
  bottom: 0;
  font-family: var(--font-jp);
  font-weight: 600;
  font-size: clamp(0.78rem, 0.88vw, 0.88rem);
  color: var(--navy-800);
}

@media (prefers-reduced-motion: reduce) {
  .sc-tl:not(.in) .sc-line { transform: rotate(-9.5deg) scaleX(1); }
  .sc-tl:not(.in) .sc-ev { opacity: 1; transform: none; }
}

/* ---------- mobile / narrow: vertical list fallback ---------- */
@media (max-width: 1080px) {
  .sc-hero { min-height: 0; }
  .sc-tl { display: flex; flex-direction: column; gap: 14px; min-height: 0; margin-top: 24px; }
  .sc-line, .sc-stem, .sc-dot { display: none; }
  .sc-ev { position: static; }
  .sc-tl:not(.in) .sc-ev { transform: none; opacity: 1; }
  .sc-card {
    position: static;
    transform: none;
    max-width: none;
    display: flex;
    align-items: center;
    gap: 14px;
    text-align: left;
    padding: 14px 16px;
  }
  .sc-card .sc-name { margin-top: 0; }
  .sc-cta { margin-top: 0; margin-left: auto; flex-shrink: 0; }
  .sc-note { position: static; margin-top: 18px; }
}


/* ===========================================================
   ALL EVENTS — イベント一覧
   =========================================================== */
.ev-section{--ev-yellow:#F2BC33;--ev-yellow-deep:#D99E14;position:relative;overflow:hidden;background:var(--paper);padding-block:clamp(72px,8vw,140px)}
.ev-inner{position:relative;z-index:2}
.ev-geo{position:absolute;inset:0;z-index:1;pointer-events:none}
.ev-shape{position:absolute;will-change:transform}
.ev-shape svg{display:block;width:100%;height:100%;animation:evFloat var(--fdur,10s) ease-in-out infinite alternate}
@keyframes evFloat{from{transform:translateY(-12px) rotate(-5deg)}to{transform:translateY(14px) rotate(6deg)}}
@media (prefers-reduced-motion: reduce){.ev-shape svg{animation:none}}
.sc-kicker--dark{color:var(--edge-500)}
.ev-title{margin-top:12px;font-family:var(--font-jp);font-weight:900;font-size:clamp(1.75rem,2.8vw,2.6rem);letter-spacing:.02em;color:var(--navy-700)}
.ev-filters{display:flex;flex-wrap:wrap;gap:clamp(16px,2.6vw,44px);margin-top:clamp(26px,3vw,42px);padding:clamp(14px,1.8vw,22px) clamp(16px,2vw,28px);background:var(--paper-pure);border:1px solid var(--paper-line);border-radius:14px;box-shadow:var(--shadow-xs)}
.ev-fgroup{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.ev-flabel{margin-right:6px;font-family:var(--font-jp);font-weight:800;font-size:.85rem;color:var(--navy-700)}
.ev-fbtn{padding:8px 18px;border:1px solid var(--border);border-radius:999px;background:var(--paper-pure);font-family:var(--font-jp);font-weight:700;font-size:.85rem;color:var(--ink-700);cursor:pointer;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}
.ev-fbtn:hover{border-color:var(--navy-500);color:var(--navy-700)}
.ev-fbtn.on{background:var(--navy-700);border-color:var(--navy-700);color:#fff}
.ev-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:clamp(18px,2.2vw,30px);margin-top:clamp(28px,3.4vw,48px)}
.ev-card{display:flex;flex-direction:column;background:var(--paper-pure);border:1px solid var(--paper-line);border-top:5px solid var(--navy-700);border-radius:16px;overflow:hidden;box-shadow:0 14px 32px -20px rgba(14,35,72,.28);transition:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out)}
.ev-card:hover{transform:translateY(-4px);box-shadow:0 24px 44px -22px rgba(14,35,72,.38)}
.ev-card--expo{border-top-color:var(--ev-yellow)}
.ev-card[hidden]{display:none}
.ev-visual{position:relative;aspect-ratio:16/9;background:var(--paper-sink)}
.ev-visual image-slot{position:absolute;inset:0;display:block;width:100%;height:100%}
.ev-status{position:absolute;top:12px;left:12px;z-index:3;padding:5px 14px;border-radius:999px;font-family:var(--font-jp);font-weight:800;font-size:.75rem;letter-spacing:.04em}
.ev-status--open{background:var(--ev-yellow);color:var(--navy-700)}
.ev-status--done{background:rgba(11,14,20,.6);color:#fff}
.ev-body{display:flex;flex-direction:column;gap:13px;flex:1;padding:18px 20px 8px}
.ev-badges{display:flex;flex-wrap:wrap;gap:8px}
.ev-type,.ev-grade{padding:4px 12px;border-radius:999px;font-family:var(--font-jp);font-weight:800;font-size:.72rem;letter-spacing:.03em}
.ev-type--expo{background:var(--ev-yellow);color:var(--navy-700)}
.ev-type--career{background:var(--navy-700);color:#fff}
.ev-grade{border:1px solid var(--border);color:var(--ink-700)}
.ev-name{font-family:var(--font-jp);font-weight:800;font-size:1.05rem;line-height:1.5;color:var(--ink-900)}
.ev-meta{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.ev-meta li{display:flex;gap:9px;font-family:var(--font-jp);font-size:.85rem;line-height:1.55;color:var(--ink-700)}
.ev-meta svg{flex-shrink:0;width:16px;height:16px;margin-top:3px;color:var(--navy-500)}
.ev-foot{margin-top:auto;padding:14px 20px 20px}
.ev-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px 16px;border-radius:999px;font-family:var(--font-jp);font-weight:800;font-size:.92rem;text-decoration:none}
.ev-btn svg{width:16px;height:16px}
.ev-btn--open{background:var(--ev-yellow);color:var(--navy-700);transition:background var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}
.ev-btn--open:hover{background:var(--ev-yellow-deep)}
.ev-btn--open:active{transform:scale(.98)}
.ev-btn--done{background:var(--paper-sink);color:var(--fg-muted);cursor:default}
.ev-empty{margin-top:clamp(28px,3.4vw,48px);font-family:var(--font-jp);font-weight:600;color:var(--fg-muted)}
@media (max-width: 640px){
  .ev-filters{flex-direction:column;align-items:flex-start;gap:14px}
  .ev-grid{grid-template-columns:1fr}
}


/* ===========================================================
   TIMELINE v2 — 年間イベントスケジュール
   =========================================================== */
.tl2{position:relative;overflow:hidden;background:linear-gradient(165deg,#F7F9FD 0%,#EEF3FA 60%,#E8EFF8 100%);padding-top:clamp(120px,11vw,180px);padding-bottom:clamp(56px,6vw,96px)}
.tl2::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background-image:linear-gradient(rgba(18,39,78,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(18,39,78,.05) 1px,transparent 1px);background-size:46px 46px;-webkit-mask-image:radial-gradient(ellipse at 50% 30%,#000 40%,transparent 85%);mask-image:radial-gradient(ellipse at 50% 30%,#000 40%,transparent 85%)}
.tl2-geo{position:absolute;inset:0;z-index:1;pointer-events:none}
.tl2-head{position:relative;z-index:2;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px;padding-inline:clamp(24px,4vw,72px)}
.tl2-kicker{font-family:var(--font-mono);font-size:.82rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--edge-500)}
.tl2-title h1{margin-top:12px;font-family:var(--font-jp);font-weight:900;font-size:clamp(1.8rem,3vw,2.7rem);letter-spacing:.02em;line-height:1.3;color:var(--navy-700)}
.tl2-side{display:flex;flex-direction:column;align-items:flex-end;gap:12px}
.tl2-year{font-family:var(--font-mono);font-weight:700;font-size:clamp(1.5rem,2.2vw,2.1rem);letter-spacing:.06em;color:var(--edge-500)}
.tl2-legend{display:flex;flex-wrap:wrap;gap:8px 18px}
.tl2-leg{display:flex;align-items:center;gap:7px;font-family:var(--font-jp);font-weight:700;font-size:.82rem;color:var(--ink-700)}
.tl2-leg i{width:10px;height:10px;border-radius:50%;background:var(--c,var(--edge-500))}
.tl2-leg[data-cat="expo"],.tl2-slot[data-cat="expo"]{--c:var(--edge-500)}
.tl2-leg[data-cat="sales"],.tl2-slot[data-cat="sales"]{--c:#2E9E6B}
.tl2-leg[data-cat="meat"],.tl2-slot[data-cat="meat"]{--c:#E2A81C}
.tl2-leg[data-cat="other"],.tl2-slot[data-cat="other"]{--c:#7A5AF8}
/* track */
.tl2-wrap{position:relative;z-index:2;margin-top:clamp(26px,3vw,46px)}
.tl2-scroller{overflow-x:auto;scroll-snap-type:x proximity;padding-inline:clamp(24px,4vw,72px);padding-bottom:16px;scrollbar-width:thin;scrollbar-color:var(--navy-300) transparent}
.tl2-track{position:relative;display:flex;gap:clamp(18px,2vw,30px);width:max-content}
.tl2-line{position:absolute;left:0;right:0;top:51px;height:3px;border-radius:2px;background:linear-gradient(90deg,var(--edge-500) 0%,var(--navy-500) 100%);transform:scaleX(0);transform-origin:left;transition:transform 1.6s var(--ease-out) .1s}
.tl2-track.in .tl2-line{transform:scaleX(1)}
.tl2-slot{position:relative;width:min(300px,76vw);flex-shrink:0;scroll-snap-align:center;display:flex;flex-direction:column}
.tl2-month{height:34px;display:flex;justify-content:center;align-items:flex-start}
.tl2-mlabel{padding:4px 16px;border-radius:999px;font-family:var(--font-jp);font-weight:800;font-size:.86rem;color:var(--ink-700)}
.tl2-mlabel.on{background:var(--edge-500);color:#fff;box-shadow:0 6px 14px -6px rgba(47,107,255,.6)}
.tl2-axis{position:relative;height:46px}
.tl2-dot{position:absolute;left:50%;top:10px;transform:translateX(-50%);width:14px;height:14px;border-radius:50%;background:var(--c);border:3px solid #fff;box-shadow:0 0 0 2px var(--c);z-index:2;opacity:0;transition:opacity .5s var(--ease-out) .35s}
.tl2-stem{position:absolute;left:50%;top:22px;bottom:-2px;width:2px;transform:translateX(-50%);background:var(--c);opacity:0;transition:opacity .5s var(--ease-out) .45s}
.tl2-slot.in .tl2-dot{opacity:1}
.tl2-slot.in .tl2-stem{opacity:.4}
/* card */
.tl2-card{flex:1;display:flex;flex-direction:column;gap:11px;padding:16px;background:#fff;border:1px solid var(--paper-line);border-radius:16px;box-shadow:0 18px 36px -24px rgba(14,35,72,.32);opacity:0;transform:translateX(-46px);transition:opacity .85s var(--ease-out),transform .85s var(--ease-out)}
.tl2-slot:nth-of-type(even) .tl2-card{transform:translateX(46px)}
.tl2-slot.in .tl2-card{opacity:1;transform:none}
.tl2-chead{display:flex;align-items:center;justify-content:space-between;gap:8px}
.tl2-date{font-family:var(--font-jp);font-weight:900;font-size:1.3rem;color:var(--c)}
.tl2-date small{margin-left:2px;font-size:.78rem;font-weight:700}
.tl2-badge{flex-shrink:0;padding:4px 10px;border-radius:999px;font-family:var(--font-jp);font-weight:800;font-size:.68rem;letter-spacing:.02em;color:var(--c);background:color-mix(in srgb,var(--c) 12%,#fff)}
.tl2-name{font-family:var(--font-jp);font-weight:800;font-size:.98rem;line-height:1.45;color:var(--ink-900);min-height:2.9em}
.tl2-meta{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;min-height:44px}
.tl2-meta li{display:flex;gap:8px;font-family:var(--font-jp);font-size:.82rem;line-height:1.5;color:var(--ink-700)}
.tl2-meta svg{flex-shrink:0;width:15px;height:15px;margin-top:2px;color:var(--navy-500)}
.tl2-photo{position:relative;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:var(--paper-sink)}
.tl2-photo image-slot{position:absolute;inset:0;display:block;width:100%;height:100%}
/* nav + note */
.tl2-nav{position:absolute;top:46%;z-index:4;display:flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:50%;background:#fff;border:1px solid var(--paper-line);box-shadow:var(--shadow-md);color:var(--navy-700);cursor:pointer;transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}
.tl2-nav:hover{transform:scale(1.06);box-shadow:var(--shadow-lg)}
.tl2-nav svg{width:20px;height:20px}
.tl2-prev{left:clamp(8px,1.4vw,22px)}
.tl2-next{right:clamp(8px,1.4vw,22px)}
.tl2-note{margin-top:10px;padding-inline:clamp(24px,4vw,72px);font-family:var(--font-jp);font-size:.8rem;color:var(--fg-muted)}
@media (max-width: 640px){
  .tl2-nav{display:none}
  .tl2-scroller{scroll-snap-type:x mandatory}
  .tl2-side{align-items:flex-start}
}
@media (prefers-reduced-motion: reduce){
  .tl2-line{transform:none;transition:none}
  .tl2-card,.tl2-dot,.tl2-stem{opacity:1;transform:none;transition:none}
  .tl2-slot.in .tl2-stem,.tl2-stem{opacity:.4}
}


/* ===== v3 overrides: pale-yellow timeline bg, tl2 buttons, richer geo motion ===== */
.tl2{background:linear-gradient(168deg,#FFFBEC 0%,#FBF2D5 58%,#F6EBC4 100%)}
.tl2::before{background-image:linear-gradient(rgba(18,39,78,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(18,39,78,.06) 1px,transparent 1px);background-size:44px 44px}
.tl2-btn{margin-top:auto;display:flex;align-items:center;justify-content:center;gap:8px;padding:11px 14px;border-radius:999px;font-family:var(--font-jp);font-weight:800;font-size:.88rem;text-decoration:none;transition:background var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}
.tl2-btn svg{width:15px;height:15px}
.tl2-btn--more{background:var(--edge-500);color:#fff}
.tl2-btn--more:hover{background:var(--navy-500);box-shadow:var(--shadow-glow)}
.tl2-btn--open{background:#E2A81C;color:var(--navy-700)}
.tl2-btn--open:hover{background:#C98F13}
.tl2-btn:active{transform:scale(.98)}
.tl2-mlabel.on{background:#E2A81C;color:var(--navy-700);box-shadow:0 6px 14px -6px rgba(201,151,28,.55)}
/* geo shapes v2: drift + tumble */
.ev-shape{will-change:transform}
.ev-shape svg{display:block;width:100%;height:100%;animation:evDrift var(--fdur,12s) cubic-bezier(.45,.05,.55,.95) infinite alternate}
@keyframes evDrift{0%{transform:translate3d(0,-18px,0) rotate(var(--r0,-6deg)) scale(1)}55%{transform:translate3d(12px,6px,0) rotate(calc((var(--r0,-6deg) + var(--r1,7deg)) / 2)) scale(1.04)}100%{transform:translate3d(-8px,20px,0) rotate(var(--r1,7deg)) scale(.98)}}
@media (prefers-reduced-motion: reduce){.ev-shape svg{animation:none}}

.tl2-btn--closed{background:rgba(18,39,78,.07);color:#5C6470;cursor:default;pointer-events:none}
