/* Page composition built on shared zks-components and venue primitives. */
.bjj-page { background:var(--zks-background); }
.bjj-page :is(section,main,h1) { scroll-margin-top:110px; }
.bjj-hero,.bjj-split { display:grid; grid-template-columns:1.12fr 1fr; gap:44px; align-items:center; }
.bjj-hero figure,.bjj-split figure { margin:0; }
.bjj-page figure img { display:block; width:100%; border-radius:var(--card-radius); }
.bjj-page figcaption { margin-top:12px; color:var(--zks-muted); font-size:13px; line-height:1.6; }
.bjj-page address { font-style:normal; }
#main .bjj-lead { font-size:22px; font-weight:700; color:var(--zks-heading); line-height:1.4; }
#main .bjj-hero { margin-bottom:32px; }
.bjj-trust { padding:20px 0; margin:0; list-style:none; display:flex; flex-wrap:wrap; gap:12px 24px; border-top:1px solid var(--zks-border); border-bottom:1px solid var(--zks-border); }
.bjj-trust li { font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; }
.bjj-trust li::before { content:'✓'; color:var(--zks-red); margin-right:8px; }
.bjj-jumps { display:flex; flex-wrap:wrap; gap:8px 24px; margin:14px 0 56px; font-size:14px; }
.bjj-jumps a { display:inline-flex; min-height:44px; align-items:center; }
.bjj-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.bjj-grid > * { min-width:0; }
.bjj-sessions { list-style:none; padding:0; margin:24px 0; }
.bjj-sessions li { display:grid; grid-template-columns:205px 1fr; gap:20px; padding:18px 0; border-top:1px solid var(--zks-border); }
.bjj-sessions li strong { color:var(--zks-heading); }
.bjj-sessions li strong span { display:block; font-weight:400; }
.bjj-session-tag { display:inline-block; font-size:12px; font-weight:700; padding:3px 10px; border-radius:20px; background:var(--zks-background); margin:6px 6px 0 0; }
#main .bjj-note,#main #bjj-status { font-size:14px; color:var(--zks-muted); }
.bjj-coach { grid-template-columns:.7fr 1.3fr; }
.bjj-coach img { max-height:560px; object-fit:cover; object-position:top; }
.bjj-steps { list-style:none; counter-reset:step; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.bjj-steps li { border-top:2px solid var(--zks-border); padding:22px 0 0; counter-increment:step; }
.bjj-steps li::before { content:'0' counter(step); display:block; color:var(--zks-red); font-size:14px; font-weight:700; margin-bottom:14px; }
#main .bjj-steps h3 { font-size:20px; }
.bjj-page blockquote { font-size:19px; line-height:1.65; }
#main .bjj-parents,#main .bjj-final { border-left:5px solid var(--zks-red); }
#main .bjj-final { margin-bottom:0; }
.bjj-page details summary { padding:7px 24px 7px 0; }
@media(max-width:991px) { .bjj-hero,.bjj-split { grid-template-columns:1fr; gap:28px; } .bjj-coach { grid-template-columns:.65fr 1fr; } .bjj-steps { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:575px) { .bjj-grid,.bjj-coach,.bjj-steps { grid-template-columns:1fr; } .bjj-sessions li { grid-template-columns:1fr; gap:6px; } .bjj-sessions li strong span { display:inline; margin-left:8px; } .bjj-jumps { gap:4px 20px; margin-bottom:36px; } .bjj-coach figure { max-width:310px; } .bjj-trust { gap:12px 16px; } }

.bjj-prices { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-bottom:24px; }
#main .bjj-prices .zks-panel { padding:24px 20px; }
#main .bjj-prices .bjj-price { font-size:36px; font-weight:700; color:var(--zks-heading); margin-bottom:12px; }
.bjj-price span { font-size:14px; font-weight:400; }
.bjj-lineage { border-left:3px solid var(--zks-red); padding-left:20px; margin:24px 0; }
@media(max-width:767px) { .bjj-prices { grid-template-columns:1fr; } }

/* Belt colours supplement, rather than replace, readable rank labels. */
.bjj-belts { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:16px; list-style:none; padding:0; margin:28px 0 36px; }
.bjj-belts li { display:flex; flex-direction:column; gap:8px; padding:20px 16px; border:1px solid var(--zks-border); border-radius:var(--card-radius); background:var(--zks-surface); }
.bjj-belts li > span:last-child:not(.bjj-belt) { font-size:13px; color:var(--zks-muted); }
.bjj-belt { display:block; position:relative; height:24px; width:100%; border:1px solid #c1c7d2; border-radius:3px; margin-bottom:8px; }
.bjj-belt::after { content:''; position:absolute; right:12%; top:-1px; bottom:-1px; width:22%; background:#1c2029; }
.bjj-belt-white { background:#fff; }.bjj-belt-blue { background:#245caa; }.bjj-belt-purple { background:#7843a5; }.bjj-belt-brown { background:#86552e; }.bjj-belt-black { background:#1c2029; }.bjj-belt-black::after { background:#bd1628; }
.bjj-affiliation { display:flex; flex-direction:column; align-items:flex-start; }
.bjj-affiliation-logo { display:flex; align-items:center; justify-content:center; width:100%; height:128px; margin-bottom:24px; padding:8px; }
.bjj-affiliation-logo img { width:auto; max-width:100%; height:auto; max-height:112px; object-fit:contain; }
.bjj-affiliation > a:last-child { margin-top:auto; min-height:44px; display:inline-flex; align-items:center; gap:5px; }
@media(max-width:767px) { .bjj-belts { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; } .bjj-affiliation-logo { height:112px; } }
