/* Good Fight layout contract. Change the tokens/components here, never per page.
   See DESIGN-SYSTEM.md. Loaded last on every marketing route, in both languages. */
:root{
 --gf-space-1:8px;--gf-space-2:16px;--gf-space-3:24px;--gf-space-4:32px;
 --gf-space-6:48px;--gf-space-8:64px;--gf-space-11:88px;
 --gf-section:var(--gf-space-11);--gf-control-height:64px;--gf-header-control-height:48px;
 --gf-button-shadow-rest:3px;--gf-button-shadow-hover:4px;--gf-button-shadow-pressed:1px;
}
.training-site .button:not(.small){
 --gf-button-shadow-color:var(--gf-yellow);
 box-shadow:0 var(--gf-button-shadow-rest) 0 var(--gf-button-shadow-color);
 transition:background .2s,color .2s,transform .15s,box-shadow .15s;
}
/* Yellow invitations and compact utilities retain their named flat variants. */
.training-site :is(.immersive-hero,#contact) .button{--gf-button-shadow-color:transparent}
@media(hover:hover){
 .training-site .button:not(.small):hover{transform:translateY(-1px);box-shadow:0 var(--gf-button-shadow-hover) 0 var(--gf-button-shadow-color)}
}
.training-site .button:not(.small):active{transform:translateY(2px);box-shadow:0 var(--gf-button-shadow-pressed) 0 var(--gf-button-shadow-color)}
.training-site .button:focus-visible{outline:3px solid var(--gf-blue);outline-offset:6px}
.training-site :is(.immersive-hero,#contact) .button:focus-visible{outline-color:var(--gf-cream)}
.training-site .button:not(.small):disabled{box-shadow:none;transform:none}
@media(prefers-reduced-motion:reduce){
 .training-site .button:not(.small),.training-site .button:not(.small):is(:hover,:active){transition:none;transform:none;box-shadow:0 var(--gf-button-shadow-rest) 0 var(--gf-button-shadow-color)}
 .training-site .button:not(.small):disabled{box-shadow:none}
}
.training-site .button{
 box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;
 height:var(--gf-control-height);min-height:var(--gf-control-height);max-height:var(--gf-control-height);
 flex-shrink:0;max-width:100%;padding:0 24px;gap:12px;
 font:500 18px/1.3 Body,Arial,sans-serif;white-space:normal;text-align:center;
}
.training-site .button .link-arrow{display:block;width:16px;height:16px;flex:0 0 16px;margin:0}
.training-site .site-header .button.small{
 height:var(--gf-header-control-height);min-height:var(--gf-header-control-height);max-height:var(--gf-header-control-height);
 padding:0 16px;font-size:14px;
}
.training-site main>.section,.training-site #contact{padding-block:var(--gf-section)}
/* Plain paper sections share one 88px gap; colour transitions retain inner padding. */
.training-site main>.wrap.section+.wrap.section{padding-top:0}
.training-site :is(.section-heading,.core-heading){margin-bottom:var(--gf-space-6)}
.training-site .section-heading>:last-child{margin-bottom:0}
.training-site .wk-gallery{margin-block:var(--gf-space-6) var(--gf-section)}
.training-site .wk-gallery+.wk-details{margin-top:0}
.training-site .wk-details{gap:var(--gf-gap)}
/* Eight shared grid tracks (facts span two): identical peer rows: status, heading, intro, photo, facts, price, action. */
.training-site .class-offer{align-items:start;min-width:0}
.training-site .class-offer>h3+p{min-height:0}
.training-site .class-offer .class-facts{margin:0 0 var(--gf-space-3)}
.training-site .class-offer .class-pricing{margin:0 0 var(--gf-space-3)}
.training-site .class-offer .class-action{display:flex;align-items:flex-start;margin:0;align-self:start}
.training-site .class-action>.button{height:var(--gf-control-height);min-height:var(--gf-control-height)}
@media(min-width:761px){
 .training-site .class-offers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(8,auto);row-gap:0;align-items:stretch}
 .training-site .class-offer{display:grid;grid-template-rows:subgrid;grid-row:span 8;row-gap:0}
 .training-site .class-facts{display:grid;grid-template-rows:subgrid;grid-row:span 2;row-gap:0}
}
/* Identical shared belt component on classes and private lessons. */
.training-site .simple-belt-guide .section-heading{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gf-gap)}
.training-site .belt-included{margin:0 0 var(--gf-space-3);padding:var(--gf-space-3) var(--gf-space-4)}
.training-site .belt-explore{margin:0;padding-top:var(--gf-space-3)}
.training-site .belt-explore>summary{min-height:44px;line-height:1.5;font-size:18px}
.training-site .belt-explore-content{padding-top:var(--gf-space-3)}
.training-site .belt-explore-content>p:first-child{margin:0 0 var(--gf-space-4)}
.training-site .simple-belts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gf-space-4);margin:0;padding:0;list-style:none}
.training-site .simple-belts li{min-width:0}
.training-site .simple-belts svg{display:block;width:100%;max-width:none;height:auto;aspect-ratio:240/36;margin:0 0 var(--gf-space-3)}
.training-site .simple-belts h3{font-size:36px;line-height:1.12;margin:0 0 var(--gf-space-2)}
.training-site .simple-belts p{font-size:16px;line-height:1.6;margin:0}
.training-site .simple-belts .belt-duration{min-height:3.2em;margin-bottom:var(--gf-space-2)}
.training-site .simple-belt-guide .belt-timing-note{max-width:none;margin:var(--gf-space-4) 0 0;padding-top:var(--gf-space-3);border-top:1px solid var(--gf-rule);font-size:16px;line-height:1.6}
@media(max-width:1000px){.training-site .simple-belts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){
 :root{--gf-section:var(--gf-space-8)}
 .training-site .button{padding-inline:16px;font-size:17px}
 .training-site .site-header .button.small{padding-inline:10px;font-size:12px}
 .training-site .class-action,.training-site .class-action>.button{width:100%}
 .training-site .class-facts>div{grid-template-columns:96px minmax(0,1fr)}
 .training-site :is(.section-heading,.core-heading){margin-bottom:var(--gf-space-4)}
 .training-site .simple-belt-guide .section-heading{grid-template-columns:1fr;gap:var(--gf-space-3)}
 .training-site .simple-belts{grid-template-columns:1fr;gap:var(--gf-space-4)}
 .training-site .simple-belts svg{max-width:320px}
 .training-site .simple-belts h3{font-size:32px}
 .training-site .simple-belts .belt-duration{min-height:0}
 .training-site .belt-included{padding:var(--gf-space-3)}
}

/* Footer controls share a real text baseline, including the late-added cookie button. */
:root{--gf-footer-control-height:44px}
.training-site footer{align-items:baseline}
.training-site footer:has(>.footer-brand){display:grid;grid-template-columns:max-content minmax(0,1fr) max-content;column-gap:32px;row-gap:24px;align-items:baseline}
.training-site footer>.footer-paths{grid-column:1/-1;width:100%;margin:0}
.training-site footer>.footer-brand{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 20px;width:auto;margin:0}
.training-site footer>.footer-brand>strong{font-size:24px;line-height:1.2}
.training-site footer>.footer-brand>.share-site{box-sizing:border-box;display:inline-flex;align-items:baseline;gap:8px;height:var(--gf-footer-control-height);min-height:var(--gf-footer-control-height);padding:10px 0;margin:0;border:0;font:400 var(--gf-small)/1.5 Body,Arial,sans-serif}
.training-site footer>.footer-brand>.share-site .link-arrow{align-self:center;width:16px;height:16px;flex:none}
.training-site footer>.footer-inclusion{display:flex;align-items:baseline;justify-self:center;gap:10px;width:auto;margin:0;padding:0;border:0;font:400 var(--gf-small)/1.5 Body,Arial,sans-serif;white-space:nowrap}
.training-site footer>.footer-inclusion>[role=img]{font-size:24px;line-height:1}
.training-site footer>.footer-legal{display:flex;align-items:baseline;justify-content:flex-end;justify-self:end;flex-wrap:nowrap;gap:20px;width:auto;margin:0;font:400 var(--gf-small)/1.5 Body,Arial,sans-serif;white-space:nowrap}
.training-site footer>.footer-legal>:is(a,.gf-cookie-settings){box-sizing:border-box;display:inline-flex;align-items:baseline;height:var(--gf-footer-control-height);min-height:var(--gf-footer-control-height);padding:10px 0;margin:0;font:inherit;line-height:1.5}
@media(max-width:1200px){
 .training-site footer:has(>.footer-brand){grid-template-columns:max-content minmax(0,1fr)}
 .training-site footer>.footer-inclusion{justify-self:end}
 .training-site footer>.footer-legal{grid-column:1/-1;justify-self:start}
}
@media(max-width:760px){
 .training-site footer:has(>.footer-brand){grid-template-columns:minmax(0,1fr);gap:16px}
 .training-site footer>.footer-inclusion{justify-self:start;width:100%;padding-block:16px;border-block:1px solid var(--gf-rule)}
 .training-site footer>.footer-legal{display:grid;grid-template-columns:max-content minmax(0,1fr);width:100%;gap:0 20px;justify-self:stretch}
 .training-site footer>.footer-legal>span{justify-self:end}
 .training-site footer>.footer-legal>.gf-cookie-settings{grid-column:1/-1;justify-self:start}
}

/* A plain approach heading keeps the same section rhythm without the old ring. */
.training-site #approach .approach-title{padding:0}
/* Keep the enquiry panel proportional to its single column of fields. */
.training-site .wk-planner{box-sizing:border-box;max-width:880px;margin-inline:auto}
.training-site .wk-planner .short-enquiry{max-width:none}

/* Every blue closing section uses the homepage material and shared venue layout. */
.training-site #contact .contact-with-venue h2{font-size:clamp(40px,4.5vw,64px)}

/* Fixed reservation for documentary frames; paper and photo stay inside it. */
.training-site .group-workshop-photo{aspect-ratio:4/3}

/* Compact header actions share the available row without covering the menu. */
@media(max-width:760px){.training-site .site-header .header-actions .button.small{min-width:0;flex-shrink:1}}

.training-site .gf-action-row{display:flex;flex-wrap:wrap;gap:var(--gf-space-2);align-items:center}

/* Shared attendance policy: live values from the student service, never a second schedule. */
.promotion-policy-details{margin-top:24px}.promotion-policy-details summary{cursor:pointer;font-weight:600}.promotion-policy-table-wrap{overflow-x:auto;margin-top:24px}.promotion-policy-table{width:100%;border-collapse:collapse;font-size:16px;line-height:1.5;text-align:left}.promotion-policy-table caption{text-align:left;margin-bottom:16px}.promotion-policy-table th,.promotion-policy-table td{padding:16px 8px;border-bottom:1px solid var(--gf-rule,#d5cbbb);vertical-align:top}.promotion-policy-table th:first-child{width:60%}.promotion-policy-table th{font-weight:500}.promotion-policy-version{font-size:13px;overflow-wrap:anywhere;margin-top:16px}.promotion-policy-table-wrap:focus-visible{outline:3px solid #1550a0;outline-offset:4px}
