:root {
  --pink: #f65a9f;
  --pink-dark: #bd2f71;
  --pink-soft: #ffd5e8;
  --pink-pale: #fff1f7;
  --orange: #ff994f;
  --yellow: #ffe996;
  --cream: #fff9e9;
  --sky: #9cdbf5;
  --sky-light: #eaf9ff;
  --navy: #23456b;
  --ink: #37465c;
  --muted: #66758a;
  --white: #ffffff;
  --line: #d8edf7;
  --shadow: 0 18px 45px rgba(35, 80, 116, 0.15);
  --shadow-soft: 0 10px 28px rgba(35, 80, 116, 0.11);
  --radius-xl: 36px;
  --radius-lg: 26px;
  --radius-md: 18px;
  --page: 1320px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 126px; }
body {
  margin: 0;
  color: var(--ink);
  font-family: "Hiragino Maru Gothic ProN", "Yu Gothic", "Meiryo", sans-serif;
  font-size: 16px;
  line-height: 1.8;
  background: var(--sky-light);
  -webkit-font-smoothing: antialiased;
}
img { display: block; max-width: 100%; height: auto; }
a { color: var(--pink-dark); }
a:hover { text-decoration-thickness: 2px; }
button, input, select, textarea { font: inherit; }
:focus-visible { outline: 4px solid #1f7ec0; outline-offset: 3px; }

.skip-link {
  position: fixed;
  top: 8px;
  left: 12px;
  z-index: 1000;
  padding: 10px 16px;
  border-radius: 999px;
  color: var(--navy);
  background: #fff;
  font-weight: 800;
  transform: translateY(-150%);
}
.skip-link:focus { transform: translateY(0); }

.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  color: var(--navy);
  background: rgba(255, 255, 255, 0.96);
  border-bottom: 1px solid rgba(255, 255, 255, 0.65);
  box-shadow: 0 5px 22px rgba(33, 83, 120, 0.09);
  backdrop-filter: blur(12px);
}
.document-page .site-header,
.error-page .site-header {
  color: #fff;
  background: linear-gradient(135deg, #ee5598, #f979ad);
  border-bottom-color: rgba(255, 255, 255, 0.25);
}
.header-inner {
  width: min(calc(100% - 40px), var(--page));
  min-height: 76px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}
.brand {
  min-width: 290px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: inherit;
  text-decoration: none;
}
.brand-star {
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  color: #fff;
  background: #ffc648;
  border: 4px solid #fff1a8;
  border-radius: 50% 46% 52% 43%;
  box-shadow: 0 5px 0 rgba(193, 111, 36, 0.22);
  font-size: 25px;
  line-height: 1;
  transform: rotate(-8deg);
}
.brand-copy { display: flex; min-width: 0; flex-direction: column; line-height: 1.15; }
.brand-name {
  white-space: nowrap;
  font-size: clamp(19px, 2vw, 27px);
  font-weight: 900;
  letter-spacing: 0.02em;
  text-shadow: 0 2px 0 rgba(255, 255, 255, 0.55);
}
.document-page .brand-name,
.error-page .brand-name { color: #fff; text-shadow: 0 2px 0 rgba(153, 33, 87, 0.28); }
.brand-name .c1 { color: #f15598; }
.brand-name .c2 { color: #31a9d6; }
.brand-name .c3 { color: #f19e35; }
.brand-name .c4 { color: #80bd44; }
.brand-tagline {
  margin-top: 5px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.08em;
}
.document-page .brand-tagline,
.error-page .brand-tagline { color: rgba(255, 255, 255, 0.9); }
.site-nav ul {
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 7px;
  list-style: none;
}
.site-nav a {
  min-height: 44px;
  padding: 9px 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  color: var(--navy);
  text-decoration: none;
  white-space: nowrap;
  font-size: 13px;
  font-weight: 800;
  transition: transform 160ms ease, background 160ms ease, color 160ms ease;
}
.site-nav a:hover,
.site-nav a[aria-current="page"] { color: var(--pink-dark); background: var(--pink-pale); transform: translateY(-2px); }
.document-page .site-nav a,
.error-page .site-nav a { color: #fff; background: rgba(255, 255, 255, 0.14); }
.document-page .site-nav a:hover,
.document-page .site-nav a[aria-current="page"],
.error-page .site-nav a:hover { color: var(--pink-dark); background: #fff; }
.site-nav .nav-cta {
  padding-inline: 18px;
  color: #fff;
  background: linear-gradient(135deg, #ffa25b, #ff7c5e);
  box-shadow: 0 7px 16px rgba(234, 111, 69, 0.24);
}
.site-nav .nav-cta:hover { color: #fff; background: linear-gradient(135deg, #ff9143, #f56857); }
.document-page .site-nav .nav-cta { color: #a7431d; background: #fff3c8; }

.home-main { overflow: hidden; }
.home-hero {
  min-height: 690px;
  position: relative;
  isolation: isolate;
  display: grid;
  align-items: center;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0) 66%),
    url("images/castle-landscape.webp") center/cover no-repeat;
}
.home-hero::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  background:
    radial-gradient(circle at 12% 14%, rgba(255,255,255,.86) 0 34px, transparent 36px),
    radial-gradient(circle at 17% 14%, rgba(255,255,255,.78) 0 47px, transparent 49px),
    radial-gradient(circle at 84% 18%, rgba(255,255,255,.72) 0 42px, transparent 44px);
  pointer-events: none;
}
.home-hero::after {
  content: "";
  position: absolute;
  z-index: -1;
  right: 0;
  bottom: -1px;
  left: 0;
  height: 84px;
  background: linear-gradient(180deg, transparent, rgba(255, 255, 255, 0.96));
}
.hero-inner { width: min(calc(100% - 40px), var(--page)); margin: 0 auto; position: relative; z-index: 3; }
.hero-copy {
  width: min(620px, 52%);
  margin-left: 18%;
  padding: 24px 28px 28px;
  text-align: center;
  filter: drop-shadow(0 12px 24px rgba(35, 80, 116, 0.12));
}
.hero-callout {
  width: fit-content;
  margin: 0 auto 6px;
  padding: 8px 22px 9px;
  position: relative;
  color: var(--navy);
  border: 3px solid #fff;
  border-radius: 999px;
  background: rgba(255,255,255,.9);
  box-shadow: 0 7px 16px rgba(43, 103, 137, .12);
  font-size: clamp(16px, 1.6vw, 21px);
  font-weight: 900;
  letter-spacing: .08em;
  line-height: 1.45;
}
.hero-callout::after { content: ""; width: 15px; height: 15px; position: absolute; right: 22%; bottom: -9px; background: #fff; transform: rotate(45deg); }
.hero-copy h1 { margin: 0 auto; width: min(100%, 520px); }
.hero-logo { width: 100%; filter: drop-shadow(0 5px 0 rgba(255,255,255,.95)) drop-shadow(0 9px 14px rgba(58,95,121,.16)); }
.eyebrow { width: fit-content; margin: 4px auto 0; padding: 4px 16px; color: #135ea0; border-radius: 999px; background: rgba(255,255,255,.88); font-size: 14px; font-weight: 900; letter-spacing: 0.08em; }
.eyebrow strong { color: var(--pink); font-size: 1.35em; }
.hero-lead { max-width: 550px; margin: 12px auto 0; padding: 8px 16px; color: #23456b; border-radius: 18px; background: rgba(255,255,255,.84); font-size: clamp(14px, 1.45vw, 17px); font-weight: 800; line-height: 1.7; }
.hero-actions { margin-top: 16px; display: flex; align-items: center; justify-content: center; gap: 12px; flex-wrap: wrap; }
.button {
  min-height: 52px;
  padding: 12px 25px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 0;
  border-radius: 999px;
  color: #fff;
  background: linear-gradient(135deg, #f875ae, #ee428d);
  box-shadow: 0 10px 24px rgba(222, 57, 129, 0.25);
  text-decoration: none;
  font-weight: 900;
  cursor: pointer;
  transition: transform 160ms ease, box-shadow 160ms ease;
}
.button:hover { color: #fff; text-decoration: none; transform: translateY(-2px); box-shadow: 0 14px 28px rgba(222, 57, 129, 0.32); }
.button.secondary { color: var(--pink-dark); background: #fff; border: 2px solid var(--pink-soft); box-shadow: none; }
.button.secondary:hover { color: var(--pink-dark); }
.hero-badges { margin: 13px 0 0; padding: 0; display: flex; justify-content: center; gap: 8px; flex-wrap: wrap; list-style: none; }
.hero-badges li { padding: 5px 12px; border: 2px solid rgba(255, 255, 255, .9); border-radius: 999px; color: #355b78; background: rgba(239, 251, 255, 0.92); font-size: 12px; font-weight: 900; }
.hero-character { position: absolute; z-index: 2; width: clamp(165px, 15vw, 230px); bottom: 3px; pointer-events: none; filter: drop-shadow(0 16px 15px rgba(42, 91, 110, 0.2)); }
.hero-character.girl { left: 1.5%; }
.hero-character.boy { right: 1.5%; }
.hero-whisper { position: absolute; z-index: 3; margin: 0; color: #075da4; font-size: clamp(13px, 1.2vw, 17px); font-weight: 900; line-height: 1.7; text-align: center; text-shadow: 0 2px #fff, 2px 0 #fff, -2px 0 #fff, 0 -2px #fff; transform: rotate(-7deg); }
.hero-whisper::before, .hero-whisper::after { content: ""; width: 3px; height: 40px; position: absolute; top: 6px; border-radius: 999px; background: #0b63a9; }
.hero-whisper::before { left: -17px; transform: rotate(-24deg); }
.hero-whisper::after { right: -17px; transform: rotate(24deg); }
.hero-whisper-left { left: 4%; top: 62px; }
.hero-whisper-right { right: 4%; top: 82px; transform: rotate(6deg); }

.content-section { padding: 76px 20px; }
.content-section.subjects { position: relative; z-index: 5; margin-top: -44px; padding: 0 20px 48px; background: transparent; }
.subjects .section-inner { padding: 28px 22px 24px; border: 3px solid rgba(255,255,255,.9); border-radius: 34px; background: rgba(255,255,255,.96); box-shadow: var(--shadow); }
.content-section.points { background: linear-gradient(180deg, #fff8d8, #fffdf4); }
.section-inner { width: min(100%, var(--page)); margin: 0 auto; }
.section-heading { margin-bottom: 34px; text-align: center; }
.section-kicker { margin: 0; color: var(--pink-dark); font-size: 13px; font-weight: 900; letter-spacing: 0.16em; }
.section-heading h2 { margin: 4px 0 8px; color: var(--navy); font-size: clamp(28px, 4vw, 43px); line-height: 1.3; }
.section-heading p:last-child { margin: 0; color: var(--muted); }
.subject-grid { display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: 12px; }
.subject-card {
  min-width: 0;
  padding: 17px 10px 16px;
  border: 2px solid #e4edf3;
  border-radius: 24px;
  background: linear-gradient(180deg, #fff, #f7fbfd);
  text-align: center;
  box-shadow: inset 0 5px 0 var(--card-color), 0 8px 18px rgba(47, 88, 121, 0.08);
  transition: transform 180ms ease, box-shadow 180ms ease;
}
.subject-card:hover { transform: translateY(-6px); box-shadow: 0 13px 24px rgba(47, 88, 121, 0.14); }
.subject-card img { width: 82px; height: 82px; margin: 0 auto 10px; object-fit: contain; }
.subject-card h3 { margin: 0; color: var(--card-color); font-size: 17px; line-height: 1.35; }
.subject-card p { min-height: 42px; margin: 5px 0 0; color: #667188; font-size: 11px; font-weight: 700; line-height: 1.45; }
.point-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.point-card { position: relative; padding: 34px 30px 31px; border: 3px solid #ffe0a3; border-radius: var(--radius-lg); background: rgba(255, 255, 255, 0.92); box-shadow: var(--shadow-soft); overflow: hidden; }
.point-number { width: 54px; height: 54px; margin-bottom: 18px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: linear-gradient(135deg, #ffa750, #f9759f); font-size: 22px; font-weight: 900; box-shadow: 0 7px 0 #ffe0a3; }
.point-card h3 { margin: 0 0 10px; color: var(--navy); font-size: 21px; line-height: 1.45; }
.point-card p { margin: 0; color: var(--muted); font-size: 14px; }
.parent-section { padding: 64px 20px; background: #fff; }
.parent-panel { width: min(100%, 1030px); margin: 0 auto; padding: 38px 44px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 30px; border-radius: var(--radius-xl); color: #fff; background: linear-gradient(135deg, #3d83b6, #4eafd0); box-shadow: var(--shadow); }
.parent-panel .panel-icon { width: 84px; height: 84px; display: grid; place-items: center; border-radius: 28px; background: rgba(255, 255, 255, 0.2); font-size: 40px; }
.parent-panel h2 { margin: 0 0 5px; font-size: 26px; line-height: 1.4; }
.parent-panel p { margin: 0; color: rgba(255, 255, 255, 0.9); font-size: 14px; }

.document-page,
.error-page {
  background:
    radial-gradient(ellipse at 13% 12%, rgba(255, 255, 255, 0.82) 0 70px, transparent 72px),
    radial-gradient(ellipse at 87% 22%, rgba(255, 255, 255, 0.7) 0 85px, transparent 87px),
    linear-gradient(180deg, #9edcf4, #eaf9ff 64%, #f5fcff);
}
.document-main,
.error-main { width: min(calc(100% - 40px), 1160px); margin: 0 auto; padding: 46px 0 80px; }
.page-intro { margin-bottom: 28px; text-align: center; color: var(--navy); }
.page-icon { width: 68px; height: 68px; margin: 0 auto 10px; display: grid; place-items: center; border: 4px solid #fff; border-radius: 24px; color: #fff; background: linear-gradient(135deg, var(--pink), #fd8fbf); box-shadow: var(--shadow-soft); font-size: 33px; }
.page-intro h1 { margin: 0; font-size: clamp(30px, 5vw, 46px); line-height: 1.35; }
.page-intro p { margin: 8px auto 0; max-width: 730px; color: #4f687e; font-weight: 700; }
.document-card { position: relative; padding: 40px; border: 3px solid rgba(255, 255, 255, 0.85); border-radius: var(--radius-xl); background: rgba(255, 255, 255, 0.97); box-shadow: var(--shadow); }
.document-grid { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 38px; }
.document-toc { position: sticky; top: 126px; align-self: start; padding: 22px 18px; border: 2px solid #d7f0fa; border-radius: 22px; background: #eefaff; }
.document-toc h2 { margin: 0 0 13px; color: var(--navy); font-size: 16px; }
.document-toc ol { margin: 0; padding: 0; list-style: none; }
.document-toc li + li { margin-top: 6px; }
.document-toc a { display: block; padding: 6px 7px 6px 22px; position: relative; border-radius: 10px; color: #4e6880; text-decoration: none; font-size: 12px; font-weight: 800; line-height: 1.45; }
.document-toc a::before { content: "●"; position: absolute; left: 7px; color: #f47dac; font-size: 8px; top: 8px; }
.document-toc a:hover { color: var(--pink-dark); background: #fff; }
.document-content { min-width: 0; }
.doc-meta { margin: 0 0 24px; color: var(--muted); font-size: 13px; font-weight: 700; text-align: right; }
.document-content > p:first-of-type { padding: 20px 22px; border-radius: 18px; background: var(--cream); }
.document-content h2 { margin: 36px 0 14px; padding: 12px 17px; border-left: 7px solid var(--pink); border-radius: 8px 16px 16px 8px; color: var(--navy); background: linear-gradient(90deg, #fff3d1, #fffaf0); font-size: 19px; line-height: 1.45; }
.document-content h2:first-of-type { margin-top: 28px; }
.document-content p,
.document-content li { font-size: 14px; line-height: 1.9; }
.document-content p { margin: 0 0 14px; }
.document-content ul,
.document-content ol { margin: 0 0 18px; padding-left: 1.5em; }
.document-content li + li { margin-top: 6px; }
.document-content a { font-weight: 800; overflow-wrap: anywhere; }
.back-row { margin: 30px 0 0; text-align: center; }

.legal-table { margin: 18px 0; border: 2px solid #f8c9dc; border-radius: 20px; overflow: hidden; }
.legal-row { display: grid; grid-template-columns: 190px minmax(0, 1fr); }
.legal-row + .legal-row { border-top: 1px solid #f6d9e5; }
.legal-row dt,
.legal-row dd { margin: 0; padding: 16px 18px; font-size: 14px; }
.legal-row dt { color: #a03266; background: #fff0f6; font-weight: 900; }
.legal-row dd { background: #fff; }

.contact-card { max-width: 900px; margin: 0 auto; }
.contact-card .document-content > p:first-of-type { background: transparent; padding: 0; }
.faq-note,
.form-note { margin-bottom: 28px; padding: 20px 22px; border: 2px solid #ffe3a3; border-radius: 20px; background: var(--cream); }
.faq-note h2,
.form-note h2 { margin: 0 0 8px; padding: 0; border: 0; background: transparent; color: #a86d19; font-size: 17px; }
.faq-note p,
.form-note p { margin: 0; }
.contact-form { padding: 30px; border: 2px solid #f5d9e5; border-radius: 24px; background: #fff; }
.contact-form h2 { margin: 0 0 22px; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.form-group { margin-bottom: 20px; }
.form-group.full { grid-column: 1 / -1; }
.form-group label,
.field-label { margin-bottom: 7px; display: block; color: var(--navy); font-size: 14px; font-weight: 900; }
.required { margin-left: 7px; padding: 2px 7px; border-radius: 999px; color: #fff; background: var(--pink); font-size: 10px; }
.form-group input,
.form-group select,
.form-group textarea { width: 100%; min-height: 50px; padding: 12px 14px; border: 2px solid #dbe7ee; border-radius: 14px; color: var(--ink); background: #fbfdff; }
.form-group textarea { min-height: 180px; resize: vertical; }
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus { border-color: var(--pink); outline: 4px solid rgba(246, 90, 159, 0.17); }
.consent-label { min-height: 44px; display: flex; align-items: flex-start; gap: 10px; color: var(--ink); font-size: 14px; font-weight: 700; }
.consent-label input { width: 22px; height: 22px; margin-top: 3px; flex: 0 0 auto; accent-color: var(--pink); }
.form-actions { margin: 26px 0 0; text-align: center; }
.direct-contact { margin: 25px 0 0; color: var(--muted); text-align: center; font-size: 13px; }

.page-decoration { width: 100%; height: 74px; margin-top: 4px; position: relative; overflow: hidden; }
.page-decoration::before { content: ""; position: absolute; right: -3%; bottom: -48px; left: -3%; height: 100px; border-radius: 50% 50% 0 0; background: linear-gradient(180deg, #9bd26f, #5cae68); }
.page-decoration img { width: 70px; position: absolute; z-index: 1; bottom: 4px; object-fit: contain; }
.page-decoration img:first-child { left: 12%; }
.page-decoration img:last-child { right: 12%; }

.error-card { min-height: 480px; padding: 70px 34px; display: grid; place-items: center; border-radius: var(--radius-xl); background: rgba(255, 255, 255, 0.96); box-shadow: var(--shadow); text-align: center; }
.error-card h1 { margin: 10px 0 6px; color: var(--navy); font-size: clamp(31px, 5vw, 48px); }
.error-card p { max-width: 600px; margin: 0 auto 26px; color: var(--muted); }

.site-footer { padding: 42px 20px 34px; color: #51657b; background: #fff; text-align: center; font-size: 13px; }
.footer-brand { color: var(--navy); font-size: 18px; font-weight: 900; }
.footer-links { margin: 14px 0; padding: 0; display: flex; justify-content: center; gap: 6px 20px; flex-wrap: wrap; list-style: none; }
.footer-links a { min-height: 44px; display: inline-flex; align-items: center; color: #52687e; text-decoration: none; font-weight: 800; }
.footer-links a:hover { color: var(--pink-dark); }
.copyright { margin: 8px 0 0; color: #7c8a99; }

@media (max-width: 1180px) {
  .header-inner { padding: 13px 0; align-items: flex-start; flex-direction: column; gap: 8px; }
  .site-nav { width: 100%; overflow-x: auto; scrollbar-width: thin; }
  .site-nav ul { width: max-content; min-width: 100%; justify-content: flex-start; }
  .subject-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .hero-copy { width: min(650px, 64%); margin-left: 13%; }
  .hero-whisper { display: none; }
}

@media (max-width: 860px) {
  html { scroll-padding-top: 154px; }
  .home-hero { min-height: 780px; padding: 38px 0 155px; align-items: start; background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,0) 62%), url("images/castle-portrait.webp") center/cover no-repeat; }
  .hero-copy { width: min(100%, 620px); margin: 0 auto; padding: 20px 26px; }
  .hero-character { bottom: 5px; width: 140px; }
  .hero-character.girl { left: calc(50% - 128px); }
  .hero-character.boy { right: calc(50% - 128px); }
  .point-grid { grid-template-columns: 1fr; }
  .parent-panel { grid-template-columns: auto 1fr; }
  .parent-panel .button { grid-column: 1 / -1; }
  .document-card { padding: 28px; }
  .document-grid { grid-template-columns: 1fr; gap: 24px; }
  .document-toc { position: static; }
  .document-toc ol { columns: 2; }
}

@media (max-width: 640px) {
  body { font-size: 15px; }
  .header-inner,
  .hero-inner,
  .document-main,
  .error-main { width: min(calc(100% - 24px), var(--page)); }
  .brand { min-width: 0; }
  .brand-star { width: 40px; height: 40px; font-size: 21px; }
  .brand-name { font-size: 20px; }
  .brand-tagline { font-size: 9px; }
  .header-inner { padding-block: 10px 8px; gap: 7px; }
  .site-nav { overflow: visible; }
  .site-nav ul { width: 100%; min-width: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 3px; }
  .site-nav a { min-width: 0; min-height: 40px; padding: 5px 2px; white-space: normal; font-size: 11px; line-height: 1.25; text-align: center; }
  .site-nav li:last-child { display: none; }
  .home-hero { min-height: 746px; padding-top: 22px; }
  .hero-copy { padding: 16px 10px; }
  .hero-callout { padding: 6px 15px 7px; font-size: 14px; letter-spacing: .04em; }
  .hero-copy h1 { width: min(100%, 330px); }
  .eyebrow { margin-top: 1px; padding: 3px 12px; font-size: 12px; }
  .hero-lead { margin-top: 8px; padding: 7px 12px; font-size: 13px; line-height: 1.6; }
  .hero-actions { align-items: stretch; flex-direction: column; }
  .hero-actions { width: min(100%, 320px); margin: 12px auto 0; gap: 8px; }
  .hero-actions .button { min-height: 48px; padding-block: 9px; }
  .button { width: 100%; }
  .hero-badges { margin-top: 9px; gap: 5px; }
  .hero-badges li { padding: 4px 8px; font-size: 10px; }
  .hero-character { width: 126px; }
  .hero-character.girl { left: calc(50% - 117px); }
  .hero-character.boy { right: calc(50% - 117px); }
  .content-section { padding: 54px 12px; }
  .content-section.subjects { margin-top: -38px; padding: 0 12px 42px; }
  .subjects .section-inner { padding: 26px 10px 18px; border-radius: 28px; }
  .subject-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .subject-card { padding: 16px 8px 14px; }
  .subject-card img { width: 72px; height: 72px; }
  .subject-card h3 { font-size: 16px; }
  .point-card { padding: 28px 24px; }
  .parent-section { padding: 48px 12px; }
  .parent-panel { padding: 29px 23px; grid-template-columns: 1fr; text-align: center; }
  .parent-panel .panel-icon { margin: 0 auto; }
  .document-main,
  .error-main { padding-top: 30px; }
  .page-icon { width: 58px; height: 58px; font-size: 28px; }
  .page-intro p { font-size: 13px; }
  .document-card { padding: 20px 17px; border-radius: 27px; }
  .document-toc ol { columns: 1; }
  .document-content h2 { margin-top: 28px; font-size: 17px; }
  .document-content p,
  .document-content li { font-size: 13px; }
  .legal-row { grid-template-columns: 1fr; }
  .legal-row + .legal-row { border-top-width: 2px; }
  .legal-row dt,
  .legal-row dd { padding: 13px 15px; }
  .contact-form { padding: 22px 17px; }
  .form-grid { grid-template-columns: 1fr; gap: 0; }
  .form-group.full { grid-column: auto; }
  .page-decoration img:first-child { left: 3%; }
  .page-decoration img:last-child { right: 3%; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; }
}
