:root {
	--fm-paper: #fff;
	--fm-ink: #121713;
	--fm-green: #0c3b2d;
	--fm-green-deep: #082a21;
	--fm-terra: #c95e3d;
	--fm-muted: #69706b;
	--fm-line: #d9ddd9;
	--fm-soft: #f3f2ee;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body.fm-body { margin: 0; background: var(--fm-paper); color: var(--fm-ink); font-family: Manrope, Arial, sans-serif; font-size: 16px; line-height: 1.6; }
.fm-page { min-width: 320px; overflow: hidden; }
.fm-page a { color: inherit; text-decoration: none; }
.fm-page img { display: block; max-width: 100%; }
.fm-nav, .fm-footer { width: min(100% - 64px, 1360px); margin: 0 auto; }
.fm-nav { height: 82px; display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.fm-brand { font-size: 23px; font-weight: 800; letter-spacing: -.06em; }
.fm-brand span { color: var(--fm-terra); }
.fm-nav nav { display: flex; gap: 28px; margin-left: auto; }
.fm-nav nav a { font-size: 13px; color: #3e463f; }
.fm-nav nav a:hover { color: var(--fm-terra); }
.fm-nav-cta, .fm-button { display: inline-flex; align-items: center; justify-content: center; min-height: 52px; padding: 0 26px; color: #fff !important; background: var(--fm-terra); border: 0; border-radius: 0; font-size: 14px; font-weight: 700; transition: background .2s ease, transform .2s ease; }
.fm-nav-cta:hover, .fm-button:hover { background: #ae4c30; transform: translateY(-2px); }
.fm-button span { margin-left: 18px; font-size: 20px; }

.fm-hero { min-height: calc(100vh - 82px); display: grid; grid-template-columns: 1.06fr .94fr; background: var(--fm-paper); border-bottom: 1px solid var(--fm-line); }
.fm-hero-copy { padding: clamp(54px, 8vw, 118px) clamp(32px, 5.2vw, 92px) 72px max(32px, calc((100vw - 1360px) / 2)); display: flex; flex-direction: column; align-items: flex-start; }
.fm-hero h1, .fm-editorial-title, .fm-page h2 { max-width: 100%; margin: 0; font-family: Oswald, Arial Narrow, sans-serif; font-weight: 600; text-transform: uppercase; letter-spacing: -.035em; line-height: .98; overflow-wrap: anywhere; word-break: break-word; hyphens: auto; }
.fm-hero h1 { max-width: 720px; font-size: clamp(58px, 7.8vw, 118px); color: var(--fm-green); }
.fm-hero h1::first-line { color: var(--fm-green); }
.fm-lead { max-width: 680px; margin: 35px 0 38px; font-size: clamp(20px, 2vw, 30px); line-height: 1.25; }
.fm-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 34px; width: 100%; max-width: 680px; padding-top: 24px; border-top: 1px solid var(--fm-line); }
.fm-facts div { display: flex; flex-direction: column; gap: 5px; }
.fm-facts strong { font-size: 13px; }
.fm-facts span { color: var(--fm-muted); font-size: 12px; }
.fm-hero-copy > .fm-button { margin-top: 36px; min-width: 220px; }
.fm-hero-media { position: relative; min-height: 760px; background: #21170f; }
.fm-hero-media img { width: 100%; height: 100%; object-fit: cover; object-position: center 35%; }
.fm-hero-media p { position: absolute; z-index: 1; right: 32px; bottom: 30px; margin: 0; color: #fff; font-family: Oswald, sans-serif; font-size: 14px; line-height: 1.35; text-transform: uppercase; text-align: right; }

.fm-section-index { margin: 0 0 34px; color: var(--fm-terra); font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.fm-editorial { width: min(100% - 64px, 1240px); margin: 0 auto; padding: 130px 0; display: grid; grid-template-columns: .8fr 1.2fr; column-gap: 100px; }
.fm-editorial > .fm-section-index { grid-column: 1 / -1; }
.fm-editorial-title { color: var(--fm-green); font-size: clamp(45px, 5.2vw, 76px); }
.fm-richtext { font-size: 18px; }
.fm-richtext h2 { margin: 0 0 28px; color: var(--fm-green); font-size: clamp(38px, 5vw, 70px); }
.fm-richtext h3 { margin: 45px 0 12px; font-size: 24px; line-height: 1.2; }
.fm-richtext p { margin: 0 0 20px; }
.fm-richtext ul, .fm-richtext ol { margin: 20px 0 28px; padding: 0; list-style: none; }
.fm-richtext li { position: relative; padding: 15px 0 15px 34px; border-top: 1px solid var(--fm-line); }
.fm-richtext li::before { content: "→"; position: absolute; left: 0; color: var(--fm-terra); }
.fm-richtext a { text-decoration: underline; text-underline-offset: 4px; }

.fm-environment { display: grid; grid-template-columns: 1.55fr .85fr; min-height: 650px; background: var(--fm-green); color: #fff; }
.fm-environment img { width: 100%; height: 100%; object-fit: cover; }
.fm-environment > div { padding: 80px clamp(32px, 5vw, 86px); display: flex; flex-direction: column; justify-content: center; }
.fm-environment h2 { margin-bottom: 35px; font-size: clamp(48px, 5vw, 76px); color: #fff; }
.fm-environment p:last-child { max-width: 450px; color: rgba(255,255,255,.78); font-size: 18px; }

.fm-result { width: min(100% - 64px, 1240px); margin: 0 auto; padding: 130px 0; display: grid; grid-template-columns: .75fr 1.25fr; gap: 100px; }
.fm-result-heading h2 { max-width: 450px; color: var(--fm-green); font-size: clamp(48px, 5vw, 78px); }
.fm-feature-lead { margin: 0 0 35px; max-width: 700px; font-size: 21px; line-height: 1.45; }
.fm-feature-list, .fm-summary-list, .fm-timeline { margin: 0; padding: 0; list-style: none; }
.fm-feature-list li { display: grid; grid-template-columns: 72px 1fr; gap: 24px; padding: 25px 0; border-top: 1px solid var(--fm-line); }
.fm-feature-list li > span, .fm-summary-list li > span { color: var(--fm-terra); font-family: Oswald, sans-serif; font-size: 32px; }
.fm-feature-list h3, .fm-summary-list h3 { margin: 2px 0 7px; font-family: Oswald, sans-serif; font-size: 28px; line-height: 1.1; text-transform: uppercase; }
.fm-feature-list p, .fm-summary-list p { margin: 0; color: var(--fm-muted); }

.fm-program { padding: 120px max(32px, calc((100vw - 1240px) / 2)); display: grid; grid-template-columns: .7fr 1.3fr; gap: 100px; color: #fff; background: var(--fm-green-deep); }
.fm-program h2 { color: #fff; font-size: clamp(50px, 6vw, 82px); }
.fm-program-aside > p:last-child { max-width: 380px; margin-top: 35px; color: rgba(255,255,255,.68); }
.fm-timeline li { display: grid; grid-template-columns: 110px 1fr; gap: 30px; padding: 26px 0; border-top: 1px solid rgba(255,255,255,.18); }
.fm-timeline time { color: var(--fm-terra); font-size: 13px; font-weight: 700; }
.fm-timeline h3 { margin: 0 0 7px; color: #fff; font-family: Oswald, sans-serif; font-size: 27px; text-transform: uppercase; }
.fm-timeline p { margin: 0; color: rgba(255,255,255,.68); }

.fm-host { display: grid; grid-template-columns: .92fr 1.08fr; min-height: 720px; background: var(--fm-soft); }
.fm-host-media { overflow: hidden; }
.fm-host-media img { width: 100%; height: 100%; object-fit: cover; object-position: center 28%; filter: grayscale(1) contrast(1.03); }
.fm-host-copy { padding: 100px clamp(32px, 8vw, 130px); display: flex; flex-direction: column; justify-content: center; }
.fm-host-copy h2 { color: var(--fm-green); font-size: clamp(58px, 7vw, 100px); }
.fm-person-role { margin: 28px 0 15px; color: var(--fm-terra); font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.fm-person-text { max-width: 620px; margin: 0; font-size: 18px; }

.fm-summary { width: min(100% - 64px, 1240px); margin: 0 auto; padding: 130px 0; display: grid; grid-template-columns: .66fr 1.34fr; gap: 100px; }
.fm-summary-heading h2 { color: var(--fm-green); font-size: clamp(54px, 6vw, 86px); }
.fm-summary-list { display: grid; grid-template-columns: 1fr 1fr; column-gap: 46px; }
.fm-summary-list li { display: grid; grid-template-columns: 55px 1fr; gap: 14px; padding: 24px 0; border-top: 1px solid var(--fm-line); }

.fm-organizer { padding: 110px max(32px, calc((100vw - 1240px) / 2)); display: grid; grid-template-columns: .66fr 1.34fr; gap: 100px; background: var(--fm-soft); }
.fm-organizer h2 { max-width: 9ch; color: var(--fm-green); font-size: clamp(50px, 5.4vw, 78px); overflow-wrap: anywhere; }
.fm-organizer-card { align-self: end; padding-top: 18px; border-top: 1px solid var(--fm-line); }
.fm-organizer-text { margin: 0 0 34px; font-size: 22px; }
.fm-organizer-card ul { margin: 0; padding: 0; list-style: none; color: var(--fm-muted); }
.fm-organizer-card li { padding: 5px 0; }
.fm-organizer-links { display: flex; flex-wrap: wrap; gap: 16px 30px; margin-top: 34px; }
.fm-organizer-links a { color: var(--fm-terra); font-weight: 700; text-decoration: underline; text-underline-offset: 5px; }

.fm-faq { width: min(100% - 64px, 1240px); margin: 0 auto; padding: 10px 0 130px; display: grid; grid-template-columns: .66fr 1.34fr; gap: 100px; }
.fm-faq h2 { color: var(--fm-green); font-size: clamp(50px, 5vw, 76px); }
.fm-faq-list details { border-top: 1px solid var(--fm-line); }
.fm-faq-list details:last-child { border-bottom: 1px solid var(--fm-line); }
.fm-faq-list summary { display: flex; align-items: center; justify-content: space-between; gap: 30px; padding: 24px 0; cursor: pointer; font-weight: 700; list-style: none; }
.fm-faq-list summary::-webkit-details-marker { display: none; }
.fm-faq-list summary span { color: var(--fm-terra); font-size: 26px; font-weight: 400; }
.fm-faq-list details[open] summary span { transform: rotate(45deg); }
.fm-faq-list details p { max-width: 690px; margin: -4px 0 26px; color: var(--fm-muted); }

.fm-register { padding: 90px max(32px, calc((100vw - 1240px) / 2)); display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; color: #fff; background: var(--fm-green); }
.fm-register > div { min-width: 0; }
.fm-register h2 { max-width: 10ch; margin-bottom: 30px; color: #fff; font-size: clamp(48px, 5.2vw, 76px); line-height: 1.02; letter-spacing: -.025em; }
.fm-register > div > p:last-child { margin: 0; color: rgba(255,255,255,.72); line-height: 1.65; }
.fm-purchase { min-height: 220px; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; padding-left: 70px; border-left: 1px solid rgba(255,255,255,.2); }
.fm-purchase .fm-button { min-width: 260px; }
.fm-purchase-note { margin: 16px 0 0; color: rgba(255,255,255,.6); font-size: 12px; }
.fm-purchase .igo_btn, .fm-purchase .igo_book_btn, .fm-purchase .widget_button1, .fm-purchase .widget_button2 { width: 260px !important; min-height: 54px; padding: 12px 20px !important; border: 0 !important; border-radius: 0 !important; background: var(--fm-terra) !important; color: #fff !important; font: 700 14px Manrope, sans-serif !important; }

.fm-footer { min-height: 140px; display: grid; grid-template-columns: .5fr 1fr .75fr; gap: 40px; align-items: center; }
.fm-footer p { margin: 0; color: var(--fm-muted); font-size: 12px; }
.fm-footer > div { display: flex; justify-content: flex-end; gap: 25px; font-size: 12px; }

@media (max-width: 980px) {
	.fm-nav nav { display: none; }
	.fm-hero { min-height: auto; grid-template-columns: 1fr; }
	.fm-hero-copy { padding: 70px 32px 60px; }
	.fm-hero-media { min-height: 620px; }
	.fm-editorial, .fm-result, .fm-summary, .fm-organizer, .fm-faq { grid-template-columns: 1fr; gap: 55px; padding: 90px 32px; }
	.fm-environment { grid-template-columns: 1fr; }
	.fm-environment img { max-height: 620px; }
	.fm-program, .fm-host { grid-template-columns: 1fr; }
	.fm-program { gap: 65px; }
	.fm-host-media { height: 720px; }
	.fm-register { grid-template-columns: 1fr; }
	.fm-purchase { padding: 45px 0 0; border-left: 0; border-top: 1px solid rgba(255,255,255,.2); }
}

@media (max-width: 640px) {
	.fm-nav, .fm-footer, .fm-editorial, .fm-result, .fm-summary, .fm-faq { width: min(100% - 36px, 1240px); }
	.fm-nav { height: 68px; }
	.fm-nav-cta { min-height: 42px; padding: 0 15px; font-size: 12px; }
	.fm-hero-copy { padding: 52px 18px 45px; }
	.fm-hero h1 { font-size: clamp(46px, 14vw, 64px); }
	.fm-lead { margin: 26px 0; font-size: 20px; }
	.fm-facts { grid-template-columns: 1fr; gap: 17px; }
	.fm-hero-media { min-height: 520px; }
	.fm-editorial, .fm-result, .fm-summary, .fm-faq { padding: 72px 0; }
	.fm-organizer { gap: 38px; padding: 72px 18px; }
	.fm-organizer h2 { font-size: 50px; }
	.fm-editorial-title { font-size: 47px; }
	.fm-richtext { font-size: 16px; }
	.fm-environment > div, .fm-host-copy { padding: 70px 18px; }
	.fm-environment img { min-height: 360px; object-fit: cover; }
	.fm-program, .fm-register { padding: 75px 18px; }
	.fm-register { gap: 48px; }
	.fm-register h2 { max-width: 9ch; margin-bottom: 24px; font-size: clamp(46px, 15vw, 66px); line-height: 1; }
	.fm-purchase { min-height: 0; padding-top: 36px; }
	.fm-timeline li { grid-template-columns: 1fr; gap: 8px; }
	.fm-host-media { height: 550px; }
	.fm-summary-list { grid-template-columns: 1fr; }
	.fm-footer { min-height: 210px; padding: 35px 0; grid-template-columns: 1fr; gap: 15px; }
	.fm-footer > div { justify-content: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.fm-nav-cta, .fm-button { transition: none; }
}
