/* Vikings Rowing · Coaching Hub — one stylesheet, no build step.
   Club navy and gold from the Vikings badge. Archivo (condensed) for headings and numbers, Inter for reading.
   Computers and iPads in landscape get a navy sidebar; phones get a navy app bar, bottom tabs and slide-up sheets. */
@font-face{font-family:"Inter";font-style:normal;font-weight:400 800;font-display:swap;src:url("../fonts/inter-latin.65850a373e25.woff2") format("woff2")}
@font-face{font-family:"Archivo";font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url("../fonts/archivo-latin.2f7ea45bad3a.woff2") format("woff2")}
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.18s}

:root{
  --navy:#0b1a35;--navy-2:#122a52;--navy-3:#1b3a6e;--on-navy:#c3cee3;
  --brand:#1f4fb4;--brand-d:#173f93;--brand-ink:#0b1a35;--brand-soft:#eaf0fd;--brand-ring:rgba(31,79,180,.25);
  --gold:#f2c94c;--gold-2:#ffdf73;--gold-d:#7d6000;--gold-soft:#fdf6dc;
  --bg:#f3f5f9;--surface:#fff;--surface-2:#f7f9fc;--line:#e3e8f0;--line-2:#cdd6e3;
  --ink:#0d1726;--ink-2:#48566e;--ink-3:#7a869b;
  --ok:#147a43;--ok-bg:#e3f5ea;--warn:#8a5600;--warn-bg:#fdf1d8;--bad:#b42318;--bad-bg:#fdecea;
  --sh-1:0 1px 2px rgba(13,23,38,.05);
  --sh-2:0 1px 2px rgba(13,23,38,.05),0 6px 20px rgba(13,23,38,.07);
  --sh-3:0 2px 4px rgba(13,23,38,.06),0 14px 34px rgba(13,23,38,.12);
  --sh-pop:0 22px 60px rgba(11,26,53,.28);
  --r:16px;--r-s:11px;
  --f:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --fd:"Archivo","Arial Narrow",var(--f);
  --gut:max(16px,env(safe-area-inset-left));--gut-r:max(16px,env(safe-area-inset-right));
  --side-w:258px;--top-h:0px;--tabs-h:0px;
  color-scheme:light;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 var(--f);font-feature-settings:"cv11","ss01";-webkit-font-smoothing:antialiased;min-height:100vh}
a{color:var(--brand);text-underline-offset:2px}
img{max-width:100%}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:3px solid var(--brand-ring);outline-offset:2px}
svg.i{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.avatar{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--gold);color:var(--navy);font:800 .8rem/1 var(--fd);font-stretch:90%;letter-spacing:.02em;flex:none}
.avatar.sm{width:28px;height:28px;font-size:.68rem;border:2px solid var(--surface);margin-left:-6px;background:#dfe7f7;color:var(--brand-d)}
.avatar.sm:first-child{margin-left:0}.avatar.sm.tent{background:var(--surface);border:1.5px dashed var(--ink-3);color:var(--ink-2)}

/* ---------- sidebar (computers, iPad landscape) ---------- */
.sidebar{position:fixed;inset:0 auto 0 0;width:var(--side-w);z-index:40;display:flex;flex-direction:column;gap:.6rem;
  background:radial-gradient(120% 60% at 0% 0%,#1d3c74 0%,transparent 60%),linear-gradient(180deg,var(--navy-2),var(--navy) 55%);color:var(--on-navy);
  padding:calc(1rem + env(safe-area-inset-top)) .8rem calc(.9rem + env(safe-area-inset-bottom)) calc(.8rem + env(safe-area-inset-left));overflow-y:auto;scrollbar-width:thin}
.sidebar::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--gold),transparent 70%);opacity:.9}
.side-brand,.ab-brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;color:#fff;line-height:1.05}
.side-brand{padding:.25rem .45rem .9rem;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:.2rem}
.side-brand img{width:34px;height:auto;filter:drop-shadow(0 3px 8px rgba(0,0,0,.35))}
.side-brand b,.ab-brand b{display:block;font:800 1.08rem/1 var(--fd);font-stretch:82%;letter-spacing:.04em;text-transform:uppercase}
.side-brand small,.ab-brand small{display:block;color:var(--gold);font:650 .66rem/1.2 var(--f);letter-spacing:.14em;text-transform:uppercase;margin-top:4px}
.side-nav{display:flex;flex-direction:column;gap:1px;flex:1}
.side-nav a{display:flex;align-items:center;gap:.75rem;padding:.56rem .7rem;border-radius:10px;color:var(--on-navy);text-decoration:none;font-weight:550;font-size:.93rem;transition:background .14s,color .14s}
.side-nav a svg.i{width:19px;height:19px;opacity:.85}
.side-nav a:hover{background:rgba(255,255,255,.07);color:#fff}
.side-nav a.on{background:linear-gradient(90deg,rgba(242,201,76,.16),rgba(255,255,255,.06));color:#fff;font-weight:650;box-shadow:inset 3px 0 0 var(--gold)}
.side-nav a.on svg.i{color:var(--gold);opacity:1}
.side-h{font-size:.66rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#7f8fb0;padding:1rem .7rem .35rem}
.side-foot{display:flex;align-items:center;gap:.6rem;padding:.75rem .45rem 0;border-top:1px solid rgba(255,255,255,.08)}
.side-foot .who{flex:1;min-width:0;line-height:1.2}
.side-foot .who b{display:block;color:#fff;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-foot .who small{color:#8e9cba;font-size:.74rem}
.foot-btn{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;color:var(--on-navy)}
.foot-btn:hover{background:rgba(255,255,255,.08);color:#fff}
.appbar{display:none}
.tabs{display:none}
@media (min-width:1024px){
  body.signed-in{padding-left:var(--side-w)}
}
/* ---------- phones and iPad portrait: navy app bar, bottom tabs, sidebar becomes a sheet ---------- */
@media (max-width:1023px){
  :root{--top-h:calc(58px + env(safe-area-inset-top))}
  body:not(.signed-in){--top-h:0px}
  .appbar{display:flex;align-items:center;gap:.75rem;position:sticky;top:0;z-index:30;height:var(--top-h);
    padding:env(safe-area-inset-top) var(--gut-r) 0 var(--gut);background:linear-gradient(180deg,var(--navy-2),var(--navy));color:#fff;
    box-shadow:0 1px 0 rgba(255,255,255,.04),0 6px 18px rgba(11,26,53,.18)}
  .appbar::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,var(--gold),rgba(242,201,76,0) 80%)}
  .ab-brand img{width:28px;height:auto}
  .ab-brand b{font-size:1rem}
  .ab-menu{margin-left:auto;display:inline-grid;place-items:center;width:42px;height:42px;border-radius:12px;border:0;background:rgba(255,255,255,.08);color:#fff;cursor:pointer}
  body.has-tabs .ab-menu{display:none}
  .sidebar{inset:auto 0 0 0;width:auto;max-height:82vh;border-radius:22px 22px 0 0;transform:translateY(105%);transition:transform .26s cubic-bezier(.2,.8,.2,1);
    padding-bottom:calc(1rem + var(--tabs-h));box-shadow:var(--sh-pop);visibility:hidden}
  .sidebar::after{display:none}
  .sidebar::before{content:"";width:42px;height:4px;border-radius:9px;background:rgba(255,255,255,.25);align-self:center;margin:-.3rem 0 .2rem;flex:none}
  .sidebar.open{transform:none;visibility:visible}
  .sidebar .side-brand{display:none}
  .side-nav a{padding:.8rem .8rem;font-size:1rem}
  .scrim{position:fixed;inset:0;background:rgba(8,16,33,.45);backdrop-filter:blur(2px);z-index:35}
  body.has-tabs{--tabs-h:calc(62px + env(safe-area-inset-bottom))}
  body.has-tabs .tabs{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:50;
    background:rgba(255,255,255,.94);backdrop-filter:saturate(1.6) blur(16px);-webkit-backdrop-filter:saturate(1.6) blur(16px);
    border-top:1px solid var(--line);padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
  .tabs a,.tabs button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;height:62px;color:var(--ink-3);text-decoration:none;
    font:650 .68rem/1 var(--f);background:none;border:0;cursor:pointer;letter-spacing:.02em;position:relative}
  .tabs .on{color:var(--brand-d)}
  .tabs .on::before{content:"";position:absolute;top:0;left:30%;right:30%;height:3px;border-radius:0 0 4px 4px;background:var(--gold)}
  .tabs svg.i{width:23px;height:23px}
  .tabs .on svg.i{stroke-width:2.3}
}

/* ---------- page ---------- */
main{max-width:1320px;margin:0 auto;padding:1.75rem var(--gut-r) calc(3rem + env(safe-area-inset-bottom) + var(--tabs-h)) var(--gut)}
@media (min-width:1024px){main{padding-left:2.25rem;padding-right:2.25rem;padding-top:2rem}}
main.narrow{max-width:760px}
main.wide{max-width:1680px}
h1{font:800 2rem/1.08 var(--fd);font-stretch:84%;letter-spacing:-.005em;color:var(--ink);margin:0;text-wrap:balance}
h2{font:750 1.18rem/1.25 var(--fd);font-stretch:90%;letter-spacing:.005em;color:var(--ink);margin:1.7rem 0 .7rem}
h3{font-size:.98rem;font-weight:700;color:var(--ink);margin:0 0 .4rem}
p{margin:0 0 .8rem}
.sq-dot{display:inline-block;width:.6em;height:.6em;border-radius:50%;background:var(--c);margin-right:.5rem;vertical-align:.12em;box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 22%,transparent)}
@media (max-width:600px){h1{font-size:1.65rem}main{padding-top:1.2rem}}
.page-head{display:flex;align-items:flex-end;gap:.75rem 1rem;flex-wrap:wrap;margin-bottom:1.4rem}
.page-head .title{flex:1 1 auto;min-width:0}
.page-head .sub{color:var(--ink-2);font-size:.95rem;margin-top:.35rem;max-width:70ch}
.actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.back{display:inline-flex;align-items:center;gap:.25rem;font-size:.84rem;font-weight:650;margin-bottom:.7rem;text-decoration:none;color:var(--ink-3);letter-spacing:.01em}
.back:hover{color:var(--brand)}
.muted{color:var(--ink-2)}.small{font-size:.86rem}
.flash{display:flex;gap:.6rem;align-items:center;background:var(--ok-bg);color:var(--ok);padding:.8rem 1rem;border-radius:var(--r-s);margin-bottom:1.1rem;font-weight:600;border:1px solid color-mix(in srgb,var(--ok) 18%,transparent);animation:pop .2s ease-out}
.flash.error{background:var(--bad-bg);color:var(--bad);border-color:color-mix(in srgb,var(--bad) 18%,transparent)}
.flash.warning{background:var(--warn-bg);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 18%,transparent)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:1.25rem;box-shadow:var(--sh-1)}
.card h2:first-of-type,.card h3:first-of-type{margin-top:0}
.two{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:1.4rem;align-items:start}
.stack{display:grid;gap:1rem;align-content:start}
@media (max-width:900px){.two{grid-template-columns:minmax(0,1fr)}}
.warnbox{background:var(--warn-bg);color:var(--warn);padding:.75rem .95rem;border-radius:var(--r-s);margin:.6rem 0;font-size:.92rem;border:1px solid color-mix(in srgb,var(--warn) 15%,transparent)}
.errbox{background:var(--bad-bg);color:var(--bad);padding:.75rem .95rem;border-radius:var(--r-s);margin:.6rem 0;border:1px solid color-mix(in srgb,var(--bad) 15%,transparent)}

/* ---------- buttons + forms ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:1px solid var(--line-2);background:var(--surface);color:var(--ink);
  padding:0 1rem;min-height:40px;border-radius:11px;font:inherit;font-size:.92rem;font-weight:650;cursor:pointer;text-decoration:none;white-space:nowrap;line-height:1.2;
  box-shadow:var(--sh-1);transition:background .12s,border-color .12s,box-shadow .12s,transform .06s}
.btn:hover{border-color:#b7c2cf;background:var(--surface-2)}
.btn:active{transform:translateY(1px)}
.btn.primary{background:linear-gradient(180deg,#2c5fcc,var(--brand));color:#fff;border-color:var(--brand-d);box-shadow:0 1px 2px rgba(23,63,147,.35),0 4px 12px rgba(31,79,180,.22),inset 0 1px 0 rgba(255,255,255,.18)}
.btn.primary:hover{background:linear-gradient(180deg,#2656bd,var(--brand-d))}
.btn.danger{color:var(--bad);border-color:#efc9c4}
.btn.danger:hover{background:var(--bad-bg)}
.btn.ghost{border-color:transparent;box-shadow:none;background:transparent;color:var(--brand)}
.btn.ghost:hover{background:var(--brand-soft)}
.btn.small{min-height:32px;padding:0 .7rem;font-size:.84rem;border-radius:8px}
.btn.block{width:100%}
.btn[disabled]{opacity:.45;cursor:default;transform:none}
.seg{display:inline-flex;border:1px solid var(--line-2);border-radius:10px;overflow:hidden;background:var(--surface);box-shadow:var(--sh-1)}
.seg .btn{border:0;border-radius:0;box-shadow:none}
.seg .btn+.btn{border-left:1px solid var(--line)}
form.inline{display:inline}
label{font-weight:600;font-size:.86rem;color:var(--ink);display:block;margin:.75rem 0 .3rem}
input[type=text],input[type=number],input[type=date],input[type=time],input[type=password],input[type=url],input[type=email],input[type=search],input[type=tel],select,textarea{
  width:100%;font:inherit;padding:.55rem .7rem;border:1px solid var(--line-2);border-radius:10px;background:var(--surface);color:var(--ink);
  min-height:42px;transition:border-color .12s,box-shadow .12s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}
select{appearance:none;-webkit-appearance:none;padding-right:2.2rem;
  background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%237c8797' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right .8rem center}
textarea{min-height:5rem;resize:vertical}
.check{display:flex;gap:.55rem;align-items:center;font-weight:500;margin:.6rem 0}
.check input{width:1.15rem;height:1.15rem;accent-color:var(--brand)}
.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0 .85rem}
.form-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1.1rem}
@media (pointer:coarse){
  .btn{min-height:44px}.btn.small{min-height:38px}
  input[type=text],input[type=number],input[type=date],input[type=time],input[type=password],input[type=url],input[type=email],input[type=search],input[type=tel],select,textarea{font-size:16px;min-height:46px}
}
@media (max-width:600px){input[type=text],input[type=number],input[type=date],input[type=time],input[type=password],input[type=url],select,textarea{font-size:16px}}

/* ---------- pills, chips, lists ---------- */
.pill{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:650;padding:.15rem .55rem;border-radius:999px;background:var(--brand-soft);color:var(--brand);white-space:nowrap;text-decoration:none;line-height:1.5}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.75}
.pill.plain::before{display:none}
.pill.cancelled,.pill.closed{background:var(--bad-bg);color:var(--bad)}
.pill.changed,.pill.partial,.pill.away{background:var(--warn-bg);color:var(--warn)}
.pill.planned,.pill.set,.pill.ok{background:var(--ok-bg);color:var(--ok)}
.pill.draft{background:#eef1f5;color:var(--ink-2)}
.chip{display:inline-flex;align-items:center;padding:.1rem .5rem;border-radius:7px;background:#eef2f7;margin:.15rem .15rem 0 0;font-size:.8rem;font-weight:550;
  border:1px solid transparent;color:var(--ink);font-family:inherit;line-height:1.55;transition:border-color .12s,background .12s}
button.chip{cursor:pointer}
button.chip:hover{border-color:var(--line-2);background:#e6ebf2}
.chip.tentative{background:var(--surface);border:1px dashed #9aa6b4;color:var(--ink-2)}
.chip.unavailable{text-decoration:line-through;color:#9aa2ab;background:#f3f4f6}
.chip.note{background:var(--gold-soft)}
.conf{list-style:none;padding:0;margin:0 0 1rem;display:grid;gap:.35rem}
.conf li{padding:.6rem .85rem;border-radius:var(--r-s);font-size:.9rem}
.conf .critical{background:var(--bad-bg);color:var(--bad)}.conf .warning{background:var(--warn-bg);color:var(--warn)}
details.more>summary{cursor:pointer;color:var(--brand);font-weight:600;font-size:.9rem;margin:.2rem 0 .6rem;list-style-position:inside}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);box-shadow:var(--sh-2)}
table.list{border-collapse:collapse;width:100%;background:var(--surface)}
table.list td,table.list th{padding:.7rem .8rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
table.list tr:last-child td{border-bottom:0}
table.list tbody tr:hover td{background:var(--surface-2)}
table.list th{font-size:.72rem;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;font-weight:650;background:var(--surface-2)}
@media (max-width:640px){
  table.stack-sm,table.stack-sm tbody,table.stack-sm tr,table.stack-sm td{display:block;width:100%}
  table.stack-sm thead,table.stack-sm tr.head{display:none}
  table.stack-sm tr{border-bottom:1px solid var(--line);padding:.6rem 0}
  table.stack-sm td{border:0;padding:.15rem .85rem}
  table.stack-sm td[data-label]::before{content:attr(data-label);display:block;font-size:.68rem;font-weight:650;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3)}
}
.empty{padding:1.5rem;text-align:center;color:var(--ink-2)}
.legend{font-size:.82rem;color:var(--ink-3);margin-top:.8rem}

/* ---------- roster ---------- */
.week-nav{display:flex;gap:.4rem;flex-wrap:wrap}
.roster-desktop{display:block}.roster-phone{display:none}
@media (max-width:900px){.roster-desktop{display:none}.roster-phone{display:block}}
table.roster{border-collapse:separate;border-spacing:0;width:100%;min-width:1080px;table-layout:fixed;background:var(--surface)}
table.roster th,table.roster td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);vertical-align:top;padding:.5rem}
table.roster tr>*:last-child{border-right:0}
table.roster tbody tr:last-child>*{border-bottom:0}
table.roster thead th{background:var(--surface-2);color:var(--ink);font-size:.84rem;font-weight:700;text-align:left;padding:.65rem .55rem}
table.roster thead th.today{background:var(--brand-soft);color:var(--brand)}
table.roster td.today{background:#fbfdff}
table.roster th.band{width:96px;background:var(--surface-2);color:var(--ink-3);font-size:.7rem;font-weight:650;text-transform:uppercase;letter-spacing:.06em}
.ev{font-size:.7rem;border-radius:6px;padding:.12rem .4rem;margin-top:.3rem;display:block;font-weight:600;line-height:1.35}
.ev.closed{background:var(--bad-bg);color:var(--bad)}.ev.partial,.ev.away{background:var(--warn-bg);color:var(--warn)}
.ev.regatta{background:var(--brand-soft);color:var(--brand)}.ev.camp,.ev.testing,.ev.info{background:#eef0f3;color:var(--ink-2)}
.sess{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:.5rem .6rem .5rem .75rem;margin-bottom:.5rem;font-size:.82rem;box-shadow:var(--sh-1);overflow:hidden}
.sess::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--c)}
.sess .head{display:flex;justify-content:space-between;gap:.3rem;align-items:baseline}
.sess .sq{font-weight:700;color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;gap:.35rem}
.sess .sq::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c);flex:none}
.sess .sq:hover{color:var(--brand)}
.sess .meta{color:var(--ink-3);font-size:.92em}
.sess .time{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.sess .head .meta{font-size:.74rem;color:var(--ink-3);white-space:nowrap}
.sess .coaches{margin-top:.15rem}
.sess .flags{display:flex;gap:.25rem;flex-wrap:wrap;margin-top:.35rem}
.sess .flags span{font-size:.66rem;font-weight:650;border-radius:5px;padding:.05rem .35rem;background:#eef0f3;color:var(--ink-2)}
.sess .flags .no{background:var(--warn-bg);color:var(--warn)}
.sess.cancelled{opacity:.6;box-shadow:none;background:var(--surface-2)}.sess.cancelled .sq{text-decoration:line-through}
.sess.critical{border-color:var(--bad);box-shadow:0 0 0 1px var(--bad)}.sess.warning{border-color:#e3b45a;box-shadow:0 0 0 1px #e3b45a}
.day-jump{position:sticky;top:var(--top-h);z-index:5;background:var(--bg);padding:.5rem 0;display:flex;gap:.4rem;overflow-x:auto;margin:0 calc(-1 * var(--gut-r)) .4rem calc(-1 * var(--gut));padding-left:var(--gut);padding-right:var(--gut-r);scrollbar-width:none}
.day-jump::-webkit-scrollbar{display:none}
.day-jump a{flex:none;text-decoration:none;border:1px solid var(--line-2);background:var(--surface);border-radius:999px;padding:.4rem .8rem;font-size:.84rem;font-weight:600;color:var(--ink-2)}
.day-jump a.today{background:var(--brand);border-color:var(--brand);color:#fff}
.day-jump a b{font-weight:700;color:var(--ink-3);margin-left:.15rem}
.day-jump a.today b{color:rgba(255,255,255,.8)}
.day-block{margin-bottom:1.4rem;scroll-margin-top:130px}
.day-block h2{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin:.3rem 0 .6rem}
.day-block .sess{font-size:.93rem;padding:.75rem .85rem .75rem 1rem;border-radius:12px}

/* ---------- plans ---------- */
.blocks{list-style:none;padding:0;margin:0;display:grid;gap:.6rem}
li.block{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:.8rem .9rem;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.65rem;align-items:start;box-shadow:var(--sh-1)}
.handle{cursor:grab;color:#a3adba;font-size:1.3rem;line-height:1;padding:.15rem .25rem;user-select:none;touch-action:none}
.kind{font-size:.7rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--brand)}
.branch{font-size:.88rem;margin-top:.35rem;padding-left:.65rem;border-left:3px solid var(--line)}
.branch.s{border-color:#eab3ac}.branch.c{border-color:#9dd1ae}

/* ---------- messages ---------- */
pre.msg{white-space:pre-wrap;word-break:break-word;font:14px/1.55 var(--f);background:#e9f3e6;border-radius:12px 12px 12px 4px;padding:.9rem 1rem;margin:0;max-height:26rem;overflow:auto}
.rowcard{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:1rem;position:relative;overflow:hidden}
.rowcard::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--c)}
@media (max-width:800px){.rowcard{grid-template-columns:minmax(0,1fr)}}

/* ---------- coach phone screens ---------- */
.phone-sess{display:block;position:relative;overflow:hidden;text-decoration:none;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:14px;
  padding:.9rem 1rem .9rem 1.2rem;margin-bottom:.65rem;box-shadow:var(--sh-1);transition:box-shadow .12s,transform .06s}
.phone-sess::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--c)}
.phone-sess:hover{box-shadow:var(--sh-2)}
.phone-sess:active{transform:scale(.995)}
.phone-sess .when{font-weight:700;font-size:1.02rem;color:var(--ink);font-variant-numeric:tabular-nums}
.phone-sess .who{font-weight:650;color:var(--c)}
.phone-sess .go{position:absolute;right:1rem;top:50%;transform:translateY(-50%);color:var(--ink-3)}
.day-h{font-size:.74rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);margin:1.5rem 0 .55rem}
.focus{background:var(--gold-soft);border-radius:12px;padding:.95rem 1rem;margin:.9rem 0}
.focus b{display:block;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-d)}
.focus .f{font-size:1.15rem;font-weight:700;line-height:1.3}
ol.steps{padding-left:1.25rem}ol.steps li{margin-bottom:.9rem}
.outcomes{display:grid;grid-template-columns:repeat(3,1fr);gap:.45rem}
.outcomes label{margin:0;border:1px solid var(--line-2);border-radius:10px;padding:.7rem .3rem;text-align:center;cursor:pointer;background:var(--surface);font-size:.9rem}
.outcomes input{position:absolute;opacity:0;pointer-events:none}
.outcomes label:has(input:checked){background:var(--brand);color:#fff;border-color:var(--brand)}
.app-card{background:linear-gradient(135deg,#f3f8ff,#fff 60%);border-color:#d6e4f5}

/* ---------- sheets (native <dialog>): bottom sheet on phones, centred panel on desktop ---------- */
dialog.sheet{border:0;padding:0;margin:auto;width:min(460px,calc(100vw - 32px));max-height:min(86vh,720px);border-radius:18px;background:var(--surface);color:var(--ink);box-shadow:var(--sh-pop);overflow:auto}
dialog.sheet::backdrop{background:rgba(15,27,43,.4);backdrop-filter:blur(2px)}
dialog.sheet[open]{animation:pop .16s ease-out}
.sheet-h{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:1rem 1.15rem .4rem;position:sticky;top:0;background:var(--surface);z-index:1}
.sheet-h h3{margin:0;font-size:1.05rem}
.sheet-b{padding:.2rem 1.15rem 1.2rem}
.sheet-b label:first-child{margin-top:.2rem}
.sheet-b .form-actions{margin-top:1.1rem}
.sheet-b hr{border:0;border-top:1px solid var(--line);margin:1.1rem 0}
.x{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:50%;border:0;background:#eef1f5;color:var(--ink-2);cursor:pointer;font:inherit;font-size:1.15rem;line-height:1}
.x:hover{background:#e3e7ed}
@keyframes pop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
@keyframes up{from{transform:translateY(100%)}to{transform:none}}
@media (max-width:600px){
  dialog.sheet{width:100%;max-width:100%;margin:auto 0 0;border-radius:20px 20px 0 0;max-height:88vh;padding-bottom:env(safe-area-inset-bottom)}
  dialog.sheet[open]{animation:up .22s cubic-bezier(.2,.8,.2,1)}
  .sheet-h::before{content:"";position:absolute;left:50%;top:7px;width:40px;height:4px;margin-left:-20px;border-radius:9px;background:var(--line-2)}
  .sheet-h{padding-top:1.3rem}
}

/* ---------- crew board (after the shed whiteboards) ---------- */
.board-status{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-bottom:.8rem;font-size:.88rem}
.board-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:1.25rem;align-items:start}
.side{position:sticky;top:calc(var(--top-h) + 16px);display:grid;gap:.9rem;max-height:calc(100vh - var(--top-h) - 32px);overflow:auto;padding-bottom:.2rem}
.pool,.fleet{padding:1rem}
.away-h{font-size:.74rem;font-weight:750;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin:.1rem 0 -.3rem}
.away-list{background:transparent;border-style:dotted;min-height:0}
.fleet-list{list-style:none;margin:.65rem 0 .75rem;padding:0;display:flex;flex-wrap:wrap;gap:.4rem;min-height:2.6rem;border-radius:10px}
.fleet-list .note{color:var(--ink-3);font-size:.84rem;padding:.4rem}
.fleet-boat{background:#ffd83a;color:#2a2100;border-radius:6px;padding:.4rem .6rem;font-weight:800;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;
  cursor:grab;user-select:none;-webkit-user-select:none;box-shadow:0 1px 0 rgba(0,0,0,.18),0 2px 6px rgba(0,0,0,.08);display:inline-flex;gap:.35rem;align-items:baseline}
.fleet-boat small{font-weight:650;font-size:.68rem;color:#6b5600;letter-spacing:0;text-transform:none}
.fleet-boat:hover{background:#ffe061}
.fleet-boat.damaged{background:#eceff3;color:var(--ink-3);text-decoration:line-through}
.fleet-boat.damaged small{color:var(--ink-3)}
.shed .fleet-boat{min-height:3rem}
.fleet-pick{display:flex;flex-wrap:wrap;gap:.4rem}
.inline-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.inline-row input{flex:1 1 10rem;width:auto}
body.picking .away-list{border-color:var(--brand)}
main.wide{max-width:1600px}
.pool-h{display:flex;justify-content:space-between;align-items:center;gap:.5rem}
.pool-h strong{font-size:.95rem}
.pool-list{list-style:none;margin:.65rem 0 .75rem;padding:.3rem;min-height:3.2rem;display:grid;gap:.4rem;max-height:60vh;overflow:auto;border-radius:10px;background:var(--surface-2);border:1px dashed var(--line-2)}
.pool-list .note{list-style:none;color:var(--ink-3);font-size:.84rem;padding:.55rem .4rem;text-align:center}
.shed{background:color-mix(in srgb,var(--board) 62%,white);border-radius:18px;padding:1.15rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));
  gap:1.4rem 1.1rem;align-items:start;min-width:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06),inset 0 2px 10px rgba(0,0,0,.06)}
.col{display:grid;gap:.4rem;align-content:start;min-width:0}
.magnet{display:block;background:#fff;color:#16202c;border-radius:6px;box-shadow:0 1px 0 rgba(0,0,0,.18),0 2px 6px rgba(0,0,0,.1);padding:.45rem .6rem;
  font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0;font-family:var(--f);text-align:left;width:100%}
.coach-mag{text-align:center;font-size:.86rem;color:var(--ink-2);background:rgba(255,255,255,.9)}
.coach-mag b{color:var(--ink);font-weight:700}
.coach-mag.none{color:var(--ink-3);font-weight:500;background:rgba(255,255,255,.5);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}
.boat-mag{background:#ffd83a;text-align:center;font-weight:800;letter-spacing:.05em;display:flex;align-items:center;justify-content:center;gap:.35rem;color:#2a2100}
.boat-mag small{font-weight:650;font-size:.68rem;color:#6b5600;letter-spacing:0}
button.boat-mag{cursor:pointer;position:relative;padding-right:1.9rem;padding-left:1.9rem}
button.boat-mag:hover{background:#ffe061}
button.boat-mag svg.i{position:absolute;right:.55rem;width:15px;height:15px;color:#6b5600;opacity:.75}
ol.seats{list-style:none;margin:.2rem 0 0;padding:0;display:grid;gap:.34rem}
ol.seats>li{display:grid;grid-template-columns:1.4rem minmax(0,1fr);align-items:center;gap:.35rem}
.seat-label{font-size:.8rem;font-weight:800;color:rgba(0,0,0,.5);text-align:center}
.seat-list{list-style:none;margin:0;padding:0}
ul.seat{min-height:2.35rem;border:2px dashed rgba(0,0,0,.2);border-radius:7px;cursor:pointer;transition:background .12s,border-color .12s}
ul.seat:has(.rower){border-color:transparent}
.rower{cursor:grab;user-select:none;-webkit-user-select:none;font-size:.9rem;transition:box-shadow .12s,transform .12s}
.rower .cx{display:inline-block;font-size:.66rem;font-weight:800;background:var(--brand-ink);color:#fff;border-radius:4px;padding:0 .28rem;margin-right:.3rem;vertical-align:1px}
.rower.picked{outline:3px solid var(--brand);outline-offset:1px;background:#eef5ff;transform:translateY(-1px)}
.rower.away{color:#8b8f94;text-decoration:line-through}
.rower .tag{font-size:.62rem;font-weight:800;text-transform:uppercase;color:var(--bad);margin-left:.25rem;display:inline-block;text-decoration:none}
body.picking ul.seat{border-color:rgba(255,255,255,.95);background:rgba(255,255,255,.32)}
body.picking ul.seat:hover{background:rgba(255,255,255,.6)}
body.picking .pool-list{border-color:var(--brand);background:var(--brand-soft)}
.sortable-ghost{opacity:.35}.sortable-chosen{box-shadow:0 8px 20px rgba(0,0,0,.25)}
.add-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;min-height:8rem;border:2px dashed rgba(0,0,0,.22);border-radius:10px;
  background:rgba(255,255,255,.35);color:rgba(0,0,0,.6);font:650 .9rem var(--f);cursor:pointer;width:100%;transition:background .12s}
.add-tile:hover{background:rgba(255,255,255,.6)}
.add-tile svg.i{width:24px;height:24px}
.pick-bar{position:fixed;left:0;right:0;bottom:var(--tabs-h);z-index:30;background:var(--brand-ink);color:#fff;
  padding:.8rem var(--gut-r) .8rem var(--gut);
  display:flex;gap:.8rem;align-items:center;justify-content:space-between;font-weight:600;box-shadow:0 -6px 20px rgba(0,0,0,.15)}
.pick-bar{padding-bottom:calc(.8rem + env(safe-area-inset-bottom))}
body.has-tabs .pick-bar{padding-bottom:.8rem}
.pick-bar .btn{background:#fff;color:var(--brand-ink);border-color:#fff}
@media (max-width:1100px){
  .board-layout{grid-template-columns:210px minmax(0,1fr);gap:1rem}
  .shed{grid-template-columns:repeat(auto-fill,minmax(168px,1fr));padding:1rem;gap:1.2rem .9rem}
}
@media (max-width:760px){
  .board-layout{grid-template-columns:minmax(0,1fr)}
  .side{display:contents}
  .fleet{order:3}
  .pool{position:static}
  .pool-list{display:flex;flex-wrap:wrap;max-height:none;gap:.4rem}
  .pool-list .magnet{display:inline-block;width:auto}
}
@media (max-width:600px){
  .shed{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.1rem .65rem;padding:.7rem;border-radius:14px}
  .magnet{padding:.42rem .45rem;font-size:.85rem}
  .boat-mag{font-size:.84rem;letter-spacing:.03em}
  button.boat-mag{padding-left:.5rem;padding-right:1.5rem}
  button.boat-mag svg.i{right:.4rem}
  ol.seats>li{grid-template-columns:1.05rem minmax(0,1fr);gap:.25rem}
  .seat-label{font-size:.74rem}
  .add-tile{min-height:6rem}
}
.board-grid td,.board-grid th{text-align:center;vertical-align:middle}
.board-grid td:first-child,.board-grid th:first-child{text-align:left}
.board-grid th.today{color:var(--brand)}
.sq-name{display:inline-flex;align-items:center;gap:.45rem;font-weight:700;color:var(--ink);white-space:nowrap}
.sq-name::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--c)}
.board-grid .start{display:inline-grid;place-items:center;width:34px;height:30px;border-radius:8px;border:1px dashed var(--line-2);background:transparent;color:var(--ink-3);font:600 1.05rem var(--f);cursor:pointer}
.board-grid .start:hover{border-style:solid;border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}
.board-grid .start.train{border-color:#9db5d3;color:var(--brand)}

/* compact coach rows (session editor) */
ul.coach-rows{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}
ul.coach-rows li{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1.3fr);gap:.5rem;align-items:center;padding-bottom:.6rem;border-bottom:1px solid var(--line)}
ul.coach-rows li:last-child{border-bottom:0}
.cr-name{min-width:0;font-weight:600}
.cr-warn{display:block;font-size:.75rem;font-weight:500;color:var(--warn);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:640px){ul.coach-rows li{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}ul.coach-rows li input{grid-column:1/-1}}

/* coaches + invites */
fieldset.squad-pick{border:0;padding:0;margin:.8rem 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:0 .8rem}
fieldset.squad-pick legend{font-weight:600;font-size:.86rem;padding:0;margin-bottom:.1rem}
fieldset.squad-pick .check{margin:.35rem 0}
.coach-table td{vertical-align:middle}
.coach-table .sq-name{font-weight:550;font-size:.84rem}
.coach-table tr.inactive td{opacity:.6}
.row-actions{text-align:right;white-space:nowrap}
.row-actions .btn+.btn,.row-actions form+.btn{margin-left:.3rem}
td.num,.num{font-variant-numeric:tabular-nums;white-space:nowrap}
.send-row{display:flex;flex-wrap:wrap;gap:.5rem}
@media (max-width:640px){.row-actions{text-align:left;padding-top:.5rem!important}.send-row .btn{flex:1 1 100%}}

/* history */
.days-list tr.is-today td{background:var(--brand-soft)}
.days-list tr.quiet-row td{color:var(--ink-3)}
.days-list .day-link{font-weight:650;text-decoration:none;color:var(--ink)}
.days-list .day-link:hover{color:var(--brand)}
.day-bar{display:flex;flex-wrap:wrap;gap:.75rem 1rem;align-items:center;justify-content:space-between;padding:.8rem 1rem;margin-bottom:1rem}
.versions{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;min-width:0}
.vchip{font-size:.8rem;font-weight:600;text-decoration:none;color:var(--ink-2);border:1px solid var(--line-2);border-radius:999px;padding:.2rem .65rem;background:var(--surface);white-space:nowrap}
.vchip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.ev-row{display:flex;flex-wrap:wrap;gap:.35rem}.ev-row .ev{margin:0}
.rec-sess{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:.85rem 1rem .85rem 1.2rem;margin-bottom:.65rem;box-shadow:var(--sh-1)}
.rec-sess::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--c)}
.rec-sess.cancelled{opacity:.65}
.rec-sess .rec-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.2rem 1rem;align-items:baseline}
.rec-sess .sq-name{--c:inherit;font-weight:700}
.rec-sess .time{font-weight:650;font-variant-numeric:tabular-nums;margin-left:.35rem}
.rec-sess .coaches{margin-top:.35rem}
details.rec-plan{margin-top:.6rem;border-top:1px solid var(--line);padding-top:.55rem}
details.rec-plan>summary{cursor:pointer;font-size:.9rem}
.reports{margin-top:.55rem;border-top:1px solid var(--line);padding-top:.5rem;display:grid;gap:.25rem}
.rec-board{margin-bottom:1.2rem}
.rec-board-h{display:flex;gap:.6rem;align-items:center;margin-bottom:.5rem}
ul.plain-list{list-style:none;margin:0;padding:0;display:grid;gap:.35rem}

/* ---------- crews: one card per squad ---------- */
.squad-boards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}
.sb-card{position:relative;display:grid;gap:.55rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.1rem 1rem 1.35rem;
  text-decoration:none;color:var(--ink);box-shadow:var(--sh-2);overflow:hidden;transition:box-shadow .15s,transform .15s}
.sb-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--c)}
.sb-card:hover{box-shadow:0 2px 4px rgba(15,27,43,.06),0 10px 26px rgba(15,27,43,.1);transform:translateY(-1px)}
.sb-top{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap}
.sb-name{font-weight:750;font-size:1.08rem;letter-spacing:-.01em}
.sb-boats{display:flex;flex-wrap:wrap;gap:.3rem}
.sb-boat{background:#ffd83a;color:#2a2100;border-radius:5px;padding:.15rem .45rem;font-size:.74rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.sb-boat small{font-weight:650;color:#6b5600;margin-left:.25rem;text-transform:none;letter-spacing:0}
.sb-meta{display:flex;flex-wrap:wrap;gap:.25rem 1rem;font-size:.88rem;color:var(--ink-2)}
.sb-meta b{color:var(--ink)}
.sb-foot{font-size:.8rem;color:var(--ink-3)}
.sb-go{display:inline-flex;align-items:center;gap:.2rem;color:var(--brand);font-weight:650;font-size:.9rem}
.sb-go svg.i{width:16px;height:16px}
.sb-ahead{font-size:.84rem;color:var(--ink-2);margin:-.4rem 0 0 .2rem;grid-column:1/-1}

/* ---------- availability ---------- */
.chip.is-away{background:var(--bad-bg);color:var(--bad);text-decoration:line-through}
.away-note{color:var(--bad);font-weight:600}
.week-check{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem;margin-bottom:1rem}
.wc{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:.7rem .85rem;display:grid;gap:.1rem;box-shadow:var(--sh-1);border-top:3px solid var(--line-2)}
.wc b{font:800 1.75rem/1 var(--fd);font-stretch:78%;font-variant-numeric:tabular-nums}
.wc span{font-size:.82rem;color:var(--ink-2)}
.wc a{font-size:.82rem;font-weight:650}
.wc.ok{border-top-color:var(--ok)}.wc.warn{border-top-color:var(--gold)}.wc.bad{border-top-color:var(--bad)}.wc.bad b{color:var(--bad)}
@media (max-width:700px){.week-check{grid-template-columns:repeat(2,minmax(0,1fr))}}
ul.cover-list{list-style:none;margin:0 0 1.2rem;padding:0;display:grid;gap:.5rem}
ul.cover-list li{display:grid;grid-template-columns:7.5rem minmax(0,1fr) auto;gap:.75rem;align-items:center;background:var(--surface);border:1px solid var(--line);
  border-left:5px solid var(--c);border-radius:12px;padding:.7rem .85rem;box-shadow:var(--sh-1)}
ul.cover-list li.critical{border-color:#f0c4bf;border-left-color:var(--bad);background:#fffafa}
@media (max-width:600px){ul.cover-list li{grid-template-columns:minmax(0,1fr) auto}.cv-when{grid-column:1/-1}}
ul.away-rows{list-style:none;margin:.4rem 0 .8rem;padding:0;display:grid;gap:.4rem}
ul.away-rows li{display:flex;justify-content:space-between;align-items:center;gap:.6rem;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:.55rem .75rem}
.away-card h3{margin:0 0 .15rem}.away-card p{margin:0 0 .6rem}
details.away-form>summary{list-style:none;cursor:pointer}details.away-form>summary::-webkit-details-marker{display:none}
details.away-form[open]>summary{display:none}

/* ---------- drill library ---------- */
.ladder{display:flex;align-items:flex-end;gap:2px;height:46px;margin:.35rem 0 .1rem;overflow:hidden;min-width:0}
.ladder.big{height:110px;gap:3px}
.ladder span{background:linear-gradient(180deg,var(--brand) 0%,#2f6fb3 100%);border-radius:3px 3px 1px 1px;min-width:1px;position:relative;display:flex;justify-content:center}
.ladder span.firm{background:linear-gradient(180deg,#0b2a4f,#1d5291)}
.ladder span.race{background:linear-gradient(180deg,#b02a20,#d4573e)}
.ladder span.light{background:linear-gradient(180deg,#6f9bd0,#94b6de)}
.ladder span.rest{background:#d5dce5}
.ladder i{font-style:normal;font-size:.62rem;font-weight:750;color:#fff;padding-top:2px;line-height:1;font-variant-numeric:tabular-nums}
.ladder.big i{font-size:.8rem;padding-top:5px}
.lib-tools{display:grid;gap:.6rem;margin-bottom:1rem}
.chips-row{display:flex;flex-wrap:wrap;gap:.35rem}
.fchip{border:1px solid var(--line-2);background:var(--surface);border-radius:999px;padding:.34rem .75rem;font:600 .84rem var(--f);color:var(--ink-2);cursor:pointer;min-height:34px}
.fchip b{font-weight:650;color:var(--ink-3);margin-left:.25rem}
.fchip.on{background:var(--brand);border-color:var(--brand);color:#fff}.fchip.on b{color:rgba(255,255,255,.75)}
.drill-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:.75rem}
.dcard{min-width:0;display:grid;gap:.3rem;align-content:start;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:.85rem .95rem;text-decoration:none;color:var(--ink);box-shadow:var(--sh-1);transition:box-shadow .12s}
.dcard:hover{box-shadow:var(--sh-2)}
.dcard h3{margin:0;font-size:.98rem;line-height:1.3}
.dcard p{margin:0;font-size:.85rem;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dmeta{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;font-size:.76rem;color:var(--ink-3)}
.ktag{display:inline-block;font-size:.7rem;font-weight:750;letter-spacing:.05em;text-transform:uppercase;border-radius:5px;padding:.08rem .4rem;background:#eef2f7;color:var(--ink-2)}
.ktag.technique{background:#e8f0fa;color:var(--brand)}.ktag.piece{background:#fdf1d8;color:#8a5600}.ktag.warmup{background:#e4f4ea;color:var(--ok)}
.ktag.cooldown{background:#eef0f4;color:#4a5768}.ktag.game{background:#f6e9fb;color:#7a2f99}.ktag.land{background:#ecebe6;color:#5b5232}
.steps-text{font-size:.82rem;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.dl-sec{margin:1.1rem 0 0}.dl-sec h2{font-size:1rem;margin:0 0 .35rem}
ul.cues{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.35rem}
ul.cues li{background:var(--gold-soft);border-radius:8px;padding:.25rem .6rem;font-weight:600;font-size:.9rem}
ul.cues li::before{content:"\201C"}ul.cues li::after{content:"\201D"}
ul.watch{margin:0;padding-left:1.1rem}ul.watch li{margin:.15rem 0}
table.steps-t{width:100%;border-collapse:collapse;font-size:.9rem;font-variant-numeric:tabular-nums}
table.steps-t td,table.steps-t th{padding:.35rem .5rem;border-bottom:1px solid var(--line);text-align:left}
table.steps-t th{font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
table.steps-t tr.rest td{color:var(--ink-3)}
/* builder */
.step-rows{display:grid;gap:.4rem;margin:.5rem 0}
.step-row{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:.4rem}
.step-row input,.step-row select{margin:0;min-height:38px;padding:.35rem .45rem}
.step-row .rest-l{display:flex;align-items:center;gap:.25rem;font-size:.8rem;font-weight:600;white-space:nowrap}
.step-row .rest-l input{min-height:0;width:auto}
.step-row .x{border:0;background:none;font-size:1.3rem;color:var(--ink-3);cursor:pointer}
.step-head{display:grid;grid-template-columns:4.2rem 5.6rem 4.4rem 6.5rem auto minmax(0,1fr) 3.6rem 2.4rem;gap:.35rem;padding:0 .4rem;font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}
@media (max-width:760px){
  .step-head{display:none}

}
.gen{display:flex;flex-wrap:wrap;gap:.5rem;align-items:end;background:var(--brand-soft);border-radius:12px;padding:.75rem;margin:.6rem 0}
.gen label{margin:0;font-size:.74rem}.gen input{width:4.6rem;margin:0}.gen .g{display:grid;gap:.15rem}
.check-row{display:flex;flex-wrap:wrap;gap:.4rem}.check-row label{display:inline-flex;align-items:center;gap:.35rem;margin:0;border:1px solid var(--line-2);border-radius:9px;padding:.35rem .6rem;font-weight:600;font-size:.88rem;background:var(--surface);cursor:pointer}
.check-row input{width:auto;min-height:0;margin:0}
.check-row label:has(input:checked){background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}

/* ---------- plan builder ---------- */
.plan-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:1.25rem;align-items:start}
.plan-total{display:flex;justify-content:space-between;align-items:baseline;margin:1rem 0 .5rem}
.plan-total b{font-size:1.2rem}
li.block{border-left:4px solid var(--line-2)}
li.block.k-warmup{border-left-color:var(--ok)}li.block.k-focus{border-left-color:var(--brand)}li.block.k-main{border-left-color:var(--gold)}
li.block.k-game{border-left-color:#7a2f99}li.block.k-land{border-left-color:#5b5232}li.block.k-debrief{border-left-color:var(--ink-3)}
.b-drill{font-weight:650}.b-ins{margin-top:.2rem}
li.drop-hint,.blocks .lib-item{list-style:none}
li.drop-hint{border:2px dashed var(--line-2);border-radius:12px;padding:1.4rem;text-align:center;color:var(--ink-3)}
.blocks .lib-item{background:var(--brand-soft);border:1px dashed var(--brand);border-radius:12px;padding:.6rem}
.lib-panel{position:sticky;top:calc(var(--top-h) + 16px);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:.9rem;box-shadow:var(--sh-2);display:grid;gap:.55rem;max-height:calc(100vh - var(--top-h) - 32px);grid-template-rows:auto auto auto minmax(0,1fr) auto}
.lib-h{display:flex;align-items:center;gap:.6rem}.lib-h strong{margin-right:auto}
.lib-h .x{display:none;border:0;background:none;font-size:1.5rem;color:var(--ink-3)}
.lib-panel input{margin:0}
.lib-panel .fchip{padding:.22rem .55rem;font-size:.76rem;min-height:28px}
ul.lib-list{list-style:none;margin:0;padding:0;overflow:auto;display:grid;gap:.35rem;align-content:start}
.lib-item{display:flex;gap:.5rem;align-items:center;border:1px solid var(--line);border-radius:10px;padding:.45rem .55rem;cursor:grab;background:var(--surface);font-size:.88rem;line-height:1.3}
.lib-item:hover{border-color:var(--line-2);background:var(--surface-2)}
.li-main{flex:1;min-width:0}
.add-one{flex:none;width:34px;height:34px;border-radius:9px;border:1px solid var(--line-2);background:var(--surface);font:700 1.1rem var(--f);color:var(--brand);cursor:pointer}
.add-one:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
.lib-fab{display:none}
@media (max-width:1000px){
  .plan-layout{grid-template-columns:minmax(0,1fr)}
  .lib-panel{position:fixed;inset:auto 0 0 0;top:12vh;max-height:none;z-index:40;border-radius:20px 20px 0 0;transform:translateY(105%);transition:transform .22s cubic-bezier(.2,.8,.2,1);padding-bottom:calc(.9rem + env(safe-area-inset-bottom))}
  .lib-panel.open{transform:none;box-shadow:var(--sh-pop)}
  .lib-h .x{display:block}
  .lib-fab{display:block;position:fixed;right:var(--gut-r);bottom:calc(var(--tabs-h) + 14px);z-index:25;border-radius:999px;box-shadow:var(--sh-pop)}
}

/* ---------- plan builder wizard ---------- */
ol.stepper{list-style:none;margin:0 0 1.2rem;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.4rem}
ol.stepper li{display:flex;align-items:center;gap:.45rem;padding:.5rem .6rem;border-radius:10px;background:var(--surface);border:1px solid var(--line);cursor:pointer;font-weight:600;font-size:.86rem;color:var(--ink-3);min-width:0}
ol.stepper li b{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--line-2);font-size:.78rem}
ol.stepper li span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
ol.stepper li.on{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}ol.stepper li.on b{background:var(--brand);color:#fff;border-color:var(--brand)}
ol.stepper li.done{color:var(--ink-2)}ol.stepper li.done b{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}
@media (max-width:600px){ol.stepper li span{display:none}ol.stepper li{justify-content:center}}
.wstep{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:1.1rem 1.2rem;box-shadow:var(--sh-1)}
.wstep h2{margin-top:0}
.check-row.big label{padding:.6rem .95rem;font-size:.95rem}
ul.pick-list{list-style:none;margin:.4rem 0 0;padding:0;display:grid;gap:.35rem;max-height:46vh;overflow:auto}
ul.pick-list label{display:flex;gap:.6rem;align-items:flex-start;margin:0;padding:.55rem .7rem;border:1px solid var(--line);border-radius:10px;cursor:pointer;font-weight:500}
ul.pick-list label:has(input:checked){border-color:var(--brand);background:var(--brand-soft)}
ul.pick-list input{width:auto;min-height:0;margin:.2rem 0 0}
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem}
.tpl{display:flex;gap:.55rem;align-items:flex-start;margin:0;padding:.7rem .8rem;border:1px solid var(--line);border-radius:12px;cursor:pointer;font-weight:500}
.tpl input{width:auto;min-height:0;margin:.2rem 0 0}
.tpl b{display:block;font-size:.92rem}.tpl small{display:block;color:var(--ink-2);font-size:.8rem;margin-top:.15rem}
.tpl:has(input:checked){border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 1px var(--brand)}
ul.pick-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.45rem;max-height:52vh;overflow:auto;padding:.1rem}
.dpick{width:100%;height:100%;text-align:left;display:grid;gap:.2rem;align-content:start;padding:.6rem .7rem;border:1px solid var(--line);border-radius:11px;background:var(--surface);font:inherit;color:var(--ink);cursor:pointer;position:relative}
.dpick b{font-size:.9rem;line-height:1.3;padding-right:1.4rem}
.dpick:hover{border-color:var(--line-2)}
.dpick.on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 1px var(--brand)}
.dpick.on::after{content:"✓";position:absolute;right:.6rem;top:.5rem;width:22px;height:22px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:.75rem;font-weight:800}
.dpick .ktag{justify-self:start}
.wiz-nav{position:sticky;bottom:calc(var(--tabs-h) + 8px);display:flex;gap:.6rem;align-items:center;margin-top:1rem;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:14px;padding:.6rem;box-shadow:var(--sh-2);z-index:5}
.wiz-sum{flex:1;font-size:.86rem;color:var(--ink-2);text-align:center}
#next,#make{margin-left:auto}
ol.review{margin:1rem 0;padding-left:1.3rem;display:grid;gap:.45rem}
.start-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.75rem;margin-bottom:1.2rem}
.start-card{display:grid;gap:.25rem;text-decoration:none;color:var(--ink);border-left:5px solid var(--gold);transition:box-shadow .12s}
.start-card:hover{box-shadow:var(--sh-2)}.start-card b{font-size:1.02rem;color:var(--brand)}.start-card span{font-size:.88rem;color:var(--ink-2)}
.away-card{margin-bottom:1rem}
.board-warn{margin-bottom:.8rem}
.step-head:has(+ .step-rows:empty){display:none}
.ladder.dense{gap:1px}.ladder.dense span{border-radius:1px}
ol.steps-list{list-style:none;margin:.6rem 0 0;padding:0;display:grid;gap:2px;font-variant-numeric:tabular-nums}
ol.steps-list li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .7rem;padding:.42rem .6rem;margin-left:calc(var(--d,0) * 1.1rem);border-radius:8px}
li.sl-block{font-size:.86rem;color:var(--ink-2);padding:.5rem .6rem .15rem;border-left:3px solid var(--brand);border-radius:0;background:none}
li.sl-block b{color:var(--brand);font-size:.95rem}
li.sl-step{background:var(--surface-2);border:1px solid var(--line)}
li.sl-step.rest{background:transparent;border-style:dashed;color:var(--ink-3)}
.sl-amt{font-weight:700;min-width:5.6rem}
.sl-rate{font-weight:600;min-width:4.2rem}
.sl-press{font-size:.72rem;font-weight:750;text-transform:uppercase;letter-spacing:.05em;border-radius:5px;padding:.05rem .4rem;background:#e8f0fa;color:var(--brand)}
.sl-press.race{background:var(--bad-bg);color:var(--bad)}.sl-press.firm{background:#e3e9f4;color:#0b2a4f}.sl-press.light{background:#eef2f7;color:var(--ink-2)}
.sl-note{font-size:.84rem;color:var(--ink-2);flex-basis:100%}
@media (min-width:700px){.sl-note{flex-basis:auto}}
.grip{cursor:grab;color:var(--ink-3);font-size:1.1rem;user-select:none;text-align:center;touch-action:none}
.step-block{border:1.5px solid var(--brand);border-radius:12px;padding:.45rem;background:var(--brand-soft);display:grid;gap:.4rem}
.sb-head{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}
.sb-head b{color:var(--brand)}.sb-head .rep{width:4.2rem;margin:0}.sb-head .bnote{flex:1 1 10rem;margin:0;width:auto}
.sb-head .x{border:0;background:none;font-size:1.3rem;color:var(--ink-3);cursor:pointer}
.step-block .step-rows{margin:0;min-height:2.6rem;border-radius:9px}
.step-block .step-row{background:var(--surface)}
.steps-text.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ---------- boats ---------- */
.fleet-group{margin-top:1.2rem}.fleet-group h2{display:flex;align-items:center;gap:.5rem}
.boat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.65rem}
.boat-card{display:grid;gap:.35rem;align-content:start;text-align:left;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:.8rem .9rem;cursor:pointer;box-shadow:var(--sh-1);min-width:0}
.boat-card:hover{box-shadow:var(--sh-2)}
.bc-name{justify-self:start;background:#ffd83a;color:#2a2100;border-radius:5px;padding:.2rem .55rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;font-size:.9rem;box-shadow:0 1px 0 rgba(0,0,0,.15);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.boat-card.is-out .bc-name{background:#eceff3;color:var(--ink-3);text-decoration:line-through}
.bc-type{font-weight:600;font-size:.9rem}.bc-type small{color:var(--ink-3);font-weight:600}
.bc-tags{display:flex;flex-wrap:wrap;gap:.3rem}
.bc-on{font-size:.8rem;color:var(--brand);font-weight:600}
.bc-notes{font-size:.8rem;color:var(--ink-2)}
.status-seg{display:flex;margin-bottom:.4rem}.status-seg form{flex:1}.status-seg .btn{width:100%}
@media (max-width:600px){.boat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.boat-card{padding:.65rem .7rem}.bc-name{font-size:.8rem}.bc-type{font-size:.82rem}}
.bm-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.boat-mag small{flex:none}
.chip-group{flex-basis:100%;font-size:.7rem;font-weight:750;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);margin:.35rem 0 -.1rem}
#kinds .chip-group:first-of-type{margin-top:.1rem}
.sl-ex{font-weight:700;flex-basis:100%}.sl-ex a{color:var(--ink)}
@media (min-width:700px){.sl-ex{flex-basis:auto;min-width:11rem}}
.step-row>*{min-width:0}.step-row .grip{flex:0 0 1.1rem}.step-row .amt{flex:0 0 4.4rem;width:4.4rem}.step-row .unit{flex:0 0 6rem;width:6rem}
.step-row .ex-in{flex:1 1 9rem;width:auto}.step-row .rate{flex:0 0 4.4rem;width:4.4rem}.step-row .press{flex:0 0 6.2rem;width:6.2rem}
.step-row .note-in{flex:1 1 8rem;width:auto}
.step-row{position:relative;padding-right:2.4rem}.step-row .x{position:absolute;right:.25rem;top:.45rem;width:2rem}

/* ---------- Today ---------- */
.hero{position:relative;overflow:hidden;border-radius:22px;color:#fff;margin-bottom:1.1rem;
  background:radial-gradient(80% 110% at 100% 0%,rgba(96,150,255,.38),transparent 58%),radial-gradient(70% 90% at 0% 100%,#2a56a8,transparent 60%),linear-gradient(135deg,#0b1a35,#173468);
  box-shadow:var(--sh-3)}
.hero-in{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:1.5rem;align-items:end;padding:2rem 2rem 3.2rem}
.eyebrow{font:700 .74rem/1 var(--f);letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:.7rem}
.hero h1{color:#fff;font-size:2.6rem;font-stretch:80%}
.hero p{color:#cbd6ec;margin:.6rem 0 0;font-size:1rem}
.hero p a{color:var(--gold-2);font-weight:650}
.hero-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
.hs{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:.8rem .95rem;backdrop-filter:blur(6px)}
.hs b{display:block;font:800 2rem/1 var(--fd);font-stretch:78%;color:#fff;font-variant-numeric:tabular-nums}
.hs span{font-size:.78rem;color:#b9c6e0;font-weight:550}
.hero-water{position:absolute;left:0;right:0;bottom:-1px;width:100%;height:56px}
.hero-water path{fill:rgba(255,255,255,.07)}.hero-water .w2{fill:rgba(255,255,255,.1)}
@media (max-width:820px){.hero-in{grid-template-columns:minmax(0,1fr);padding:1.4rem 1.2rem 2.6rem}.hero h1{font-size:2.05rem}.hero{border-radius:18px}}
.quick{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.7rem;margin-bottom:.4rem}
.qa{display:flex;gap:.75rem;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:.85rem .95rem;text-decoration:none;color:var(--ink);box-shadow:var(--sh-1);transition:transform .12s,box-shadow .12s,border-color .12s}
.qa:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:var(--line-2)}
.qa svg.i{width:38px;height:38px;padding:9px;border-radius:11px;background:var(--brand-soft);color:var(--brand)}
.qa b{display:block;font-size:.93rem}.qa small{display:block;color:var(--ink-3);font-size:.78rem}
@media (max-width:900px){.quick{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:420px){.qa small{display:none}}
.today-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:1.4rem;align-items:start}
@media (max-width:1100px){.today-grid{grid-template-columns:minmax(0,1fr)}}
h2.sec{display:flex;align-items:baseline;gap:.6rem;font-size:1.35rem;font-stretch:82%;text-transform:uppercase;letter-spacing:.03em;margin:1.6rem 0 .75rem}
h2.sec span{font:600 .85rem var(--f);text-transform:none;letter-spacing:0;color:var(--ink-3)}
.tsess{display:grid;grid-template-columns:92px minmax(0,1fr);gap:1rem;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:1rem 1.1rem;margin-bottom:.65rem;
  text-decoration:none;color:inherit;box-shadow:var(--sh-1);position:relative;overflow:hidden;transition:transform .12s,box-shadow .12s}
.tsess::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--c)}
.tsess:hover{transform:translateY(-1px);box-shadow:var(--sh-2)}
.tsess.is-past{opacity:.62}.tsess.is-cancelled{opacity:.55;background:var(--surface-2)}
.tsess.is-now{border-color:color-mix(in srgb,var(--c) 55%,white);box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 18%,transparent),var(--sh-2)}
.t-time b{display:block;font:800 1.9rem/1 var(--fd);font-stretch:76%;color:var(--ink);font-variant-numeric:tabular-nums}
.t-time small{color:var(--ink-3);font-size:.76rem;font-weight:600}
.live{display:inline-flex;align-items:center;gap:.3rem;margin-top:.45rem;font-size:.66rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ok)}
.live::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ok);animation:pulse 1.6s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(20,122,67,.5)}70%{box-shadow:0 0 0 7px rgba(20,122,67,0)}100%{box-shadow:0 0 0 0 rgba(20,122,67,0)}}
.t-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .7rem}
.t-squad{font:800 1.12rem/1.2 var(--fd);font-stretch:88%;color:var(--c);filter:saturate(1.1) brightness(.8)}
.t-venue{font-size:.82rem;color:var(--ink-3);font-weight:550}
.t-focus{margin-top:.3rem;font-weight:600;color:var(--ink)}
.t-focus .lbl{font-size:.64rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-d);background:var(--gold-soft);border-radius:5px;padding:.08rem .35rem;margin-right:.45rem;vertical-align:.15em}
.t-focus.cancelled{color:var(--bad)}
.nope{color:var(--warn);font-weight:650;font-size:.88rem}
.t-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-top:.6rem}
.t-coaches{display:flex;align-items:center}
.t-flags{display:flex;flex-wrap:wrap;gap:.3rem}
.tf{font-size:.7rem;font-weight:700;border-radius:6px;padding:.15rem .45rem;background:#eef1f6;color:var(--ink-2)}
.tf.ok{background:var(--ok-bg);color:var(--ok)}.tf.warn{background:var(--warn-bg);color:var(--warn)}
@media (max-width:520px){.tsess{grid-template-columns:64px minmax(0,1fr);gap:.75rem;padding:.9rem}.t-time b{font-size:1.55rem}}
.col-side{display:grid;gap:.9rem;margin-top:1.6rem}
@media (max-width:1100px){.col-side{margin-top:.6rem}}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:1rem 1.05rem;box-shadow:var(--sh-1)}
.panel h2{display:flex;align-items:center;gap:.5rem;margin:0 0 .7rem;font-size:1.02rem;text-transform:uppercase;letter-spacing:.04em;font-stretch:84%}
.panel h2 svg.i{color:var(--brand);width:18px;height:18px}
.calm{display:flex;gap:.45rem;align-items:center;color:var(--ink-2);font-size:.9rem;margin:0}
.calm svg.i{color:var(--ok);width:18px;height:18px}
.att{display:flex;align-items:center;gap:.6rem;padding:.6rem .7rem;border-radius:11px;text-decoration:none;color:var(--ink);font-size:.88rem;font-weight:550;background:var(--surface-2);margin-bottom:.4rem;border:1px solid transparent}
.att:hover{border-color:var(--line-2)}
.att span:not(.sq-dot):not(.boat-tag){flex:1;min-width:0}
.att svg.i{width:16px;height:16px;color:var(--ink-3)}
.att b{font:800 1.3rem/1 var(--fd);font-stretch:80%}
.att.bad{background:var(--bad-bg);color:var(--bad)}.att.warn{background:var(--warn-bg)}
.boat-tag{background:#ffd83a;color:#2a2100;border-radius:5px;padding:.08rem .4rem;font-size:.7rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.li{display:flex;gap:.6rem;align-items:center;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid var(--line);font-size:.88rem}
.li:last-of-type{border-bottom:0}.li span{color:var(--ink-2);text-align:right}
.ev-li{justify-content:flex-start}.ev-li span{text-align:left}.ev-li small{display:block;color:var(--ink-3)}
.date-chip{display:grid;place-items:center;width:44px;height:46px;border-radius:10px;background:var(--brand-soft);color:var(--brand);font-size:.62rem;font-weight:750;text-transform:uppercase;letter-spacing:.06em;flex:none;line-height:1}
.date-chip b{font:800 1.25rem/1 var(--fd);font-stretch:80%;color:var(--brand-d)}
.more-link{display:inline-flex;align-items:center;gap:.2rem;margin-top:.6rem;font-size:.85rem;font-weight:650;text-decoration:none}
.more-link svg.i{width:15px;height:15px}

/* ---------- sign in ---------- */
body.page-login{background:radial-gradient(80% 60% at 85% 0%,rgba(96,150,255,.3),transparent 60%),radial-gradient(70% 70% at 0% 100%,#24509e,transparent 60%),linear-gradient(160deg,#0b1a35,#132c58)}
body.page-login main{min-height:100vh;display:grid;place-items:center;padding-top:2rem}
.login{width:min(420px,100%);text-align:center}
.login .crest{width:84px;height:auto;filter:drop-shadow(0 10px 24px rgba(0,0,0,.45));margin-bottom:.9rem}
.login .club{font:800 1.9rem/1 var(--fd);font-stretch:78%;letter-spacing:.06em;text-transform:uppercase;color:#fff}
.login .club small{display:block;font:650 .72rem/1 var(--f);letter-spacing:.2em;color:var(--gold);margin-top:.5rem}
.login .card{text-align:left;margin-top:1.6rem;border:0;box-shadow:0 30px 70px rgba(0,0,0,.35);border-radius:20px;padding:1.5rem}
.login .card h1{font-size:1.5rem}
.login .help{color:#a9b6d2;font-size:.85rem;margin-top:1.1rem}
@media (max-width:600px){.hs{padding:.6rem .75rem}.hs b{font-size:1.6rem}}

/* ---------- plans list ---------- */
.plans-wrap{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:1.4rem;align-items:start}
@media (max-width:1100px){.plans-wrap{grid-template-columns:minmax(0,1fr)}}
.plans-wrap h2.sec:first-child{margin-top:0}
.quick-plan{position:sticky;top:calc(var(--top-h) + 16px)}
.plan-search{margin:0 0 .8rem}
.plan-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.7rem}
.plan-card{display:grid;gap:.45rem;align-content:start;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:.95rem 1rem;text-decoration:none;color:var(--ink);box-shadow:var(--sh-1);transition:transform .12s,box-shadow .12s}
.plan-card:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}
.plan-card h3{margin:0;font:750 1.02rem/1.25 var(--fd);font-stretch:90%}
.pc-top{display:flex;justify-content:space-between;align-items:center;gap:.4rem}
.pc-meta,.pc-foot{font-size:.76rem;color:var(--ink-3);font-weight:600}
.pc-focus{font-size:.88rem;color:var(--ink-2)}
.pc-focus .lbl{font-size:.6rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-d);background:var(--gold-soft);border-radius:5px;padding:.06rem .32rem;margin-right:.4rem;vertical-align:.15em}
table.list a{text-decoration:none;font-weight:650}
table.list a:hover{text-decoration:underline}
.phone-sess .when{font:800 1.3rem/1.1 var(--fd);font-stretch:82%}
.wc{border-radius:14px}

/* ---------- BGS drills ---------- */
.bgs-tag{display:inline-flex;align-items:center;font:800 .66rem/1 var(--f);letter-spacing:.08em;text-transform:uppercase;background:var(--navy);color:var(--gold);border-radius:5px;padding:.22rem .42rem}
.dcard.is-club{border-color:color-mix(in srgb,var(--gold) 55%,var(--line));box-shadow:inset 0 3px 0 var(--gold),var(--sh-1)}
.fix-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .7rem}
.fix-row label{margin:0;font-size:.86rem}
.fix-row select{width:auto;min-width:220px;flex:0 1 auto}
.club-chip{display:inline-flex;align-items:center;gap:.35rem}.club-chip svg.i{width:15px;height:15px}
.club-chip.on{background:var(--navy);border-color:var(--navy);color:var(--gold)}
.fix-tags{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;font-size:.82rem;font-weight:650;color:var(--ink-3);margin:.9rem 0 0}
.fix-tag{background:var(--brand-soft);color:var(--brand-d);border-radius:999px;padding:.2rem .65rem;text-decoration:none;font-weight:650}
.fix-tag:hover{background:var(--brand);color:#fff}
.alias-note{background:var(--gold-soft);border:1px solid color-mix(in srgb,var(--gold) 45%,transparent);border-radius:11px;padding:.65rem .85rem;font-size:.9rem;margin:.2rem 0 .8rem}
.boat-card.static{cursor:default}.boat-card.static:hover{box-shadow:var(--sh-1)}
