/* The Swim Academy · launch additions (21 Oct 2026): language links, cookie banner */
.lang a{font:700 .72rem/1 var(--label); letter-spacing:.1em; color:var(--muted); padding:.5rem .65rem; border-radius:999px; min-width:40px; min-height:32px; display:inline-flex; align-items:center; justify-content:center; text-decoration:none; box-sizing:border-box}
.lang a[aria-current="true"]{background:var(--ink); color:var(--paper)}
.lang a:focus-visible{outline:2px solid var(--ink); outline-offset:2px}

.tsa-consent{position:fixed; z-index:90; left:16px; right:16px; bottom:16px; max-width:560px; margin-inline:auto;
  background:var(--paper); color:var(--ink); border:1px solid var(--line); border-radius:14px;
  box-shadow:0 10px 30px rgba(0,0,0,.12); padding:1.1rem 1.2rem; font-size:.95rem}
.tsa-consent-t{font-weight:700; margin:0 0 .35rem}
.tsa-consent-b{margin:0 0 .8rem; color:var(--muted); line-height:1.45}
.tsa-consent-s{display:grid; gap:.45rem; margin:0 0 .9rem}
.tsa-consent-s label{display:flex; gap:.5rem; align-items:center}
.tsa-consent-a{display:flex; flex-wrap:wrap; gap:.5rem; justify-content:flex-end}
.tsa-consent-a .btn{flex:1 1 auto; justify-content:center}
@media (max-width:480px){
  .tsa-consent{left:8px; right:8px; bottom:8px; padding:.85rem .9rem; font-size:.85rem}
  .tsa-consent-b{margin-bottom:.6rem; line-height:1.35}
  .tsa-consent-a{gap:.4rem}
  .tsa-consent-a .btn{flex:1 1 calc(50% - .2rem); min-height:40px; padding:.55rem .6rem; font-size:.85rem}
  .tsa-consent-a [data-c="settings"], .tsa-consent-a [data-c="save"]{order:3; flex:1 1 100%; border:0; min-height:28px; padding:.2rem; text-decoration:underline}
}
.foot .consent-link{background:none; border:0; padding:0; font:inherit; color:inherit; text-decoration:underline; cursor:pointer}

/* (21 Oct 2026) booking page: the four "on this page" tiles in TSA blue, so they stand apart from the white step cards */
.jump a{background:#345564; border-color:#345564; color:#fff}
.jump a:hover, .jump a:focus-visible{background:#24404c; border-color:#24404c}
.jump a:focus-visible{outline:2px solid #b98a52; outline-offset:2px}
.jump b, .jump b span{color:#fff}
.jump a > span, .jump a > span span{color:rgba(255,255,255,.82)}

/* (23 Oct 2026) cookie notice, phones only: less height. Same choices and behaviour; desktop unchanged. */
@media (max-width:480px){
  .tsa-consent{padding:.65rem .75rem; font-size:.82rem; border-radius:12px}
  .tsa-consent-t{margin-bottom:.15rem}
  .tsa-consent-b{margin-bottom:.5rem; line-height:1.3}
  .tsa-consent-s{gap:.3rem; margin-bottom:.55rem}
  .tsa-consent-a{gap:.35rem; align-items:center}
  /* first layer: Settings as a text button beside Accept all, on one row */
  .tsa-consent-a [data-c="settings"]{order:0; flex:0 0 auto; min-height:40px; padding:.3rem .5rem}
  .tsa-consent-a .btn{min-height:40px; padding:.5rem .6rem}
}

/* (23 Oct 2026) cookie settings: a short explanation under each choice */
.tsa-consent-s label{align-items:flex-start}
.tsa-consent-s input{margin-top:.2em; flex:none}
.tsa-consent-s small{display:block; color:var(--muted); font-size:.88em; line-height:1.35; margin-top:.1rem}

/* v7 */
/* The Swim Academy · v7 additions (23 Oct 2026): text pages, careers, outdoor, confirmation */
.nav .nav-quiet{opacity:.78}
.doc-hero{padding-bottom:clamp(16px,3vw,32px)}
.doc-head h1{max-width:18ch}
.doc-sec{padding-top:0}
.doc{max-width:760px}
.doc > * + *{margin-top:1rem}
.doc h2{font-size:clamp(1.45rem,1.2rem + .9vw,1.9rem); line-height:1.2; font-weight:500; margin-top:2.6rem; scroll-margin-top:96px}
.doc h3{font-size:1.15rem; margin-top:1.6rem; font-style:normal}
.doc p, .doc li{line-height:1.6}
.doc ul{padding-left:1.2rem}
.doc li + li{margin-top:.35rem}
.doc a:not(.btn){color:inherit; text-underline-offset:2px}
.doc-meta{font-size:.9rem; color:var(--muted)}
.doc-short{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius,14px); padding:1.2rem 1.4rem; margin-top:1.5rem}
.doc-short h2{margin-top:0; font-size:1.3rem}
.doc-short p:last-child{font-size:.9rem; color:var(--muted); margin-bottom:0}
.doc-toc ol{columns:2 260px; column-gap:2rem; padding-left:1.4rem; font-size:.95rem}
.doc-toc li{break-inside:avoid}
.doc-ex{border-left:3px solid var(--aqua,var(--line)); padding:.2rem 0 .2rem 1rem; color:var(--muted)}
.doc-form{border:1px dashed var(--line); border-radius:10px; padding:1rem 1.2rem}
.doc-form p{margin:.4rem 0}
.doc-table{overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--line); border-radius:10px}
.doc-table table{border-collapse:collapse; width:100%; min-width:620px; font-size:.92rem}
.doc-table th, .doc-table td{padding:.6rem .75rem; text-align:left; vertical-align:top; border-bottom:1px solid var(--line)}
.doc-table thead th{background:var(--surface); font-weight:700}
.doc-table tr:last-child td{border-bottom:0}
.doc-table:focus-visible{outline:2px solid var(--ink); outline-offset:2px}
mark.todo{background:#ffe58a; color:#3a2a00; padding:0 .25em; border-radius:4px; font-weight:600}

.jobs{display:grid; gap:1.25rem}
.job{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius,14px); padding:1.4rem 1.5rem}
.job h2{margin-top:.3rem}
.job-tag{font:700 .72rem/1.3 var(--label); letter-spacing:.08em; text-transform:uppercase; color:var(--muted); margin:0}
.apply{padding:2rem 0 0}
.apply h2{margin-top:0}
.apply-btns{display:flex; flex-wrap:wrap; gap:.6rem}

.season{background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:1rem 1.2rem; font-size:1.02rem}
.outdoor-video{margin:1.5rem 0 0}
.outdoor-video video{display:block; width:100%; aspect-ratio:16/9; background:var(--mist,#e9eef0); border-radius:var(--radius,14px); object-fit:cover}
.outdoor-grid{display:grid; gap:1.5rem; grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.outdoor-grid h2{margin-top:1.5rem}

.conf-sec .wrap{max-width:760px}
.conf h1{font-size:clamp(2.2rem,1.6rem + 2.4vw,3.4rem); line-height:1.08; margin:.4rem 0 .8rem}
.conf-steps{padding-left:1.3rem; display:grid; gap:.9rem; margin:1.6rem 0; line-height:1.55}
.conf-apps{display:block; margin-top:.35rem}
.conf-where{background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:1rem 1.2rem; margin:1.4rem 0}
.conf-where h2{font-size:1.2rem; margin:0 0 .4rem}
.conf a:not(.btn){color:inherit; text-underline-offset:2px}
.lang button{font:700 .72rem/1 var(--label); letter-spacing:.1em; color:var(--muted); background:none; border:0; padding:.5rem .65rem; border-radius:999px; min-width:40px; min-height:32px; cursor:pointer}
.lang button[aria-pressed="true"]{background:var(--ink); color:var(--paper)}
.lang button:focus-visible{outline:2px solid var(--ink); outline-offset:2px}
.tsa-consent-b a{color:inherit; text-decoration:underline}
/* the quiet Outdoor link only shows in the desktop menu when there is room for it on one line; it's always in the mobile menu and the footer */
@media (min-width:1021px) and (max-width:1399px){ .nav .nav-quiet{display:none} }
@media (min-width:1400px){ .nav a{white-space:nowrap} }
.doc-hero .wrap, .doc-sec .wrap{max-width:760px}

/* forms (outdoor interest, withdrawal) */
.tsa-form{display:grid; gap:1rem; margin-top:1rem}
.f-grid{display:grid; gap:1rem; grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.f-row{display:grid; gap:.35rem; min-width:0}
.f-row label{font-weight:600}
.f-opt{font-weight:400; color:var(--muted)}
.tsa-form input[type=text], .tsa-form input[type=email], .tsa-form input[type=tel], .tsa-form input[type=date], .tsa-form select, .tsa-form textarea{
  font:inherit; color:var(--ink); background:var(--paper); border:1px solid var(--line); border-radius:10px; padding:.7rem .8rem; width:100%; box-sizing:border-box; min-height:46px}
.tsa-form textarea{resize:vertical}
.tsa-form input:focus-visible, .tsa-form select:focus-visible, .tsa-form textarea:focus-visible{outline:2px solid var(--ink); outline-offset:1px}
.f-help{font-size:.88rem; color:var(--muted); margin:0}
.f-check{display:flex; gap:.6rem; align-items:flex-start}
.f-check input{width:20px; height:20px; margin-top:.2rem; flex:none}
.f-status{border-radius:10px; padding:.8rem 1rem; margin:0; font-weight:600}
.f-status.is-ok{background:var(--surface); border:1px solid var(--line)}
.f-status.is-error{background:#fde8e4; color:#7a1d0e; border:1px solid #f1b5a8}
.hp{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden}
.ow-form{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius,14px); padding:1.4rem 1.5rem; margin-top:2.5rem}
.ow-why{display:grid; gap:1rem; grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.ow-why > div{border-top:2px solid var(--ink); padding-top:.7rem}
.ow-why h3{margin:0 0 .3rem}
.ow-why p{margin:0}
.wd-facts{background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:1rem 1.2rem}
.wd-start{margin-top:.5rem}

/* confirmation page: the app is the main step */
.conf-app{background:var(--ink); color:var(--paper); border-radius:var(--radius,14px); padding:1.4rem 1.5rem; margin:1.4rem 0}
.conf-app h2{font-size:clamp(1.4rem,1.2rem + .8vw,1.8rem); margin:0 0 .5rem; color:inherit}
.conf-app p{margin:.4rem 0}
.conf-app .conf-small{font-size:.92rem; opacity:.85}
.conf-stores{display:flex; flex-wrap:wrap; gap:.6rem; margin:1rem 0 .4rem}
.conf-app .btn-primary{background:var(--paper); color:var(--ink); border-color:var(--paper)}
.conf-app .btn-ghost{background:transparent; color:var(--paper); border:1px solid currentColor}
.conf-steps li.is-done b::before{content:"\2713\00a0"}
