/* GP6 Theme — design system ported from the approved mockup gp6-homepage-concept-v2.html */

:root {
  --ink: #17312c;
  --muted: #61716d;
  --green: #087a60;
  --green-dark: #075b4a;
  --mint: #e9f5f1;
  --mint-strong: #d7ebe4;
  --blue: #126ca6;
  --sky: #edf6fb;
  --sand: #f5f1e8;
  --paper: #fff;
  --page: #f7faf8;
  --line: #dce6e2;
  --danger: #b33a3a;
  --forest-900: #0e2d28;
  --forest-800: #113832;
  --forest-750: #153d37;
  --forest-700: #173f37;
  --on-dark: #fff;
  --on-dark-muted: #adc6bf;
  --focus: #126ca6;
  --shadow: 0 16px 42px rgba(22, 55, 46, .09);
  --radius: 24px;
  --container: 1180px;
  --header-h: 144px;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--page);
  font-family: Inter, "Segoe UI", Roboto, Arial, sans-serif;
  font-size: 16px;
  line-height: 1.55;
}
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
img { max-width: 100%; height: auto; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; border-radius: 4px; }
.container { width: min(var(--container), calc(100% - 40px)); margin: 0 auto; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip { position: absolute; left: -999px; top: 0; }
.skip:focus { left: 16px; top: 16px; z-index: 99; padding: 12px 16px; background: var(--paper); border-radius: 10px; }
.muted { color: var(--muted); }

/* Service bar */
.servicebar { background: var(--forest-800); color: var(--on-dark); font-size: 13px; }
.servicebar .container { min-height: 40px; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.service-links, .language { display: flex; align-items: center; gap: 20px; }
.language { list-style: none; margin: 0; padding: 0; }
.servicebar a, .servicebar button { color: #dcebe7; }
.servicebar a:hover, .servicebar button:hover { color: var(--on-dark); }
.language .active { color: var(--on-dark); font-weight: 700; }
/* Low-vision version: eye icon + label; the pill outline appears on hover. */
.eye { display: inline-flex; align-items: center; gap: 8px; min-height: 30px; padding: 3px 13px 3px 10px; border: 1px solid transparent; border-radius: 999px; background: none; font-size: inherit; font-weight: 600; cursor: pointer; transition: background-color .2s ease, border-color .2s ease, color .2s ease; }
.eye-icon { flex: 0 0 auto; }
.eye-text { white-space: nowrap; }
/* Narrow phones: a smaller label so it stays on one line next to the language switcher. */
@media (max-width: 420px) {
  .servicebar .container { gap: 10px; }
  .servicebar .language { gap: 12px; }
  .eye { gap: 6px; padding: 3px 10px 3px 8px; font-size: 12px; }
  .eye-icon { width: 18px; height: 18px; }
}
@media (max-width: 340px) {
  .servicebar .language { gap: 9px; }
  .eye { gap: 5px; padding: 3px 8px 3px 6px; font-size: 11px; letter-spacing: -.01em; }
  .eye-icon { width: 16px; height: 16px; }
}
/* Outline only on hover / keyboard focus and while the panel is open (customer request). */
.servicebar .eye:hover, .servicebar .eye:focus-visible, .servicebar .eye[aria-expanded="true"] { color: var(--on-dark); border-color: rgba(255, 255, 255, .55); }

/* Accessibility panel */
.a11y-panel { background: var(--paper); border-bottom: 1px solid var(--line); padding: 16px 0; }
.a11y-grid { display: flex; flex-wrap: wrap; gap: 18px 28px; align-items: end; }
.a11y-panel fieldset { border: 0; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.a11y-panel legend { font-size: 13px; font-weight: 700; margin-bottom: 6px; padding: 0; }
.a11y-panel button { min-height: 44px; min-width: 44px; padding: 0 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); font-weight: 700; }
.a11y-panel button[aria-pressed="true"] { border-color: var(--green); background: var(--mint); color: var(--green-dark); }
.a11y-panel .a11y-lg { font-size: 19px; }
.a11y-panel .a11y-xl { font-size: 23px; }
.a11y-panel .a11y-high { background: #fff; color: #000; border-color: #000; }
.a11y-panel .a11y-dark { background: #000; color: #fff; border-color: #000; }
.a11y-panel .a11y-reset { border-style: dashed; }

/* Header */
.header { background: rgba(255, 255, 255, .96); border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 20; backdrop-filter: blur(12px); }
.header-main { min-height: 92px; display: grid; grid-template-columns: minmax(310px, 1fr) auto auto auto; align-items: center; gap: 28px; }
.brand { display: flex; align-items: center; gap: 14px; min-width: 0; }
.mark { width: 62px; height: 62px; border-radius: 50%; background: var(--paper); display: grid; place-items: center; box-shadow: 0 8px 20px rgba(8, 90, 70, .16); flex: 0 0 auto; overflow: hidden; border: 1px solid #d9e7e2; }
.mark img { width: 100%; height: 100%; object-fit: cover; display: block; }
.mark-fallback { color: var(--green-dark); font-weight: 900; font-size: 18px; }
.brand-text { min-width: 0; }
.brand strong { display: block; font-size: 16px; line-height: 1.25; }
.brand-text > span { color: var(--muted); font-size: 13px; }
.head-contact { display: flex; gap: 24px; align-items: center; }
.head-contact small { color: var(--muted); display: block; font-size: 12px; }
.head-contact a, .head-contact span { font-weight: 750; white-space: nowrap; }
.search-button, .menu-button { width: 44px; height: 44px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); display: grid; place-items: center; color: var(--ink); }
.search-button[aria-expanded="true"], .menu-button[aria-expanded="true"] { border-color: var(--green); color: var(--green); }
.menu-button { display: none; }
.search-icon { width: 17px; height: 17px; border: 2px solid currentColor; border-radius: 50%; position: relative; }
.search-icon::after { content: ""; position: absolute; width: 7px; height: 2px; background: currentColor; right: -5px; bottom: -2px; transform: rotate(45deg); }
.menu-icon, .menu-icon::before, .menu-icon::after { width: 18px; height: 2px; background: currentColor; display: block; position: relative; transition: transform .18s ease; }
.menu-icon::before, .menu-icon::after { content: ""; position: absolute; left: 0; }
.menu-icon::before { top: -6px; }
.menu-icon::after { top: 6px; }
.menu-button[aria-expanded="true"] .menu-icon { background: transparent; }
.menu-button[aria-expanded="true"] .menu-icon::before { transform: translateY(6px) rotate(45deg); }
.menu-button[aria-expanded="true"] .menu-icon::after { transform: translateY(-6px) rotate(-45deg); }

.search-panel { border-top: 1px solid #edf1ef; padding: 16px 0; background: var(--paper); }
.search-form { display: flex; gap: 10px; max-width: 720px; }
.search-form input[type="search"] { flex: 1; min-height: 48px; padding: 0 16px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); font-size: 16px; }
.search-form input[type="search"]:focus { border-color: var(--green); }

/* Primary navigation */
.nav { background: var(--paper); border-top: 1px solid #edf1ef; }
.nav .container { position: relative; }
.nav-list { min-height: 52px; display: flex; align-items: center; justify-content: space-between; gap: 14px; list-style: none; padding: 0; margin: 0; font-size: 12.5px; font-weight: 650; }
.nav-list > li > a, .nav-trigger { min-height: 52px; padding: 0; display: flex; align-items: center; gap: 7px; border: 0; background: transparent; color: inherit; font-size: inherit; font-weight: 650; white-space: nowrap; position: relative; transition: color .2s ease; }
/* Underline slides in from the left on hover and slides out to the right (mockup micro-animation). */
.nav-list > li > a::after, .nav-trigger::before { content: ""; position: absolute; right: 0; bottom: 0; left: 0; height: 3px; border-radius: 3px 3px 0 0; background: var(--green); transform: scaleX(0); transform-origin: right; transition: transform .24s ease; }
.nav-list > li > a:hover, .nav-list > li > a[aria-current], .nav-list > li.is-current > a, .nav-list > li.is-current > .nav-trigger,
.nav-trigger:hover, .nav-trigger[aria-expanded="true"] { color: var(--green); }
.nav-list > li > a:hover::after, .nav-list > li > a[aria-current]::after, .nav-list > li.is-current > a::after, .nav-list > li.is-current > .nav-trigger::before,
.nav-trigger:hover::before, .nav-trigger[aria-expanded="true"]::before { transform: scaleX(1); transform-origin: left; }
.nav-trigger::after { content: ""; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translateY(-2px); transition: transform .18s ease; }
.nav-trigger[aria-expanded="true"]::after { transform: rotate(225deg) translate(-1px, -1px); }
.submenu { position: absolute; left: 0; right: 0; top: calc(100% - 1px); padding-top: 12px; z-index: 40; }
.submenu:not([hidden]) { animation: menuIn .16s ease-out; }
.submenu-box { background: var(--paper); border: 1px solid var(--line); border-radius: 0 0 22px 22px; box-shadow: 0 24px 48px rgba(17, 56, 50, .16); padding: 25px; display: grid; grid-template-columns: 245px minmax(0, 1fr); gap: 28px; }
.submenu-intro { background: var(--mint); border-radius: 17px; padding: 20px; }
.submenu-intro small { color: var(--green); font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.submenu-intro .submenu-title { margin: 10px 0 8px; font-size: 20px; line-height: 1.2; font-weight: 750; }
.submenu-intro p { margin: 0 0 18px; color: var(--muted); font-size: 13px; font-weight: 400; }
.submenu-intro a { color: var(--green-dark); font-size: 13px; font-weight: 800; }
.submenu-links { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px 28px; align-content: start; }
.submenu-links a { display: block; padding: 8px 0; font-size: 13px; font-weight: 600; line-height: 1.3; border-bottom: 1px solid #edf1ef; transition: transform .15s ease, color .15s ease; }
.submenu-links a:hover, .submenu-links a[aria-current] { color: var(--green); transform: translateX(2px); }
@keyframes menuIn { from { opacity: 0; transform: translateY(-5px); } to { opacity: 1; transform: translateY(0); } }

.mobile-panel { display: none; }

/* Important-contact notice */
.notice { background: var(--sand); border-bottom: 1px solid #e9e2d3; }
.notice .container { min-height: 44px; display: flex; align-items: center; justify-content: space-between; gap: 18px; font-size: 13px; }
.notice strong { color: #75551c; }
.notice-link { color: var(--green-dark); font-weight: 700; white-space: nowrap; }

/* Shared */
main { overflow: hidden; }
.eyebrow { display: flex; align-items: center; gap: 10px; color: var(--green-dark); font-size: 13px; text-transform: uppercase; letter-spacing: .1em; font-weight: 800; }
.eyebrow::before { content: ""; width: 26px; height: 2px; background: var(--green); }
.lead { font-size: 18px; color: #4f6660; max-width: 610px; margin: 0 0 30px; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; }
.btn { min-height: 48px; padding: 0 20px; border-radius: 14px; border: 1px solid var(--green); display: inline-flex; align-items: center; justify-content: center; gap: 10px; font-weight: 750; font-size: 14px; transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease; }
.btn:hover { transform: translateY(-2px); }
.btn-primary { background: var(--green); color: #fff; box-shadow: 0 10px 24px rgba(8, 122, 96, .2); }
.btn-primary:hover { background: var(--green-dark); box-shadow: 0 14px 28px rgba(8, 90, 70, .25); }
.btn-secondary { background: rgba(255, 255, 255, .74); color: var(--green-dark); }
.btn-secondary:hover { background: #fff; box-shadow: 0 10px 22px rgba(8, 90, 70, .1); }
.arrow::after { content: "→"; font-size: 18px; }
.text-link { color: var(--green); font-weight: 750; white-space: nowrap; }
.callout { margin: 16px 0; padding: 14px 18px; border-radius: 14px; border-left: 3px solid var(--blue); background: var(--sky); font-size: 14px; }
.callout-warning { border-left-color: #c28a1e; background: var(--sand); }
.callout-urgent { border-left-color: var(--danger); background: #fbeeee; }

/* Home: hero */
.hero { padding: 44px 0 34px; }
.hero-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(310px, .75fr); gap: 24px; }
.hero-main { min-height: 440px; background: var(--mint); border-radius: 32px; padding: 54px; position: relative; overflow: hidden; display: flex; align-items: center; }
.hero-main::after { content: ""; position: absolute; right: -90px; bottom: -110px; width: 360px; height: 360px; border: 72px solid rgba(8, 122, 96, .08); border-radius: 50%; }
.hero-copy { max-width: 650px; position: relative; z-index: 1; }
.hero h1 { font-size: clamp(38px, 5vw, 66px); line-height: 1.02; letter-spacing: -.045em; margin: 22px 0 20px; max-width: 720px; }
.hero-side { background: var(--forest-700); color: var(--on-dark); border-radius: 32px; padding: 32px; display: flex; flex-direction: column; }
.hero-side h2 { margin: 0 0 24px; font-size: 23px; letter-spacing: -.02em; }
.status { padding: 16px 0; border-top: 1px solid rgba(255, 255, 255, .15); }
.status small { display: block; color: #b7d0c9; margin-bottom: 4px; }
.status strong, .status a { font-size: 18px; font-weight: 700; }
.mini-actions { margin-top: auto; display: grid; gap: 10px; padding-top: 24px; }
.mini-actions a { min-height: 48px; border-radius: 13px; background: rgba(255, 255, 255, .09); display: flex; align-items: center; justify-content: space-between; padding: 0 16px; font-size: 14px; font-weight: 650; transition: background-color .2s ease, transform .2s ease; }
.mini-actions a:hover { background: rgba(255, 255, 255, .15); transform: translateX(3px); }

.hero-grid-single { grid-template-columns: minmax(0, 1fr); }
.news-grid-single { grid-template-columns: minmax(0, 1fr); }
.news-feature, .news-item { position: relative; }
.stretched-link::after { content: ""; position: absolute; inset: 0; z-index: 3; }
.news-item:hover h3 a { color: var(--green); }
.gp6-block-hint { margin: 12px auto; max-width: var(--container); padding: 12px 16px; border: 1px dashed #c28a1e; border-radius: 12px; background: var(--sand); color: #75551c; font-size: 13px; }
.link-cards-inline { margin: 28px 0; }
.link-cards-inline.info-section { padding: 24px; border-radius: 24px; }
.link-cards-inline > h2 { margin-top: 0; }
.prose .link-cards-inline a { text-decoration: none; color: inherit; }
.prose .service-grid { grid-template-columns: repeat(2, 1fr); }

/* Home: sections */
.section { padding: 62px 0; }
.section-white { background: var(--paper); }
.section-head { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 30px; }
.section-head h2 { font-size: clamp(29px, 4vw, 42px); line-height: 1.1; letter-spacing: -.035em; margin: 8px 0 0; }
.section-head p { max-width: 520px; color: var(--muted); margin: 0; }

.service-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; list-style: none; margin: 0; padding: 0; }
.service-card { min-height: 190px; height: 100%; border: 1px solid var(--line); border-radius: 20px; padding: 22px; background: var(--paper); display: flex; flex-direction: column; position: relative; transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease, background-color .22s ease; }
.service-card:hover { transform: translateY(-4px); border-color: #aacfc3; box-shadow: var(--shadow); }
.service-card .number { width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; color: var(--green-dark); background: var(--mint); font-size: 12px; font-weight: 800; transition: background-color .22s ease, color .22s ease; }
.service-card:not(.featured):hover .number { background: var(--green); color: #fff; }
.service-card:hover::after { transform: translate(2px, -2px); }
.service-card h3 { font-size: 17px; line-height: 1.25; margin: 21px 36px 8px 0; }
.service-card p { margin: 0; color: var(--muted); font-size: 13px; }
.service-card::after { content: "→"; position: absolute; right: 20px; bottom: 20px; width: 30px; height: 30px; border-radius: 50%; background: var(--mint); color: var(--green-dark); display: grid; place-items: center; font-size: 15px; transition: transform .22s ease, background-color .22s ease; }
.service-card.featured { color: #fff; background: var(--green); border-color: var(--green); }
.service-card.featured .number { color: #fff; background: rgba(255, 255, 255, .15); }
.service-card.featured p { color: #d5eae4; }
.service-card.featured::after { color: #fff; background: rgba(255, 255, 255, .15); }

.news-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: 24px; }
.news-feature { min-height: 420px; border-radius: 28px; overflow: hidden; position: relative; background: #dcece7; padding: 36px; display: flex; align-items: end; transition: transform .28s ease, box-shadow .28s ease; }
.news-feature::before { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(14, 45, 38, .83), rgba(14, 45, 38, .03) 67%); z-index: 1; transition: background .28s ease; }
.news-feature img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .45s cubic-bezier(.2, .75, .25, 1); }
.news-art { position: absolute; inset: 0; display: grid; place-items: center; color: rgba(8, 122, 96, .16); font-size: 210px; font-weight: 900; letter-spacing: -.12em; transition: transform .45s cubic-bezier(.2, .75, .25, 1), color .28s ease; }
.news-content { color: #fff; position: relative; z-index: 2; transition: transform .28s ease; }
.news-feature:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgba(17, 56, 50, .14); }
.news-feature:hover::before { background: linear-gradient(0deg, rgba(14, 45, 38, .88), rgba(14, 45, 38, .01) 72%); }
.news-feature:hover .news-art { transform: scale(1.025); color: rgba(8, 122, 96, .21); }
.news-feature:hover img { transform: scale(1.025); }
.news-feature:hover .news-content { transform: translateY(-3px); }
.tag { display: inline-flex; padding: 6px 10px; background: rgba(255, 255, 255, .16); border: 1px solid rgba(255, 255, 255, .26); border-radius: 999px; text-transform: uppercase; font-size: 11px; letter-spacing: .08em; font-weight: 800; }
.news-content h3 { font-size: 28px; line-height: 1.2; max-width: 580px; margin: 16px 0 12px; }
.date { opacity: .78; font-size: 13px; }
.news-list { display: grid; gap: 12px; list-style: none; margin: 0; padding: 0; }
.news-item { background: var(--paper); border: 1px solid var(--line); border-radius: 20px; padding: 22px; display: grid; grid-template-columns: 70px 1fr; gap: 18px; align-items: start; transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease; }
.news-item:hover { transform: translateX(4px); border-color: #aacfc3; box-shadow: 0 12px 28px rgba(22, 55, 46, .08); }
.news-date { color: var(--green); font-size: 12px; text-transform: uppercase; line-height: 1.2; transition: color .22s ease, transform .22s ease; }
.news-item:hover .news-date { color: var(--green-dark); transform: translateY(-2px); }
.news-date strong { font-size: 25px; display: block; }
.news-item h3 { margin: 0 0 8px; font-size: 16px; line-height: 1.35; }
.news-item p { margin: 0; color: var(--muted); font-size: 13px; }
.media-links { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin-top: 20px; }
.media-link { border: 1px solid var(--line); border-radius: 18px; background: var(--paper); padding: 18px 22px; display: flex; justify-content: space-between; align-items: center; font-weight: 750; transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease; }
.media-link:hover { transform: translateY(-3px); border-color: #aacfc3; box-shadow: 0 10px 24px rgba(22, 55, 46, .08); }
.media-link span { color: var(--green); transition: transform .22s ease; }
.media-link:hover span { transform: translateX(3px); }

.program-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; list-style: none; margin: 0; padding: 0; }
.program-card { min-height: 145px; height: 100%; padding: 20px; border-radius: 19px; border: 1px solid var(--line); background: var(--paper); display: flex; flex-direction: column; justify-content: space-between; transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease; }
.program-card:hover { transform: translateY(-3px); border-color: #aacfc3; box-shadow: var(--shadow); }
.program-card small { color: var(--green); font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .07em; }
.program-card h3 { font-size: 15px; line-height: 1.3; margin: 22px 0 0; }
.program-card.review { background: var(--sand); border-color: #e5dbc6; }
.program-card.review small { color: #8a6424; }

.info-section { background: var(--forest-750); color: var(--on-dark); }
.info-section .section-head p { color: #b9d0c9; }
.info-section .eyebrow { color: #91d4c0; }
.info-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; list-style: none; margin: 0; padding: 0; }
.info-card { padding: 25px; min-height: 164px; height: 100%; border: 1px solid rgba(255, 255, 255, .14); border-radius: 20px; background: rgba(255, 255, 255, .055); display: flex; flex-direction: column; justify-content: space-between; transition: transform .22s ease, background-color .22s ease, border-color .22s ease; }
.info-card:hover { transform: translateY(-3px); background: rgba(255, 255, 255, .095); border-color: rgba(145, 212, 192, .52); }
.info-card .code { color: #91d4c0; font-size: 12px; letter-spacing: .08em; font-weight: 800; transition: color .22s ease; }
.info-card:hover .code { color: #d5f5ea; }
.info-card h3 { margin: 25px 0 0; font-size: 17px; line-height: 1.3; }

.official { background: var(--sky); }
.official .eyebrow { color: var(--blue); }
.official-intro { display: grid; grid-template-columns: .72fr 1.28fr; gap: 32px; align-items: start; }
.official-copy { position: sticky; top: calc(var(--header-h) + 24px); }
.official-copy h2 { font-size: clamp(29px, 4vw, 42px); line-height: 1.1; letter-spacing: -.035em; margin: 10px 0 16px; }
.official-copy p { color: var(--muted); }
.official-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; list-style: none; margin: 0; padding: 0; }
.official-card { min-height: 98px; height: 100%; background: var(--paper); border: 1px solid #d9e7ef; border-radius: 18px; padding: 16px; display: grid; grid-template-columns: 48px 1fr; gap: 14px; align-items: center; transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease; }
.official-card:hover { transform: translateY(-3px); border-color: #91bcd4; box-shadow: 0 10px 24px rgba(24, 79, 109, .08); }
.official-mark { width: 48px; height: 48px; border-radius: 14px; background: #e9f3f9; color: var(--blue); display: grid; place-items: center; font-weight: 900; font-size: 12px; overflow: hidden; transition: background-color .22s ease, color .22s ease; }
.official-card:hover .official-mark:not(:has(img)) { background: var(--blue); color: #fff; }
.official-mark img { width: 100%; height: 100%; object-fit: contain; }
.official-card h3 { margin: 0; font-size: 14px; line-height: 1.3; }
.official-card small { color: var(--muted); }

.feedback { padding: 54px 0; background: var(--paper); }
.feedback-box { border-radius: 28px; background: var(--sand); padding: 36px 42px; display: grid; grid-template-columns: 1fr auto; gap: 32px; align-items: center; }
.feedback-box h2 { margin: 0 0 8px; font-size: 28px; letter-spacing: -.025em; }
.feedback-box p { margin: 0; color: var(--muted); max-width: 650px; }

/* Inner pages (ТЗ 8.1) */
.page-head { background: var(--paper); border-bottom: 1px solid var(--line); padding: 26px 0 34px; }
.page-head h1 { font-size: clamp(30px, 4vw, 46px); line-height: 1.1; letter-spacing: -.035em; margin: 14px 0 14px; max-width: 900px; }
.page-head .lead { margin-bottom: 0; }
.page-head .search-form { margin-top: 20px; }
.breadcrumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; font-size: 13px; color: var(--muted); }
.breadcrumbs li:not(:last-child)::after { content: "/"; margin-left: 6px; color: #aab8b4; }
.breadcrumbs a { color: var(--green-dark); }
.breadcrumbs a:hover { text-decoration: underline; }
.page-body { padding: 40px 0 64px; }
.page-layout { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: 40px; padding: 40px 0 64px; align-items: start; }
.page-layout .section-nav { order: 2; position: sticky; top: calc(var(--header-h) + 20px); }
.page-layout .page-content { order: 1; min-width: 0; }
.page-layout-single { grid-template-columns: minmax(0, 1fr); max-width: 900px; margin-left: max(20px, calc((100% - var(--container)) / 2)); }

.section-nav-box { background: var(--paper); border: 1px solid var(--line); border-radius: 20px; padding: 18px; }
.section-nav-box summary { display: none; }
.section-nav-title { margin: 0 0 8px; font-weight: 800; }
.section-nav-title a { color: var(--green-dark); }
.section-nav ul { list-style: none; margin: 0; padding: 0; }
.section-nav li a { display: block; padding: 8px 10px; border-radius: 10px; font-size: 14px; line-height: 1.35; }
.section-nav li a:hover { background: var(--mint); color: var(--green-dark); }
.section-nav a[aria-current] { background: var(--mint); color: var(--green-dark); font-weight: 700; }

.prose { background: var(--paper); border: 1px solid var(--line); border-radius: 24px; padding: 34px 38px; font-size: 16px; }
.prose > :first-child { margin-top: 0; }
.prose > :last-child { margin-bottom: 0; }
.prose h2 { font-size: 26px; line-height: 1.2; letter-spacing: -.02em; margin: 36px 0 14px; }
.prose h3 { font-size: 19px; line-height: 1.3; margin: 28px 0 10px; }
.prose p, .prose ul, .prose ol { margin: 0 0 16px; }
.prose ul, .prose ol { padding-left: 22px; }
.prose li + li { margin-top: 6px; }
.prose a { color: var(--green); text-decoration: underline; text-underline-offset: 2px; }
.prose blockquote { margin: 20px 0; padding: 12px 20px; border-left: 3px solid var(--green); background: var(--mint); border-radius: 0 12px 12px 0; }
.prose table { width: 100%; border-collapse: collapse; font-size: 14px; }
.prose th, .prose td { border: 1px solid var(--line); padding: 10px 12px; text-align: left; vertical-align: top; }
.prose th { background: var(--mint); }
.prose .wp-block-table { overflow-x: auto; margin: 0 0 16px; }
.prose img { border-radius: 14px; }

.child-grid { list-style: none; margin: 24px 0 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.page-content > .child-grid:first-child { margin-top: 0; }
.child-card { height: 100%; min-height: 84px; display: flex; flex-direction: column; justify-content: center; gap: 6px; padding: 18px 52px 18px 20px; background: var(--paper); border: 1px solid var(--line); border-radius: 18px; position: relative; transition: .2s ease; }
.child-card::after { content: "→"; position: absolute; right: 16px; top: 50%; transform: translateY(-50%); width: 28px; height: 28px; border-radius: 50%; background: var(--mint); color: var(--green-dark); display: grid; place-items: center; font-size: 14px; }
.child-card:hover { border-color: #aacfc3; box-shadow: var(--shadow); }
.child-card-title { font-weight: 750; line-height: 1.3; }
.child-card-text { color: var(--muted); font-size: 13px; }

.empty-state { background: var(--sand); border-radius: 24px; padding: 32px 36px; }
.empty-state h2 { margin: 0 0 8px; font-size: 24px; letter-spacing: -.02em; }
.empty-state p { margin: 0 0 16px; color: var(--muted); max-width: 620px; }
.phone-list { list-style: none; margin: 0; padding: 0; }
.phone-list-inline { display: flex; flex-wrap: wrap; gap: 12px 28px; }
.phone-list small { display: block; color: var(--muted); font-size: 12px; }
.phone-list a { font-weight: 750; }

.card-grid { list-style: none; margin: 0 0 32px; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.news-card { height: 100%; background: var(--paper); border: 1px solid var(--line); border-radius: 20px; overflow: hidden; display: flex; flex-direction: column; }
.news-card-media { aspect-ratio: 16 / 10; background: #dcece7; display: grid; place-items: center; overflow: hidden; }
.news-card-media img { width: 100%; height: 100%; object-fit: cover; }
.news-card-placeholder { color: rgba(8, 122, 96, .18); font-size: 110px; font-weight: 900; }
.news-card-body { padding: 18px 20px 22px; }
.news-card-meta { margin: 0 0 8px; color: var(--green); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.news-card-title { margin: 0 0 8px; font-size: 17px; line-height: 1.3; }
.news-card-title a:hover { color: var(--green); }
.news-card-text { margin: 0; color: var(--muted); font-size: 14px; }
.article-body { max-width: 860px; }
.article-cover { margin: 0 0 24px; }
.article-cover img { width: 100%; border-radius: 24px; }

.search-results { list-style: none; margin: 0 0 32px; padding: 0; display: grid; gap: 12px; }
.search-results li { background: var(--paper); border: 1px solid var(--line); border-radius: 16px; padding: 18px 20px; }
.search-results a { font-weight: 750; color: var(--green-dark); }
.search-results p { margin: 6px 0 0; color: var(--muted); font-size: 14px; }

.pagination .nav-links { display: flex; flex-wrap: wrap; gap: 8px; }
.pagination .page-numbers { min-width: 44px; min-height: 44px; padding: 0 14px; display: inline-grid; place-items: center; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); font-weight: 700; }
.pagination .page-numbers.current { background: var(--green); border-color: var(--green); color: #fff; }

/* Data components: filters, lists, tables (ТЗ 8.3–8.6) */
.filter-bar { display: flex; flex-wrap: wrap; align-items: end; gap: 12px 14px; margin: 0 0 22px; padding: 18px; background: var(--mint); border-radius: 18px; }
.filter-bar .field { display: grid; gap: 6px; flex: 1 1 180px; min-width: 0; }
.filter-bar .field-wide { flex: 3 1 260px; }
.filter-bar .field-narrow { flex: 0 1 120px; }
.filter-bar .field-actions { flex: 0 0 auto; display: flex; align-items: center; gap: 14px; }
.filter-bar label { font-size: 13px; font-weight: 700; }
.filter-bar input, .filter-bar select { width: 100%; min-height: 48px; padding: 0 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); font-size: 16px; }
.filter-bar input:focus, .filter-bar select:focus { border-color: var(--green); }
.list-empty { padding: 22px 24px; border-radius: 18px; background: var(--sand); color: var(--muted); }

.doc-rows { list-style: none; margin: 0 0 24px; padding: 0; display: grid; gap: 10px; }
.doc-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 16px; align-items: center; padding: 16px 18px; background: var(--paper); border: 1px solid var(--line); border-radius: 16px; }
.doc-row:not(:has(.doc-ext)) { grid-template-columns: minmax(0, 1fr) auto; }
.doc-ext { width: 48px; height: 48px; border-radius: 12px; background: var(--mint); color: var(--green-dark); display: grid; place-items: center; font-size: 11px; font-weight: 800; }
.doc-title { font-weight: 750; line-height: 1.35; color: var(--ink); }
.doc-title:hover { color: var(--green); text-decoration: underline; }
.doc-meta { margin: 4px 0 0; display: flex; flex-wrap: wrap; gap: 4px 14px; color: var(--muted); font-size: 13px; }
.doc-note { margin: 4px 0 0; font-size: 13px; color: var(--muted); }
.doc-download { min-height: 44px; }
.badge { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 999px; font-size: 12px; font-weight: 700; background: var(--mint); color: var(--green-dark); white-space: nowrap; }
.badge-review { background: var(--sky); color: var(--blue); }
.badge-done, .badge-archive { background: #eef1f0; color: var(--muted); }
.badge-cancelled { background: #fbeeee; color: var(--danger); }

.table-wrap { overflow-x: auto; margin: 0 0 24px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.data-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.data-table th, .data-table td { padding: 12px 14px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--line); }
.data-table thead th { background: var(--mint); font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--green-dark); }
.data-table tbody tr:last-child > * { border-bottom: 0; }
.data-table tbody th { font-weight: 700; }
.data-table tbody th a { color: var(--green-dark); }
.data-table .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.cell-sub { display: block; margin-top: 3px; color: var(--muted); font-size: 13px; font-weight: 400; }
.table-title { font-size: 20px; margin: 28px 0 12px; }
.schedule-rows { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.schedule-rows span { display: inline-block; min-width: 64px; font-weight: 700; }
.schedule-rows-lg { font-size: 17px; gap: 8px; margin-bottom: 20px; }
.price-head { display: flex; flex-wrap: wrap; gap: 8px 20px; align-items: center; }

.territory .lead { margin-bottom: 18px; }
.result-ok { border-left-color: var(--green); background: var(--mint); }
.result-ok ul { margin: 8px 0 0; padding-left: 20px; }
.callout p { margin: 0; }
.callout p + p, .callout p + ul { margin-top: 8px; }
.callout-contact { border-left-color: var(--green); background: var(--mint); }

/* Contacts block */
.contacts-block { margin: 8px 0 32px; }
.contacts-intro { color: var(--muted); max-width: 720px; }
.contacts-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; align-items: start; }
.contacts-block h2 { margin: 0 0 8px; font-size: 13px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.contacts-card { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 28px; box-shadow: var(--shadow); }
.contacts-item + .contacts-item { margin-top: 22px; padding-top: 22px; border-top: 1px solid var(--line); }
.contacts-item p { margin: 0; }
.contacts-item p + p { margin-top: 14px; }
.contacts-value { font-size: 20px; font-weight: 700; }
.contacts-phones { background: var(--forest-700); color: var(--on-dark); border-radius: var(--radius); padding: 28px; }
.contacts-phones h2 { color: var(--on-dark-muted); }
.contacts-phones ul { list-style: none; margin: 0; padding: 0; }
.contacts-phones li { padding: 14px 0; border-top: 1px solid rgba(255, 255, 255, .15); }
.contacts-phones small { display: block; color: var(--on-dark-muted); margin-bottom: 2px; }
.contacts-phones a { color: var(--on-dark); font-size: 20px; font-weight: 700; text-decoration: none; }
.contacts-phones a:hover, .contacts-phones a:focus-visible { text-decoration: underline; }
.contacts-socials { margin-top: 28px; }
.contacts-socials ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.contacts-block li + li { margin-top: 0; }
.contacts-block .btn, .contacts-phones a { text-decoration: none; }
.contacts-block .btn:hover, .contacts-block .btn:focus-visible { text-decoration: underline; }
.contacts-map { margin-top: 24px; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--line); background: var(--mint); }
.contacts-map iframe { display: block; width: 100%; height: 400px; border: 0; }
html[data-contrast] .contacts-phones { border: 2px solid var(--line); }
html[data-images="off"] .contacts-map { display: none; }
html[data-contrast] .contacts-phones small, html[data-contrast] .contacts-phones h2 { color: inherit; }
@media (max-width: 650px) {
  .contacts-grid { grid-template-columns: 1fr; }
  .contacts-card, .contacts-phones { padding: 22px; }
  .contacts-value, .contacts-phones a { font-size: 18px; }
  .contacts-map iframe { height: 300px; }
}
/* Appeals block: form and published answers (ТЗ 8.7) */
.appeals { margin: 8px 0 32px; }
.appeals-intro { color: var(--muted); max-width: 760px; }
.prose .appeals h2 { margin: 0 0 14px; }
.appeal-form-wrap { background: var(--page); border: 1px solid var(--line); border-radius: 20px; padding: 28px; scroll-margin-top: calc(var(--header-h) + 16px); }
.appeal-form { display: grid; gap: 18px; max-width: 760px; }
.appeal-form .form-hint { margin: 0; color: var(--muted); font-size: 14px; }
.form-field { display: grid; gap: 6px; align-content: start; min-width: 0; margin: 0; padding: 0; border: 0; }
.form-field > label, .form-field legend { font-weight: 700; font-size: 15px; padding: 0; }
.form-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.appeal-form input[type="text"], .appeal-form input[type="tel"], .appeal-form input[type="email"], .appeal-form textarea {
  width: 100%; min-height: 48px; padding: 12px 14px; border: 1px solid #b9cbc5; border-radius: 12px; background: var(--paper); color: var(--ink); font: inherit; font-size: 16px;
}
.appeal-form textarea { min-height: 160px; resize: vertical; }
.appeal-form input:focus, .appeal-form textarea:focus { border-color: var(--green); outline: 3px solid rgba(18, 108, 166, .25); outline-offset: 1px; }
.appeal-form [aria-invalid="true"] { border-color: var(--danger); }
.appeal-form .field-note { margin: -8px 0 0; color: var(--muted); font-size: 13px; }
.form-field .field-note { margin: 4px 0 0; }
.field-error { margin: 2px 0 0; color: var(--danger); font-size: 14px; font-weight: 600; }
.choice-row { display: flex; flex-wrap: wrap; gap: 10px 22px; }
.choice { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; cursor: pointer; font-weight: 400; }
.choice input, .form-check input { width: 22px; height: 22px; accent-color: var(--green); flex: 0 0 auto; margin: 0; }
.form-check { grid-template-columns: auto minmax(0, 1fr); column-gap: 12px; align-items: start; }
.form-check label { font-weight: 400; font-size: 15px; line-height: 1.45; }
.form-check .field-error { grid-column: 2; }
.consent-text { margin-top: -8px; font-size: 13px; color: var(--muted); }
.consent-text summary { cursor: pointer; color: var(--green-dark); font-weight: 700; min-height: 32px; display: inline-flex; align-items: center; }
.consent-text p { margin: 8px 0 0; }
.hp-field { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.appeal-form .btn { justify-self: start; min-width: 180px; cursor: pointer; font: inherit; font-weight: 750; }
.appeal-form-wrap .callout { margin: 0 0 18px; }
.appeal-form-wrap .callout ul { margin: 8px 0 0; padding-left: 20px; }
.appeal-list { margin-top: 36px; }
.appeal-item { background: var(--paper); border: 1px solid var(--line); border-radius: 20px; padding: 22px 24px; }
.appeal-item + .appeal-item { margin-top: 14px; }
.appeal-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: 0 0 10px; color: var(--muted); font-size: 13px; }
.appeal-question p { margin: 0 0 8px; font-weight: 600; }
.appeal-answer { margin-top: 14px; padding: 14px 18px; border-left: 3px solid var(--green); background: var(--mint); border-radius: 0 14px 14px 0; }
.appeal-answer p { margin: 0 0 8px; }
.appeal-answer > :last-child, .appeal-question > :last-child { margin-bottom: 0; }
.appeal-answer-label { color: var(--green-dark); font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
.appeal-list .pagination { margin-top: 20px; }
.appeals li + li { margin-top: 0; }
.appeals .btn { text-decoration: none; }
html[data-contrast] .appeal-form input, html[data-contrast] .appeal-form textarea { border: 2px solid currentColor; }
@media (max-width: 650px) {
  .appeal-form-wrap { padding: 20px; }
  .form-row { grid-template-columns: 1fr; }
  .appeal-form .btn { width: 100%; }
}

.territory-list { margin-top: 24px; background: var(--paper); border: 1px solid var(--line); border-radius: 18px; }
.territory-list summary { cursor: pointer; padding: 16px 20px; font-weight: 750; min-height: 48px; }
.territory-list ul { list-style: none; margin: 0; padding: 0 20px 20px; columns: 2 260px; column-gap: 32px; font-size: 14px; }
.territory-list li { break-inside: avoid; padding: 3px 0; }
.territory-list .letter { font-weight: 800; color: var(--green); padding-top: 10px; }

.people-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.person-card { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 16px; padding: 18px; background: var(--paper); border: 1px solid var(--line); border-radius: 18px; }
.person-photo { width: 88px; height: 88px; border-radius: 18px; overflow: hidden; background: var(--mint); display: grid; place-items: center; color: var(--green-dark); font-size: 32px; font-weight: 800; }
.person-photo img { width: 100%; height: 100%; object-fit: cover; border-radius: 0; }
.person-name { margin: 0 0 4px; font-size: 16px; font-weight: 700; line-height: 1.3; }
.person-name a { color: var(--green-dark); text-decoration: none; }
.person-role { margin: 0 0 6px; color: var(--muted); font-size: 14px; }
.person-meta { margin: 0; display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 13px; }
.person-bio { margin: 8px 0 0; font-size: 13px; color: var(--muted); }
.prose .people-grid, .prose .doc-list, .prose .schedule, .prose .price-list, .prose .territory { margin: 0; }
.prose:has(> .doc-list:only-child), .prose:has(> .schedule:only-child), .prose:has(> .price-list:only-child),
.prose:has(> .territory:only-child), .prose:has(> .people-grid:only-child) { background: none; border: 0; padding: 0; }

.profile-head { display: flex; gap: 24px; align-items: center; margin-top: 14px; }
.profile-photo { width: 120px; height: 120px; border-radius: 24px; flex: 0 0 auto; }
.profile-head h1 { margin: 0 0 6px; }
.profile-head .lead { margin: 0 0 6px; }
.facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin: 0 0 28px; }
.facts > div { background: var(--paper); border: 1px solid var(--line); border-radius: 16px; padding: 14px 16px; }
.facts dt { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.facts dd { margin: 4px 0 0; font-weight: 750; }

.accordion { display: grid; gap: 10px; margin: 20px 0; }
.accordion-item { background: var(--paper); border: 1px solid var(--line); border-radius: 16px; }
.accordion-item summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 16px; align-items: center; min-height: 52px; padding: 12px 18px; font-weight: 750; }
.accordion-item summary::-webkit-details-marker { display: none; }
.accordion-item summary::after { content: "+"; color: var(--green); font-size: 22px; flex: 0 0 auto; }
.accordion-item[open] summary::after { content: "−"; }
.accordion-body { padding: 0 18px 16px; }

.gallery-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.gallery-grid figure { margin: 0; }
.gallery-grid img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 16px; display: block; }
.gallery-grid figcaption { margin-top: 6px; font-size: 13px; color: var(--muted); }
.video-card { position: relative; display: block; border-radius: 16px; overflow: hidden; background: #000; }
.video-card img { border-radius: 0; opacity: .85; }
.video-play { position: absolute; left: 50%; top: 40%; width: 64px; height: 44px; margin: -22px 0 0 -32px; border-radius: 12px; background: var(--danger); }
.video-play::after { content: ""; position: absolute; left: 26px; top: 12px; border-left: 16px solid #fff; border-top: 10px solid transparent; border-bottom: 10px solid transparent; }
.video-title { display: block; padding: 10px 14px; background: var(--paper); color: var(--ink); font-weight: 700; font-size: 14px; }
.video-frame { width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: 16px; }

/* Footer */
.footer { background: var(--forest-900); color: var(--on-dark); padding: 52px 0 26px; }
.footer-grid { display: grid; grid-template-columns: 1.25fr .8fr .8fr 1fr; gap: 42px; }
.footer .brand-text > span, .footer p, .footer li, .footer small { color: var(--on-dark-muted); }
.footer .mark { box-shadow: none; }
.footer-title { font-size: 14px; margin: 0 0 16px; }
.footer ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; font-size: 13px; }
.footer a:hover { color: var(--on-dark); text-decoration: underline; }
.footer p { font-size: 13px; }
.footer .socials { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 12px; }
.footer-bottom { border-top: 1px solid rgba(255, 255, 255, .12); margin-top: 38px; padding-top: 22px; display: flex; justify-content: space-between; gap: 20px; font-size: 12px; color: #8facaa; }
.footer-links { display: flex; gap: 18px; flex-wrap: wrap; }

/* Responsive */
@media (max-width: 1120px) {
  .head-contact, .nav { display: none; }
  .header-main { grid-template-columns: 1fr auto auto; }
  .menu-button { display: grid; }
  .hero-grid, .news-grid, .official-intro { grid-template-columns: 1fr; }
  .hero-main { min-height: 400px; padding: 42px; }
  .service-grid, .info-grid, .program-grid { grid-template-columns: repeat(2, 1fr); }
  .card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .official-copy { position: static; }
  .footer-grid { grid-template-columns: repeat(2, 1fr); }

  .mobile-panel:not([hidden]) { display: block; position: absolute; left: 0; right: 0; top: 100%; max-height: calc(100vh - var(--header-h)); max-height: calc(100dvh - var(--header-h)); overflow-y: auto; overscroll-behavior: contain; background: var(--paper); padding: 12px 20px 30px; border-bottom: 1px solid var(--line); box-shadow: var(--shadow); }
  .mobile-nav, .mobile-submenu { list-style: none; margin: 0; padding: 0; }
  .mobile-nav > li { border-bottom: 1px solid var(--line); }
  .mobile-top, .mobile-panel summary { display: flex; align-items: center; justify-content: space-between; min-height: 48px; padding: 8px 11px; font-weight: 700; }
  .mobile-panel summary { cursor: pointer; list-style: none; }
  .mobile-panel summary::-webkit-details-marker { display: none; }
  .mobile-panel summary::after { content: "+"; color: var(--green); font-size: 20px; }
  .mobile-panel details[open] summary::after { content: "−"; }
  .mobile-submenu { padding: 0 8px 10px 17px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .mobile-submenu a { display: flex; align-items: center; min-height: 44px; padding: 6px 8px; font-size: 13px; color: var(--muted); }
  .mobile-submenu a[aria-current] { color: var(--green-dark); font-weight: 700; }
  .mobile-submenu .mobile-section-link { color: var(--green-dark); font-weight: 700; }

  .page-layout { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .page-layout .section-nav { order: 0; position: static; }
  .section-nav-box { padding: 0; }
  .section-nav-box summary { display: flex; justify-content: space-between; align-items: center; min-height: 52px; padding: 0 18px; font-weight: 750; cursor: pointer; list-style: none; }
  .section-nav-box summary::-webkit-details-marker { display: none; }
  .section-nav-box summary::after { content: "+"; color: var(--green); font-size: 20px; }
  .section-nav-box[open] summary::after { content: "−"; }
  .section-nav-box[open] { padding-bottom: 12px; }
  .section-nav-title, .section-nav ul { padding: 0 8px; }
  .section-nav-title { padding-left: 18px; }
}

@media (max-width: 650px) {
  .container { width: min(100% - 28px, var(--container)); }
  .header-main { min-height: 76px; gap: 9px; }
  .mark { width: 48px; height: 48px; }
  .brand strong { font-size: 14px; }
  .brand-text > span { display: none; }
  .notice .container { padding: 10px 0; align-items: start; }
  .notice-link { display: none; }
  .hero { padding-top: 20px; }
  .hero-main { min-height: 480px; padding: 30px 24px; border-radius: 24px; align-items: start; }
  .hero h1 { font-size: 42px; margin-top: 18px; }
  .lead { font-size: 16px; }
  .actions { display: grid; }
  .hero-side { border-radius: 24px; padding: 26px; }
  .section { padding: 46px 0; }
  .section-head { align-items: start; flex-direction: column; }
  .service-grid, .info-grid, .official-grid, .program-grid, .media-links, .footer-grid, .card-grid, .child-grid { grid-template-columns: 1fr; }
  .mobile-submenu { grid-template-columns: 1fr; }
  .service-card { min-height: 150px; }
  .news-feature { min-height: 370px; padding: 26px; }
  .news-content h3 { font-size: 22px; }
  .news-item { grid-template-columns: 56px 1fr; padding: 18px; }
  .feedback-box { grid-template-columns: 1fr; padding: 28px 24px; }
  .footer-bottom { flex-direction: column; }
  .prose { padding: 24px 20px; border-radius: 20px; }
  .empty-state { padding: 24px 20px; }
  .search-form { flex-direction: column; }
  .people-grid, .gallery-grid { grid-template-columns: 1fr; }
  .doc-row { grid-template-columns: auto minmax(0, 1fr); }
  .doc-row:not(:has(.doc-ext)) { grid-template-columns: minmax(0, 1fr); }
  .doc-download, .doc-row > .badge { grid-column: 1 / -1; justify-self: start; }
  .filter-bar .field, .filter-bar .field-narrow { flex: 1 1 100%; }
  .profile-head { flex-direction: column; align-items: start; }

  /* Tables become cards on narrow screens (ТЗ 14.2) */
  .table-wrap { border: 0; background: none; overflow: visible; }
  .data-table, .data-table tbody, .data-table tr, .data-table th, .data-table td { display: block; width: 100%; }
  .data-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .data-table tr { margin-bottom: 10px; padding: 12px 14px; background: var(--paper); border: 1px solid var(--line); border-radius: 16px; }
  .data-table th, .data-table td { padding: 4px 0; border: 0; }
  .data-table td[data-label]::before { content: attr(data-label) ": "; color: var(--muted); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; }
  .data-table tbody th { font-size: 16px; }
  .data-table .num { text-align: left; }
}
@media (max-width: 1120px) and (min-width: 651px) {
  .gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Accessibility modes (ТЗ 15) */
html[data-font="lg"] body { zoom: 1.15; }
html[data-font="xl"] body { zoom: 1.3; }
html[data-images="off"] img { visibility: hidden; }
html[data-images="off"] .news-feature::before { display: none; }

html[data-contrast="high"],
html[data-contrast="dark"] {
  --shadow: none;
}
html[data-contrast="high"] {
  --ink: #000; --muted: #000; --green: #000; --green-dark: #000; --blue: #000;
  --mint: #fff; --mint-strong: #fff; --sky: #fff; --sand: #fff; --paper: #fff; --page: #fff;
  --line: #000; --forest-900: #000; --forest-800: #000; --forest-750: #000; --forest-700: #000;
  --on-dark: #fff; --on-dark-muted: #fff; --focus: #000;
}
html[data-contrast="dark"] {
  --ink: #fff; --muted: #fff; --green: #ffeb3b; --green-dark: #ffeb3b; --blue: #ffeb3b;
  --mint: #000; --mint-strong: #000; --sky: #000; --sand: #000; --paper: #000; --page: #000;
  --line: #fff; --forest-900: #000; --forest-800: #000; --forest-750: #000; --forest-700: #000;
  --on-dark: #fff; --on-dark-muted: #fff; --focus: #ffeb3b;
}
html[data-contrast] .header { background: var(--paper); backdrop-filter: none; }
html[data-contrast] .hero-main::after, html[data-contrast] .news-art, html[data-contrast] .news-feature::before { display: none; }
html[data-contrast] .btn-primary, html[data-contrast] .service-card.featured, html[data-contrast] .pagination .page-numbers.current { background: var(--ink); border-color: var(--ink); color: var(--paper); box-shadow: none; }
html[data-contrast] .service-card.featured p, html[data-contrast] .service-card.featured .number { color: var(--paper); }
html[data-contrast] .hero-side, html[data-contrast] .info-section, html[data-contrast] .footer { border: 2px solid var(--line); }
html[data-contrast] .news-content, html[data-contrast] .status small, html[data-contrast] .notice strong,
html[data-contrast] .program-card.review small, html[data-contrast] .info-card .code, html[data-contrast] .info-section .eyebrow { color: var(--ink); }
html[data-contrast] .news-feature { background: var(--paper); }
html[data-contrast] .prose a, html[data-contrast] .text-link { text-decoration: underline; }
html[data-contrast="high"] .hero-side, html[data-contrast="high"] .info-section, html[data-contrast="high"] .footer, html[data-contrast="high"] .servicebar { color: #fff; }

/* Soft reveal of home sections on scroll (mockup). Classes are added by JS only, so without JS or with
   reduced motion everything is visible at once. */
@media (prefers-reduced-motion: no-preference) {
  .reveal-ready .reveal { opacity: 0; transform: translateY(18px); transition: opacity .56s ease, transform .56s cubic-bezier(.2, .75, .25, 1); }
  .reveal-ready .reveal.is-visible { opacity: 1; transform: none; }
  .reveal-ready .reveal .section-head { transition-delay: .04s; }
  /* Cards follow in a short wave. A separate animation (not transition-delay, as in the mockup) so the delay
     does not slow down the hover effects afterwards. */
  .reveal-ready .reveal.is-visible :is(.service-card, .program-card, .info-card, .official-card) { animation: gp6CardIn .5s cubic-bezier(.2, .75, .25, 1) calc(var(--stagger, 0) * 55ms) backwards; }
}
@keyframes gp6CardIn { from { opacity: 0; transform: translateY(12px); } }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

@media print {
  .servicebar, .a11y-panel, .nav, .search-button, .menu-button, .notice, .footer, .section-nav { display: none !important; }
  .header { position: static; }
}
