/* K-LINK corporate site - site.css. Navy "menu hub" design (owner-approved 2026-11-03).
   Budget <= 30 KB (verify.py). No third-party URLs, no @import, no inline-style needs (CSP style-src 'self').
   Colours are tokens (hex) on :root; the token NAMES are the ones tools/verify.py checks (PLAN_TOKENS), the VALUES are the new palette.
   Heading face: self-hosted Noto Serif JP 700 subset (SIL OFL 1.1, fonts/OFL-NotoSerifJP.txt). tools/subset_fonts.py reads the rule that sets
   `font-family: var(--font-heading)` (simple selectors only: tag, .class, tag.class) to decide which glyphs the subset needs. */
:root{
--navy-950:#081A31;--navy-900:#0C2340;--navy-800:#102B4E;--navy-700:#163A66;
--blue-700:#2F6BC4;--blue-600:#1D4F99;--logo-blue:#4178CF;--sky:#8EC6F6;
--light:#E6EEF8;--surface:#F4F7FA;--border:#DCE3EC;--border-2:#C3CFDD;
--ink:#17202B;--muted:#3B4A5C;--muted-2:#526070;--white:#FFFFFF;--line:#06C755;
--on-navy:#C9D6E6;--on-navy-1:#D3DEEB;--on-navy-2:#9FB3CB;--on-navy-3:#B7C6D8;
--font-sans:"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic UI","Yu Gothic",Meiryo,"BIZ UDPGothic",system-ui,sans-serif;
--font-heading:"Noto Serif JP","Hiragino Mincho ProN","Yu Mincho",YuMincho,"BIZ UDPMincho",serif;
--font-num:var(--font-heading);
--gutter:max(16px,4vw);--section-y:clamp(64px,8vw,112px);--tap:44px
}
@font-face{font-family:"Noto Serif JP";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/NotoSerifJP-700.woff") format("woff")}

/* ---------- reset / base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{font-size:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body,h1,h2,h3,h4,p,ul,ol,dl,dd,figure{margin:0}
body{font-family:var(--font-sans);font-size:1rem;line-height:1.85;color:var(--ink);background:var(--white);-webkit-font-smoothing:antialiased}
img,svg{max-width:100%}
img{display:block;height:auto}
svg{flex:none}
ul[class],ol[class]{margin:0;padding:0;list-style:none}
/* Japanese line breaking: phrase units (span.ph = inline-block) wrap as a whole; auto-phrase where supported (Chrome 119+). */
p,li,td,th,summary,h1,h2,h3,figcaption{word-break:auto-phrase;line-break:strict;text-wrap:pretty;overflow-wrap:anywhere}
h1,h2,h3{text-wrap:balance}
.ph{display:inline-block}
h1,h2,.intro__name{font-family:var(--font-heading)}
h1,h2{font-weight:700}
h1,h2,h3{color:var(--ink)}
h1{font-size:clamp(1.75rem,4vw,2.625rem);line-height:1.3}
h2{font-size:clamp(1.75rem,3vw,2.375rem);line-height:1.4}
h3{font-size:1.0625rem;line-height:1.55}
a{color:var(--blue-700);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}
a:hover{color:var(--blue-600);text-decoration-thickness:2px}
.text-small{font-size:.875rem;line-height:1.7}
.text-muted{color:var(--muted)}
.url{overflow-wrap:anywhere;word-break:break-all}
a.url[href^="mailto:"]{word-break:normal}
[id]{scroll-margin-top:4.25rem}
.areas{scroll-margin-top:5.5rem}
main:focus{outline-width:0}
:focus-visible{outline:2px solid var(--blue-700);outline-offset:3px}
.band-navy :focus-visible,.site-header :focus-visible,.site-footer :focus-visible,.intro :focus-visible,.skip-link:focus-visible{outline-color:var(--sky)}
.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.skip-link{position:absolute;left:1rem;top:-5rem;z-index:100;padding:.75rem 1rem;border-radius:8px;background:var(--navy-900);color:var(--white);font-weight:700;text-decoration:none}
.skip-link:focus{top:.5rem;color:var(--white)}
.icon{width:1.5rem;height:1.5rem;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}

/* ---------- layout ---------- */
.container{width:100%;max-width:calc(1200px + 2 * var(--gutter));margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-block:var(--section-y)}
.section--surface{background:var(--surface)}
.band-navy{background:var(--navy-900);color:var(--white)}
.band-navy h1,.band-navy h2{color:var(--white)}
.band-navy.section{padding-block:clamp(64px,8vw,104px)}
.split{display:flex;flex-wrap:wrap;gap:48px clamp(40px,6vw,88px)}
.split__side{flex:1 1 300px;min-width:0;display:flex;flex-direction:column;gap:16px;color:var(--muted)}
.split__main{flex:2 1 560px;min-width:0;display:flex;flex-direction:column}
.split--narrow{row-gap:40px}
.split--narrow>.split__side{flex-basis:260px;gap:12px}
.split--narrow>.split__main{flex-basis:600px}
.section__head{display:flex;flex-direction:column;gap:12px;max-width:40em;margin-bottom:2.5rem;color:var(--muted)}
.lead{font-size:1.0625rem}
.kicker{font-size:.75rem;font-weight:700;letter-spacing:.2em;line-height:1.5;color:var(--blue-700)}
.band-navy .kicker{color:var(--sky)}
.eyebrow{display:flex;align-items:center;gap:12px;font-size:.8125rem;font-weight:500;letter-spacing:.14em;line-height:1.5;color:var(--blue-700)}
.eyebrow::before{content:"";flex:none;width:32px;height:1px;background:currentColor}
.hero .eyebrow{color:var(--sky)}

/* ---------- buttons (pill, >= 44px targets; LINE button = white, green border + icon, navy text) ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.625rem;min-height:50px;min-width:var(--tap);padding:0 1.5rem;border:1px solid transparent;border-radius:999px;font:inherit;font-size:.9375rem;font-weight:700;line-height:1.4;text-align:center;text-decoration:none;cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}
.btn svg{width:1.25rem;height:1.25rem}
.btn-primary{background:var(--blue-700);border-color:var(--blue-700);color:var(--white)}
.btn-primary:hover{background:var(--navy-900);border-color:var(--navy-900);color:var(--white)}
.btn-secondary{background:var(--white);border-color:var(--blue-700);color:var(--blue-700)}
.btn-secondary:hover{background:var(--surface);border-color:var(--navy-900);color:var(--navy-900)}
.btn-line{background:var(--white);border:2px solid var(--line);color:var(--navy-900)}
.btn-line svg{color:var(--line)}
.btn-line:hover{background:var(--surface);color:var(--navy-900)}
.btn-ghost-light{border-color:rgba(255,255,255,.55);color:var(--white);font-weight:500}
.btn-ghost-light:hover{background:rgba(255,255,255,.14);color:var(--white)}
.btn-sm{min-height:var(--tap);padding:0 1.125rem;font-size:.875rem}
.btn-block{display:flex;width:100%}
.cta-group{display:flex;flex-wrap:wrap;gap:10px}

/* ---------- notice bar + header (dark, sticky) ---------- */
.notice{background:var(--navy-950);color:var(--on-navy);font-size:.8125rem;line-height:1.7}
.notice .container{padding-block:8px}
.site-header{position:sticky;top:0;z-index:50;max-height:100vh;max-height:100dvh;overflow-y:auto;background:rgba(12,35,64,.96);border-bottom:1px solid rgba(142,198,246,.16)}
.site-header__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.25rem 1rem;min-height:68px}
.brand{display:flex;align-items:center;gap:12px;min-height:var(--tap);color:var(--white);text-decoration:none}
.brand:hover{color:var(--white)}
.brand picture{display:block;flex:none}
.brand img{width:34px;height:34px}
.brand__txt{display:flex;flex-direction:column;line-height:1.2}
.brand__word{font-size:1.125rem;font-weight:700;letter-spacing:.05em;white-space:nowrap}
.brand__sub{font-size:.6875rem;letter-spacing:.08em;color:var(--on-navy-2);white-space:nowrap}
@media (max-width:349px){.brand__sub{display:none}}
.site-header__actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px;min-width:0;max-width:100%;margin-inline-start:auto}
.site-header__actions>*{max-width:100%}
.header-link{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap);min-width:var(--tap);padding:0 14px;color:#DCE6F2;font-size:.875rem;text-decoration:none}
.header-link:hover{color:var(--white);text-decoration:underline}
@media (max-width:640px){.header-link{display:none}}
/* toggle menu (English pages keep a nav list; the Japanese header has none, the menu hub is the navigation) */
.nav-toggle{display:none;align-items:center;gap:.5rem;min-height:var(--tap);min-width:var(--tap);padding:0 .75rem;border:1px solid rgba(201,214,230,.4);border-radius:999px;background:transparent;color:var(--white);font:inherit;font-size:.875rem;font-weight:700;cursor:pointer}
.nav-toggle:hover{background:rgba(255,255,255,.1)}
.nav-toggle__bars,.nav-toggle__bars::before,.nav-toggle__bars::after{display:block;width:1.125rem;height:2px;background:currentColor;content:""}
.nav-toggle__bars{position:relative}
.nav-toggle__bars::before{position:absolute;top:-6px}
.nav-toggle__bars::after{position:absolute;top:6px}
.nav-toggle[aria-expanded="true"] .nav-toggle__bars{background:transparent}
.nav-toggle[aria-expanded="true"] .nav-toggle__bars::before{top:0;transform:rotate(45deg)}
.nav-toggle[aria-expanded="true"] .nav-toggle__bars::after{top:0;transform:rotate(-45deg)}
.js .nav-toggle{display:inline-flex}
/* phones: the English header (brand + LINE inquiry + Menu) fits one row from about 380 px instead of wrapping to a second row */
@media (max-width:420px){.site-header__inner{column-gap:.5rem}.site-header__actions{gap:6px}.site-header .btn-sm{padding:0 .75rem}.nav-toggle{padding:0 .625rem}}
.site-nav{flex:0 0 100%}
.site-nav ul{display:flex;flex-wrap:wrap;gap:0 .25rem;margin:0;padding:0;list-style:none}
.site-nav__link{display:flex;align-items:center;min-height:var(--tap);padding:.5rem .75rem;border-radius:8px;color:#DCE6F2;font-size:.9375rem;text-decoration:none}
.site-nav__link:hover{background:rgba(255,255,255,.1);color:var(--white)}
.js .site-nav{display:none}
.js .site-nav.is-open{display:block;padding-block:.5rem;border-top:1px solid rgba(142,198,246,.16)}
.js .site-nav ul{display:block}
.lang-switch{display:inline-flex;align-items:center;min-height:var(--tap);margin:.5rem .75rem;padding:.25rem .875rem;border:1px solid rgba(201,214,230,.4);border-radius:999px;color:var(--white);font-size:.875rem;font-weight:700;text-decoration:none}
.lang-switch:hover{background:rgba(255,255,255,.1);color:var(--white)}

/* ---------- opening animation (pure CSS; ends hidden; nav.js only adds skip + once-per-session) ---------- */
@keyframes kl-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes kl-in2{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes kl-mark{0%{opacity:0;transform:scale(.6) rotate(-25deg)}60%{opacity:1}100%{opacity:1;transform:none}}
@keyframes kl-draw{to{stroke-dashoffset:0}}
@keyframes kl-dot{from{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}
@keyframes kl-out{0%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-3%);visibility:hidden;pointer-events:none}}
.intro{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding-inline:var(--gutter);background:var(--navy-900);color:var(--white);animation:kl-out .8s cubic-bezier(.7,0,.3,1) 3.1s forwards}
.intro__stage{width:100%;max-width:560px;display:flex;flex-direction:column;align-items:center;gap:28px;text-align:center}
.intro__mark{width:88px;height:88px;animation:kl-mark .9s cubic-bezier(.2,.8,.2,1) .15s both}
.intro__arc{width:100%;display:flex;flex-direction:column;gap:6px}
.intro__arc svg{display:block;width:100%;max-width:520px;height:auto}
.intro__path{fill:none;stroke:var(--sky);stroke-width:2;stroke-linecap:round;stroke-dasharray:520;stroke-dashoffset:520;animation:kl-draw 1.3s cubic-bezier(.6,0,.2,1) .7s forwards}
.intro__dot{transform-box:fill-box;transform-origin:center;animation:kl-dot .4s ease both}
.intro__dot--a{fill:var(--sky);animation-delay:.6s}
.intro__dot--b{fill:var(--white);animation-delay:1.9s}
.intro__places{display:flex;justify-content:space-between;font-size:.75rem;letter-spacing:.24em;color:var(--sky)}
.intro__name{font-size:clamp(26px,4vw,36px);font-weight:700;letter-spacing:.06em}
.intro__tag{font-size:clamp(14px,1.6vw,16px);letter-spacing:.06em;color:var(--on-navy)}
.intro__skip{display:none;position:absolute;top:max(16px,env(safe-area-inset-top,0px));right:max(16px,env(safe-area-inset-right,0px));align-items:center;min-height:var(--tap);padding:0 18px;border:1px solid rgba(201,214,230,.4);border-radius:999px;background:transparent;color:var(--on-navy);font:inherit;font-size:.8125rem;cursor:pointer}
.js .intro__skip{display:inline-flex}
.intro__skip:hover{background:rgba(255,255,255,.1)}
.no-intro .intro,.skip-intro .intro{display:none}
.rise{--d:3.3s;animation:kl-in .8s cubic-bezier(.2,.8,.2,1) both;animation-delay:var(--d)}
.r1{--d:1.3s}.r2{--d:1.8s}.r3{--d:2.2s}
.d1{--d:3.3s}.d2{--d:3.45s}.d3{--d:3.6s}.d4{--d:3.75s}
.t1{--d:3.7s}.t2{--d:3.8s}.t3{--d:3.9s}.t4{--d:4s}.t5{--d:4.1s}.t6{--d:4.2s}
/* intro not shown (seen this session / skipped): the hero entrance starts at once; a new animation name restarts it after a skip */
.no-intro .rise,.skip-intro .rise{animation-name:kl-in2;animation-delay:calc(var(--d) - 3.3s)}

/* ---------- hero = menu hub (first screen) ---------- */
.hero{padding-block:clamp(48px,7vw,96px) clamp(56px,8vw,112px)}
.hero__inner{display:flex;flex-direction:column;gap:clamp(40px,5vw,64px)}
.hero__top{display:flex;flex-wrap:wrap;align-items:flex-end;gap:28px clamp(40px,6vw,96px)}
.hero__main{flex:9 1 640px;min-width:0;display:flex;flex-direction:column;gap:22px}
.hero__side{flex:1 1 380px;min-width:0;display:flex;flex-direction:column;gap:18px}
.hero__text{display:flex;flex-direction:column;gap:22px}
.hero h1{font-size:clamp(1.375rem,6.9vw,4rem);line-height:1.34;letter-spacing:.02em}
/* H1 size follows its own column: 7.8cqw = the 12 full-width characters of line 1 (+ .02em tracking) fit with ~4% to spare, so the two lines
   (nested span.ph) never split into three; the vw clamp above is the fallback for browsers without container units. */
@supports (width:1cqw){.hero__main{container-type:inline-size}.hero h1{font-size:clamp(1.375rem,7.8cqw,4rem)}}
.hero__sub{font-size:clamp(.9375rem,1.4vw,1rem);line-height:1.95;color:var(--on-navy-1)}
.hero__note{font-size:.8125rem;color:var(--on-navy-2)}
.hero__art{display:none}
.hub__label{margin-bottom:14px;font-size:.75rem;font-weight:700;letter-spacing:.22em;color:var(--sky)}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));gap:12px}
.tiles>li{min-width:0}
.tile{display:flex;align-items:center;gap:18px;min-height:92px;padding:18px 22px;border:1px solid rgba(142,198,246,.22);border-radius:14px;background:var(--navy-800);color:var(--white);text-decoration:none;transition:background-color .2s,border-color .2s,transform .2s}
.tile:hover{background:var(--navy-700);border-color:rgba(142,198,246,.6);color:var(--white);transform:translateY(-2px)}
.tile .icon{width:30px;height:30px;stroke-width:1.6;color:var(--sky)}
.tile__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.tile__title{font-size:1.0625rem;font-weight:700;line-height:1.55}
.tile__desc{font-size:.8125rem;line-height:1.6;color:var(--on-navy-3)}
.tile__arrow{flex:none;font-size:1.25rem;color:var(--sky);transition:transform .2s}
.tile:hover .tile__arrow{transform:translateX(4px)}
.tile--cta{border-color:var(--white);background:var(--white);color:var(--navy-900)}
.tile--cta:hover{border-color:var(--white);background:var(--surface);color:var(--navy-900)}
.tile--cta .icon,.tile--cta .tile__arrow{color:var(--blue-700)}
.tile--cta .tile__desc{color:var(--muted)}

/* ---------- trust strip ---------- */
.trust{padding-block:32px;border-bottom:1px solid var(--border);background:var(--surface)}
.trust__list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:24px 40px}
.trust__item{display:flex;align-items:flex-start;gap:14px;min-width:0}
.trust__icon{margin-top:4px;color:var(--blue-700)}
.trust__title{font-size:.9375rem;font-weight:700;line-height:1.85}
.trust__text{margin-top:2px;font-size:.875rem;line-height:1.75;color:var(--muted-2)}

/* ---------- services (hairline grid), payment note ---------- */
.grid{display:grid;grid-template-columns:minmax(0,1fr);gap:1.5rem}
.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:0;border-top:1px solid var(--border);border-left:1px solid var(--border)}
.card{display:flex;flex-direction:column;gap:12px;min-width:0;padding:28px}
.grid-2>.card{border-right:1px solid var(--border);border-bottom:1px solid var(--border)}
.card__icon{color:var(--blue-700)}
.card__icon .icon{width:28px;height:28px}
.card__title{font-size:1.125rem}
.card p{font-size:.9375rem;color:var(--muted)}
.note{margin-top:28px;padding:20px 24px;border-radius:10px;background:var(--surface);font-size:.9375rem;color:var(--muted)}

/* ---------- flow: numbered cards with role chips ---------- */
.flow{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:16px;counter-reset:step}
.flow__step{min-width:0;padding:24px;border:1px solid var(--border);border-radius:12px;background:var(--white);counter-increment:step}
.flow__body{display:flex;flex-direction:column;gap:10px}
.flow__head{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px}
.flow__head::before{font-family:var(--font-num);font-size:1.75rem;font-weight:700;line-height:1;color:var(--blue-700);content:counter(step);content:counter(step)/""}
.flow__title{font-size:1.0625rem}
.flow__body>p{font-size:.875rem;line-height:1.85;color:var(--muted)}
.chip{display:inline-flex;align-items:center;padding:2px 10px;border:1px solid transparent;border-radius:999px;font-size:.75rem;line-height:1.5}
.chip--doctor{background:var(--light);border-color:var(--light);color:var(--navy-900)}
.chip--us{background:var(--navy-900);border-color:var(--navy-900);color:var(--white)}
.chip--carrier{background:var(--white);border-color:var(--border-2);color:var(--muted)}

/* ---------- stance (policy list) ---------- */
.areas{margin-top:16px;display:flex;flex-direction:column;gap:16px}
.areas h3{font-size:1rem}
.areas p,.stance__text{font-size:.9375rem;color:var(--muted)}
.stance{border-top:2px solid var(--navy-900)}
.stance__item{display:flex;flex-direction:column;gap:10px;padding:28px 0;border-bottom:1px solid var(--border)}
.stance__title{font-size:1.125rem}

/* ---------- FAQ (native details/summary, no JS) ---------- */
.faq{gap:8px}
.faq__item{border:1px solid var(--border);border-radius:10px;background:var(--white)}
.faq__item summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:var(--tap);padding:18px 22px;font-size:.9375rem;font-weight:700;line-height:1.7;cursor:pointer;list-style:none}
.faq__item summary::-webkit-details-marker{display:none}
.faq__item summary::after{flex:none;font-size:1.375rem;font-weight:400;line-height:1;color:var(--blue-700);content:"+";content:"+"/"";transition:transform .2s}
.faq__item[open] summary::after{transform:rotate(45deg)}
.faq__a{display:flex;flex-direction:column;gap:8px;padding:0 22px 20px;font-size:.9375rem;color:var(--muted)}
.faq__a .text-small{font-size:.8125rem}

/* ---------- company table ---------- */
.company-table{width:100%;border-collapse:collapse;border-top:2px solid var(--navy-900);font-size:.9375rem}
.company-table th,.company-table td{padding:18px 0;border-bottom:1px solid var(--border);text-align:left;vertical-align:top;line-height:1.85}
.company-table th{width:7.5em;padding-right:20px;color:var(--navy-900);font-weight:700;white-space:nowrap}
.company-table td{font-variant-numeric:tabular-nums}
@media (max-width:419px){.company-table th,.company-table td{display:block;width:auto}.company-table th{padding:16px 0 0;border-bottom:0;white-space:normal}.company-table td{padding:2px 0 16px}}
/* enlarged text: the same stacked layout follows the column width in em (container query), so a 200% text size never squeezes the value column */
@supports (container-type:inline-size) and selector(:has(*)){.split__main:has(>.company-table){container-type:inline-size}
@container (max-width:24.1em){.company-table th,.company-table td{display:block;width:auto}.company-table th{padding:16px 0 0;border-bottom:0;white-space:normal}.company-table td{padding:2px 0 16px}}}

/* ---------- contact (navy) with QR ---------- */
.contact{display:flex;flex-wrap:wrap;align-items:center;gap:40px clamp(40px,6vw,88px)}
.contact__body{flex:2 1 520px;min-width:0;display:flex;flex-direction:column;gap:20px}
.contact .btn{min-height:52px;padding-inline:28px}
.contact__links{display:flex;flex-direction:column;font-size:.875rem}
.contact__links li{display:flex;flex-wrap:wrap;align-items:center}
.contact__links a{display:inline-flex;align-items:center;min-height:var(--tap)}
.contact__note{font-size:.8125rem;color:var(--muted)}
.contact__qr{flex:0 1 auto;max-width:100%;display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px;border:1px solid var(--border);border-radius:14px;background:var(--white)}
.band-navy .contact__body>p{color:var(--on-navy-1)}
.band-navy .contact__links{color:var(--on-navy)}
.band-navy .contact__links a{color:var(--sky)}
.band-navy .contact__links a:hover{color:var(--white)}
.band-navy .contact__note{color:var(--on-navy-2)}
.contact__qr img{width:165px;height:165px;image-rendering:pixelated}
.contact__qr figcaption{font-size:.75rem;color:var(--muted);text-align:center}

/* ---------- footer ---------- */
.site-footer{padding-block:40px;background:var(--navy-950);color:var(--on-navy);font-size:.875rem;line-height:1.7}
.site-footer .container{display:flex;flex-direction:column;gap:24px}
.site-footer a{color:var(--on-navy)}
.site-footer a:hover{color:var(--white)}
.site-footer__top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px}
.site-footer__name{display:flex;align-items:center;gap:10px;color:var(--white);font-weight:700}
.site-footer__name img{width:28px;height:28px}
.site-footer__links{display:flex;flex-wrap:wrap;gap:0 24px}
.site-footer__links a{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap);min-width:var(--tap)}
.site-footer__bottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 20px;padding-top:20px;border-top:1px solid rgba(201,214,230,.18);font-size:.75rem;color:var(--on-navy-2)}

/* ---------- legal pages, entry pages, 404 ---------- */
.page-head{padding-block:3rem;border-bottom:1px solid var(--border);background:var(--surface)}
.page-head h1{margin:0}
.page-head__meta{margin-top:.5rem;color:var(--muted);font-size:.875rem}
.prose{max-width:40em;padding-block:3rem 4rem}
.prose p,.prose ul,.prose ol{margin:0 0 1rem}
.prose h2{margin:2.5rem 0 1rem;padding-bottom:.25rem;border-bottom:1px solid var(--border);font-size:1.375rem}
.prose h2:first-child{margin-top:0}
.prose h3{margin:1.5rem 0 .5rem;font-size:1.125rem}
.prose ol,.prose ul{padding-left:1.5em}
.prose li{margin-bottom:.25rem}
.entry{display:grid;place-items:center;min-height:70vh;padding:4rem var(--gutter);background:var(--surface)}
.entry__card{display:flex;flex-direction:column;gap:1rem;width:100%;max-width:35rem;padding:2rem 1.5rem;border:1px solid var(--border);border-radius:14px;background:var(--white);text-align:center}
.entry__greeting{font-size:1.375rem;line-height:1.5}
.entry__actions{display:grid;gap:1rem}
.entry__more{font-size:.9375rem}
.notfound{padding-block:4rem 6rem;text-align:center}
.notfound>*+*{margin-top:1rem}
.notfound__code{display:block;color:var(--logo-blue);font-family:var(--font-heading);font-size:clamp(4rem,18vw,7rem);font-weight:700;line-height:1;letter-spacing:.04em}
.notfound__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem}

/* ---------- motion / print ---------- */
@media (prefers-reduced-motion:reduce){
.intro{display:none}
.rise{animation:none}
*,*::before,*::after{transition:none!important}
}
@media print{
.intro,.site-header,.notice,.skip-link,.cta-group{display:none!important}
.rise{animation:none}
body{color:#000;background:#fff}
}
