/* Site footer for the class and booking routes (flow.js footer()), so they end exactly like the content pages.
   Same markup as build-pages.mjs shell(); same look as pages.css + pages-system.css (.site-footer). Keep in step
   with those two if the footer design changes. Tokens fall back to the system values when system.css is absent. */
.site-footer{border-top:0;padding:clamp(64px,7vw,110px) 5% 36px;background:var(--tcs-paper,#f8f7f4);font:14px/1.6 var(--tcs-sans,Inter,'Noto Sans JP',sans-serif);color:var(--tcs-ink,#292d28)}
.site-footer__top{max-width:1600px;margin:0 auto;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,5fr) minmax(0,2fr);gap:clamp(32px,4vw,64px)}
.site-footer .brand{display:inline-block;font:400 clamp(30px,2.8vw,44px)/1.05 var(--tcs-serif,Cardo,'Noto Serif JP',serif)!important;color:var(--tcs-ink,#292d28);text-decoration:none;margin-bottom:22px}
.site-footer p{margin:0}
.site-footer a{color:inherit;text-underline-offset:4px}
.site-footer__links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 32px;align-content:start}
.site-footer__links a,.site-footer__social a{font:14px/1.4 var(--tcs-sans,Inter,'Noto Sans JP',sans-serif)!important;color:var(--tcs-ink,#292d28);text-decoration:none}
.site-footer__links a:hover,.site-footer__social a:hover{text-decoration:underline}
.site-footer__social{display:flex;flex-direction:column;gap:12px}
.site-footer__legal{max-width:1600px;margin:56px auto 0;padding-top:24px;border-top:1px solid var(--tcs-line,#d8d5cf);font-size:12px;color:var(--tcs-ink,#292d28)}
@media(max-width:900px){.site-footer__top{grid-template-columns:1fr}}
@media(max-width:767px){.site-footer__links a,.site-footer__social a{display:inline-block;padding:8px 0}}
/* (Vale, Kotaro) the last links were sitting on the divider: real air on both sides of the rule */
.site-footer__top{padding-bottom:clamp(44px,4.5vw,72px)!important;align-items:start!important}
.site-footer__legal{margin-top:0!important;padding-top:clamp(22px,2vw,30px)!important}
