/* SkiTribe athlete card. Scoped styles leave the existing race tools intact. */
[hidden]{display:none!important}.ap-hero{position:relative;overflow:hidden;display:flex;align-items:center;gap:28px;padding:36px;margin:20px 0 0;background:linear-gradient(115deg,#133747 0%,#0b222f 48%,#08141d 100%);border:1px solid #2a5263;border-radius:22px 22px 0 0;isolation:isolate}.ap-hero:after{content:"";position:absolute;z-index:-1;inset:-80% -15% -90% 65%;border:1px solid #306477;transform:rotate(33deg);box-shadow:40px 0 0 #102d3b,41px 0 0 #28566a,100px 0 0 #0c2432,101px 0 0 #204b5e}.ap-avatar{width:126px;height:150px;flex-shrink:0;border-radius:16px;background:#09202e;border:2px solid var(--ap-accent,#00d9ff);color:var(--ap-accent,#5eeaff);font-size:48px;font-weight:800;display:grid;place-items:center;overflow:hidden;box-shadow:8px 8px 0 #071820}.ap-avatar img{width:100%;height:100%;object-fit:cover}.ap-identity{flex:1;min-width:0}.ap-kicker{font-size:12px;letter-spacing:.15em;font-weight:800;color:#7ddded;margin:0 0 12px}.ap-identity h2{font-size:clamp(27px,4vw,44px);line-height:1.1;margin:0 0 16px;letter-spacing:-.035em;overflow-wrap:anywhere}.ap-identity-meta{display:flex;gap:10px 18px;align-items:center;flex-wrap:wrap;font-size:16px;color:#c3dce7}.ap-category{border-left:2px solid #f88002;padding-left:12px;color:#ffb266}.ap-caption{font-size:14px;color:#9fb8c6;margin:16px 0 0}.ap-hero-actions{display:flex;align-items:flex-end;flex-direction:column;gap:18px}.ap-badge{display:inline-flex;gap:6px;align-items:center;border:1px solid #3b5b6c;background:#102432;border-radius:6px;padding:6px 9px;font-size:12px;color:#bdd3e0}.ap-feedback{font-size:14px;min-height:30px;padding:8px 3px;color:#a8c4d3}.ap-feedback.ap-error{color:#ffb2b9}.ap-feedback button{font-size:14px;margin-left:8px}.ap-nav{display:flex;gap:6px;border-bottom:1px solid #244252;overflow-x:auto;padding:0 0 10px;margin-bottom:20px}.ap-nav button{white-space:nowrap;border-color:transparent;background:transparent;color:#abc2cf;font-size:14px;padding:12px 16px}.ap-nav button[aria-pressed=true]{background:#163444;border-color:#28768b;color:#85edff}.ap-section{padding:12px 0 24px;font-size:16px}.ap-section-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:8px 0 26px}.ap-section-head h3{font-size:28px;margin:0}.ap-section-head p:not(.ap-kicker){font-size:14px;line-height:1.5;color:#a1b9c7;margin:8px 0 0}.ap-section-head .ap-kicker{margin-bottom:8px}.ap-filters{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px}.ap-filters label{font-size:14px;flex:1;min-width:160px;max-width:270px}.ap-filters select{display:block;margin-top:6px;font-size:14px}.ap-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.ap-item{background:#0d202c;border:1px solid #254656;border-radius:14px;padding:21px;overflow-wrap:anywhere}.ap-item-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:22px}.ap-item-type{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:#92bacd;font-weight:800}.ap-item h4{font-size:21px;margin:6px 0 10px}.ap-brand{color:#78e5ff;font-size:14px;font-weight:800;min-height:17px}.ap-item p{color:#a6c0ce;font-size:14px;line-height:1.5}.ap-specs{display:grid;grid-template-columns:1fr 1fr;gap:14px 12px;margin:18px 0}.ap-specs dt{font-size:12px;color:#97b2c2}.ap-specs dd{font-size:14px;color:#e6f1f8;margin:4px 0 0;overflow-wrap:anywhere}.ap-swatches{display:flex;align-items:center;gap:8px;margin:14px 0;color:#a6bfce;font-size:12px}.ap-swatch{width:18px;height:18px;border:1px solid #9db3be;border-radius:50%}.ap-item-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.ap-item-actions button{font-size:14px;padding:8px 12px}.ap-empty{padding:34px;border:1px dashed #365a6d;background:#0a1b27;border-radius:14px;color:#b0c9d7;line-height:1.65;font-size:16px}.ap-empty strong{display:block;color:#e0edf5;font-size:20px;margin-bottom:8px}.ap-status{font-size:12px;font-weight:700;padding:5px 8px;border-radius:5px;background:#1b3543;color:#bcdae7}.ap-status.active{background:#173c33;color:#90e5bc}.ap-status.retired{background:#392d14;color:#edce86}.ap-status.sold{background:#303047;color:#c6c4ef}.ap-alert{padding:16px 20px;margin:14px 0 0;border:1px solid #a47626;border-left:5px solid #ffc428;border-radius:10px;background:#302613;color:#ffe4a1;font-size:16px}.ap-alert.expired{border-color:#a84356;border-left-color:#fb7585;background:#301923;color:#ffb6c1}.ap-alert button{margin-left:14px;color:inherit;background:transparent;border-color:currentColor;font-size:14px}.ap-medical-status{border:1px solid #315063;border-left:5px solid #93a6b1;background:#102331;padding:24px;border-radius:12px;margin-bottom:20px;display:flex;justify-content:space-between;align-items:center;gap:18px}.ap-medical-status strong{display:block;font-size:26px;margin:6px 0}.ap-medical-status.valid{border-left-color:#68d7a0}.ap-medical-status.valid strong{color:#84e1b1}.ap-medical-status.soon{border-left-color:#ffc428}.ap-medical-status.soon strong{color:#ffe095}.ap-medical-status.expired{border-left-color:#ff7289}.ap-medical-status.expired strong{color:#ffadb9}.ap-medical-status p{font-size:14px;color:#b2cad7}.ap-chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:22px}.ap-chart{padding:22px;background:#0d202c;border:1px solid #254656;border-radius:14px;min-width:0}.ap-chart h4{margin:0;font-size:16px;color:#a3bfce}.ap-chart-value{font-size:32px;display:block;margin-top:12px}.ap-chart svg{width:100%;height:auto;margin-top:18px;overflow:visible}.ap-table-wrap{overflow-x:auto}.ap-table{width:100%;border-collapse:collapse;font-size:14px}.ap-table th{text-align:left;padding:12px;border-bottom:1px solid #3d5969;color:#a1bece}.ap-table td{padding:14px 12px;border-bottom:1px solid #244252}.ap-table button{padding:7px 10px;font-size:14px;margin:3px}.ap-dialog{width:min(720px,calc(100% - 28px));max-height:90vh;border:1px solid #3a6479;border-radius:18px;padding:26px;background:#0b1d2a;color:#e7f0f5;box-shadow:0 25px 100px #0009}.ap-dialog::backdrop{background:#010a13c9;backdrop-filter:blur(5px)}.ap-dialog-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}.ap-dialog h3{font-size:24px;margin:0}.ap-dialog-head button{font-size:24px;line-height:1;padding:8px 12px}.ap-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.ap-dialog label{font-size:14px;font-weight:500;color:#c5dbe6;margin:0}.ap-dialog input,.ap-dialog select{display:block;margin-top:8px;font-size:16px}.ap-dialog input[type=color]{height:44px;padding:4px}.ap-dialog input[type=checkbox]{display:inline;width:auto;margin:0 10px 0 0}.ap-dialog input[type=file]{max-width:100%;font-size:14px}.ap-form-wide{grid-column:1/-1}.ap-help{font-size:14px;line-height:1.6;color:#9fbccf}.ap-form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:25px}.ap-form-error{color:#ffb2bd;line-height:1.5;font-size:14px}.ap-form-error:empty{display:none}.ap-history-entry{padding:16px 0;border-bottom:1px solid #274453;font-size:14px;line-height:1.6}.ap-history-entry time{color:#83dcf3}.ap-preview{border:1px solid #326075;border-radius:10px;padding:18px;margin:18px 0;font-size:14px;line-height:1.5}.ap-preview pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:340px;overflow:auto;font-size:13px}.ap-vis-options{display:grid;gap:16px;margin:18px 0}.ap-privacy-note{padding:14px;background:#102b3c;border-radius:8px;line-height:1.5;font-size:14px;color:#bcd8e6}.ap-dialog button:disabled{opacity:.5;cursor:wait}.ap-hero button{font-size:14px}.ap-section button:focus-visible,.ap-nav button:focus-visible,.ap-dialog button:focus-visible{outline:3px solid #ffb767;outline-offset:3px}.ap-sports-title{font-size:18px;margin:0 0 16px}.ap-sport-panel{margin-top:0}.ap-section .ap-link-button{background:transparent;border-color:#446576;color:#cce6f3} @media(max-width:950px){.ap-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ap-hero{gap:20px;padding:26px;flex-wrap:wrap}.ap-hero-actions{flex-direction:row;align-items:center;width:100%;justify-content:space-between}.ap-avatar{width:100px;height:124px}.ap-identity h2{font-size:34px}}@media(max-width:600px){.ap-hero{padding:22px 18px;gap:18px}.ap-avatar{width:74px;height:94px;font-size:30px}.ap-identity h2{font-size:27px;margin-bottom:10px}.ap-identity-meta{font-size:14px;gap:8px}.ap-caption{display:none}.ap-hero .ap-kicker{font-size:10px;letter-spacing:.1em}.ap-grid,.ap-chart-grid{grid-template-columns:1fr}.ap-section-head{align-items:flex-start;flex-direction:column}.ap-section-head h3{font-size:25px}.ap-form-grid{grid-template-columns:1fr}.ap-form-wide{grid-column:auto}.ap-dialog{padding:20px}.ap-nav button{padding:12px 9px}.ap-alert button{margin:10px 0 0;display:block}.ap-medical-status{align-items:flex-start;flex-direction:column}.ap-item{padding:20px}}@media(prefers-reduced-motion:reduce){.ap-hero *{transition:none!important}}
/* 1.11.2: equipment identity and certificate drop area */
.ap-avatar-block{width:148px;min-width:0}.ap-avatar-block .ap-avatar{width:100%;box-sizing:border-box}.ap-avatar-brands{display:grid;gap:5px;margin-top:10px;border-top:3px solid #ff9d42;padding-top:8px}.ap-avatar-brands[hidden]{display:none}.ap-avatar-brand{background:#fff;color:#17303d;padding:6px 9px;border-radius:5px;display:flex;align-items:center;gap:7px;min-width:0}.ap-avatar-brand small{font-size:9px;min-width:38px}.ap-avatar-brand img{width:64px;height:24px;object-fit:contain}.ap-avatar-brand strong{font-size:10px;overflow-wrap:anywhere}.ap-brand-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(95px,1fr));gap:8px;margin:10px 0}.ap-brand-picker button{background:#fff;color:#17303d;border:2px solid transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:9px;gap:5px}.ap-brand-picker button[aria-pressed=true]{border-color:#f88002;box-shadow:0 0 0 2px #f8800240}.ap-brand-picker img{height:34px;width:80px;object-fit:contain}.ap-brand-picker span{font-size:10px}.ap-specialties{border:0;padding:0;margin:8px 0}.ap-specialties legend{margin-bottom:8px;font-size:12px;color:#b3ccd8}.ap-specialties button{margin:0 6px 6px 0}.ap-specialties button[aria-pressed=true]{background:#194554;border-color:#5eeaff;color:#fff}.ap-dropzone{border:2px dashed #416576;border-radius:12px;padding:20px;background:#091f2b}.ap-dropzone.dragover{border-color:#5eeaff;background:#123b4b}.ap-dropzone input{max-width:100%;box-sizing:border-box}.ap-dropzone:focus-within{border-color:#5eeaff}.ap-form-grid label[hidden]{display:none}
@media(max-width:600px){.ap-avatar-block{width:120px}.ap-avatar-brand{padding:5px}.ap-avatar-brand img{width:52px}.ap-brand-picker{grid-template-columns:repeat(3,minmax(0,1fr))}.ap-brand-picker img{max-width:100%}}
.ap-brand-picker button{min-height:54px;padding:8px}.ap-brand-picker img{height:36px}.ap-upload-status{overflow-wrap:anywhere;color:#8de5ed;font-size:14px;line-height:1.5}.ap-upload-preview{display:block;max-width:180px;max-height:180px;object-fit:contain;margin-top:12px;border-radius:10px}.ap-setup-part{margin-top:18px;padding:16px!important;background:#091923;border:1px solid #2b5263;border-radius:10px}.ap-setup-part h4{font-size:18px}.ap-setup>.ap-kicker{margin-bottom:18px}.ap-dropzone label{display:block;margin-top:12px}
.ap-brand{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.ap-card-logo{width:82px;height:34px;object-fit:contain;background:#fff;border-radius:6px;padding:7px;box-sizing:content-box}
/* =========================================================
   SKITRIBE ATHLETE CARD 2026
   Hero / medical status / diagonal ski brand / gear seasons
   ========================================================= */


/* ---------- AVATAR + FASCIA SCI ---------- */

.ap-avatar-wrap{
  position:relative;
  display:inline-flex;
  overflow:hidden;
  border-radius:24px;
}

.ap-avatar-wrap .ap-avatar{
  position:relative;
  z-index:1;
}


/* fascia diagonale nell'angolo alto destro */
.ap-ski-ribbon{
  position:absolute;
  z-index:5;

  width:120px;
  height:34px;

  top:14px;
  right:-34px;

  transform:rotate(45deg);
  transform-origin:center;

  display:flex;
  align-items:center;
  justify-content:center;

  background:rgba(255,255,255,.94);
  border-top:1px solid rgba(255,255,255,.65);
  border-bottom:1px solid rgba(0,0,0,.12);

  box-shadow:
    0 4px 12px rgba(0,0,0,.20);

  pointer-events:none;
}


.ap-ski-ribbon-inner{
  width:72px;
  height:24px;

  display:flex;
  align-items:center;
  justify-content:center;

  /* Il logo segue la stessa inclinazione della fascia */
  transform:none;
}


/* normalizzazione visiva marchi */
.ap-ski-ribbon-inner img{
  display:block;

  width:auto;
  height:auto;

  max-width:64px;
  max-height:22px;

  object-fit:contain;
  object-position:center;

  margin:auto;
}


/*
 * Alcuni file PNG/SVG possono avere molto spazio trasparente.
 * JS potrà aggiungere classi specifiche al marchio.
 */
.ap-ski-ribbon-inner img[data-brand="atomic"]{
  transform:scale(1.22);
}

.ap-ski-ribbon-inner img[data-brand="head"]{
  transform:scale(.93);
}



/* ---------- STATO VISITA MEDICA NELLA CARD ---------- */

.ap-medical-inline{
  display:flex;
  align-items:center;
  gap:7px;

  margin-top:9px;

  width:max-content;
  max-width:100%;

  padding:6px 10px;

  border-radius:999px;

  font-size:.82rem;
  font-weight:800;

  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.12);
}


.ap-medical-inline-dot{
  width:8px;
  height:8px;

  flex:0 0 8px;

  border-radius:50%;

  background:#aeb5bf;
  box-shadow:0 0 0 3px rgba(174,181,191,.15);
}


/* valida */
.ap-medical-inline.is-valid{
  color:#75e6a4;

  background:rgba(30,185,103,.10);
  border-color:rgba(30,185,103,.24);
}

.ap-medical-inline.is-valid .ap-medical-inline-dot{
  background:#35d47d;
  box-shadow:0 0 0 3px rgba(53,212,125,.17);
}


/* prossima alla scadenza */
.ap-medical-inline.is-warning{
  color:#ffd166;

  background:rgba(255,193,7,.10);
  border-color:rgba(255,193,7,.24);
}

.ap-medical-inline.is-warning .ap-medical-inline-dot{
  background:#ffc83d;
  box-shadow:0 0 0 3px rgba(255,200,61,.17);
}


/* scaduta */
.ap-medical-inline.is-expired{
  color:#ff8e95;

  background:rgba(239,68,68,.10);
  border-color:rgba(239,68,68,.25);
}

.ap-medical-inline.is-expired .ap-medical-inline-dot{
  background:#ff5e68;
  box-shadow:0 0 0 3px rgba(255,94,104,.18);
}



/* =========================================================
   MATERIALI RAPIDI PER STAGIONE
   ========================================================= */

.ap-gear-season{
  position:relative;

  display:grid;
  grid-template-columns:42px auto minmax(0,1fr) 42px;
  align-items:stretch;

  gap:8px;

  margin:12px 0 16px;

  padding:9px;

  border-radius:18px;

  background:
    linear-gradient(
      135deg,
      rgba(29,69,105,.72),
      rgba(25,46,72,.86)
    );

  border:1px solid rgba(255,255,255,.11);

  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.05),
    0 8px 26px rgba(0,0,0,.11);
}



/* ---------- ANNO ---------- */

.ap-gear-year-box{
  min-width:62px;

  display:flex;
  align-items:center;
  justify-content:center;

  padding:0 12px;

  border-radius:12px;

  font-size:.92rem;
  font-weight:900;
  letter-spacing:.04em;

  color:#fff;

  background:
    linear-gradient(
      135deg,
      rgba(57,151,225,.95),
      rgba(44,116,181,.95)
    );

  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.18);
}



/* ---------- FRECCE ---------- */

.ap-gear-year-arrow{
  appearance:none;

  display:flex;
  align-items:center;
  justify-content:center;

  width:42px;
  min-width:42px;

  padding:0;

  border:0;
  border-radius:12px;

  cursor:pointer;

  font-size:28px;
  line-height:1;

  color:#fff;

  background:rgba(255,255,255,.08);

  transition:
    transform .15s ease,
    background .15s ease,
    opacity .15s ease;
}


.ap-gear-year-arrow:hover{
  background:rgba(255,255,255,.16);
  transform:scale(1.04);
}


.ap-gear-year-arrow:active{
  transform:scale(.96);
}


.ap-gear-year-arrow:disabled{
  opacity:.25;
  cursor:default;
  transform:none;
}



/* ---------- STRISCIA MATERIALI ---------- */

.ap-gear-strip{
  display:flex;
  align-items:stretch;

  gap:7px;

  min-width:0;

  overflow-x:auto;
  overflow-y:hidden;

  scroll-behavior:smooth;
  scroll-snap-type:x proximity;

  overscroll-behavior-x:contain;

  -webkit-overflow-scrolling:touch;

  /*
   * Permette anche lo scorrimento naturale
   * con trackpad.
   */
  touch-action:pan-x;

  scrollbar-width:none;
}


.ap-gear-strip::-webkit-scrollbar{
  display:none;
}

/* =========================================================
   SKITRIBE - BARRA MATERIALI DEFINITIVA
   ========================================================= */


/* ----- BOX MATERIALE ----- */

.ap-gear-chip{
  appearance:none;

  flex:0 0 auto;

  width:220px;
  min-width:220px;
  height:76px;

  display:grid;
  grid-template-columns:58px minmax(0,1fr);
  align-items:center;

  column-gap:12px;

  padding:8px 14px;

  border-radius:16px;

  cursor:pointer;

  scroll-snap-align:start;

  box-sizing:border-box;

  transition:
    transform .15s ease,
    border-color .15s ease,
    box-shadow .15s ease;
}


/* materiale PRESENTE */
.ap-gear-chip:not(.is-empty){
  background:#ffffff;

  border:1px solid rgba(0,0,0,.08);

  color:#10263a;

  box-shadow:
    0 2px 8px rgba(0,0,0,.10);
}


.ap-gear-chip:not(.is-empty):hover{
  transform:translateY(-2px);

  box-shadow:
    0 5px 14px rgba(0,0,0,.14);
}


/* materiale MANCANTE */
.ap-gear-chip.is-empty{
  background:#ffffff;

  border:2px dashed rgba(54,148,214,.42);

  color:#173149;

  box-shadow:none;
}


.ap-gear-chip.is-empty:hover{
  border-color:rgba(54,148,214,.80);

  background:#f7fbfe;

  transform:translateY(-1px);
}



/* =========================================================
   ICONA MATERIALE - SEMPRE A SINISTRA
   ========================================================= */

.ap-gear-type-icon{
  grid-column:1;

  width:52px;
  height:60px;

  display:flex;
  align-items:center;
  justify-content:center;

  margin:0;

  background:transparent !important;

  overflow:hidden;

  color:#111;
}


.ap-gear-icon-image{
  display:block;

  width:auto;
  height:auto;

  max-width:48px;
  max-height:56px;

  object-fit:contain;

  margin:auto;
}



/* =========================================================
   AREA LOGHI - SEMPRE A DESTRA
   ========================================================= */

.ap-gear-brands-wrap{
  grid-column:2;

  width:100%;
  min-width:0;
  height:60px;

  display:flex;
  flex-direction:column;

  align-items:center;
  justify-content:center;

  gap:3px;

  overflow:hidden;
}


/* contenitore di ogni singolo marchio */
.ap-gear-brands-wrap .ap-gear-brand{
  width:100%;
  min-width:0;
  height:auto;

  display:flex;
  align-items:center;
  justify-content:center;

  overflow:visible;
}


/* UN SOLO MARCHIO:
   logo grande */
.ap-gear-brands-wrap
.ap-gear-brand:only-child img{
  display:block;

  width:auto !important;
  height:auto !important;

  max-width:112px !important;
  max-height:38px !important;

  object-fit:contain;

  margin:auto;
}


/* DUE O PIÙ MARCHI:
   uno sopra l'altro */
.ap-gear-brands-wrap
.ap-gear-brand:not(:only-child){
  height:27px;
}


.ap-gear-brands-wrap
.ap-gear-brand:not(:only-child) img{
  display:block;

  width:auto !important;
  height:auto !important;

  max-width:96px !important;
  max-height:25px !important;

  object-fit:contain;

  margin:auto;
}


/* fallback se manca il logo ma esiste il nome marca */
.ap-gear-brands-wrap strong{
  display:block;

  max-width:100%;

  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;

  color:#10263a;

  font-size:.80rem;
  font-weight:900;
  text-align:center;
}



/* =========================================================
   MATERIALE MANCANTE
   ========================================================= */

.ap-gear-chip.is-empty .ap-gear-type-icon{
  opacity:.72;
}


.ap-gear-chip.is-empty .ap-gear-icon-image{
  opacity:.72;
}


.ap-gear-empty-plus{
  grid-column:2;

  width:34px;
  height:34px;

  display:flex;
  align-items:center;
  justify-content:center;

  justify-self:center;

  border-radius:50%;

  background:#dcebf6;

  color:#173149;

  font-size:27px;
  line-height:1;
  font-weight:700;
}



/* =========================================================
   STRISCIA ORIZZONTALE
   ========================================================= */

.ap-gear-strip{
  display:flex;
  align-items:center;

  gap:10px;

  min-width:0;

  overflow-x:auto;
  overflow-y:hidden;

  scroll-behavior:smooth;
  scroll-snap-type:x proximity;

  overscroll-behavior-x:contain;

  -webkit-overflow-scrolling:touch;

  touch-action:pan-x;

  scrollbar-width:none;
}


.ap-gear-strip::-webkit-scrollbar{
  display:none;
}



/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width:720px){

  .ap-gear-chip{
    width:190px;
    min-width:190px;
    height:70px;

    grid-template-columns:50px minmax(0,1fr);

    column-gap:9px;

    padding:7px 11px;
  }


  .ap-gear-type-icon{
    width:46px;
    height:54px;
  }


  .ap-gear-icon-image{
    max-width:43px;
    max-height:50px;
  }


  .ap-gear-brands-wrap{
    height:54px;
  }


  .ap-gear-brands-wrap
  .ap-gear-brand:only-child img{
    max-width:96px !important;
    max-height:34px !important;
  }


  .ap-gear-brands-wrap
  .ap-gear-brand:not(:only-child){
    height:24px;
  }


  .ap-gear-brands-wrap
  .ap-gear-brand:not(:only-child) img{
    max-width:82px !important;
    max-height:22px !important;
  }

}
/* =========================================================
   RIDUZIONE DIMENSIONI BARRA MATERIALI
   ========================================================= */

.ap-gear-chip{
  width:180px !important;
  min-width:180px !important;
  height:62px !important;

  grid-template-columns:44px minmax(0,1fr) !important;

  column-gap:8px !important;

  padding:6px 10px !important;

  border-radius:13px !important;
}


/* icona materiale */
.ap-gear-type-icon{
  width:40px !important;
  height:48px !important;
}


.ap-gear-icon-image{
  max-width:38px !important;
  max-height:44px !important;
}


/* area loghi */
.ap-gear-brands-wrap{
  height:48px !important;
  gap:1px !important;
}


/* un solo logo */
.ap-gear-brands-wrap
.ap-gear-brand:only-child img{
  max-width:90px !important;
  max-height:29px !important;
}


/* due o più loghi */
.ap-gear-brands-wrap
.ap-gear-brand:not(:only-child){
  height:22px !important;
}


.ap-gear-brands-wrap
.ap-gear-brand:not(:only-child) img{
  max-width:76px !important;
  max-height:19px !important;
}


/* anno */
.ap-gear-year-box{
  min-width:74px !important;
  padding:0 12px !important;

  font-size:1rem !important;
}


/* frecce */
.ap-gear-year-arrow{
  width:42px !important;
  min-width:42px !important;
}


/* distanza fra i box */
.ap-gear-strip{
  gap:8px !important;
}
/* RIDUZIONE FINALE BARRA MATERIALI */

.ap-gear-chip{
  width:160px !important;
  min-width:160px !important;
  height:54px !important;

  grid-template-columns:38px minmax(0,1fr) !important;

  column-gap:7px !important;

  padding:5px 8px !important;

  border-radius:12px !important;
}

.ap-gear-type-icon{
  width:34px !important;
  height:42px !important;
}

.ap-gear-icon-image{
  max-width:32px !important;
  max-height:38px !important;
}

.ap-gear-brands-wrap{
  height:42px !important;
  gap:0 !important;
}

.ap-gear-brands-wrap
.ap-gear-brand:only-child img{
  max-width:78px !important;
  max-height:24px !important;
}

.ap-gear-brands-wrap
.ap-gear-brand:not(:only-child){
  height:19px !important;
}

.ap-gear-brands-wrap
.ap-gear-brand:not(:only-child) img{
  max-width:68px !important;
  max-height:17px !important;
}

.ap-gear-year-box{
  min-width:64px !important;
  padding:0 10px !important;
  font-size:.92rem !important;
}

.ap-gear-year-arrow{
  width:38px !important;
  min-width:38px !important;
}

.ap-gear-strip{
  gap:6px !important;
}
/* BOX MATERIALI PIÙ STRETTI - icone e loghi invariati */

.ap-gear-chip{
  width:160px !important;
  min-width:160px !important;

  grid-template-columns:38px minmax(0,1fr) !important;

  column-gap:4px !important;

  padding-left:6px !important;
  padding-right:6px !important;
}

.ap-gear-strip{
  gap:5px !important;
}
/* =========================================================
   SKITRIBE CALENDARIO
   ========================================================= */

.ap-calendar-card{
  margin-top:14px;
  padding:16px;

  border-radius:18px;

  background:
    linear-gradient(
      145deg,
      rgba(21,50,75,.95),
      rgba(12,31,49,.98)
    );

  border:1px solid rgba(255,255,255,.10);

  box-shadow:
    0 10px 28px rgba(0,0,0,.16);
}


/* toolbar mese */

.ap-calendar-toolbar{
  display:grid;
  grid-template-columns:44px 1fr 44px;
  align-items:center;

  gap:10px;

  margin-bottom:14px;
}

.ap-calendar-title{
  text-align:center;
}

.ap-calendar-title strong{
  font-size:1.15rem;
  color:#fff;
}

.ap-calendar-nav{
  width:44px;
  height:40px;

  border:0;
  border-radius:11px;

  background:rgba(255,255,255,.08);
  color:#fff;

  font-size:26px;

  cursor:pointer;
}

.ap-calendar-nav:hover{
  background:rgba(255,255,255,.15);
}


/* giorni settimana */

.ap-calendar-weekdays{
  display:grid;
  grid-template-columns:repeat(7,1fr);

  gap:5px;

  margin-bottom:5px;
}

.ap-calendar-weekdays span{
  text-align:center;

  font-size:.68rem;
  font-weight:900;

  letter-spacing:.06em;

  color:rgba(255,255,255,.55);
}


/* griglia */

.ap-calendar-grid{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));

  gap:5px;
}

.ap-calendar-day{
  position:relative;

  min-height:92px;

  padding:8px;

  border-radius:11px;

  background:rgba(255,255,255,.055);

  border:1px solid rgba(255,255,255,.07);

  overflow:hidden;
}

.ap-calendar-day:hover{
  background:rgba(255,255,255,.085);
}

.ap-calendar-day-number{
  display:inline-flex;

  min-width:24px;
  height:24px;

  align-items:center;
  justify-content:center;

  border-radius:7px;

  font-size:.78rem;
  font-weight:900;

  color:#fff;
}


/* oggi */

.ap-calendar-day.is-today{
  border-color:rgba(72,174,239,.55);
}

.ap-calendar-day.is-today .ap-calendar-day-number{
  background:#3b91ce;
}


/* eventi */

.ap-calendar-event{
  display:flex;
  align-items:center;

  gap:5px;

  margin-top:5px;
  padding:4px 6px;

  border-radius:7px;

  font-size:.66rem;
  font-weight:800;

  line-height:1.15;

  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.ap-calendar-event.is-race{
  background:rgba(69,142,220,.24);
  color:#9fd1ff;
}

.ap-calendar-event.is-training{
  background:rgba(44,190,126,.20);
  color:#84e8b6;
}

.ap-calendar-event.is-medical{
  background:rgba(238,89,96,.20);
  color:#ff9ca2;
}

.ap-calendar-event.is-equipment{
  background:rgba(235,178,62,.20);
  color:#ffd478;
}

.ap-calendar-event.is-growth{
  background:rgba(151,102,221,.22);
  color:#c9a7ff;
}


/* podi */

.ap-calendar-medal{
  display:inline-flex;

  width:18px;
  height:18px;

  align-items:center;
  justify-content:center;

  border-radius:50%;

  font-size:.62rem;
  font-weight:900;
}

.ap-calendar-medal.is-gold{
  background:#e8b93f;
  color:#3c2b00;
}

.ap-calendar-medal.is-silver{
  background:#cbd2d8;
  color:#24303a;
}

.ap-calendar-medal.is-bronze{
  background:#b87843;
  color:#281304;
}


/* top / flop */

.ap-calendar-rating{
  display:inline-flex;

  align-items:center;
  gap:3px;

  font-size:.68rem;
  font-weight:900;
}

.ap-calendar-rating.is-top{
  color:#77e7ac;
}

.ap-calendar-rating.is-flop{
  color:#ff8a92;
}


/* legenda */

.ap-calendar-legend{
  display:flex;
  flex-wrap:wrap;

  gap:8px;

  margin-top:13px;
}

.ap-calendar-legend span{
  padding:5px 8px;

  border-radius:999px;

  font-size:.68rem;
  font-weight:800;
}

.ap-calendar-legend .is-race{
  background:rgba(69,142,220,.24);
  color:#9fd1ff;
}

.ap-calendar-legend .is-training{
  background:rgba(44,190,126,.20);
  color:#84e8b6;
}

.ap-calendar-legend .is-medical{
  background:rgba(238,89,96,.20);
  color:#ff9ca2;
}

.ap-calendar-legend .is-equipment{
  background:rgba(235,178,62,.20);
  color:#ffd478;
}

.ap-calendar-legend .is-growth{
  background:rgba(151,102,221,.22);
  color:#c9a7ff;
}


/* azioni rapide */

.ap-calendar-actions{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));

  gap:8px;

  margin-top:16px;
}

.ap-calendar-action{
  min-height:44px;

  padding:8px 10px;

  border:1px solid rgba(255,255,255,.12);
  border-radius:11px;

  background:rgba(255,255,255,.07);

  color:#fff;

  font-size:.76rem;
  font-weight:800;

  cursor:pointer;
}

.ap-calendar-action:hover{
  background:rgba(255,255,255,.13);
}


/* mobile */

@media (max-width:720px){

  .ap-calendar-card{
    padding:10px;
  }

  .ap-calendar-grid{
    gap:3px;
  }

  .ap-calendar-day{
    min-height:74px;
    padding:5px;
  }

  .ap-calendar-day-number{
    min-width:20px;
    height:20px;
    font-size:.70rem;
  }

  .ap-calendar-event{
    padding:3px 4px;
    font-size:.58rem;
  }

  .ap-calendar-actions{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

}
/* giorni del mese precedente / successivo */

.ap-calendar-day.is-outside{
  opacity:.35;
}

.ap-calendar-event{
  width:100%;
  border:0;
  text-align:left;
  cursor:pointer;
}

.ap-calendar-event:hover{
  filter:brightness(1.15);
}
.ap-calendar-today{
  border:1px solid rgba(255,255,255,.12);
  border-radius:10px;
  padding:7px 12px;
  background:rgba(255,255,255,.08);
  color:#fff;
  font-size:.72rem;
  font-weight:800;
  cursor:pointer;
}

.ap-calendar-today:hover{
  background:rgba(255,255,255,.15);
}
/* FIX TOOLBAR CALENDARIO */

.ap-calendar-toolbar{
  display:grid !important;

  grid-template-columns:
    auto
    44px
    minmax(0,1fr)
    44px !important;

  align-items:center !important;

  gap:10px !important;

  margin-bottom:14px !important;
}

.ap-calendar-today{
  grid-column:1;
  justify-self:start;
}

.ap-calendar-nav[data-ap-calendar-prev]{
  grid-column:2;
}

.ap-calendar-title{
  grid-column:3;
  text-align:center !important;
}

.ap-calendar-nav[data-ap-calendar-next]{
  grid-column:4;
}

.ap-calendar-title strong{
  display:block;
  white-space:nowrap;
}
/* =========================================================
   NUOVO ALLENAMENTO
   ========================================================= */

.ap-training-editor{
  display:flex;
  flex-direction:column;
  gap:18px;
}


/* modalità singolo / periodo */

.ap-training-mode{
  display:grid;
  grid-template-columns:1fr 1fr;

  gap:8px;
}

.ap-training-mode-btn{
  min-height:46px;

  border:1px solid rgba(255,255,255,.12);
  border-radius:12px;

  background:rgba(255,255,255,.05);

  color:#b8cad8;

  font-weight:900;

  cursor:pointer;
}

.ap-training-mode-btn.is-active{
  background:rgba(56,158,217,.20);
  border-color:#38a5d9;
  color:#6bdcff;
}


/* griglia campi */

.ap-form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));

  gap:12px;
}

.ap-training-field{
  display:flex;
  flex-direction:column;

  gap:6px;
}

.ap-training-label{
  font-size:.75rem;
  font-weight:900;

  color:#b7cad8;
}

.ap-training-field input,
.ap-training-field select,
.ap-training-field textarea{
  width:100%;

  box-sizing:border-box;

  min-height:42px;

  padding:9px 11px;

  border:1px solid rgba(255,255,255,.13);
  border-radius:10px;

  background:#081a28;

  color:#fff;
}

.ap-training-field textarea{
  resize:vertical;
}

.ap-training-field-full{
  margin-top:10px;
}


/* AM PM */

.ap-choice-row{
  display:flex;
  flex-wrap:wrap;

  gap:8px;
}

.ap-choice-row label{
  display:flex;
  align-items:center;

  gap:5px;

  padding:9px 11px;

  border-radius:9px;

  background:rgba(255,255,255,.06);
}


/* meteo */

.ap-weather-row{
  display:grid;
  grid-template-columns:1fr 100px;

  gap:7px;
}


/* sessioni */

.ap-training-sessions{
  display:flex;
  flex-direction:column;

  gap:12px;

  margin-top:16px;
}

.ap-training-session{
  padding:14px;

  border:1px solid rgba(255,255,255,.10);
  border-radius:15px;

  background:rgba(255,255,255,.035);
}

.ap-training-session-head{
  display:flex;
  align-items:center;
  justify-content:space-between;

  margin-bottom:12px;
}

.ap-training-session-number{
  display:flex;

  width:28px;
  height:28px;

  align-items:center;
  justify-content:center;

  border-radius:50%;

  background:#247db2;

  font-size:.72rem;
  font-weight:900;
}

.ap-add-session{
  margin-top:10px;

  min-height:42px;

  border:1px dashed rgba(94,190,235,.45);
  border-radius:11px;

  background:rgba(50,149,203,.08);

  color:#66d8ff;

  font-weight:900;

  cursor:pointer;
}


/* secondi */

.ap-course-time{
  display:grid;
  grid-template-columns:1fr auto;

  align-items:center;

  gap:6px;
}

.ap-course-time span{
  color:#9db2c1;
}


/* periodo */

.ap-period-info{
  margin-top:14px;

  padding:11px 13px;

  border-radius:10px;

  background:rgba(56,158,217,.09);

  color:#a9dff7;

  font-size:.78rem;
}


/* fondo */

.ap-training-actions{
  display:flex;
  justify-content:flex-end;

  gap:8px;

  padding-top:4px;
}


@media (max-width:720px){

  .ap-form-grid{
    grid-template-columns:1fr;
  }

  .ap-training-mode{
    grid-template-columns:1fr;
  }

  .ap-weather-row{
    grid-template-columns:1fr 85px;
  }

}
/* =========================================================
   TRAINING SESSION - COLORI E CONTROLLI
   ========================================================= */

.ap-training-session{
  position:relative;

  border-left:4px solid #37a6d9;

  background:
    linear-gradient(
      135deg,
      rgba(43,116,159,.10),
      rgba(255,255,255,.025)
    );
}


/* testata */

.ap-training-session-title{
  display:flex;
  align-items:center;
  gap:9px;
}

.ap-training-session-badge{
  width:30px;
  height:30px;

  display:flex;
  align-items:center;
  justify-content:center;

  border-radius:9px;

  background:#2787bd;

  color:#fff;

  font-weight:900;
}

.ap-training-session-tools{
  display:flex;
  gap:6px;
}

.ap-session-tool{
  width:34px;
  height:34px;

  border:1px solid rgba(255,255,255,.12);
  border-radius:9px;

  background:rgba(255,255,255,.06);

  color:#bed1dd;

  font-size:18px;

  cursor:pointer;
}

.ap-session-tool:hover{
  background:rgba(255,255,255,.12);
}

.ap-session-tool.is-delete:hover{
  color:#ff8088;

  border-color:rgba(255,90,100,.35);

  background:rgba(255,70,80,.10);
}


/* =============================
   CAMPI COLORATI
   ============================= */

.ap-field-time .ap-training-label{
  color:#ffd36c;
}

.ap-field-slope .ap-training-label{
  color:#9ed0eb;
}

.ap-field-specialty .ap-training-label{
  color:#64ddff;
}

.ap-field-laps .ap-training-label{
  color:#65baff;
}

.ap-field-completed .ap-training-label{
  color:#65e5a1;
}

.ap-field-gates .ap-training-label{
  color:#ffae59;
}

.ap-field-timecourse .ap-training-label{
  color:#c7a0ff;
}

.ap-field-notes .ap-training-label{
  color:#d3dde5;
}


/* =============================
   RANGE
   ============================= */

.ap-range-row{
  display:grid;

  grid-template-columns:
    minmax(100px,1fr)
    70px;

  align-items:center;

  gap:10px;
}

.ap-range-row input[type="range"]{
  min-height:0;

  padding:0;

  accent-color:#38a8e0;
}

.ap-range-row input[type="number"]{
  text-align:center;

  font-weight:900;
}


/* =============================
   TOP / FLOP
   ============================= */

.ap-training-evaluation{
  margin-top:15px;
}

.ap-rating-buttons{
  display:grid;

  grid-template-columns:
    repeat(3,minmax(0,1fr));

  gap:7px;

  margin-top:7px;
}

.ap-rating-button{
  min-height:42px;

  border:1px solid rgba(255,255,255,.10);

  border-radius:10px;

  background:rgba(255,255,255,.045);

  color:#aebfcb;

  font-weight:900;

  cursor:pointer;

  opacity:.70;
}


.ap-rating-button.is-flop{
  color:#ff8b93;
}

.ap-rating-button.is-top{
  color:#69e39f;
}


.ap-rating-button.is-selected{
  opacity:1;

  transform:translateY(-1px);
}


.ap-rating-button.is-flop.is-selected{
  background:rgba(229,67,77,.18);
  border-color:#d94a54;
}

.ap-rating-button.is-neutral.is-selected{
  background:rgba(130,150,165,.14);
  border-color:#778b9a;
}

.ap-rating-button.is-top.is-selected{
  background:rgba(44,189,113,.17);
  border-color:#35bb74;
}


/* =============================
   STELLE
   ============================= */

.ap-stars{
  display:flex;

  gap:3px;

  margin-top:10px;
}

.ap-stars button{
  appearance:none;

  border:0;
  padding:1px;

  background:transparent;

  color:#52616c;

  font-size:27px;
  line-height:1;

  cursor:pointer;
}

.ap-stars button:hover,
.ap-stars button.is-active{
  color:#ffc83d;
}


/* =============================
   SPECIALITÀ - ACCENTI
   ============================= */

.ap-training-session[data-specialty="SL"]{
  border-left-color:#ef5a63;
}

.ap-training-session[data-specialty="GS"]{
  border-left-color:#3aa9ef;
}

.ap-training-session[data-specialty="SG"]{
  border-left-color:#ff9f43;
}

.ap-training-session[data-specialty="DH"]{
  border-left-color:#9474e8;
}

.ap-training-session[data-specialty="campo_libero"]{
  border-left-color:#4dc78a;
}


@media(max-width:720px){

  .ap-rating-buttons{
    grid-template-columns:1fr;
  }

  .ap-range-row{
    grid-template-columns:
      minmax(0,1fr)
      64px;
  }

}
/* =========================================
   STELLE - ANTEPRIMA AL PASSAGGIO DEL MOUSE
   ========================================= */

/* 1 stella */
.ap-stars:has(button[data-star="1"]:hover)
button[data-star="1"]{
  color:#ffc83d;
}

/* 2 stelle */
.ap-stars:has(button[data-star="2"]:hover)
button[data-star="1"],
.ap-stars:has(button[data-star="2"]:hover)
button[data-star="2"]{
  color:#ffc83d;
}

/* 3 stelle */
.ap-stars:has(button[data-star="3"]:hover)
button[data-star="1"],
.ap-stars:has(button[data-star="3"]:hover)
button[data-star="2"],
.ap-stars:has(button[data-star="3"]:hover)
button[data-star="3"]{
  color:#ffc83d;
}

/* 4 stelle */
.ap-stars:has(button[data-star="4"]:hover)
button[data-star="1"],
.ap-stars:has(button[data-star="4"]:hover)
button[data-star="2"],
.ap-stars:has(button[data-star="4"]:hover)
button[data-star="3"],
.ap-stars:has(button[data-star="4"]:hover)
button[data-star="4"]{
  color:#ffc83d;
}

/* 5 stelle */
.ap-stars:has(button[data-star="5"]:hover)
button[data-star="1"],
.ap-stars:has(button[data-star="5"]:hover)
button[data-star="2"],
.ap-stars:has(button[data-star="5"]:hover)
button[data-star="3"],
.ap-stars:has(button[data-star="5"]:hover)
button[data-star="4"],
.ap-stars:has(button[data-star="5"]:hover)
button[data-star="5"]{
  color:#ffc83d;
}
/* =========================================================
   RIEPILOGO SESSIONE ALLENAMENTO
   ========================================================= */

.ap-training-summary{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));

  gap:8px;

  margin-top:15px;
  margin-bottom:16px;
}

.ap-training-summary-item{
  min-height:68px;

  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;

  gap:4px;

  padding:10px 8px;

  border:1px solid rgba(255,255,255,.10);
  border-radius:12px;

  background:rgba(255,255,255,.045);

  text-align:center;
}

.ap-training-summary-item span{
  color:#91a9b8;

  font-size:11px;
  font-weight:700;

  text-transform:uppercase;
  letter-spacing:.05em;
}

.ap-training-summary-item strong{
  color:#fff;

  font-size:21px;
  font-weight:900;
}

.ap-training-summary-item:nth-child(1) strong{
  color:#ffae59;
}

.ap-training-summary-item:nth-child(2) strong{
  color:#65baff;
}

.ap-training-summary-item:nth-child(3) strong{
  color:#65e5a1;
}


@media(max-width:600px){

  .ap-training-summary{
    grid-template-columns:1fr 1fr 1fr;
    gap:5px;
  }

  .ap-training-summary-item{
    padding:8px 4px;
  }

  .ap-training-summary-item strong{
    font-size:18px;
  }

  .ap-training-summary-item span{
    font-size:9px;
  }

}
.ap-session-duplicate{
  width:auto;
  padding:0 11px;

  display:flex;
  align-items:center;
  gap:6px;

  font-size:13px;
  font-weight:800;
}

.ap-session-duplicate span{
  white-space:nowrap;
}
.ap-calendar-event.is-training{
  white-space:pre-line !important;
  line-height:1.2;
  text-align:left;
  height:auto;
}
/* =========================================================
   DETTAGLIO ALLENAMENTO
   ========================================================= */

.ap-training-detail{
  display:flex;
  flex-direction:column;
  gap:16px;
}

.ap-training-detail-header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;

  padding:14px;

  border:1px solid rgba(255,255,255,.10);
  border-radius:14px;

  background:rgba(255,255,255,.045);
}

.ap-training-detail-date{
  display:block;

  font-size:20px;
  color:#fff;
}

.ap-training-detail-location{
  margin-top:4px;

  color:#6bdcff;
  font-weight:800;
}

.ap-training-detail-weather{
  color:#b8cad5;
  font-weight:700;
  text-align:right;
}


.ap-training-detail-sessions{
  display:flex;
  flex-direction:column;
  gap:12px;
}

.ap-training-detail-session{
  padding:14px;

  border:1px solid rgba(255,255,255,.10);
  border-left:4px solid #37a6d9;

  border-radius:14px;

  background:rgba(255,255,255,.035);
}

.ap-training-detail-session-head{
  display:flex;
  align-items:center;
  justify-content:space-between;

  gap:10px;

  margin-bottom:10px;
}

.ap-training-detail-session-head strong{
  font-size:18px;
}


.ap-training-detail-rating{
  padding:5px 9px;

  border-radius:8px;

  font-size:12px;
  font-weight:900;
}

.ap-training-detail-rating.is-top{
  color:#69e39f;
  background:rgba(44,189,113,.14);
}

.ap-training-detail-rating.is-flop{
  color:#ff8b93;
  background:rgba(229,67,77,.14);
}

.ap-training-detail-rating.is-neutral{
  color:#aebfcb;
  background:rgba(130,150,165,.12);
}


.ap-training-detail-meta{
  display:flex;
  flex-wrap:wrap;
  gap:7px;

  margin-bottom:12px;
}

.ap-training-detail-meta span{
  padding:5px 8px;

  border-radius:8px;

  background:rgba(255,255,255,.06);

  color:#bdd1dc;

  font-size:12px;
  font-weight:700;
}


.ap-training-detail-stats{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));

  gap:7px;
}

.ap-training-detail-stats > div{
  padding:9px 6px;

  border-radius:10px;

  background:rgba(255,255,255,.05);

  text-align:center;
}

.ap-training-detail-stats small{
  display:block;

  color:#8da6b5;

  font-size:10px;
  font-weight:700;

  text-transform:uppercase;
}

.ap-training-detail-stats strong{
  display:block;

  margin-top:3px;

  font-size:17px;
  color:#fff;
}


.ap-training-detail-stars{
  display:flex;
  gap:2px;

  margin-top:11px;

  font-size:22px;
}

.ap-training-detail-stars span{
  color:#52616c;
}

.ap-training-detail-stars span.is-active{
  color:#ffc83d;
}


.ap-training-detail-notes{
  margin-top:12px;
  padding-top:10px;

  border-top:1px solid rgba(255,255,255,.08);
}

.ap-training-detail-notes strong{
  color:#d5e2e9;
}

.ap-training-detail-notes p{
  margin:5px 0 0;

  color:#aebfca;
  white-space:pre-wrap;
}


.ap-training-detail-actions{
  display:flex;
  justify-content:flex-end;
}


@media(max-width:650px){

  .ap-training-detail-header{
    flex-direction:column;
  }

  .ap-training-detail-weather{
    text-align:left;
  }

  .ap-training-detail-stats{
    grid-template-columns:1fr 1fr;
  }

}
.ap-training-detail-actions{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
}

.ap-training-detail-actions .danger{
  border-color:rgba(255,80,90,.35);
  color:#ff858d;
  background:rgba(210,50,60,.10);
}

.ap-training-detail-actions .danger:hover{
  border-color:#e1535c;
  background:rgba(210,50,60,.18);
  color:#fff;
}
/* =========================================================
   PERIODO DI ALLENAMENTO NEL CALENDARIO
   ========================================================= */

.ap-calendar-event.is-period{
  min-height:20px;
  padding:3px 7px;

  border-radius:0;

  background:rgba(86,170,255,.20);
  border:1px solid rgba(86,170,255,.35);

  color:#dff4ff;

  font-size:11px;
  font-weight:800;

  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;

  text-align:left;
}
/* =========================================================
   PERIODO DI ALLENAMENTO
   ========================================================= */

.ap-calendar-event.is-period{
  position:relative;

  width:100%;
  min-width:0;

  height:30px;
  min-height:30px;

  margin-top:6px;
  padding:0;

  border:0;

  background:transparent;

  color:#fff;

  font-size:11px;
  font-weight:900;

  text-align:left;

  overflow:visible;

  --period-color:#ff7a00;
  --period-line:5px;
}


/* =========================================
   INIZIO
   ========================================= */

.ap-calendar-event.is-period-start{
  padding:6px 18px 6px 10px;

  border:2px solid var(--period-color);
  border-radius:10px;

  background:rgba(255,122,0,.16);

  white-space:nowrap;
  overflow:visible;

  color:#ffb45f;
}

/* strozzatura */

.ap-calendar-event.is-period-start::before{
  content:"";

  position:absolute;

  top:50%;
  right:-13px;

  width:25px;
  height:18px;

  transform:translateY(-50%);

  background:var(--period-color);

  clip-path:polygon(
    0 0,
    48% 30%,
    100% 42%,
    100% 58%,
    48% 70%,
    0 100%
  );

  pointer-events:none;
}


/* linea dopo la strozzatura */

.ap-calendar-event.is-period-start::after{
  content:"";

  position:absolute;

  top:50%;

  left:calc(100% + 10px);
  right:-14px;

  height:var(--period-line);

  transform:translateY(-50%);

  background:var(--period-color);

  pointer-events:none;
}


/* =========================================
   CENTRO
   ========================================= */

.ap-calendar-event.is-period-middle{
  background:transparent;

  font-size:0;
}


/*
 * La linea centrale è posizionata
 * esattamente a metà dei 30px.
 */

.ap-calendar-event.is-period-middle::before{
  content:"";

  position:absolute;

  top:50%;

  left:-14px;
  right:-14px;

  height:var(--period-line);

  transform:translateY(-50%);

  background:var(--period-color);

  pointer-events:none;
}


/* =========================================
   FINE
   ========================================= */

.ap-calendar-event.is-period-end{
  padding:6px 10px 6px 18px;

  border:2px solid var(--period-color);
  border-radius:10px;

  background:rgba(255,122,0,.16);

  white-space:nowrap;
  overflow:visible;

  color:#ffb45f;
}

/* strozzatura sinistra */

.ap-calendar-event.is-period-end::before{
  content:"";

  position:absolute;

  top:50%;
  left:-13px;

  width:25px;
  height:18px;

  transform:translateY(-50%);

  background:var(--period-color);

  clip-path:polygon(
    100% 0,
    52% 30%,
    0 42%,
    0 58%,
    52% 70%,
    100% 100%
  );

  pointer-events:none;
}


/* linea che entra nella pillola */

.ap-calendar-event.is-period-end::after{
  content:"";

  position:absolute;

  top:50%;

  right:calc(100% + 10px);
  left:-14px;

  height:var(--period-line);

  transform:translateY(-50%);

  background:var(--period-color);

  pointer-events:none;
}


/* =========================================
   PERIODO DI UN SOLO GIORNO
   ========================================= */

.ap-calendar-event.is-period-start.is-period-end{
  padding:6px 10px;
  border-radius:10px;
}

.ap-calendar-event.is-period-start.is-period-end::before,
.ap-calendar-event.is-period-start.is-period-end::after{
  display:none;
}
/* =========================================================
   DETTAGLIO PERIODO ALLENAMENTO
   ========================================================= */

.ap-training-period-detail{
  display:flex;
  flex-direction:column;
  gap:16px;
}


.ap-training-period-detail-header{
  display:flex;
  align-items:center;
  justify-content:space-between;

  gap:14px;

  padding:14px;

  border:1px solid rgba(255,122,0,.35);
  border-radius:14px;

  background:rgba(255,122,0,.08);
}


.ap-training-period-detail-title{
  color:#ffb45f;

  font-size:21px;
  font-weight:900;
}


.ap-training-period-status{
  padding:5px 9px;

  border-radius:8px;

  font-size:11px;
  font-weight:900;
}


.ap-training-period-status.is-planned{
  color:#ffb45f;
  background:rgba(255,122,0,.12);
}

.ap-training-period-status.is-active{
  color:#69e39f;
  background:rgba(44,189,113,.14);
}

.ap-training-period-status.is-completed{
  color:#8fc8ff;
  background:rgba(55,166,217,.14);
}


.ap-training-period-info{
  display:grid;
  grid-template-columns:
    repeat(3,minmax(0,1fr));

  gap:8px;
}


.ap-training-period-info > div{
  padding:10px;

  border-radius:10px;

  background:rgba(255,255,255,.045);

  text-align:center;
}


.ap-training-period-info small{
  display:block;

  color:#8da6b5;

  font-size:10px;
  font-weight:700;

  text-transform:uppercase;
}


.ap-training-period-info strong{
  display:block;

  margin-top:4px;

  color:#fff;
}


.ap-training-period-notes{
  padding:12px;

  border-radius:10px;

  background:rgba(255,255,255,.035);
}


.ap-training-period-notes p{
  margin:6px 0 0;

  color:#b9cad4;

  white-space:pre-wrap;
}


@media(max-width:650px){

  .ap-training-period-info{
    grid-template-columns:1fr;
  }

}
/* =========================================================
   RIEPILOGO PERIODO
   ========================================================= */

.ap-training-period-summary{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
}

.ap-training-period-summary > div{
  padding:10px 7px;

  border-radius:10px;

  background:rgba(255,255,255,.045);

  text-align:center;
}

.ap-training-period-summary small{
  display:block;

  color:#8da6b5;

  font-size:10px;
  font-weight:700;

  text-transform:uppercase;
}

.ap-training-period-summary strong{
  display:block;

  margin-top:3px;

  color:#fff;

  font-size:18px;
  font-weight:900;
}


.ap-training-period-breakdown{
  display:flex;
  flex-wrap:wrap;

  gap:7px;
}

.ap-training-period-breakdown span{
  padding:5px 8px;

  border-radius:8px;

  background:rgba(255,255,255,.055);

  color:#b9cad4;

  font-size:11px;
  font-weight:800;
}

.ap-training-period-breakdown .is-top{
  color:#69e39f;
}

.ap-training-period-breakdown .is-flop{
  color:#ff8b93;
}


/* GIORNATE */

.ap-training-period-days{
  display:flex;
  flex-direction:column;

  gap:7px;
}

.ap-training-period-days-title{
  margin-bottom:2px;

  color:#d9e5ec;
}


.ap-training-period-day{
  width:100%;

  display:flex;
  align-items:center;
  justify-content:space-between;

  gap:12px;

  padding:10px 12px;

  border:1px solid rgba(255,255,255,.09);
  border-radius:10px;

  background:rgba(255,255,255,.035);

  color:#fff;

  text-align:left;

  cursor:pointer;
}

.ap-training-period-day:hover{
  border-color:rgba(255,122,0,.40);

  background:rgba(255,122,0,.07);
}


.ap-training-period-day > div:first-child{
  display:flex;
  align-items:center;
  gap:10px;
}

.ap-training-period-day span{
  color:#ffad61;

  font-size:12px;
  font-weight:800;
}


.ap-training-period-day-meta{
  color:#91a7b5;

  font-size:11px;
  white-space:nowrap;
}


@media(max-width:650px){

  .ap-training-period-summary{
    grid-template-columns:1fr 1fr;
  }

  .ap-training-period-day{
    align-items:flex-start;
    flex-direction:column;
  }

}
/* =========================================================
   METEO ALLENAMENTO
   ========================================================= */

.ap-training-weather-widget{
  display:flex;
  align-items:center;

  gap:12px;

  min-height:62px;

  padding:10px 14px;

  border:1px solid rgba(255,255,255,.10);
  border-radius:12px;

  background:rgba(255,255,255,.045);
}


.ap-training-weather-icon{
  display:flex;
  align-items:center;
  justify-content:center;

  width:46px;
  height:46px;

  flex:0 0 46px;

  font-size:30px;
  line-height:1;
}


.ap-training-weather-info{
  display:flex;
  flex-direction:column;

  min-width:0;
}


.ap-training-weather-temp{
  color:#fff;

  font-size:20px;
  font-weight:900;
  line-height:1.1;
}


.ap-training-weather-label{
  margin-top:3px;

  color:#91a8b6;

  font-size:12px;
  font-weight:700;
}
/* =========================================================
   METEO DETTAGLIO ALLENAMENTO
   ========================================================= */

.ap-training-detail-weather{
  display:flex;
  align-items:center;

  gap:10px;

  margin-left:auto;

  padding:8px 12px;

  border-radius:10px;

  background:rgba(255,255,255,.04);
}


.ap-training-detail-weather-icon{
  font-size:28px;
  line-height:1;
}


.ap-training-detail-weather-text{
  display:flex;
  flex-direction:column;

  align-items:flex-start;
}


.ap-training-detail-weather-text strong{
  color:#fff;

  font-size:18px;
  font-weight:900;

  line-height:1.1;
}


.ap-training-detail-weather-text span{
  margin-top:2px;

  color:#9fb2bd;

  font-size:11px;
  font-weight:700;
}


@media(max-width:650px){

  .ap-training-detail-weather{
    margin-left:0;
  }

}
/* =========================================================
   MAPPA ALLENAMENTI
   ========================================================= */

.ap-training-map-wrap{
  margin-top:18px;

  padding:14px;

  border:1px solid rgba(255,255,255,.10);
  border-radius:14px;

  background:rgba(255,255,255,.025);
}


.ap-training-map-head{
  display:flex;
  align-items:center;
  justify-content:space-between;

  margin-bottom:10px;
}


.ap-training-map-head > div{
  display:flex;
  flex-direction:column;
}


.ap-training-map-head strong{
  color:#fff;

  font-size:16px;
  font-weight:900;
}


.ap-training-map-head span{
  margin-top:2px;

  color:#8fa6b4;

  font-size:11px;
  font-weight:700;
}


.ap-training-map{
  width:100%;
  height:330px;

  overflow:hidden;

  border-radius:11px;

  background:#0b1e29;
}


@media(max-width:650px){

  .ap-training-map{
    height:270px;
  }

}
/* popup mappa allenamenti */

.ap-training-map-popup{
  min-width:150px;

  color:#16303d;

  font-size:12px;
  line-height:1.45;
}

.ap-training-map-popup strong{
  display:block;

  margin-bottom:4px;

  font-size:15px;
  font-weight:900;
}

.ap-training-map-popup div{
  margin-top:2px;
}
/* =========================================================
   MAPPA TECNOLOGICA SKITRIBE
   ========================================================= */

.ap-training-map{
  background:
    radial-gradient(
      circle at center,
      #0b2634 0%,
      #06131d 70%
    );
}


/* effetto neon marker */

.ap-training-map-marker{
  filter:
    drop-shadow(0 0 3px rgba(255,180,95,1))
    drop-shadow(0 0 8px rgba(255,122,0,.85))
    drop-shadow(0 0 16px rgba(255,122,0,.50));
}
.ap-training-map-radar{
  transform-box:fill-box;
  transform-origin:center;

  animation:
    skitribeRadarPulse 1.8s ease-out infinite;

  filter:
    drop-shadow(
      0 0 7px rgba(255,122,0,.55)
    );
}


@keyframes skitribeRadarPulse{

  0%{
    transform:scale(.75);
    opacity:.75;
  }

  70%{
    transform:scale(1.45);
    opacity:.18;
  }

  100%{
    transform:scale(1.65);
    opacity:0;
  }

}

/* popup */

.leaflet-popup-content-wrapper{
  background:#f3f5f7;
  color:#000;
}

.leaflet-popup-tip{
  background:#f3f5f7;
}

.ap-training-map-popup{
  color:#000;
}

.ap-training-map-popup strong{
  color:#000;
}

/* controlli zoom */

.leaflet-control-zoom{
  border:none!important;

  box-shadow:
    0 0 16px rgba(0,0,0,.45)!important;
}


.leaflet-control-zoom a{
  background:
    rgba(7,24,34,.94)!important;

  color:#5eeaff!important;

  border-color:
    rgba(94,234,255,.18)!important;
}


.leaflet-control-zoom a:hover{
  background:
    rgba(13,45,60,.98)!important;
}


/* attribution */

.leaflet-control-attribution{
  background:
    rgba(6,19,29,.82)!important;

  color:#7897a7!important;

  font-size:9px!important;
}


.leaflet-control-attribution a{
  color:#57d7ff!important;
}
/* =========================================================
   MAPPA DARK / TECH SKITRIBE
   ========================================================= */

.ap-training-map-dark-tiles{
  filter:
    invert(1)
    hue-rotate(180deg)
    brightness(.10)
    contrast(1.12)
    saturate(.72);
}
.ap-training-map{
  background:#06131d;
}


/* leggerissima dominante tecnologica */

.ap-training-map .leaflet-tile-pane{
  opacity:0;
}


/* marker luminosi */

.ap-training-map-marker{
  filter:
    drop-shadow(0 0 3px rgba(66,216,255,1))
    drop-shadow(0 0 8px rgba(24,191,255,.8))
    drop-shadow(0 0 16px rgba(24,191,255,.45));
}
.ap-training-map{
  position:relative;
  background:#0b1230;
}

/* velo blu sugli oceani */
.ap-training-map::before{
  content:'';

  position:absolute;
  inset:0;

  pointer-events:none;

  background:
    linear-gradient(
      rgba(0,35,50,.18),
      rgba(0,35,50,.18)
    );

  mix-blend-mode:screen;

  z-index:250;
}
.ap-training-map{
  background:#0c1230;
}
.ap-training-map-dark-tiles{
  filter:
    invert(1)
    hue-rotate(180deg)
    brightness(.35)
    contrast(0)
    saturate(.2);

  opacity:.12;
}
.ap-training-map .leaflet-overlay-pane{
  mix-blend-mode:normal;
}
.ap-training-map.leaflet-container{
  background:#0b1230 !important;
}
.ap-training-map .leaflet-tile-pane{
  opacity:0 !important;
}
/* =========================================================
   FILTRI MAPPA ALLENAMENTI
   ========================================================= */

.ap-training-map-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;

  gap:14px;
}


.ap-training-map-title{
  display:flex;
  flex-direction:column;
}


.ap-training-map-filters{
  display:flex;
  align-items:center;

  gap:7px;

  flex-wrap:wrap;
}


.ap-training-map-filters select{
  min-height:34px;

  padding:5px 28px 5px 10px;

  border:
    1px solid rgba(255,122,0,.28);

  border-radius:9px;

  background:#0b1b29;

  color:#dce8ee;

  font-size:11px;
  font-weight:800;

  cursor:pointer;
}


.ap-training-map-filters select:hover{
  border-color:
    rgba(255,122,0,.70);
}


.ap-training-map-filters select:focus{
  outline:none;

  border-color:#ff7a00;

  box-shadow:
    0 0 0 2px
    rgba(255,122,0,.12);
}


@media(max-width:750px){

  .ap-training-map-head{
    align-items:flex-start;
    flex-direction:column;
  }

  .ap-training-map-filters{
    width:100%;
  }

  .ap-training-map-filters select{
    flex:1 1 140px;
  }

}
/* =========================================================
   RIEPILOGO MAPPA
   ========================================================= */

.ap-training-map-summary{
  display:grid;

  grid-template-columns:
    repeat(5,minmax(0,1fr));

  gap:8px;

  margin-bottom:10px;
}


.ap-training-map-summary > div{
  padding:9px 8px;

  border:
    1px solid rgba(255,122,0,.18);

  border-radius:10px;

  background:
    rgba(255,255,255,.035);

  text-align:center;
}


.ap-training-map-summary small{
  display:block;

  color:#8fa6b4;

  font-size:9px;
  font-weight:800;

  text-transform:uppercase;
}


.ap-training-map-summary strong{
  display:block;

  margin-top:3px;

  color:#ffb45f;

  font-size:18px;
  font-weight:900;
}


@media(max-width:750px){

  .ap-training-map-summary{
    grid-template-columns:
      repeat(2,minmax(0,1fr));
  }

}

/* Activity dashboard: styles scoped to the sport panel. */
.ap-sport-panel .ap-latest-video{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px;margin:0 0 24px;border:1px solid #e88928;border-left:5px solid #ff9d36;border-radius:12px;background:linear-gradient(120deg,#392309,#111f29);box-shadow:0 8px 24px #0003}
.ap-latest-video h3{font-size:25px;margin:7px 0}.ap-latest-video .ap-kicker{color:#ffbd75}.ap-latest-video p{margin:7px 0}.ap-latest-video .primary{background:#ffad54;color:#201305;border-color:#ffbd75;padding:14px 18px}.ap-latest-video>div{min-width:0}.ap-latest-video button{white-space:normal}
.ap-activity{margin-bottom:28px;padding-bottom:24px;border-bottom:1px solid #28414f}.ap-activity h3{margin:5px 0}.ap-activity-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.ap-activity-head label{min-width:150px}.ap-activity .ap-help{color:#a3becd;font-size:12px;line-height:1.5}.ap-activity-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:16px 0}.ap-activity-metrics>div{padding:12px;background:#08141c;border:1px solid #244351;border-radius:10px}.ap-activity-metrics small{display:block;color:#a3becd;font-size:11px}.ap-activity-metrics strong{display:block;margin-top:6px;font-size:20px;color:#d9f5ff}.ap-activity-controls{display:flex;gap:12px;margin-top:20px}.ap-activity-controls label{flex:1;max-width:230px}.ap-activity-charts{display:grid;grid-template-columns:1.2fr 1fr;gap:16px}.ap-activity-chart{min-width:0;padding:14px;border:1px solid #244351;border-radius:10px}.ap-activity h4{margin:8px 0 14px}.ap-activity-bars{max-height:280px;overflow:auto}.ap-activity-bar{display:grid;grid-template-columns:100px minmax(30px,1fr) 105px;gap:8px;align-items:center;margin:12px 0;font-size:12px}.ap-activity-bar strong{text-align:right;font-size:11px}.ap-activity-track{background:#163442;border-radius:4px;height:9px;overflow:hidden}.ap-activity-track i{display:block;height:100%;background:#5eeaff;border-radius:4px}.ap-activity-chart+ .ap-activity-chart i{background:#ffad54}.ap-activity-recent{margin-top:20px}.ap-activity-recent button{display:block;width:100%;text-align:left;margin:6px 0;font-size:12px;line-height:1.5}.ap-activity button:focus-visible,.ap-latest-video button:focus-visible{outline:2px solid #fff;outline-offset:3px}
@media(max-width:750px){.ap-sport-panel .ap-latest-video{display:block;padding:16px}.ap-latest-video .primary{width:100%;margin-top:12px}.ap-activity-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.ap-activity-metrics strong{font-size:17px}.ap-activity-charts{grid-template-columns:1fr}.ap-activity-bar{grid-template-columns:85px minmax(20px,1fr) 95px;gap:5px}.ap-activity-head{align-items:flex-start;flex-wrap:wrap}}
/* Attività v2: shared titles, featured race, service choices and persistent video summary. */
.ap-sport-panel .ap-sports-title,.ap-activity h3.ap-sports-title{font-size:24px;font-weight:850;letter-spacing:-.025em;line-height:1.25;margin:26px 0 18px;color:#e5f5fa}
.ap-sport-panel .ap-latest-video{display:block;padding:22px;margin-bottom:28px}.ap-latest-video>.ap-kicker{font-size:12px;letter-spacing:.08em;margin:0 0 18px;color:#ffb45f}
.ap-latest-video .st-featured-race,.ap-latest-video .st-featured-race.hidden{display:grid!important;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);gap:24px;background:transparent;border:0;padding:0;margin:0}
.st-featured-main,.st-featured-services{min-width:0}.st-featured-race .race-top{display:block}.st-featured-race .race-title{font-size:27px}.st-featured-race .race-results{margin:18px 0;min-width:0}.st-featured-race .metrics{display:flex;flex-wrap:wrap;gap:10px}.st-featured-race .metric{flex:1;min-width:90px}.st-featured-race .race-side{text-align:left;margin-top:10px}.st-featured-race .run-details{padding:10px;background:#081820;border-radius:9px}.st-featured-race .run{padding:7px 0}.st-featured-race .race-diary{background:#12303a;border:1px solid #2b5261;border-radius:12px;padding:14px;margin-top:16px}.st-featured-race .diary-label{width:100%;font-size:12px;color:#a7d2dc;margin-bottom:4px}.st-featured-race .diary-note{min-width:0;flex-basis:100%}.st-featured-race .diary-score{flex-wrap:wrap}.st-featured-race .diary-editor textarea{width:100%;min-height:88px}.st-featured-race .diary-star{width:30px;min-width:30px}.st-featured-race .weather-badge{display:inline-flex;white-space:normal;line-height:1.5;margin:6px 0}
.st-featured-services h3{font-size:20px;margin:0 0 8px}.st-featured-services .race-services{display:grid;grid-template-columns:1fr;gap:8px;border:0;padding:0;margin:10px 0}.st-service-option{background:#0b1c25;border:1px solid #36505c;border-radius:11px;overflow:hidden}.st-service-option .svc-toggle{display:grid;grid-template-columns:1fr auto;gap:5px 12px;align-items:center;width:100%;text-align:left;border:0;border-radius:0;padding:12px;background:transparent;color:#e4f6fc;white-space:normal}.st-service-option .svc-toggle>strong{font-size:14px}.st-service-option .svc-toggle>span{font-size:12px;font-weight:400;color:#a5c0cc;grid-column:1;line-height:1.4}.st-service-option .svc-toggle>b{grid-column:2;grid-row:1/3;color:#ffbd75;white-space:nowrap;font-size:17px}.st-service-option .svc-toggle.active{background:#533209;box-shadow:inset 3px 0 #ffad54}.st-service-option .svc-toggle.active>strong:before{content:'✓ ';color:#ffbd75}.st-service-link{display:inline-block;color:#8fdcea;font-size:12px;line-height:1.5;text-decoration:underline;text-underline-offset:3px;margin:6px 12px 10px}.st-featured-services .start-choice{display:flex;align-items:center;justify-content:flex-start;gap:8px;padding:13px;border:1px solid #45606b;border-radius:10px;background:#102631;font-size:13px;color:#e4f6fc;margin:0}.start-choice b{margin-left:auto;color:#ffbd75}.st-service-intro,.st-featured-availability{font-size:12px;color:#b6cad4;line-height:1.5}.ap-latest-video .purchase-hub{margin:20px 0;background:#091922;border-color:#33515b;box-shadow:none}.ap-latest-video .purchase-hub h3{font-size:17px}.st-video-season{max-width:220px;margin:14px 0}.st-video-season select{margin-top:5px}.st-video-guide{margin:14px 0 0}.st-video-guide summary,.ap-race-history>summary{cursor:pointer;color:#92dce8;padding:14px 0;font-weight:800}.st-video-guide .purchase-panel{display:block}.st-video-guide .service-guide-grid{margin-top:10px}.ap-latest-video [data-previous-races]{display:block;width:100%;padding:13px;border-color:#885e2f;color:#ffc685;background:#2b2217}.ap-race-history{margin:22px 0}.ap-race-history>summary{padding:16px;border:1px solid #355563;border-radius:10px;background:#0e242e}.ap-race-history .race-list{margin-top:15px}.ap-training-slot{margin-top:30px}.ap-activity{border-top:1px solid #28414f;padding-top:8px}.ap-activity-head .ap-sports-title{margin-top:20px}.ap-activity-head label{margin-top:16px}.ap-average-stars{display:inline-block;position:relative;white-space:nowrap;color:#45606b;font-size:21px;line-height:1.3;letter-spacing:2px;vertical-align:middle;margin-top:5px}.ap-average-stars .ap-star-fill{position:absolute;left:0;top:0;overflow:hidden;color:#ffd36a;height:100%}.ap-activity-metrics>div:last-child>strong{display:flex;justify-content:space-between;gap:6px}.ap-mood{display:flex;flex-direction:column;gap:5px}.ap-mood b{font-size:22px}.ap-mood small{font-size:9px!important;color:inherit!important}.ap-mood-top{color:#87ef88}.ap-mood-neutral{color:#a9bdc9}.ap-mood-flop{color:#ff8392}.ap-recent-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.ap-activity-recent h4{margin:22px 0 12px}.ap-activity-recent button.ap-recent-card{display:flex;gap:12px;align-items:center;margin:0;padding:14px;background:linear-gradient(115deg,#112b36,#0b1c26);border:1px solid #305461;border-radius:12px;color:#e1f2f8;min-width:0}.ap-recent-card:hover{border-color:#5eeaff;background:#163540}.ap-date-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0;min-width:48px;min-height:54px;background:#163e4c;border:1px solid #2f6574;border-radius:9px;font-size:24px;font-weight:850;color:#8aebfa}.ap-date-tile small{font-size:11px;text-transform:uppercase}.ap-recent-body{display:flex;flex:1;flex-direction:column;gap:5px;min-width:0}.ap-recent-body strong{font-size:15px;overflow-wrap:anywhere}.ap-recent-body small{font-size:11px;color:#b2c8d3;font-weight:400}.ap-recent-body .ap-average-stars{align-self:flex-start;font-size:16px}.ap-recent-badges{display:flex;gap:5px;flex-wrap:wrap}.ap-recent-badges>span,.ap-period-status{font-size:10px;padding:2px 6px;border-radius:5px;background:#173e4b;color:#90e8f5;align-self:flex-start}.ap-card-arrow{color:#76dce9;font-size:19px}.ap-period-card .ap-date-tile{color:#ffc17a;background:#382b1a;border-color:#71502b}.ap-period-status{background:#342a1b;color:#ffc17a}
.athlete-pane.active{padding-bottom:88px}.st-video-cart{position:fixed;bottom:12px;left:50%;transform:translateX(-50%);width:min(780px,calc(100% - 28px));z-index:900;margin:0!important}.st-cart-shell{border:1px solid #ffad54;border-radius:13px;background:#10232d;box-shadow:0 8px 32px #0008;overflow:hidden}.st-cart-details>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;cursor:pointer;list-style:none;color:#ffca8d}.st-cart-details>summary::-webkit-details-marker{display:none}.st-cart-view{font-size:12px;color:#d7ecf6}.st-cart-content{padding:0 16px 16px;max-height:min(55vh,420px);overflow:auto;overscroll-behavior:contain}.st-cart-content>[data-role=order-detail]{display:block;font-size:12px;color:#a8c0cc;margin-bottom:12px}.st-cart-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-top:1px solid #34515c}.st-cart-row strong,.st-cart-row small{display:block;line-height:1.5}.st-cart-row strong{font-size:13px}.st-cart-row small{font-size:12px;color:#c0d4de}.st-cart-actions{display:flex;gap:5px}.st-cart-actions button{font-size:11px;padding:7px}.st-cart-content>[data-role=order-submit]{margin:12px 0 0 8px;background:#ffad54;color:#201305;border-color:#ffbd75}.st-cart-content>[data-role=order-submit]:disabled{opacity:.45;cursor:not-allowed}.st-delivery-note{font-size:12px;color:#bdcfd8;line-height:1.5;margin:12px 0 0}.st-video-cart button:focus-visible,.st-video-cart summary:focus-visible{outline:2px solid white;outline-offset:-3px}
@media(max-width:800px){.ap-latest-video .st-featured-race,.ap-latest-video .st-featured-race.hidden{grid-template-columns:1fr;gap:20px}.ap-sport-panel .ap-latest-video{padding:15px}.ap-recent-grid{grid-template-columns:1fr}.ap-sport-panel .ap-sports-title,.ap-activity h3.ap-sports-title{font-size:22px}.st-cart-row{flex-wrap:wrap}.st-cart-content>[data-role=order-submit]{display:block;width:100%;margin:12px 0 0}.st-cart-details>summary{padding:13px;font-size:13px}.st-video-cart{bottom:max(8px,env(safe-area-inset-bottom));width:calc(100% - 16px)}.st-featured-race .diary-icon{min-width:54px;padding:0 5px}.st-featured-race .diary-star{width:27px;min-width:27px}.st-featured-race .diary-score{gap:2px}.st-featured-race .metric b{font-size:19px}.st-service-option .svc-toggle>b{font-size:16px}}

/* Activity archive, shared weather/mood chips and specialty edges. */
.ap-specialty-edge{position:relative;overflow:hidden}.ap-specialty-edge:before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--ap-specialty-edge,#9eb4c0)}
.ap-training-conditions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;font-size:11px;line-height:1.6;text-transform:none;font-weight:500}.ap-weather-chip{color:#c7dce5}.ap-day-mood{padding:2px 7px;border-radius:5px;background:#ffffff08;font-size:10px;font-weight:800;white-space:nowrap}.ap-day-unrated{color:#95aebc;font-size:10px}.ap-matching-sessions{color:#e0d4b3!important;line-height:1.5}
.ap-activity-metrics button.ap-mood{border:0;background:transparent;padding:5px 3px;margin:0;align-items:flex-start;min-width:0;text-align:left;border-radius:6px}.ap-activity-metrics button.ap-mood:hover{background:#ffffff0d}.ap-activity-metrics button.ap-mood:focus-visible,.ap-training-card:focus-visible{outline:2px solid #7ee6f3;outline-offset:3px}.ap-activity-metrics button.ap-mood-top{color:#87ef88}.ap-activity-metrics button.ap-mood-neutral{color:#a9bdc9}.ap-activity-metrics button.ap-mood-flop{color:#ff8392}
.ap-view-trainings{margin:4px 0 20px;padding:11px 16px;background:#123644;border:1px solid #427b8a;color:#a2effa;border-radius:9px;font-weight:750}
.ap-training-archive{padding:22px 0 80px}.ap-training-archive[hidden]{display:none}.ap-archive-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:18px;border:1px solid #305461;background:#0d202b;border-radius:12px;margin:18px 0}.ap-archive-filters label{display:flex;flex-direction:column;gap:7px;min-width:0;font-size:12px;color:#b7d0dd}.ap-archive-filters input,.ap-archive-filters select{width:100%;min-width:0;box-sizing:border-box;padding:10px;border:1px solid #365765;border-radius:7px;background:#081820;color:#e3f4fa}.ap-archive-filters button{padding:10px}.ap-archive-pages{display:flex;align-items:center;justify-content:center;gap:14px;margin:22px 0}.ap-archive-pages button:disabled{opacity:.4;cursor:default}.ap-training-picker .ap-recent-grid{grid-template-columns:1fr}.ap-training-picker{max-height:68vh;overflow:auto;padding:3px 6px 12px}.ap-training-card.ap-recent-card{display:flex;align-items:center;gap:12px;padding:15px 16px;border:1px solid #305461;border-radius:12px;background:linear-gradient(115deg,#112b36,#0b1c26);color:#e1f2f8;min-width:0;text-align:left;margin:0}.ap-training-card .ap-date-tile small:last-child{font-size:9px;opacity:.8}.ap-training-period-day-meta .ap-training-conditions{justify-content:flex-end}.ap-training-period-day.ap-specialty-edge{padding-left:16px}.st-cart-row .st-cart-add-start{font-size:11px;padding:9px 10px;border:1px solid #ae7c3b;border-radius:8px;background:#362b1c;color:#ffd196;line-height:1.5;max-width:170px;flex-shrink:0}.st-cart-row>div:first-child{min-width:0;overflow-wrap:anywhere;flex:1}.st-cart-actions{flex-shrink:0}
@media(max-width:800px){.ap-archive-filters{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px}.ap-archive-filters label:first-child{grid-column:1/-1}.ap-training-period-day-meta .ap-training-conditions{justify-content:flex-start}.st-cart-row .st-cart-add-start{max-width:none}.st-cart-row>div:first-child{flex-basis:100%}.ap-training-period-day{flex-wrap:wrap;gap:8px}}
@media(max-width:420px){.ap-archive-pages{gap:7px;font-size:12px}.ap-archive-pages button{padding:8px}.ap-training-card.ap-recent-card{gap:9px;padding:13px}.ap-archive-filters{gap:10px}}
.ap-training-period-day .ap-training-conditions .ap-weather-chip{color:#c7dce5;font-weight:500}.ap-training-period-day .ap-training-conditions .ap-mood-top{color:#87ef88}.ap-training-period-day .ap-training-conditions .ap-mood-neutral{color:#a9bdc9}.ap-training-period-day .ap-training-conditions .ap-mood-flop{color:#ff8392}.ap-training-period-day .ap-training-conditions .ap-day-unrated{color:#95aebc}

/* Compact training cards: heading, workload, weather/stars/highlights. */
.ap-training-card-title{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.ap-training-card-title>strong,.ap-training-card-title .ap-recent-badges>span{font-size:15px;font-weight:800;line-height:1.3}.ap-training-card-title .ap-recent-badges>span{padding:3px 7px;border-radius:6px}.ap-training-card .ap-training-conditions{gap:6px 10px;margin-top:0}.ap-training-card .ap-training-conditions .ap-average-stars{margin:0;align-self:center;font-size:16px;line-height:1.3;flex-shrink:0}.ap-activity-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:4px 0 20px}.ap-activity-actions .ap-view-trainings{margin:0}.ap-activity-actions .ap-add-training{padding:11px 16px;border:1px solid #ffb657;border-radius:9px;background:#ffad54;color:#241707;font-weight:800}.ap-activity-actions .ap-add-training:hover{background:#ffc47e}.ap-activity-actions button:focus-visible{outline:2px solid #fff;outline-offset:3px}
