.hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 2rem 3.5rem; align-items: center; max-width: 84rem; margin: 0 auto; padding: clamp(2.2rem, 6vw, 5rem) clamp(1rem, 3vw, 2.5rem) 2rem; }
.hero h1 { margin-top: 1rem; max-width: 15ch; font-size: clamp(2.4rem, 5vw, 4.2rem); line-height: 1.02; }
.cta { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 2rem; }
.hero .value { margin-top: 1.4rem; max-width: 34rem; font: 500 1.3rem/1.45 var(--display); color: var(--ink); }
.hero .price { margin-top: .9rem; max-width: 34rem; font-size: .97rem; color: var(--ink-2); }
.hero .price b { color: var(--ink); font-weight: 600; }
.hero .cta .btn { font-size: 1.02rem; padding: .95rem 1.4rem; }
video.loop { display: block; width: 100%; height: auto; background: var(--paper-2); }
.hero-film { margin: 0; }
.hero-film video { aspect-ratio: 16 / 9; border: 1px solid var(--rule-strong); border-radius: var(--r); box-shadow: 0 1.2rem 2.4rem -1.6rem rgba(20, 33, 61, .45); }
.hero-film figcaption, .sim p { font-size: .88rem; color: var(--ink-3); }
.hero-film figcaption { margin-top: .7rem; }
.hero-film figcaption .mono { color: var(--magenta); font-weight: 600; margin-right: .4rem; }
.sims { max-width: 84rem; margin: 0 auto; padding: 1.5rem clamp(1rem, 3vw, 2.5rem) 3.5rem; }
.sims-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: .4rem 2rem; border-top: 3px solid var(--ink); padding-top: 1rem; }
.sims-head h2 { margin: 0; }
.sims-head p { margin: 0; color: var(--ink-2); font-size: .95rem; }
.sims-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; margin-top: 1.4rem; }
.sim { display: block; text-decoration: none; color: var(--ink); }
.sim video { aspect-ratio: 926 / 432; border-radius: var(--r); border: 1px solid var(--rule); }
.sim h3 { margin-top: .8rem; display: flex; align-items: center; gap: .6rem; }
.sim p { margin-top: .3rem; color: var(--ink-2); }
.sim:hover h3 { color: var(--sea); }
.tag { font: 600 .64rem/1 var(--body); letter-spacing: .14em; text-transform: uppercase; padding: .3rem .45rem; border-radius: var(--r); border: 1px solid var(--rule-strong); color: var(--ink-2); }
.tag.free { border-color: var(--sea); background: var(--sea); color: var(--paper); }
.log { margin: 0; border-top: 3px solid var(--ink); }
.log div { display: flex; justify-content: space-between; align-items: baseline; padding: .7rem 0; border-bottom: 1px solid var(--rule); }
.log dt { font: 500 .85rem/1.2 var(--body); color: var(--ink-2); }
.log dd { margin: 0; font-size: 1.5rem; font-weight: 600; color: var(--ink); }
.chart-wrap { margin: 0 auto; max-width: 96rem; padding: 0 clamp(0rem, 2vw, 2rem); }
.chart-scroll { overflow-x: auto; scrollbar-width: thin; }
#course-chart { width: 100%; min-width: 880px; height: auto; display: block; }
.chart-wrap figcaption { display: flex; justify-content: space-between; gap: 1rem; padding: .7rem clamp(1rem, 3vw, 2.5rem) 0; font-size: .85rem; color: var(--ink-3); }
.chart-wrap .hint { display: none; white-space: nowrap; color: var(--magenta); font-weight: 600; }
.wp { cursor: pointer; }
.wp circle { transition: transform .2s; }
.wp:hover circle, .wp:focus circle { stroke: var(--magenta); }
.route { animation: route-draw 2.4s ease-in-out both; stroke-dashoffset: 0; }
@keyframes route-draw { from { stroke-dashoffset: 1900; opacity: .2; } to { stroke-dashoffset: 0; opacity: 1; } }
.plan { max-width: 84rem; margin: 0 auto; padding: 3.5rem clamp(1rem, 3vw, 2.5rem) 0; display: grid; grid-template-columns: 17rem minmax(0, 1fr); gap: 1rem 4rem; }
.plan-head h2 { margin: 0; }
.plan-head p { color: var(--ink-2); font-size: .95rem; }
.plan-list { list-style: none; margin: 0; padding: 0; columns: 2; column-gap: 3rem; border-top: 3px solid var(--ink); }
.plan-list li { break-inside: avoid; border-bottom: 1px solid var(--rule); }
.plan-list a { display: grid; grid-template-columns: 2.6rem 1fr auto; gap: .6rem; align-items: baseline; padding: .75rem 0; text-decoration: none; color: var(--ink); }
.plan-list .n { font: 600 .9rem/1 var(--mono); color: var(--magenta); }
.plan-list .t { font-weight: 500; }
.plan-list .st { font: 600 .66rem/1 var(--body); letter-spacing: .14em; text-transform: uppercase; color: var(--stbd); }
.plan-list li.soon .n, .plan-list li.soon .t { color: var(--ink-3); }
.plan-list li.soon .st { color: var(--ink-3); }
.plan-list a:hover .t { text-decoration: underline; text-underline-offset: 3px; }
.ways { max-width: 84rem; margin: 0 auto; padding: 4rem clamp(1rem, 3vw, 2.5rem) 5rem; }
.ways h2 { margin: 0; }
.ways-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.5rem; margin-top: 1.6rem; }
.way { display: block; text-decoration: none; color: var(--ink); border-top: 3px solid var(--ink); padding-top: 1rem; }
.way svg { width: 100%; height: auto; background: var(--paper-2); border-radius: var(--r); }
.way h3 { margin-top: 1rem; }
.way p { color: var(--ink-2); font-size: .97rem; margin-top: .4rem; }
.way:hover h3 { color: var(--sea); }
@media (max-width: 900px) {
  .hero { grid-template-columns: 1fr; }
  .sims-grid { grid-template-columns: 1fr; gap: 2rem; }
  .log { display: grid; grid-template-columns: 1fr 1fr; column-gap: 1.5rem; }
  .plan { grid-template-columns: 1fr; }
  .plan-list { columns: 1; }
  .ways-grid { grid-template-columns: 1fr 1fr; }
  .chart-wrap .hint { display: inline; }
}
@media (max-width: 560px) { .ways-grid { grid-template-columns: 1fr; } }
.plan-list li.exam-stop .n, .plan-list li.exam-stop .st { color: var(--magenta); }
@media (prefers-reduced-motion: reduce) { .route { animation: none; } }
@media (max-width: 560px) { .hero .value { font-size: 1.15rem; } .hero { padding-top: 1.6rem; } }
