@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Noto+Sans+JP:wght@400;500;600;700&display=swap");

:root {
  --red: #e51f1f;
  --ink: #222;
  --muted: #666;
  --line: #ddd;
  --soft: #f5f5f5;
  --white: #fff;
  --max: 1180px;
  --side: max(24px, calc((100vw - var(--max)) / 2));
}

* { box-sizing: border-box; }
html { scroll-behavior: auto; scroll-padding-top: 78px; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--white);
  font-family: "DM Sans", "Noto Sans JP", sans-serif;
  font-size: 14px;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { color: inherit; font: inherit; }
.section { padding: 112px var(--side); }

.site-header {
  position: fixed;
  z-index: 100;
  inset: 0 0 auto;
  height: 88px;
  padding: 0 var(--side);
  display: flex;
  align-items: center;
  gap: 44px;
  background: rgba(255,255,255,.96);
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(10px);
  transition: box-shadow .3s, background .3s;
}
.site-header.is-scrolled { box-shadow: 0 8px 24px rgba(0,0,0,.07); }
.brand-logo { width: 215px; }
.global-nav {
  margin-left: auto;
  display: flex;
  gap: 32px;
  font-size: 14px;
}
.global-nav a { transition: color .2s; }
.global-nav a:hover { color: var(--red); }
.registration {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  color: white;
  background: var(--red);
  font-weight: 600;
  transition: background .2s, transform .2s;
}
.registration:hover { background: #c91616; }
.registration-header { min-width: 154px; padding: 13px 16px; font-size: 14px; }
.registration-main { min-width: 278px; padding: 17px 20px; font-size: 14px; }
.mobile-registration { display: none; }

.hero { padding-top: 88px; background: #fafafa; }
.hero-inner {
  position: relative;
  min-height: 650px;
  padding: 70px var(--side) 55px;
  display: grid;
  grid-template-columns: 1.08fr .92fr;
  align-items: center;
  overflow: hidden;
}
.hero-copy { position: relative; z-index: 2; }
.jasis-logo { width: 230px; margin-bottom: 46px; }
.hero-label, .section-label {
  margin: 0 0 18px;
  color: var(--red);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .16em;
}
.hero h1 {
  margin: 0;
  font-size: clamp(42px, 4.25vw, 61px);
  line-height: 1.35;
  letter-spacing: -.055em;
}
.hero h1 em { color: var(--red); font-style: normal; }
.hero-second { white-space: nowrap; }
.hero-lead {
  margin: 27px 0 32px;
  color: var(--muted);
  font-size: 15px;
  line-height: 2;
}
.hero-image { position: relative; align-self: stretch; }
.hero-image img {
  position: absolute;
  z-index: 2;
  width: 106%;
  max-width: none;
  right: -10%;
  bottom: -3%;
  filter: drop-shadow(0 25px 35px rgba(0,0,0,.13));
  animation: heroDeviceIn 1s .18s cubic-bezier(.2,.7,.2,1) both;
}
.hero-accent {
  position: absolute;
  inset: 8% -24% 8% 19%;
  background: linear-gradient(145deg, #f12626, #c90f16);
  clip-path: polygon(24% 0, 100% 0, 100% 100%, 0 100%);
  animation: heroAccentIn .9s cubic-bezier(.2,.7,.2,1) both;
}
.hero-accent::after {
  content: "";
  position: absolute;
  inset: 0;
  opacity: .22;
  background: repeating-linear-gradient(135deg, transparent 0 42px, rgba(255,255,255,.34) 43px, transparent 44px);
}
@keyframes heroAccentIn { from { opacity: 0; transform: translateX(80px); } to { opacity: 1; transform: none; } }
@keyframes heroDeviceIn { from { opacity: 0; transform: translateX(45px); } to { opacity: 1; transform: none; } }
.event-bar {
  min-height: 105px;
  padding: 0 var(--side);
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr;
  color: white;
  background: #222;
}
.event-bar > div {
  padding: 24px 34px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  border-left: 1px solid #444;
}
.event-bar > div:first-child { border-left: 0; padding-left: 0; }
.event-bar small { margin-bottom: 7px; color: #aaa; font-size: 14px; letter-spacing: .08em; }
.event-bar strong { font-size: clamp(20px, 1.8vw, 26px); font-weight: 600; }
.event-bar .booth { color: white; background: var(--red); border: 0; }
.event-bar .booth small { color: rgba(255,255,255,.7); }
.event-bar .booth strong { font-size: 26px; font-weight: 600; letter-spacing: .04em; }

.section-head { margin-bottom: 55px; }
.section-head h2 {
  margin: 0;
  font-size: clamp(36px, 4vw, 54px);
  line-height: 1.3;
  letter-spacing: -.04em;
}
.section-head > p:last-child {
  max-width: 680px;
  margin: 20px 0 0;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.9;
}
.exhibition-intro {
  max-width: 880px;
  margin-top: 28px;
  padding-top: 27px;
  border-top: 2px solid var(--red);
}
.exhibition-intro p {
  margin: 0;
  color: #444;
  font-size: 16px;
  line-height: 2;
}
.exhibition-intro p + p { margin-top: 17px; }
.about {
  display: grid;
  grid-template-columns: .7fr 1.3fr;
  gap: clamp(50px, 9vw, 130px);
  background: var(--white);
}
.about .section-head { margin: 0; }
.about-copy {
  padding-top: 35px;
  border-top: 2px solid var(--red);
}
.about-copy p {
  margin: 0;
  color: #444;
  font-size: 16px;
  line-height: 2;
}
.about-copy p + p { margin-top: 20px; }
.brand-zone {
  min-height: 590px;
  display: grid;
  grid-template-columns: .9fr 1.1fr;
  color: white;
  background: var(--red);
  overflow: hidden;
}
.zone-copy { padding: 60px; align-self: center; }
.zone-number {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 0 0 22px;
  color: var(--red);
  font-size: 19px;
  font-weight: 600;
}
.zone-number span { color: #888; font-size: 14px; font-weight: 500; letter-spacing: .1em; }
.brand-zone .zone-number { color: white; }
.brand-zone .zone-number span { color: rgba(255,255,255,.7); }
.zone-copy h3, .zone-card h3 {
  margin: 0;
  font-size: clamp(30px, 3vw, 44px);
  line-height: 1.3;
  letter-spacing: -.035em;
}
.zone-catch { font-size: 18px !important; font-weight: 600; line-height: 1.65 !important; }
.zone-body p, .zone-card-body > p:not(.zone-catch) {
  color: rgba(255,255,255,.82);
  font-size: 14px;
  line-height: 1.9;
}
.zone-body p { margin: 0; }
.zone-body p + p, .zone-card-body p + p { margin-top: 12px; }
.brand-zone-image { position: relative; background: linear-gradient(135deg, #e9e9e9, white); overflow: hidden; }
.brand-zone-image img {
  position: absolute;
  width: auto;
  height: 100%;
  max-width: none;
  right: -20%;
  bottom: 0;
  transition: transform .6s cubic-bezier(.2,.7,.2,1);
}
.brand-exhibit-links {
  grid-column: 1 / -1;
  padding: 34px 42px 40px;
  color: white;
  background: #b9141a;
  border-top: 1px solid rgba(255,255,255,.25);
}
.brand-exhibit-image {
  grid-column: 1 / -1;
  overflow: hidden;
  background: white;
}
.brand-exhibit-image img {
  width: 100%;
  height: auto;
  display: block;
  transition: transform .6s cubic-bezier(.2,.7,.2,1);
}
.brand-zone:hover .brand-exhibit-image img { transform: scale(1.012); }
.exhibit-links-title {
  margin: 0 0 18px;
  font-size: 16px;
  font-weight: 600;
}
.exhibit-links-title span {
  margin-left: 10px;
  color: rgba(255,255,255,.6);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: .12em;
}
.exhibit-link-grid { display: grid; grid-template-columns: repeat(3, 1fr); column-gap: 28px; }
.exhibit-link-grid a {
  min-width: 0;
  padding: 10px 0;
  display: flex;
  justify-content: space-between;
  gap: 12px;
  border-top: 1px solid rgba(255,255,255,.26);
  font-size: 14px;
  line-height: 1.55;
  transition: color .2s, padding-left .25s, border-color .2s;
}
.exhibit-link-grid a:hover { padding-left: 6px; border-color: white; }
.exhibit-link-grid a span { flex: 0 0 auto; }
.market-title { margin: 90px 0 30px; }
.market-title p { margin: 0 0 8px; color: var(--red); font-size: 14px; letter-spacing: .12em; }
.market-title h3 { margin: 0; font-size: 28px; }
.zone-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
}
.zone-card {
  position: relative;
  min-height: 900px;
  padding: 48px 48px 0;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--line);
  background: white;
  overflow: hidden;
}
.zone-card-head, .zone-card-body { position: relative; z-index: 3; }
.zone-card-body { max-width: 470px; }
.zone-card .zone-catch { margin: 28px 0 12px; }
.zone-card-body > p:not(.zone-catch) { color: var(--muted); }
.zone-card-body { margin-top: 28px; }
.zone-card:nth-child(-n+2) .zone-card-body { min-height: 260px; }
.zone-card:nth-child(n+3) .zone-card-body { min-height: 135px; }
.zone-card:nth-child(n+3) { min-height: 720px; }
.market-exhibit-links {
  position: relative;
  z-index: 3;
  margin-top: 4px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
}
.market-exhibit-links .exhibit-links-title { margin-bottom: 10px; color: var(--red); }
.market-exhibit-links .exhibit-link-grid { grid-template-columns: 1fr 1fr; column-gap: 18px; }
.market-exhibit-links .exhibit-link-grid a { border-color: #ddd; color: #444; }
.market-exhibit-links .exhibit-link-grid a:hover { color: var(--red); border-color: var(--red); }
.card-products {
  position: relative;
  inset: auto;
  width: calc(100% + 96px);
  height: auto;
  aspect-ratio: 1896 / 829;
  margin: auto -48px 0;
  padding: 24px 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7%;
  background: linear-gradient(145deg, #f1f1ef, #fafafa);
  border-top: 18px solid white;
  overflow: hidden;
}
.card-products { padding: 0; }
.card-products img.market-photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
}
.zone-card:nth-child(n+3) .card-products { height: auto; }
.card-products img { transition: transform .55s cubic-bezier(.2,.7,.2,1); }
.zone-card:hover .card-products img { transform: translateY(-5px) scale(1.025); }
.brand-zone:hover .brand-zone-image img { transform: scale(1.025); }
.zone-bio { color: var(--ink); background: white; }
.zone-bio .zone-number { color: var(--red); }
.zone-bio .zone-number span { color: #888; }
.zone-bio .zone-card-body > p:not(.zone-catch) { color: var(--muted); }

.special { color: white; background: #222; }
.section-head-light > p:last-child { color: #bbb; }
.section-head-light h2 span { color: #bbb; font-size: .58em; font-weight: 500; letter-spacing: -.02em; }
.ifz-booth {
  width: fit-content;
  max-width: none !important;
  margin-top: 28px !important;
  padding: 12px 17px;
  color: white !important;
  background: var(--red);
  font-size: 16px !important;
}
.ifz-booth strong { margin-left: 6px; font-size: 23px; }
.booth-guide {
  margin-bottom: 45px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  border: 1px solid #555;
}
.booth-guide-item {
  min-height: 220px;
  padding: 36px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  border-left: 1px solid #555;
  background: #292929;
}
.booth-guide-item:first-child { border-left: 0; }
.booth-guide-main { background: var(--red); }
.booth-guide-item > p {
  margin: 0 0 15px;
  color: #999;
  font-size: 14px;
  letter-spacing: .14em;
}
.booth-guide-main > p { color: rgba(255,255,255,.7); }
.booth-guide-item strong {
  margin-bottom: 17px;
  font-size: clamp(21px, 2.2vw, 30px);
  line-height: 1.4;
}
.booth-guide-item strong em {
  margin-left: 10px;
  padding: 5px 9px;
  color: white;
  background: var(--red);
  font-size: 15px;
  font-style: normal;
  white-space: nowrap;
}
.booth-guide-main strong em { color: var(--red); background: white; }
.booth-guide-item > span { color: #bbb; font-size: 14px; line-height: 1.8; }
.booth-guide-main > span { color: rgba(255,255,255,.85); }
.labdx-card {
  display: grid;
  grid-template-columns: .82fr 1.18fr;
  min-height: 610px;
  background: white;
  color: var(--ink);
}
.labdx-image { position: relative; min-height: 610px; background: #eee; overflow: hidden; }
.labdx-image img { width: 100%; height: 100%; object-fit: cover; }
.labdx-copy { align-self: center; padding: 52px; }
.special-badge {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 0 0 24px;
  color: var(--red);
  font-size: 14px;
  letter-spacing: .13em;
}
.special-badge strong { padding: 8px 12px; color: white; background: var(--red); font-size: 18px; letter-spacing: 0; }
.labdx-copy h3 { margin: 0; font-size: clamp(27px, 3vw, 40px); line-height: 1.45; letter-spacing: -.035em; }
.labdx-copy > p:last-child { margin: 25px 0 0; color: var(--muted); font-size: 15px; line-height: 1.9; }
.seminar-list { margin-top: 45px; border-top: 1px solid #555; }
.seminar-row {
  padding: 44px 0;
  display: grid;
  grid-template-columns: 210px 1fr;
  border-bottom: 1px solid #555;
}
.seminar-date { display: grid; grid-template-columns: auto 1fr; align-items: center; align-content: start; gap: 2px 10px; }
.seminar-date strong { color: var(--red); font-size: 76px; line-height: .9; }
.seminar-date > span { width: 28px; height: 28px; display: grid; place-items: center; border: 1px solid #777; border-radius: 50%; font-size: 14px; }
.seminar-date small { grid-column: 1 / -1; margin-top: 8px; color: #ddd; font-size: 22px; font-weight: 600; }
.seminar-content > p:first-child { margin: 0 0 10px; color: var(--red); font-size: 14px; letter-spacing: .06em; }
.seminar-content h3 { margin: 0; font-size: clamp(21px, 2.6vw, 32px); }
.seminar-summary { max-width: 900px; margin: 18px 0 0; color: #bbb; font-size: 14px; line-height: 1.9; }
.seminar-content dl { margin: 22px 0 0; }
.seminar-content dl > div {
  padding: 12px 0;
  display: grid;
  grid-template-columns: 90px 1fr;
  border-top: 1px solid #444;
}
.seminar-content dt { color: #888; }
.seminar-content dd { margin: 0; color: #ccc; line-height: 1.85; }

.visit {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  background: #f4f4f4;
}
.visit h2 { margin: 0; font-size: clamp(27px, 3.5vw, 50px); line-height: 1.45; letter-spacing: -.05em; }
.visit h2 span { display: inline-block; white-space: nowrap; }
.visit-info dl { margin: 0 0 38px; border-top: 1px solid #ccc; }
.visit-info dl > div { padding: 17px 0; display: grid; grid-template-columns: 110px 1fr; border-bottom: 1px solid #ccc; }
.visit-info dt { color: #888; font-size: 14px; }
.visit-info dd { margin: 0; font-size: 15px; }
.visit-info dd strong { color: var(--red); font-size: 22px; }

.contact { background: white; }
.form-wrap {
  width: 100%;
  min-height: 1666px;
  padding: 28px;
  display: flex;
  justify-content: center;
  border: 1px solid var(--line);
  background: #fafafa;
}
.form-wrap iframe { width: 100%; max-width: 900px; height: 1610px; border: 0; }

footer {
  min-height: 100px;
  padding: 25px var(--side);
  display: flex;
  align-items: center;
  gap: 30px;
  border-top: 1px solid var(--line);
  color: #888;
  font-size: 14px;
  letter-spacing: .08em;
}
footer img { width: 155px; }
footer a:last-child { margin-left: auto; color: var(--ink); }

.reveal { opacity: 0; transform: translateY(22px); transition: opacity .65s ease, transform .65s ease; }
.reveal.visible { opacity: 1; transform: none; }

@media (max-width: 900px) {
  .section { padding-top: 82px; padding-bottom: 82px; }
  .site-header { width: 100%; max-width: 100vw; height: 78px; gap: 0; }
  .global-nav, .registration-header { display: none; }
  .brand-logo { width: 175px; }
  .mobile-registration {
    position: absolute;
    top: 15px;
    right: 24px;
    display: block;
    padding: 8px 10px;
    color: white;
    background: var(--red);
    font-size: 14px;
    font-weight: 600;
  }
  .hero { padding-top: 78px; }
  .hero-inner { min-height: 0; display: block; padding: 55px 24px 0; }
  .hero-copy { width: 100%; max-width: calc(100vw - 48px); min-width: 0; overflow-wrap: anywhere; }
  .jasis-logo { width: 190px; margin-bottom: 38px; }
  .hero h1 { font-size: clamp(37px, 10vw, 52px); }
  .hero-image { position: relative; inset: auto; width: calc(100% + 48px); height: 350px; margin: 38px -24px 0; }
  .hero-image img { width: 106%; right: -12%; bottom: -3%; }
  .hero-accent { inset: 6% -22% 6% 15%; width: auto; }
  .event-bar { grid-template-columns: 1fr 1fr; }
  .event-bar > div { padding: 20px; }
  .event-bar > div:first-child { padding-left: 0; }
  .event-bar .booth { grid-column: 1 / -1; margin: 0 calc(var(--side) * -1); padding-left: var(--side); }
  .about { grid-template-columns: 1fr; gap: 34px; }
  .about-copy { padding-top: 28px; }
  .brand-zone { grid-template-columns: 1fr; }
  .brand-zone-image { min-height: 350px; }
  .zone-copy { padding: 42px; }
  .zone-grid { grid-template-columns: 1fr; }
  .zone-card,
  .zone-card:nth-child(n+3) {
    min-height: 0;
    padding: 40px 40px 0;
    display: flex;
    flex-direction: column;
  }
  .zone-card:nth-child(-n+2) .zone-card-body,
  .zone-card:nth-child(n+3) .zone-card-body { min-height: 0; }
  .card-products,
  .zone-card:nth-child(n+3) .card-products {
    position: relative;
    inset: auto;
    width: calc(100% + 80px);
    height: auto;
    aspect-ratio: 1896 / 829;
    margin: 28px -40px 0;
  }
  .exhibit-link-grid { grid-template-columns: 1fr 1fr; }
  .booth-guide { grid-template-columns: 1fr; }
  .booth-guide-item { border-left: 0; border-top: 1px solid #555; }
  .booth-guide-item:first-child { border-top: 0; }
  .labdx-card { grid-template-columns: 1fr; }
  .labdx-image { min-height: 350px; }
  .labdx-copy { padding: 42px; }
  .visit { grid-template-columns: 1fr; gap: 45px; }
}

@media (max-width: 560px) {
  .section-head { margin-bottom: 38px; }
  .hero h1 { font-size: clamp(27px, 8.9vw, 35px); line-height: 1.45; }
  .hero-lead { font-size: 14px; }
  .hero-lead { max-width: calc(100vw - 48px); }
  .hero-image { height: 300px; }
  .registration-main { width: calc(100vw - 48px); min-width: 0; }
  .event-bar { display: block; padding-top: 13px; }
  .event-bar > div, .event-bar > div:first-child { padding: 12px 0; border: 0; border-bottom: 1px solid #444; }
  .event-bar .booth { margin-top: 10px; padding: 17px var(--side); border: 0; }
  .zone-copy { padding: 34px 27px; }
  .zone-card,
  .zone-card:nth-child(n+3) { min-height: 0; padding: 34px 27px 0; }
  .card-products,
  .zone-card:nth-child(n+3) .card-products {
    width: calc(100% + 54px);
    margin: 24px -27px 0;
  }
  .brand-exhibit-links { padding: 30px 27px 34px; }
  .exhibit-link-grid, .market-exhibit-links .exhibit-link-grid { grid-template-columns: 1fr; }
  .brand-zone-image { min-height: 270px; }
  .market-title { margin-top: 65px; }
  .labdx-image { min-height: 260px; }
  .labdx-copy { padding: 34px 27px; }
  .seminar-row { grid-template-columns: 1fr; gap: 25px; }
  .seminar-date { grid-template-columns: auto auto 1fr; justify-content: start; }
  .seminar-date small { grid-column: auto; align-self: center; margin-left: 10px; }
  .seminar-content dl > div { grid-template-columns: 72px 1fr; }
  .visit-info dl > div { grid-template-columns: 85px 1fr; }
  .form-wrap { min-height: 1910px; padding: 0; border-left: 0; border-right: 0; }
  .form-wrap iframe { height: 1910px; }
  footer { flex-wrap: wrap; }
  footer p { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
  .reveal { opacity: 1; transform: none; }
}

/* PDF出力時はPCレイアウトを維持する */
@page {
  size: A3 portrait;
  margin: 0;
}

@media print {
  html { scroll-behavior: auto; }
  body { min-width: 1000px; }
  *, *::before, *::after {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .site-header { position: absolute; }
  .reveal { opacity: 1 !important; transform: none !important; }
  .brand-zone,
  .zone-card,
  .labdx-card,
  .seminar-row { break-inside: avoid; }
}
