		:root {
			--blue: #0d249b;
			--blue-deep: #08175c;
			--pink: #ff34ca;
			--gray-bg: #f2f2f2;
			--card: #ffffff;
			--text: #121212;
			--muted: #5f6275;
			--shadow: 0 18px 50px rgba(11, 24, 96, 0.22);
			--max: 1120px;
			--radius: 18px;
		}

		* {
			box-sizing: border-box;
		}

		html,
		body {
			margin: 0;
			padding: 0;
			font-family: "Noto Sans JP", sans-serif;
			color: var(--text);
			background: var(--gray-bg);
			scroll-behavior: smooth;
		}

		body {
			line-height: 1.65;
		}

		img {
			max-width: 100%;
			display: block;
		}

		.container {
			width: min(var(--max), calc(100% - 48px));
			margin-inline: auto;
		}

		.site-header {
			position: fixed;
			inset: 0 0 auto 0;
			z-index: 40;
			background: rgba(8, 23, 92, 0.86);
			backdrop-filter: blur(5px);
			border-bottom: 1px solid rgba(255, 255, 255, 0.14);
		}

		.header-inner {
			position: relative;
			min-height: 74px;
			display: flex;
			align-items: center;
			justify-content: space-between;
			gap: 20px;
		}

		.menu-toggle {
			display: none;
			width: 44px;
			height: 44px;
			border: 1px solid rgba(255, 255, 255, 0.5);
			background: rgba(255, 255, 255, 0.08);
			border-radius: 8px;
			cursor: pointer;
			padding: 0 10px;
		}

		.menu-toggle span {
			display: block;
			width: 100%;
			height: 2px;
			background: #fff;
			margin: 6px 0;
			transition: transform 0.2s ease, opacity 0.2s ease;
		}

		.menu-toggle.is-open span:nth-child(1) {
			transform: translateY(8px) rotate(45deg);
		}

		.menu-toggle.is-open span:nth-child(2) {
			opacity: 0;
		}

		.menu-toggle.is-open span:nth-child(3) {
			transform: translateY(-8px) rotate(-45deg);
		}

		.logo {
			color: #fff;
			text-decoration: none;
			display: inline-flex;
			align-items: center;
			gap: 8px;
		}

		.logo img {
			height: 52px;
			width: auto;
			display: block;
		}

		.logo-text-fallback {
			display: none;
			font-family: "Oswald", sans-serif;
			font-size: 1.35rem;
			letter-spacing: 0.04em;
			font-weight: 700;
		}

		.main-nav {
			display: flex;
			align-items: center;
			flex-wrap: wrap;
			gap: 14px 18px;
		}

		.main-nav a {
			color: #fff;
			text-decoration: none;
			font-size: 0.84rem;
			font-weight: 500;
			opacity: 0.9;
			transition: opacity 0.25s;
		}

		.main-nav a:hover {
			opacity: 1;
		}

		.hero {
			position: relative;
			min-height: 100vh;
			overflow: hidden;
			color: #fff;
			display: flex;
			align-items: flex-end;
			padding: 140px 0 72px;
		}

		.hero::before {
			content: "";
			position: absolute;
			inset: 0;
			background: linear-gradient(80deg, rgba(4, 10, 49, 0.72), rgba(11, 28, 122, 0.24));
			z-index: 1;
		}

		.hero-slides {
			position: absolute;
			inset: 0;
			z-index: 0;
		}

		.hero-slide {
			position: absolute;
			inset: 0;
			background-position: center;
			background-size: cover;
			opacity: 0;
			transition: opacity 1400ms ease;
			will-change: opacity;
		}

		.hero-slide.is-active {
			opacity: 1;
		}

		.hero-inner {
			position: relative;
			z-index: 2;
			width: min(var(--max), calc(100% - 48px));
			margin-inline: auto;
			animation: rise 900ms ease both;
		}

		.hero-title {
			margin: 0;
			font-family: "Zen Old Mincho", serif;
			font-size: 4.0rem;
			line-height: 1.06;
			font-weight: 900;
			letter-spacing: 0.02em;
		}

		.hero-title span {
			display: block;
			font-family: "Zen Old Mincho", serif;
			font-weight: 700;
			margin-top: 8px;
			text-transform: lowercase;
		}

		.hero-sub {
			margin: 18px 0 34px;
			max-width: 630px;
			font-size: 0.95rem;
			opacity: 0.92;
		}

		.cta-btn {
			display: inline-block;
			background: var(--pink);
			color: #fff;
			text-decoration: none;
			font-weight: 700;
			font-size: 0.9rem;
			padding: 12px 36px;
			border-radius: 6px;
			box-shadow: 0 10px 24px rgba(255, 52, 202, 0.38);
		}

		section {
			padding: 78px 0;
		}

		.section-head {
			margin-bottom: 30px;
			text-align: center;
		}

		.section-title {
			font-family: "Oswald", sans-serif;
			font-size: 3.05rem;
			margin: 0;
			letter-spacing: 0.01em;
			line-height: 1.15;
			text-transform: uppercase;
		}

		.section-sub {
			margin: 5px 0 0;
			color: var(--blue-deep);
			font-size: 0.95rem;
			font-family: "Oswald", sans-serif;
			letter-spacing: 0.04em;
		}

		.about {
			background: #fff;
		}

		.about-wrap {
			display: grid;
			grid-template-columns: 1.1fr 1.4fr;
			border-radius: var(--radius);
			overflow: hidden;
			background: #fff;
			box-shadow: var(--shadow);
		}

		.about-title {
			position: relative;
			background: linear-gradient(165deg, #1d36d5 0%, #111fc0 58%, #0b1690 100%);
			clip-path: polygon(0 0, 100% 0, 62% 100%, 0 100%);
			padding: 52px 44px;
			color: #fff;
			min-height: 220px;
		}

		.about-title h2 {
			margin: 0;
			font-family: "Oswald", sans-serif;
			font-size: 2.9rem;
			line-height: 1.05;
			text-transform: uppercase;
		}

		.about-title p {
			margin: 6px 0 0;
			font-family: "Oswald", sans-serif;
			letter-spacing: 0.04em;
		}

		.about-content {
			padding: 38px 40px;
		}

		.about-catch {
			margin: 0 0 18px;
			font-size: 1.04rem;
			font-weight: 500;
		}

		.about-list {
			margin: 0;
			padding-left: 22px;
			font-size: 1.04rem;
			font-weight: 700;
			line-height: 1.95;
		}

		.about-note {
			margin-top: 14px;
			color: var(--muted);
			font-size: 0.95rem;
			line-height: 1.75;
		}

		.school {
			color: #fff;
			background:
				linear-gradient(180deg, rgba(22, 44, 126, 0.34), rgba(18, 37, 108, 0.3)),
				url("../images/school-bg.jpg") center / cover no-repeat;
		}

		.school .section-sub {
			color: rgba(255, 255, 255, 0.92);
		}

		.school-tabs {
			display: grid;
			grid-template-columns: 1fr 1fr;
			gap: 0;
			width: 100%;
			max-width: 680px;
			margin: 0 auto 20px;
			border-radius: 8px;
			overflow: hidden;
			border: 1px solid rgba(255, 255, 255, 0.26);
		}

		.school-tab {
			border: 0;
			padding: 11px 12px;
			cursor: pointer;
			font-size: 0.95rem;
			font-weight: 700;
			font-family: "Noto Sans JP", sans-serif;
			color: rgba(255, 255, 255, 0.9);
			background: rgba(255, 255, 255, 0.12);
			transition: background 0.25s, color 0.25s;
		}

		.school-tab[aria-selected="true"] {
			background: #fff;
			color: #202124;
		}

		.school-panel {
			display: none;
		}

		.school-panel.is-active {
			display: block;
		}

		.school-row-title {
			margin: 16px 0 -12px;
			font-size: 1.05rem;
			font-weight: 700;
			color: #f3f3f3;
			padding-left: 4px;
		}

		.cards {
			margin-top: 30px;
			display: grid;
			grid-template-columns: repeat(3, 1fr);
			gap: 18px;
		}

		.cards.cards-two {
			grid-template-columns: repeat(2, 1fr);
		}

		.card {
			background: #f8f8fb;
			color: var(--text);
			border-radius: 14px;
			padding: 18px 18px 16px;
			min-height: 145px;
		}

		.card h4 {
			margin: 0 0 12px;
			color: var(--blue);
			font-size: 1.12rem;
		}

		.card p {
			margin: 5px 0;
			font-size: 0.92rem;
			color: #222;
		}

		.fee {
			margin-top: 18px;
			display: grid;
			grid-template-columns: repeat(3, 1fr);
			gap: 16px;
		}

		.fee-item {
			background: #fff;
			border-radius: 12px;
			color: var(--text);
			text-align: center;
			padding: 16px 12px;
			font-weight: 700;
		}

		.fee-item span {
			display: block;
			font-size: 0.85rem;
			color: #6f7287;
			font-weight: 500;
		}

		.staff {
			background: #fff;
		}

		.staff-box {
			display: grid;
			grid-template-columns: 1fr 1.2fr;
			gap: 26px;
			background: #fff;
			border-radius: var(--radius);
			box-shadow: var(--shadow);
			padding: 28px;
		}

		.staff-photo {
			border-radius: 14px;
			overflow: hidden;
			min-height: 300px;
			background: #d7d8e2;
		}

		.staff-photo img {
			width: 100%;
			height: 100%;
			object-fit: cover;
		}

		.staff-name {
			margin: 0 0 10px;
			font-size: 1.35rem;
			font-weight: 800;
		}

		.staff-name small {
			display: block;
			margin-top: 3px;
			color: var(--blue);
			font-size: 0.96rem;
			font-weight: 700;
		}

		.staff-box p {
			line-height: 1.9;
		}

		.drivers {
			position: relative;
			z-index: 2;
			margin: -34px auto 0;
			width: calc(100% - 84px);
			max-width: 980px;
			background: #f4f5f9;
			border-radius: var(--radius);
			padding: 28px;
			box-shadow: 0 14px 38px rgba(20, 24, 48, 0.15);
		}

		.drivers h3 {
			margin: 0;
			text-align: center;
			font-family: "Oswald", sans-serif;
			font-size: 3.4rem;
			line-height: 1;
			letter-spacing: 0.02em;
		}

		.drivers p {
			margin: 6px 0 16px;
			text-align: center;
			font-weight: 700;
		}

		.driver-list {
			display: grid;
			grid-template-columns: repeat(3, 1fr);
			gap: 8px 20px;
			margin: 0;
			padding-left: 18px;
		}

		.schedule {
			background:
				linear-gradient(180deg, rgba(255, 255, 255, 0.62), rgba(255, 255, 255, 0.7)),
				url("../images/schedule-bg.jpg") center / cover no-repeat;
		}

		.schedule-box {
			background: #fff;
			border-radius: 14px;
			padding: 18px;
			box-shadow: var(--shadow);
			overflow: hidden;
		}

		.schedule-iframe {
			display: block;
			width: 100%;
			min-height: 600px;
		}

		.schedule-alert {
			margin: 12px 0 0;
			font-size: 0.9rem;
			font-weight: 700;
			color: #d22020;
		}

		.calendar-grid {
			display: grid;
			grid-template-columns: repeat(7, 1fr);
			gap: 1px;
			background: #e4e5ee;
			border: 1px solid #e4e5ee;
		}

		.calendar-grid div {
			background: #fff;
			min-height: 92px;
			padding: 7px;
			font-size: 0.78rem;
		}

		.calendar-grid .head {
			min-height: auto;
			text-align: center;
			font-weight: 700;
			color: var(--blue);
			padding: 10px 4px;
			background: #f8f9ff;
		}

		.calendar-grid .event {
			display: block;
			margin-top: 6px;
			background: #e7ebff;
			color: var(--blue);
			border-radius: 6px;
			padding: 2px 5px;
			font-size: 0.7rem;
			font-weight: 700;
			min-height: auto;
		}

		.access-grid {
			display: grid;
			grid-template-columns: 1fr 1fr;
			gap: 18px;
		}

		#access {
			background: #e7e7eb;
		}

		.access-card {
			background: #fff;
			border-radius: 12px;
			overflow: hidden;
			box-shadow: var(--shadow);
		}

		.access-card h4 {
			margin: 0;
			color: #fff;
			background: var(--blue);
			text-align: center;
			padding: 9px 12px;
			font-size: 1.06rem;
		}

		.access-card .body {
			padding: 14px;
			font-size: 0.9rem;
			min-height: 250px;
		}

		.access-card .body p {
			margin: 0 0 4px;
			line-height: 1.35;
		}

		.access-card .body p:last-of-type {
			margin-bottom: 0;
		}

		.map-placeholder {
			margin-top: 12px;
			background: #ececf3;
			min-height: 150px;
			border-radius: 8px;
		}

		.access-map {
			display: block;
			width: 100%;
			height: 220px;
			margin-top: 12px;
			border-radius: 8px;
		}

		.contact {
			background: #dcdde2;
			padding-top: 30px;
			padding-bottom: 96px;
		}

		.site-footer {
			background: rgba(8, 23, 92, 0.92);
			border-top: 1px solid rgba(255, 255, 255, 0.14);
		}

		.site-footer p {
			margin: 0;
			padding: 16px 0;
			text-align: center;
			color: rgba(255, 255, 255, 0.92);
			font-size: 0.78rem;
			letter-spacing: 0.02em;
		}

		.contact-tabs {
			display: grid;
			grid-template-columns: 1fr 1fr;
			width: 100%;
			max-width: 560px;
			margin: 0 auto 24px;
			border-radius: 8px;
			overflow: hidden;
			border: 1px solid #d4d7e4;
		}

		.contact-tab {
			border: 0;
			padding: 12px;
			font-size: 0.94rem;
			font-weight: 700;
			font-family: "Noto Sans JP", sans-serif;
			cursor: pointer;
			background: #f3f5fb;
			color: #37406a;
			transition: background 0.2s, color 0.2s;
		}

		.contact-tab[aria-selected="true"] {
			background: var(--blue);
			color: #fff;
		}

		.contact-panel {
			display: none;
		}

		.contact-panel.is-active {
			display: block;
		}

		.contact-box {
			background: #fff;
			border-radius: 14px;
			box-shadow: var(--shadow);
			padding: 34px;
		}

		.contact-lead {
			margin: 0 0 20px;
			color: var(--muted);
			font-size: 0.92rem;
		}

		.form-group {
			margin-bottom: 14px;
		}

		.form-group label {
			display: block;
			font-size: 0.88rem;
			font-weight: 700;
			margin-bottom: 6px;
		}

		.required {
			color: #d63838;
			font-size: 0.77rem;
			margin-left: 4px;
		}

		.input,
		.select,
		.textarea {
			width: 100%;
			padding: 9px 10px;
			border: 1px solid #d2d5e3;
			border-radius: 4px;
			font-size: 0.92rem;
			font-family: "Noto Sans JP", sans-serif;
			background: #fff;
		}

		.textarea {
			min-height: 160px;
			resize: vertical;
		}

		.form-grid-2 {
			display: grid;
			grid-template-columns: 1fr 1fr;
			gap: 12px;
		}

		.form-grid-3 {
			display: grid;
			grid-template-columns: 120px 70px 70px;
			gap: 8px;
			align-items: center;
		}

		.form-grid-address {
			display: grid;
			grid-template-columns: 160px 1fr;
			gap: 10px;
		}

		.radio-line,
		.check-line {
			display: flex;
			gap: 14px;
			flex-wrap: wrap;
			font-size: 0.9rem;
		}

		.contact-actions {
			margin-top: 24px;
			text-align: center;
		}

		.contact-btn {
			display: inline-block;
			background: var(--blue);
			color: #fff;
			text-decoration: none;
			font-weight: 700;
			padding: 12px 32px;
			border-radius: 8px;
			border: 0;
			font-size: 0.92rem;
			font-family: "Noto Sans JP", sans-serif;
			cursor: pointer;
		}

		.fade {
			animation: rise 820ms ease both;
		}

		@keyframes rise {
			from {
				opacity: 0;
				transform: translateY(20px);
			}
			to {
				opacity: 1;
				transform: translateY(0);
			}
		}

		@media (max-width: 980px) {
			.container,
			.hero-inner {
				width: min(var(--max), calc(100% - 30px));
			}

			.header-inner {
				align-items: flex-start;
				padding-top: 12px;
				padding-bottom: 12px;
			}

			.main-nav {
				justify-content: flex-end;
			}

			.about-wrap,
			.staff-box {
				grid-template-columns: 1fr;
			}

			.about-title {
				min-height: 160px;
				clip-path: none;
			}

			.cards,
			.fee,
			.access-grid {
				grid-template-columns: 1fr;
			}

			.cards.cards-two {
				grid-template-columns: 1fr;
			}

			.school-tabs {
				width: 100%;
			}

			.contact-tabs {
				width: 100%;
			}

			.form-grid-address {
				grid-template-columns: 1fr;
			}

			.driver-list {
				grid-template-columns: 1fr;
			}

			.calendar-grid div {
				min-height: 72px;
			}

			.schedule-iframe {
				min-height: 520px;
			}

			.hero-title {
				font-size: 3.2rem;
			}

			.section-title {
				font-size: 2.2rem;
			}

			.about-title h2 {
				font-size: 2rem;
			}

			.drivers h3 {
				font-size: 2.6rem;
			}

			.drivers {
				margin-top: 16px;
				width: 100%;
			}
		}

		@media (max-width: 640px) {
			.site-header {
				position: sticky;
			}

			.header-inner {
				min-height: 68px;
				align-items: center;
			}

			.logo {
				max-width: 170px;
			}

			.logo img {
				height: auto;
				width: 100%;
			}

			.menu-toggle {
				display: block;
			}

			.main-nav {
				position: absolute;
				top: calc(100% + 8px);
				left: 0;
				right: 0;
				flex-direction: column;
				align-items: stretch;
				gap: 0;
				background: rgba(8, 23, 92, 0.97);
				border: 1px solid rgba(255, 255, 255, 0.16);
				border-radius: 10px;
				overflow: hidden;
				max-height: 0;
				opacity: 0;
				transform: translateY(-6px);
				transition: max-height 0.25s ease, opacity 0.25s ease, transform 0.25s ease;
				pointer-events: none;
			}

			.main-nav.is-open {
				max-height: 360px;
				opacity: 1;
				transform: translateY(0);
				pointer-events: auto;
			}

			.main-nav a {
				font-size: 0.84rem;
				padding: 12px 14px;
				border-bottom: 1px solid rgba(255, 255, 255, 0.12);
			}

			.main-nav a:last-child {
				border-bottom: 0;
			}

			.hero {
				min-height: 78vh;
				padding-top: 110px;
			}

			.hero-sub {
				font-size: 0.85rem;
			}

			.hero-title {
				font-size: 2.2rem;
			}

			.section-title {
				font-size: 1.8rem;
			}

			.about-title h2 {
				font-size: 1.8rem;
			}

			.drivers h3 {
				font-size: 2rem;
			}

			section {
				padding: 56px 0;
			}

			.about-title,
			.about-content,
			.staff-box,
			.drivers,
			.contact-box {
				padding: 20px;
			}

			.schedule-iframe {
				min-height: 460px;
			}

			.form-grid-2,
			.form-grid-3 {
				grid-template-columns: 1fr;
			}
		}
