/* DIR-138 on-device Swing Analyzer. Visual polish stays deliberately scoped to
   the analyzer route; every color comes from the shared theme system. */
.swingAnalyzerTool{
  width:min(100%,760px);
  margin:0 auto;
  padding:0 0 44px;
  color:var(--dirck-color-text);
}
.swingAnalyzerTool .srOnly{
  position:absolute!important;width:1px!important;height:1px!important;
  padding:0!important;margin:-1px!important;overflow:hidden!important;
  clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;
  border:0!important;white-space:nowrap!important;
}
.swingAnalyzerTool button,
.swingAnalyzerTool select,
.swingAnalyzerTool input[type="file"]::file-selector-button{
  /* Keep native pinch-to-zoom available while preventing iOS from treating a
     rapid second tap on an analyzer control as a page-zoom gesture. */
  touch-action:manipulation;
}

.swingAnalyzerHero{
  display:grid;
  grid-template-columns:42px minmax(0,1fr);
  align-items:center;
  gap:11px;
  margin:0 0 16px;
  padding:16px;
  border:1px solid var(--dirck-color-border);
  border-radius:var(--dirck-radius-lg);
  background:var(--dirck-color-surface);
  color:var(--dirck-color-text-strong);
  box-shadow:var(--dirck-shadow-sm);
}
.swingAnalyzerResultScore{
  display:flex;align-items:center;gap:13px;width:max-content;max-width:100%;margin:12px 0 14px;padding:9px 13px 9px 9px;
  border:1px solid var(--dirck-color-selected-border);border-radius:18px;background:var(--dirck-color-surface);box-shadow:var(--dirck-shadow-sm);
}
.swingAnalyzerResultScore>span{display:grid;place-items:center;width:55px;height:55px;border-radius:50%;background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);}
.swingAnalyzerResultScore>span strong{font-size:var(--dirck-font-size-section);line-height:1;}.swingAnalyzerResultScore>span small{font-size:var(--dirck-font-size-caption);opacity:.7;}
.swingAnalyzerResultScore>div{display:grid;gap:3px;}.swingAnalyzerResultScore>div b{color:var(--dirck-color-text-strong);}.swingAnalyzerResultScore>div small{color:var(--dirck-color-text-muted);font-size:var(--dirck-font-size-caption);}
.swingAnalyzerHero h1{margin:1px 0 0;color:inherit;font-size:var(--dirck-font-size-title-sm);line-height:1.05;}
.swingAnalyzerHeroIcon{
display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--dirck-color-border);border-radius:13px;background:color-mix(in srgb, var(--dirck-color-accent) 10%, var(--dirck-color-surface));
  color:var(--dirck-color-accent);
}
.swingAnalyzerHeroIcon svg{width:23px;height:23px;}
.swingAnalyzerTool.hasVideo .swingAnalyzerHero{
display:none;
  background:var(--dirck-color-surface);
  color:var(--dirck-color-text-strong);
  border:1px solid var(--dirck-color-border);
  padding:16px;
  margin:0 0 16px;
}
.swingAnalyzerHeroMark{
  display:grid;
  place-items:center;
  flex:0 0 58px;
  width:58px;
  height:58px;
  border-radius:18px;
  background:var(--dirck-color-accent);
  color:var(--dirck-color-on-accent);
  font-size:var(--dirck-font-size-title-sm);
  font-weight:700;
  box-shadow:var(--dirck-shadow-sm);
}

.swingAnalyzerGuide{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:9px;
  margin:0 0 16px;
}
.swingAnalyzerGuide>div{
  display:flex;
  align-items:flex-start;
  gap:9px;
  min-width:0;
  padding:13px;
  border:1px solid var(--dirck-color-border);
  border-radius:var(--dirck-radius-lg);
  background:var(--dirck-color-surface-soft);
}
.swingAnalyzerGuide p{margin:0;font-size:var(--dirck-font-size-caption);line-height:1.45;color:var(--dirck-color-text-muted-strong);}
.swingAnalyzerGuide strong{color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-body-sm);}
.swingAnalyzerStep{
  display:grid;
  place-items:center;
  flex:0 0 25px;
  width:25px;
  height:25px;
  border-radius:var(--dirck-radius-pill);
  background:color-mix(in srgb, var(--dirck-color-accent) 10%, var(--dirck-color-surface));
  color:var(--dirck-color-text-strong);
  font-size:var(--dirck-font-size-caption);
  font-weight:700;
}

.swingAnalyzerForm{
  display:grid;
  gap:16px;
  padding:20px;
  border:1px solid var(--dirck-color-border-strong);
  border-radius:20px;
  background:var(--dirck-color-surface);
  box-shadow:var(--dirck-shadow-sm);
}
.swingAnalyzerFormHeading{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}
.swingAnalyzerFormHeading h2{margin:2px 0 0;font-size:var(--dirck-font-size-section);}
.swingAnalyzerFormHeading p{max-width:470px;margin:7px 0 0;color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-caption);line-height:1.45;}

.swingAnalyzerRecent{margin-top:16px;padding:20px;border:1px solid var(--dirck-color-border-strong);border-radius:20px;background:var(--dirck-color-surface);box-shadow:var(--dirck-shadow-sm);}
.swingAnalyzerRecentHeading{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.swingAnalyzerRecentHeading h2{margin:0;font-size:var(--dirck-font-size-section);}
.swingAnalyzerRecentHeading button{background:none;border:0;color:var(--dirck-color-text-muted);min-height:44px;padding:0 6px;font:inherit;font-size:var(--dirck-font-size-caption);}
.swingAnalyzerRecentHint,.swingAnalyzerRecentEmpty,.swingAnalyzerRecentNotice{margin:7px 0 0;font-size:var(--dirck-font-size-caption);line-height:1.45;color:var(--dirck-color-text-muted-strong);}
.swingAnalyzerRecentEmpty{padding:12px 0 3px;}
.swingAnalyzerRecentList{list-style:none;padding:0;margin:10px 0 0;}
.swingAnalyzerRecentList li{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--dirck-color-border);}
.swingAnalyzerRecentIcon{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);}
.swingAnalyzerRecentIcon svg{width:21px;height:21px;}
.swingAnalyzerRecentName{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--dirck-font-size-body-sm);font-weight:700;}
.swingAnalyzerRecentList button{min-height:44px;border:1px solid var(--dirck-color-border-strong);border-radius:12px;padding:8px 12px;background:var(--dirck-color-surface);color:var(--dirck-color-accent);font:inherit;font-size:var(--dirck-font-size-caption);font-weight:700;}
.swingAnalyzerRecent button:focus-visible{outline:3px solid var(--dirck-color-focus);outline-offset:2px;}
.swingAnalyzerTool.hasVideo>.swingAnalyzerRecent,.swingAnalyzerTool.hasFailure>.swingAnalyzerRecent{
display:none;
  margin-top:16px;
  padding:20px;
  border-radius:20px;
  box-shadow:var(--dirck-shadow-sm);
}
.swingAnalyzerViewBadge{
  display:inline-flex;
  align-items:center;
  gap:7px;
  width:max-content;
  max-width:100%;
  padding:7px 10px;
  border:1px solid var(--dirck-color-selected-border);
  border-radius:var(--dirck-radius-pill);
  background:color-mix(in srgb, var(--dirck-color-accent) 10%, var(--dirck-color-surface));
  color:var(--dirck-color-text-strong);
  font-size:var(--dirck-font-size-caption);
  font-weight:700;
  line-height:1.2;
}
.swingAnalyzerFieldRow{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.swingAnalyzerField{display:grid;align-content:start;gap:7px;min-width:0;}
.swingAnalyzerField>span{font-size:var(--dirck-font-size-body-sm);font-weight:700;color:var(--dirck-color-text-strong);}
.swingAnalyzerField small{color:var(--dirck-color-text-muted);font-size:var(--dirck-font-size-caption);line-height:1.4;}
.swingAnalyzerTool .swingAnalyzerField select,.swingAnalyzerTool .swingAnalyzerField input{
  width:100%;
  min-height:48px;
  min-block-size:48px;
  padding:11px 12px;
  border:1px solid var(--dirck-color-border-strong);
  border-radius:var(--dirck-radius-md);
  background:var(--dirck-color-control);
  color:var(--dirck-color-text-strong);
  font:inherit;
}
.swingAnalyzerField input[type="file"]{padding:8px;font-size:var(--dirck-font-size-body-sm);}
.swingAnalyzerField input[type="file"]::file-selector-button{
  min-height:36px;
  margin-right:10px;
  padding:7px 11px;
  border:0;
  border-radius:var(--dirck-radius-sm);
  background:color-mix(in srgb, var(--dirck-color-accent) 10%, var(--dirck-color-surface));
  color:var(--dirck-color-text-strong);
  font:inherit;
  font-weight:700;
}
.swingAnalyzerField select:focus-visible,.swingAnalyzerField input:focus-visible,
.swingAnalyzerUploadCard:focus-within,
.swingAnalyzerSubmit:focus-visible,.swingAnalyzerCancel:focus-visible,
.swingAnalyzerTrim button:focus-visible,.swingAnalyzerTrim input:focus-visible,
.swingAnalyzerDiagnostics summary:focus-visible,
.swingAnalyzerTechnical summary:focus-visible{
  outline:3px solid var(--dirck-color-focus);
  outline-offset:2px;
}
.swingAnalyzerUploadCard{
  position:relative;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:8px;
  align-items:center;
  min-height:200px;
  padding:20px;
  overflow:hidden;
  border:1px solid var(--dirck-color-border);
  border-radius:20px;
  background:color-mix(in srgb, var(--dirck-color-accent) 10%, var(--dirck-color-surface));
  color:var(--dirck-color-text-strong);
  box-shadow:none;
  text-align:center;
  cursor:pointer;
}
.swingAnalyzerUploadCard.hasVideo{border-style:solid;background:var(--dirck-color-surface-raised);}
.swingAnalyzerUploadCard input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;}
.swingAnalyzerUploadIcon{
  display:grid;place-items:center;width:62px;height:62px;margin-bottom:3px;border:1px solid var(--dirck-color-border);border-radius:20px;
  background:var(--dirck-color-surface);color:var(--dirck-color-accent);box-shadow:none;
}
.swingAnalyzerUploadIcon svg{width:31px;height:31px;}
.swingAnalyzerUploadCard.hasVideo .swingAnalyzerUploadIcon::before{content:"✓";}
.swingAnalyzerUploadCard.hasVideo .swingAnalyzerUploadIcon{
font-size:0;
  background:var(--dirck-color-surface);
  color:var(--dirck-color-accent);
  border:1px solid var(--dirck-color-border);
  box-shadow:none;
}
.swingAnalyzerUploadCard.hasVideo .swingAnalyzerUploadIcon::before{font-size:var(--dirck-font-size-section);}
.swingAnalyzerUploadCopy{display:grid;gap:3px;min-width:0;}
.swingAnalyzerUploadCopy strong{color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-section);}
.swingAnalyzerUploadCopy small{
overflow:hidden;color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-body-sm);text-overflow:clip;white-space:normal;
  overflow-wrap:anywhere;
}
.swingAnalyzerUploadAction{
display:flex;align-items:center;gap:8px;margin-top:4px;padding:12px 16px;border-radius:14px;background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);font-size:var(--dirck-font-size-body);font-weight:700;
  min-height:48px;
}
.swingAnalyzerUploadAction b{font-size:var(--dirck-font-size-body);line-height:1;}
.swingAnalyzerForm.hasVideo .swingAnalyzerFormHeading,
.swingAnalyzerForm.hasVideo>.swingAnalyzerUploadCard{
display:none;
  background:color-mix(in srgb, var(--dirck-color-accent) 10%, var(--dirck-color-surface));
  color:var(--dirck-color-text-strong);
  border:1px solid var(--dirck-color-border);
  min-height:200px;
  box-shadow:none;
  padding:20px;
}
.swingAnalyzerForm:not(.hasVideo) .swingAnalyzerFieldRow{display:none;}
.swingAnalyzerDiagnostics summary,.swingAnalyzerTechnical summary{
  min-height:44px;
  cursor:pointer;
  font-weight:700;
  color:var(--dirck-color-text-strong);
}
.swingAnalyzerTrim{
  display:grid;
  gap:10px;
  padding:11px;
  border:1px solid var(--dirck-color-border);
  border-radius:20px;
  background:var(--dirck-color-surface);
  box-shadow:var(--dirck-shadow-sm);
  color:var(--dirck-color-text-strong);
}
.swingAnalyzerTrim[hidden]{display:none;}
.swingAnalyzerTrimPreview{
  position:relative;
  overflow:hidden;
  width:100%;
  max-height:44vh;
  margin:0 auto;
  border-radius:15px;
  background:#0e0e0c;
  aspect-ratio:16/9;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);
}
.swingAnalyzerTrimPreview video{display:block;width:100%;height:100%;object-fit:contain;}
.swingAnalyzerTrimPlayhead{
  position:absolute;right:10px;bottom:10px;padding:6px 8px;border-radius:var(--dirck-radius-pill);
  background:rgba(14,14,12,.82);color:#fff;font-size:var(--dirck-font-size-caption);font-weight:700;
}
.swingAnalyzerTrimControl{display:grid;gap:8px;padding:11px;border:1px solid var(--dirck-color-border);border-radius:15px;background:var(--dirck-color-surface-soft);}
.swingAnalyzerTrimControlHeading{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.swingAnalyzerTrimControlHeading strong{color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-body-sm);}
.swingAnalyzerTrimRanges label{display:grid;gap:5px;padding:0;background:transparent;}
.swingAnalyzerTrimRanges label>span{
  display:flex;justify-content:space-between;color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-caption);font-weight:700;
}
.swingAnalyzerTrimRanges output{padding:2px 7px;border-radius:var(--dirck-radius-pill);background:color-mix(in srgb, var(--dirck-color-accent) 10%, var(--dirck-color-surface));font-variant-numeric:tabular-nums;}
.swingAnalyzerTrim input[type="range"]{width:100%;min-height:44px;accent-color:var(--dirck-color-accent);}
.swingAnalyzerTrimRanges{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.swingAnalyzerTrim button{
  min-height:48px;padding:9px 10px;border:1px solid var(--dirck-color-border-strong);
  border-radius:var(--dirck-radius-md);background:var(--dirck-color-control);
  color:var(--dirck-color-text-strong);font:inherit;font-size:var(--dirck-font-size-caption);font-weight:700;cursor:pointer;
}
.swingAnalyzerTrim button:disabled{cursor:not-allowed;opacity:.55;}
.swingAnalyzerSubmit,.swingAnalyzerCancel{
  min-height:50px;
  border-radius:var(--dirck-radius-md);
  font:inherit;
  font-weight:700;
  cursor:pointer;
}
.swingAnalyzerSubmit{display:grid;place-items:center;gap:1px;border:1px solid var(--dirck-color-accent);background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);box-shadow:var(--dirck-shadow-sm);}
.swingAnalyzerSubmit span{display:flex;align-items:center;gap:9px;}
.swingAnalyzerSubmit span b{font-size:var(--dirck-font-size-section);line-height:1;transition:transform .18s ease;}
.swingAnalyzerSubmit:hover span b{transform:translateX(3px);}
.swingAnalyzerForm:not(.hasVideo) .swingAnalyzerSubmit{
display:none;
  box-shadow:var(--dirck-shadow-sm);
}
.swingAnalyzerSubmit:hover{filter:brightness(1.04);}
.swingAnalyzerSubmit:disabled{cursor:wait;opacity:.62;}
.swingAnalyzerCancel{border:1px solid var(--dirck-color-border-strong);background:var(--dirck-color-control);color:var(--dirck-color-text-strong);}

.swingAnalyzerStatus{min-height:24px;margin:14px 2px 0;color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-body-sm);font-weight:700;}
.swingAnalyzerResult{display:grid;gap:14px;margin-top:6px;scroll-margin-top:18px;}
.swingAnalyzerViewBadge{margin:4px 0 0;}
.swingAnalyzerBreakdown{
  display:grid;
  gap:14px;
  padding:18px;
  border:1px solid var(--dirck-color-border-strong);
  border-radius:var(--dirck-radius-xl);
  background:var(--dirck-color-surface);
  box-shadow:var(--dirck-shadow-md);
}
.swingAnalyzerBreakdownHeading{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}
.swingAnalyzerBreakdownHeading h2{margin:3px 0 0;font-size:var(--dirck-font-size-section);}
.swingAnalyzerLocalBadge{
  display:inline-flex;
  width:max-content;
  padding:6px 9px;
  border-radius:var(--dirck-radius-pill);
  background:color-mix(in srgb, var(--dirck-color-accent) 10%, var(--dirck-color-surface));
  color:var(--dirck-color-text-strong);
  font-size:var(--dirck-font-size-caption);
  font-weight:700;
}
.swingAnalyzerPlayback{
  position:relative;
  overflow:hidden;
  border-radius:var(--dirck-radius-lg);
  background:#0e0e0c;
  aspect-ratio:9/16;
}
.swingAnalyzerPlayback video,.swingAnalyzerPlayback canvas{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
}
.swingAnalyzerPlayback canvas{pointer-events:none;}
.swingAnalyzerPlaybackCallout{
  position:absolute;
  left:12px;
  bottom:12px;
  max-width:calc(100% - 24px);
  padding:8px 11px;
  border-radius:var(--dirck-radius-pill);
  background:rgba(14,14,12,.82);
  color:#fff;
  font-size:var(--dirck-font-size-caption);
  font-weight:700;
  backdrop-filter:blur(8px);
}
.swingAnalyzerPlaybackControls{
  display:grid;
  grid-template-columns:48px minmax(0,1fr) 66px 48px;
  gap:8px;
}
.swingAnalyzerPlaybackControls button,.swingAnalyzerPhaseRail button{
  min-height:46px;
  border:1px solid var(--dirck-color-border-strong);
  border-radius:var(--dirck-radius-md);
  background:var(--dirck-color-control);
  color:var(--dirck-color-text-strong);
  font:inherit;
  font-size:var(--dirck-font-size-caption);
  font-weight:700;
  cursor:pointer;
}
.swingAnalyzerPlaybackControls button:focus-visible,.swingAnalyzerPhaseRail button:focus-visible{
  outline:3px solid var(--dirck-color-focus);
  outline-offset:2px;
}
.swingAnalyzerPhaseRail{
  display:flex;
  gap:8px;
  overflow-x:auto;
  padding:2px 1px 7px;
  scrollbar-width:thin;
  scroll-snap-type:x proximity;
}
.swingAnalyzerPhaseRail button{
  flex:0 0 92px;
  display:grid;
  place-content:center;
  gap:2px;
  scroll-snap-align:start;
}
.swingAnalyzerPhaseRail button[aria-selected="true"]{
  border-color:var(--dirck-color-accent);
  background:var(--dirck-color-accent);
  color:var(--dirck-color-on-accent);
}
.swingAnalyzerPhaseRail small{font-size:var(--dirck-font-size-caption);opacity:.75;}
.swingAnalyzerPhaseInsight{
  padding:14px;
  border-radius:var(--dirck-radius-lg);
  background:var(--dirck-color-surface-soft);
}
.swingAnalyzerPhaseInsight h3{margin:4px 0 6px;color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-body);}
.swingAnalyzerPhaseInsight p{margin:0;color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-body-sm);line-height:1.5;}
.swingAnalyzerCard,.swingAnalyzerLimits,.swingAnalyzerClubEvidence,.swingAnalyzerDiagnostics{
  padding:18px;
  border:1px solid var(--dirck-color-border);
  border-radius:var(--dirck-radius-xl);
  background:var(--dirck-color-surface);
  box-shadow:var(--dirck-shadow-sm);
}
.swingAnalyzerCard h2,.swingAnalyzerCard h4,.swingAnalyzerLimits h3,.swingAnalyzerClubEvidence h3{margin:3px 0 8px;color:var(--dirck-color-text-strong);}
.swingAnalyzerCard p,.swingAnalyzerLimits p,.swingAnalyzerClubEvidence p{line-height:1.55;}
.swingAnalyzerCard--primary{border-color:var(--dirck-color-selected-border);background:color-mix(in srgb, var(--dirck-color-accent) 10%, var(--dirck-color-surface));}
.swingAnalyzerCard--warn{border-color:var(--dirck-color-warning-text);background:var(--dirck-color-warning-surface);}
.swingAnalyzerFailure{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;}
.swingAnalyzerFailureShell{display:grid;gap:10px;min-height:0;}
.swingAnalyzerFailureActions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;}
.swingAnalyzerFailureActions button{min-height:48px;padding:10px 13px;border:1px solid var(--dirck-color-border-strong);border-radius:var(--dirck-radius-md);background:var(--dirck-color-control);color:var(--dirck-color-text-strong);font:inherit;font-weight:700;}
.swingAnalyzerFailureActions [data-reanalyze]{border-color:var(--dirck-color-accent);background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);}
.swingAnalyzerResultIcon{
  display:grid;
  place-items:center;
  width:38px;
  height:38px;
  border-radius:12px;
  background:var(--dirck-color-warning-text);
  color:var(--dirck-color-warning-surface);
  font-size:var(--dirck-font-size-section);
  font-weight:700;
}
.swingAnalyzerConfidence,.swingAnalyzerMeta,.swingAnalyzerWhyNot,.swingAnalyzerDisclaimer{color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-caption);}
.swingAnalyzerEffects{color:var(--dirck-color-text-muted-strong);}
.swingAnalyzerModule{display:inline-block;margin-top:4px;font-weight:700;color:var(--dirck-color-text-strong);}
.swingAnalyzerSecondary{display:grid;gap:10px;}
.swingAnalyzerSecondary>h3{margin:6px 2px 0;}
.swingAnalyzerLimits ul{padding-left:20px;}
.swingAnalyzerLimits li+li{margin-top:6px;}
.swingAnalyzerClubFrames{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.swingAnalyzerClubFrames figure{margin:0;overflow:hidden;border-radius:var(--dirck-radius-md);background:var(--dirck-color-surface-soft);}
.swingAnalyzerClubFrames img{display:block;width:100%;height:auto;}
.swingAnalyzerClubFrames figcaption{padding:8px 10px;text-transform:capitalize;font-size:var(--dirck-font-size-caption);font-weight:700;}
.swingAnalyzerDiagnostics{box-shadow:none;}
.swingAnalyzerDiagnostics>p{margin:12px 0 0;color:var(--dirck-color-text-muted);font-size:var(--dirck-font-size-caption);line-height:1.5;}
.swingAnalyzerDiagnosticGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:12px 0 0;}
.swingAnalyzerDiagnosticGrid>div{padding:10px;border-radius:var(--dirck-radius-md);background:var(--dirck-color-surface-soft);}
.swingAnalyzerDiagnosticGrid dt{margin-bottom:3px;color:var(--dirck-color-text-muted);font-size:var(--dirck-font-size-caption);font-weight:700;text-transform:uppercase;letter-spacing:.04em;}
.swingAnalyzerDiagnosticGrid dd{margin:0;color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-caption);font-weight:700;line-height:1.4;overflow-wrap:anywhere;}
.swingAnalyzerTechnical{margin-top:10px;}
.swingAnalyzerTechnical code{display:block;padding:9px;border-radius:var(--dirck-radius-sm);background:var(--dirck-color-surface-soft);color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-caption);overflow-wrap:anywhere;}

.swingAnalyzerLoading,.swingAnalyzerStory{
  position:fixed;
  inset:0;
  z-index:12000;
  background:#080b09;
  color:#fff;
  overscroll-behavior:contain;
}
.swingAnalyzerLoading{display:grid;place-items:center;padding:calc(24px + env(safe-area-inset-top)) 22px calc(24px + env(safe-area-inset-bottom));}
.swingAnalyzerLoadingInner{display:grid;gap:16px;width:min(100%,430px);text-align:center;}
.swingAnalyzerLoadingInner h2{margin:0;font-size:clamp(24px,7vw,34px);}
.swingAnalyzerLoadingInner>p{margin:0;color:rgba(255,255,255,.72);font-size:var(--dirck-font-size-caption);}
.swingAnalyzerLoadingMark{display:block;width:92px;height:92px;margin:0 auto;object-fit:contain;}
.swingAnalyzerLoadingTrack{overflow:hidden;height:7px;border-radius:999px;background:rgba(255,255,255,.12);}
.swingAnalyzerLoadingTrack span{display:block;height:100%;border-radius:inherit;background:var(--sa-review-accent);transition:width .24s ease;}
.swingAnalyzerLoadingStages{display:grid;gap:9px;margin:2px 0;padding:0;list-style:none;text-align:left;}
.swingAnalyzerLoadingStages li{display:flex;align-items:center;gap:10px;color:rgba(255,255,255,.48);font-size:var(--dirck-font-size-body-sm);font-weight:700;}
.swingAnalyzerLoadingStages li span{display:grid;place-items:center;width:26px;height:26px;border:1px solid rgba(255,255,255,.18);border-radius:50%;font-size:var(--dirck-font-size-caption);}
.swingAnalyzerLoadingStages li.isActive{color:#fff;}
.swingAnalyzerLoadingStages li.isActive span{
border-color:var(--sa-review-accent);background:var(--dirck-color-accent);
  color:var(--dirck-color-on-accent);
}
.swingAnalyzerLoadingStages li.isComplete{color:var(--sa-review-accent);}
.swingAnalyzerLoadingInner>button{min-height:48px;border:1px solid rgba(255,255,255,.24);border-radius:14px;background:transparent;color:#fff;font:inherit;font-weight:700;}

.swingAnalyzerStory{
  display:grid;
  grid-template-rows:auto 4px minmax(0,1fr) auto;
  gap:8px;
  padding:calc(10px + env(safe-area-inset-top)) 10px calc(10px + env(safe-area-inset-bottom));
}
.swingAnalyzerStoryHeader{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:10px;}
.swingAnalyzerStoryHeader h2{overflow:hidden;margin:1px 0 0;color:#fff;font-size:var(--dirck-font-size-body);line-height:1.15;text-overflow:ellipsis;white-space:nowrap;}
.swingAnalyzerPeriodVerdict{display:block;margin-top:3px;color:rgba(255,255,255,.72);font-size:var(--dirck-font-size-caption);font-weight:700;line-height:1.2;}
.swingAnalyzerPeriodVerdict[hidden]{display:none;}
.swingAnalyzerDeliveryReview{display:block;min-height:44px;max-width:100%;padding:6px 0;border:0;background:transparent;color:#fff;text-align:left;font:600 var(--dirck-font-size-caption)/1.3 var(--dirck-font-body);white-space:normal;}
.swingAnalyzerDeliveryReview[hidden]{display:none;}
.swingAnalyzerPeriodVerdict[data-status="needs_work"]{color:#ffd9be;}
.swingAnalyzerPeriodVerdict[data-status="on_track"]{color:#bfe6c5;}
.swingAnalyzerStoryHeader .pageEyebrow{color:rgba(255,255,255,.6);font-size:var(--dirck-font-size-caption);}
.swingAnalyzerStoryHeader>button{width:44px;height:44px;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:rgba(255,255,255,.08);color:#fff;font:var(--dirck-font-size-title-sm)/1 var(--dirck-font-body);}
.swingAnalyzerStoryHeader>span{font-size:var(--dirck-font-size-caption);font-weight:700;color:rgba(255,255,255,.72);}
.swingAnalyzerStoryProgress{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;}
.swingAnalyzerStoryProgress button{position:relative;min-width:0;height:18px;padding:0;border:0;background:transparent;}
.swingAnalyzerStoryProgress button::after{position:absolute;top:7px;right:0;left:0;height:4px;border-radius:999px;background:rgba(255,255,255,.2);content:"";}
.swingAnalyzerStoryProgress button.isActive::after{background:var(--sa-review-accent);}
.swingAnalyzerStoryMedia{min-height:0;display:grid;place-items:center;}
.swingAnalyzerStoryMedia[hidden],.swingAnalyzerStoryFooter[hidden],.swingAnalyzerStorySummary[hidden]{display:none;}
.swingAnalyzerStory .swingAnalyzerPlayback{width:100%;height:100%;min-height:0;aspect-ratio:auto;border-radius:18px;}
.swingAnalyzerStoryArrow{position:absolute;z-index:5;top:50%;display:grid;place-items:center;width:48px;height:64px;transform:translateY(-50%);border:1px solid rgba(255,255,255,.2);background:rgba(0,0,0,.35);color:#fff;font:44px/1 system-ui;backdrop-filter:blur(8px);}
.swingAnalyzerStoryArrow--previous{left:8px;border-radius:0 16px 16px 0;}
.swingAnalyzerStoryArrow--next{right:8px;border-radius:16px 0 0 16px;}
html.swing-story-open .mobileBottomNav{display:none!important;}
html.swing-story-open body{padding-bottom:0!important;}
.swingAnalyzerHotspotLayer{position:absolute;inset:0;z-index:4;pointer-events:none;}
.swingAnalyzerClubReferenceLayer{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden;}
.swingAnalyzerClubReferenceLayer svg{display:block;width:100%;height:100%;}
.swingAnalyzerClubReferenceLayer line{stroke:#bdc3bf;stroke-width:1.25;stroke-dasharray:5 4;}
.swingAnalyzerClubReferenceLayer line[data-reference="middle_guide"]{stroke-dasharray:2 5;}
.swingAnalyzerClubReferenceLayer line[data-reference="shaft"]{stroke:#fff;stroke-width:1.5;stroke-dasharray:none;}
.swingAnalyzerClubReferenceLayer[data-shaft-review="true"] line[data-reference="shaft"]{stroke-width:2.5;}
.swingAnalyzerClubReferenceLayer[data-shaft-review="true"] line[data-reference="projection"]{stroke:#efc267;stroke-width:2;stroke-dasharray:6 4;}
.swingAnalyzerClubReferenceLayer[data-shaft-review="true"] line[data-reference="ground_reference"]{stroke:#9fdcc6;stroke-width:2;stroke-dasharray:3 4;}
.swingAnalyzerClubReferenceLayer[data-shaft-review="true"] rect[data-reference="ball_reference"]{stroke:#9fdcc6;stroke-width:2;}
.swingAnalyzerClubReferenceLayer[data-shaft-review="true"] rect[data-reference="intersection"]{stroke:#efc267;stroke-width:2;}
.swingAnalyzerClubReferenceLayer rect{stroke:#bdc3bf;stroke-width:1;fill:none;}
.swingAnalyzerClubReferenceCaption{margin:0;font-size:var(--dirck-font-size-caption);line-height:1.35;color:inherit;opacity:.85;}
/* Evidence stays automatic; the fine neutral pose starts visible like the Home
   reference. Touch targets remain 44px independently of the drawn geometry. */
.swingAnalyzerHotspot{--segment-color:rgba(255,255,255,.9);position:absolute;height:44px;min-block-size:44px;padding:0;border:0;border-radius:999px;background:transparent;color:#fff;pointer-events:auto;transform-origin:center;}
.swingAnalyzerHotspot::after{position:absolute;top:50%;left:50%;width:var(--evidence-length);height:1.5px;transform:translate(-50%,-50%);border:0;border-radius:999px;background:var(--segment-color);box-shadow:0 1px 2px rgba(0,0,0,.6);content:"";}
.swingAnalyzerHotspot[aria-expanded="true"]::after{box-shadow:0 0 5px var(--segment-color);}
.swingAnalyzerJoint{position:absolute;z-index:1;top:50%;width:4px;height:4px;box-sizing:border-box;border:.5px solid #183b2b;border-radius:50%;background:#fff;transform:translate(-50%,-50%);pointer-events:none;}
.swingAnalyzerJoint--from{left:calc(50% - var(--evidence-length)/2);}
.swingAnalyzerJoint--to{left:calc(50% + var(--evidence-length)/2);}
.swingAnalyzerEvidenceSegment[data-dashed="true"]::after{background:repeating-linear-gradient(to right,var(--segment-color) 0 4px,transparent 4px 7px);}
.swingAnalyzerEvidenceArrow{position:absolute;left:calc(50% + var(--evidence-length)/2);top:50%;width:6px;height:6px;box-sizing:border-box;border-top:1.5px solid var(--segment-color);border-right:1.5px solid var(--segment-color);transform:translate(-50%,-50%) rotate(45deg);pointer-events:none;}
.swingAnalyzerPointMarker{width:44px;transform:translate(-50%,-50%);}
.swingAnalyzerPointMarker::after{width:6px;height:6px;box-sizing:border-box;border:1.5px solid var(--segment-color);border-radius:1px;background:transparent;}
.swingAnalyzerHotspot--on_track{--segment-color:#71d48b;}
.swingAnalyzerHotspot--needs_work{--segment-color:#ed8179;}
.swingAnalyzerHotspot[data-assessment="possible"]{--segment-color:#efc267;}
.swingAnalyzerJointAngle{width:44px;transform:translate(-50%,-50%);}
.swingAnalyzerJointAngle::after{content:none;}
.swingAnalyzerJointAngle svg{width:44px;height:44px;overflow:visible;pointer-events:none;}
.swingAnalyzerAngleSupports{fill:none;stroke:rgba(255,255,255,.88);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;}
.swingAnalyzerAngleArc{fill:none;stroke:var(--segment-color);stroke-width:1.5;stroke-linecap:round;}
.swingAnalyzerAngleJointHalo{fill:var(--segment-color);fill-opacity:.2;stroke:none;}
.swingAnalyzerAngleJoint{fill:#fff;stroke:#183b2b;stroke-width:.5;}
.swingAnalyzerAngleSupportJoint{fill:#fff;stroke:#183b2b;stroke-width:.5;}
.swingAnalyzerMeasurementComparison{padding:10px;border:1px solid rgba(255,255,255,.25);border-radius:10px;margin:10px 0;}
.swingAnalyzerMeasurementComparison dl{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:8px 0;}
.swingAnalyzerMeasurementComparison dd{margin:3px 0;font-weight:700;}
.swingAnalyzerMeasurementComparison small{font-size:var(--dirck-font-size-caption);opacity:.75;}
.swingAnalyzerComparisonDiagram{display:block;width:100%;max-height:95px;}
.swingAnalyzerComparisonDiagram polyline{fill:none;stroke:#bdc3bf;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}
.swingAnalyzerComparisonDiagram circle{fill:#bdc3bf;stroke:#183b2b;stroke-width:.5;}
.swingTorsoEvidence [data-torso-comparison-pair][hidden]{display:none;}
.swingTorsoEvidence .swingAnalyzerMeasurementComparison small{display:block;}
.swingTorsoEvidence [data-torso-comparison-frame]{display:block;width:100%;margin-top:8px;}
.swingAnalyzerStory .swingAnalyzerHotspotExplanation:has(.swingAnalyzerMeasurementComparison){max-height:max(110px,min(45vh,calc(100dvh - var(--swing-story-footer-height,158px) - 160px)));}
.swingAnalyzerJointAngle[aria-expanded="true"] .swingAnalyzerAngleArc{filter:drop-shadow(0 0 2px var(--segment-color));}
.swingAnalyzerSkeletonToggle{min-height:44px;padding:7px 12px;border:1px solid rgba(255,255,255,.3);border-radius:12px;background:rgba(5,9,7,.45);color:#fff;font:inherit;font-size:var(--dirck-font-size-caption);font-weight:700;touch-action:manipulation;}
.swingAnalyzerSkeletonToggle[aria-pressed="true"]{background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);border-color:var(--sa-review-accent);}
.swingAnalyzerSkeletonStatus{position:absolute;z-index:3;top:12px;left:12px;max-width:calc(100% - 24px);padding:6px 9px;border-radius:9px;background:rgba(5,9,7,.7);color:#fff;font-size:var(--dirck-font-size-caption);pointer-events:none;}
.swingAnalyzerSkeletonStatus[hidden]{display:none;}
.swingAnalyzerStoryFooter{display:grid;justify-self:center;width:min(100%,320px);gap:7px;padding:1px 2px;}
.swingAnalyzerPeriodRecommendation{min-height:42px;padding:8px 14px;border:1px solid var(--dirck-color-border-strong);border-radius:13px;background:var(--dirck-color-surface);color:var(--dirck-color-accent);font:inherit;font-size:var(--dirck-font-size-caption);font-weight:700;box-shadow:0 8px 22px rgba(0,0,0,.2);}
.swingAnalyzerPeriodRecommendation[hidden]{display:none;}
.swingAnalyzerReviewActions{display:flex;gap:6px;}
.swingAnalyzerStory .swingAnalyzerReviewActions>button{flex:1 1 0;min-width:0;height:44px;min-height:44px;box-sizing:border-box;padding:5px;font-size:var(--dirck-font-size-caption);line-height:1.2;}
.swingAnalyzerPeriodRecommendation[data-status="needs_work"]{background:var(--dirck-color-surface);color:var(--dirck-color-accent);}
.swingAnalyzerStorySheetHandle{display:none;}
.swingAnalyzerStory .swingAnalyzerPlaybackControls{
grid-template-columns:minmax(0,1fr) 72px;
  background:var(--dirck-color-surface);
  border:1px solid var(--dirck-color-border-strong);
}
.swingAnalyzerStory .swingAnalyzerPhaseRail{padding-bottom:3px;}
.swingAnalyzerStory .swingAnalyzerPhaseRail button{flex-basis:70px;min-height:44px;border-color:rgba(255,255,255,.18);background:rgba(255,255,255,.08);color:#fff;}
.swingAnalyzerStory .swingAnalyzerPhaseRail button[aria-selected="true"]{
border-color:var(--sa-review-accent);background:var(--dirck-color-accent);
  color:var(--dirck-color-on-accent);
}
.swingAnalyzerStory .swingAnalyzerPhaseInsight{padding:11px 13px;background:var(--dirck-color-surface);color:var(--dirck-color-text-strong);}
.swingAnalyzerStory .swingAnalyzerPhaseInsight h3{margin:2px 0 4px;color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-body-sm);}
.swingAnalyzerStory .swingAnalyzerPhaseInsight p{color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-caption);}
.swingAnalyzerHotspotList{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px;}
.swingAnalyzerHotspotList button{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:7px 10px;border:1px solid var(--dirck-color-border-strong);border-radius:999px;background:var(--dirck-color-surface);color:var(--dirck-color-accent);font:inherit;font-size:var(--dirck-font-size-caption);font-weight:700;}
.swingAnalyzerHotspotList button>span:first-child{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);font-size:var(--dirck-font-size-caption);}
.swingAnalyzerHotspotList button[data-status="needs_work"]>span:first-child{background:#b22626;}
.swingAnalyzerHotspotList button[data-status="on_track"]>span:first-child{background:#1e6e3c;}
.swingAnalyzerHotspotExplanation{position:absolute;z-index:7;right:14px;bottom:14px;left:14px;display:grid;grid-template-columns:minmax(0,1fr) 36px;gap:8px;align-items:start;max-height:min(28%,180px);overflow:auto;padding:12px;border:1px solid var(--dirck-color-border);border-radius:16px;background:var(--dirck-color-surface);color:var(--dirck-color-text-strong);box-shadow:0 12px 30px rgba(0,0,0,.28);-webkit-backdrop-filter:blur(18px) saturate(1.15);backdrop-filter:blur(18px) saturate(1.15);}
.swingAnalyzerHotspotExplanation[hidden]{display:none;}
.swingAnalyzerStory .swingAnalyzerHotspotExplanation{
grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:12px;padding:12px 14px;border-radius:18px;border-left:3px solid var(--dirck-color-accent);background:var(--dirck-color-surface);
  color:var(--dirck-color-text-strong);
  border:1px solid var(--dirck-color-border);
}
.swingAnalyzerStory .swingAnalyzerHotspotExplanation[data-status="needs_work"]{border-left-color:#ffb4b4;}
.swingAnalyzerStory .swingAnalyzerHotspotExplanation[data-status="unassessed"]{border-left-color:#c1cac6;align-items:start;}
.swingAnalyzerStory .swingAnalyzerHotspotExplanation[data-status="unassessed"]>button{position:sticky;top:0;}
.swingAnalyzerStory .swingAnalyzerHotspotExplanation>button{display:grid;place-items:center;box-sizing:border-box;width:44px;min-width:44px;height:44px;min-height:44px;padding:0;border:1px solid var(--dirck-color-border);border-radius:50%;background:var(--dirck-color-surface);color:var(--dirck-color-text-strong);font:600 var(--dirck-font-size-section)/1 var(--dirck-font-body);}
.swingAnalyzerHotspotFinding strong{display:block;line-height:1.4;}
.swingAnalyzerHotspotFinding+.swingAnalyzerHotspotFinding{margin-top:6px;padding-top:8px;border-top:1px solid rgba(255,255,255,.12);}
.swingAnalyzerHotspotExplanationBody{display:grid;gap:4px;}.swingAnalyzerHotspotExplanationBadge{width:max-content;padding:3px 7px;border-radius:999px;background:#e7f1e7;color:#24432d;font-size:var(--dirck-font-size-caption);font-weight:700;letter-spacing:.05em;text-transform:uppercase;}
.swingAnalyzerHotspotExplanation[data-status="needs_work"] .swingAnalyzerHotspotExplanationBadge{background:#f7d9d9;color:#7d1d1d;}
.swingAnalyzerHotspotExplanation[data-status="on_track"] .swingAnalyzerHotspotExplanationBadge{background:#dcefdf;color:#1c5433;}
.swingAnalyzerHotspotExplanation strong{color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-body-sm);}.swingAnalyzerHotspotExplanation p{margin:3px 0 0!important;color:var(--dirck-color-text-muted-strong)!important;line-height:1.42;}
.swingAnalyzerHotspotExplanation[data-status="needs_work"] strong{color:var(--dirck-color-text-strong);}
.swingAnalyzerHotspotExplanation[data-status="on_track"] strong{color:var(--dirck-color-text-strong);}
.swingAnalyzerHotspotModule{width:max-content;margin-top:5px;color:var(--dirck-color-accent);font-size:var(--dirck-font-size-caption);font-weight:700;text-decoration:none;}
.swingAnalyzerStorySummary{min-height:0;overflow:auto;padding:16px;border-radius:20px;background:var(--dirck-color-surface);color:var(--dirck-color-text-strong);}
.swingAnalyzerScoreCard{display:flex;align-items:center;gap:14px;margin-bottom:22px;padding-bottom:20px;border-bottom:1px solid var(--dirck-color-border);}
.swingAnalyzerScoreCard>span:last-child{display:grid;gap:4px;}.swingAnalyzerScoreCard>span:last-child b{font-size:var(--dirck-font-size-body);}.swingAnalyzerScoreCard>span:last-child small{color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-caption);font-weight:700;}
.swingAnalyzerScoreRing{
display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;box-sizing:border-box;width:76px;height:76px;flex:0 0 76px;border:7px solid var(--dirck-color-progress-track);border-top-color:var(--dirck-color-accent);border-right-color:var(--dirck-color-accent);border-radius:50%;background:var(--dirck-color-surface);text-align:center;
  color:var(--dirck-color-text-strong);
}
.swingAnalyzerScoreRing strong{display:block;margin:0;padding:0;font-size:var(--dirck-font-size-title-sm);line-height:1;font-variant-numeric:tabular-nums;}.swingAnalyzerScoreRing small{display:block;margin:0;padding:0;font-size:var(--dirck-font-size-caption);line-height:1;color:var(--dirck-color-text-muted-strong);}
.swingAnalyzerStorySummary h2{margin:4px 0 10px;color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-title-sm);}
.swingAnalyzerStorySummary ol{display:grid;gap:8px;margin:0;padding:0;list-style:none;counter-reset:priority;}
.swingAnalyzerStorySummary li{counter-increment:priority;padding:10px 12px;border:1px solid var(--dirck-color-border);border-radius:16px;background:var(--dirck-color-surface);}
.swingAnalyzerStorySummary li a{display:inline-flex;align-items:center;min-height:44px;font-size:var(--dirck-font-size-body-sm);}
.swingAnalyzerStorySummary .swingAnalyzerScoreCard{
margin-bottom:10px;padding-bottom:10px;
  border-bottom:1px solid var(--dirck-color-border);
}
.swingAnalyzerStorySummary li::before{content:counter(priority);display:grid;place-items:center;float:left;width:28px;height:28px;margin-right:10px;border-radius:50%;background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);font-size:var(--dirck-font-size-caption);font-weight:700;}
.swingAnalyzerStorySummary h3{margin:2px 0 8px;color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-body);}.swingAnalyzerStorySummary p{line-height:1.5;}.swingAnalyzerStorySummary a{font-weight:700;color:var(--dirck-color-accent);}
.swingCoachingReview{display:grid;gap:8px;min-width:0;text-align:left;}
.swingCoachingReview h3{margin:0;font-size:var(--dirck-font-size-section);line-height:1.22;}
.swingCoachingReview p{margin:0!important;font-size:var(--dirck-font-size-body-sm);line-height:1.5;}
.swingCoachingReview p>b,.swingCoachingRetest>b{display:block;margin-bottom:3px;font-size:var(--dirck-font-size-caption);letter-spacing:.04em;text-transform:uppercase;}
.swingCoachingStatus{width:fit-content;max-width:100%;padding:6px 9px;border-radius:8px;background:#dce9dd;color:#24432d;font-size:var(--dirck-font-size-caption);font-weight:700;line-height:1.35;}
.swingCoachingStatus[data-possible="true"]{background:#f2e4c7;color:#594622;}
.swingCoachingReview button[data-coaching-evidence]{min-height:44px;padding:10px 12px;border:1px solid var(--dirck-color-accent);border-radius:12px;background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);font:600 var(--dirck-font-size-body-sm)/1.4 var(--dirck-font-body);text-align:left;}
.swingCoachingCue{padding:12px;border:1px solid var(--dirck-color-border);border-radius:12px;background:var(--dirck-color-surface-soft);}
.swingCoachingCue>b{font-size:var(--dirck-font-size-caption);letter-spacing:.04em;text-transform:uppercase;}
.swingCoachingReview a{display:inline-flex;align-items:center;min-height:44px;font-size:var(--dirck-font-size-body-sm);line-height:1.4;}
.swingCoachingLimits{font-size:var(--dirck-font-size-caption);line-height:1.5;}
.swingCoachingLimits summary{display:flex;align-items:center;min-height:44px;cursor:pointer;font-weight:700;}
.swingCoachingReview .swingCoachingLimit,.swingCoachingReview .swingCoachingEvidence{font-size:var(--dirck-font-size-caption);}
.swingCoachingRetest{padding-top:12px;border-top:1px solid rgba(130,155,137,.35);}
.swingCoachingFrameContext{margin:0;color:#e3e8df;font-size:var(--dirck-font-size-caption);line-height:1.4;text-align:center;}
.swingCoachingFrameContext[hidden]{display:none;}
.swingShaftEvidenceButton{min-height:44px;padding:8px 12px;border:1px solid var(--dirck-color-accent);border-radius:12px;background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);font:600 var(--dirck-font-size-caption)/1.35 var(--dirck-font-body);}
.swingShaftEvidenceButton[hidden],.swingShaftFrameLegend[hidden]{display:none;}
.swingShaftFrameLegend{margin:0;color:#ecf1e9;font-size:var(--dirck-font-size-caption);line-height:1.4;text-align:center;}
.swingShaftCamera{display:flex;align-items:center;gap:10px;min-height:44px;font-size:var(--dirck-font-size-body-sm);line-height:1.4;}
.swingShaftCamera input{width:24px;height:24px;flex:none;accent-color:var(--dirck-color-accent);}
.swingShaftLegendLine{display:inline-block;width:24px;margin-right:7px;border-top:2px solid #fff;vertical-align:middle;}
.swingShaftLegendLine--reference{border-top:2px dashed #efc267;}
.swingCoachingFrameDetails summary{display:flex;align-items:center;min-height:44px;color:var(--sa-review-accent);font-size:var(--dirck-font-size-body-sm);font-weight:700;cursor:pointer;}
.swingCoachingFrameDetails summary::before{content:"+";margin-right:8px;font-size:var(--dirck-font-size-body);}
.swingCoachingFrameDetails[open] summary::before{content:"−";}
.swingCoachingFrameDetails summary:focus-visible{outline:3px solid var(--sa-review-accent);outline-offset:3px;border-radius:6px;}
.swingCoachingFrameDetails>div{display:grid;gap:12px;padding-top:6px;}
.swingAnalyzerStory .swingAnalyzerHotspotExplanation:has(.swingCoachingReview){max-height:min(34vh,calc(100dvh - var(--swing-story-footer-height,158px) - 140px));align-items:start;background:var(--dirck-color-surface);}
.swingAnalyzerStory .swingAnalyzerHotspotExplanation:has(.swingCoachingReview)>button{position:sticky;top:0;}
.swingAnalyzerHotspotExplanation .swingCoachingReview h3{color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-body);}
.swingAnalyzerHotspotExplanation .swingCoachingReview a{color:var(--dirck-color-accent);}
.swingAnalyzerStorySummary .swingCoachingReview{
padding:16px;border:1px solid var(--dirck-color-border);border-radius:16px;background:var(--dirck-color-surface);
  color:var(--dirck-color-text-strong);
}
.swingTorsoEvidence summary{color:inherit;}
.swingTorsoEvidence summary:focus-visible{outline-color:currentColor;}
.swingTorsoEvidence .swingAnalyzerComparisonDiagram polyline{stroke:currentColor;stroke-width:2;opacity:.65;}
.swingTorsoEvidence .swingAnalyzerMeasurementComparison small{font-size:var(--dirck-font-size-caption);opacity:.9;}
.swingTorsoEvidence [data-torso-comparison-frame]{min-height:44px;padding:8px;border:1px solid currentColor;border-radius:10px;background:transparent;color:inherit;font:600 var(--dirck-font-size-caption)/1.3 var(--dirck-font-body);}
.swingAnalyzerPriorityPhase{display:inline-block;margin-bottom:5px;color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-caption);font-weight:700;letter-spacing:.07em;text-transform:uppercase;}
.swingAnalyzerStorySummary .swingAnalyzerPriorityWhy{margin-top:-2px;color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-caption);}
.swingAnalyzerVerdictSummary{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0 18px!important;}
.swingAnalyzerVerdictSummary span,.swingAnalyzerVerdictSummary strong{padding:5px 8px;border-radius:999px;background:#e7ebe5;color:#3f473f;font-size:var(--dirck-font-size-caption);}
.swingAnalyzerVerdictSummary strong{background:#f5ddca;color:#6f351a;}
.swingAnalyzerScoreCard--ungraded{grid-template-columns:1fr;}
/* The summary scrolls, so a static trailing button sat below the fold and was
   unreachable without the golfer discovering the scroll. Pin it instead. */
.swingAnalyzerStorySummary>button{position:sticky;bottom:0;z-index:2;width:100%;min-height:46px;margin-top:14px;padding:9px 13px;border:1px solid var(--dirck-color-border-strong);border-radius:12px;background:var(--dirck-color-surface);color:var(--dirck-color-accent);font:inherit;font-weight:700;box-shadow:none;}
.swingAnalyzerStory button:focus-visible,.swingAnalyzerStory a:focus-visible,.swingAnalyzerStory [tabindex]:focus-visible,.swingAnalyzerStory summary:focus-visible,.swingAnalyzerLoading button:focus-visible{outline:3px solid var(--sa-review-accent);outline-offset:3px;}

@media(max-width:620px){
  html.swing-analyzer-route,
  html.swing-analyzer-route body{height:100%;min-height:100%;overflow:hidden;}
  html.swing-analyzer-route body{padding-bottom:0;}
  html.swing-analyzer-route .app{height:var(--dirck-viewport-height);min-height:0;overflow:hidden;}
  html.swing-analyzer-route .main{height:calc(var(--dirck-viewport-height) - var(--dirck-bottom-clearance));min-height:0;overflow:hidden;padding-top:8px;padding-bottom:8px;}
  html.swing-analyzer-route[data-dirck-keyboard="open"] .main{height:var(--dirck-viewport-height);}
  html.swing-analyzer-route #content{height:100%;min-height:0;overflow:hidden;}
  .swingAnalyzerTool{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto auto;gap:8px;height:100%;min-height:0;padding-bottom:0;}
  /* The selected-video form owns its own safe-area inset. The opening screen
     needs the same protection without adding a fixed header or double inset. */
  .swingAnalyzerTool:not(.hasVideo):not(.hasFailure){padding-top:var(--dirck-safe-top, env(safe-area-inset-top, 0px));}
  /* History adds content, not less space for the upload control. Let the entry
     cards keep their natural height and scroll together above the tab bar. */
  .swingAnalyzerTool:not(.hasVideo):not(.hasFailure){grid-template-rows:none;grid-auto-rows:max-content;align-content:start;padding-bottom:16px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}
  .swingAnalyzerRecent{
margin-top:16px;padding:20px;
  border-radius:20px;
  box-shadow:var(--dirck-shadow-sm);
}
  .swingAnalyzerTool.hasVideo>.pageBack{display:none;}
  .swingAnalyzerHero{
margin:0 0 16px;
  background:var(--dirck-color-surface);
  color:var(--dirck-color-text-strong);
  border:1px solid var(--dirck-color-border);
  padding:16px;
}
  .swingAnalyzerHeroMark{flex-basis:46px;width:46px;height:46px;border-radius:14px;font-size:var(--dirck-font-size-title-sm);}
  .swingAnalyzerGuide{grid-template-columns:1fr;}
  .swingAnalyzerGuide>div{align-items:center;}
  .swingAnalyzerForm{
min-height:0;gap:16px;padding:20px;
  border-radius:20px;
  box-shadow:var(--dirck-shadow-sm);
}
  .swingAnalyzerForm:not(.hasVideo){grid-template-rows:auto auto;min-height:min-content;}
  .swingAnalyzerForm:not(.hasVideo) .swingAnalyzerUploadCard{
height:auto;min-height:200px;padding:20px;
  background:color-mix(in srgb, var(--dirck-color-accent) 10%, var(--dirck-color-surface));
  color:var(--dirck-color-text-strong);
  border:1px solid var(--dirck-color-border);
  box-shadow:none;
}
  .swingAnalyzerUploadIcon{
width:62px;height:62px;border-radius:20px;
  background:var(--dirck-color-surface);
  color:var(--dirck-color-accent);
  border:1px solid var(--dirck-color-border);
  box-shadow:none;
}
  .swingAnalyzerTool.hasVideo{grid-template-rows:minmax(0,1fr) auto auto;}
  .swingAnalyzerTool.hasFailure{grid-template-rows:minmax(0,1fr);}
  .swingAnalyzerTool.hasFailure>.swingAnalyzerForm,
  .swingAnalyzerTool.hasFailure>.swingAnalyzerStatus{display:none;}
  .swingAnalyzerTool.hasFailure>.swingAnalyzerResult{height:100%;min-height:0;margin:0;overflow:hidden;}
  .swingAnalyzerTool.hasFailure .swingAnalyzerFailureShell{height:100%;grid-template-rows:minmax(0,1fr) auto;}
  .swingAnalyzerTool.hasFailure .swingAnalyzerFailure{min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;}
  .swingAnalyzerForm.hasVideo{grid-template-rows:minmax(0,1fr) auto auto;gap:9px;height:100%;padding:max(9px,calc(env(safe-area-inset-top) + 4px)) 9px 9px;border-color:transparent;background:transparent;box-shadow:none;}
  .swingAnalyzerForm.hasVideo .swingAnalyzerTrim{
position:relative;grid-template-rows:minmax(0,1fr) auto;min-height:0;gap:8px;overflow:hidden;
  background:var(--dirck-color-surface);
  border:1px solid var(--dirck-color-border);
  color:var(--dirck-color-text-strong);
  box-shadow:var(--dirck-shadow-sm);
}
  .swingAnalyzerForm.hasVideo .swingAnalyzerTrimPreview{height:100%;min-height:0;max-height:none;border-radius:14px;}
  .swingAnalyzerTrimRanges{gap:8px;}
  .swingAnalyzerTrimRanges label{gap:4px;}
  .swingAnalyzerTrimControl{
padding:9px;
  background:var(--dirck-color-surface-soft);
  border:1px solid var(--dirck-color-border);
}
  .swingAnalyzerBreakdown{padding:14px;}
  .swingAnalyzerBreakdownHeading{display:grid;}
  .swingAnalyzerPlaybackControls{grid-template-columns:44px minmax(0,1fr) 58px 44px;}
  .swingAnalyzerDiagnosticGrid{grid-template-columns:1fr;}
  .swingAnalyzerFailure{grid-template-columns:1fr;}
  .swingAnalyzerStory{position:fixed;grid-template-rows:auto 18px minmax(0,1fr);padding-left:6px;padding-right:6px;}
  .swingAnalyzerStoryFooter{position:absolute;z-index:8;right:50%;bottom:calc(20px + env(safe-area-inset-bottom));left:auto;width:min(58vw,230px);padding:5px;transform:translateX(50%);border:1px solid rgba(255,255,255,.14);border-radius:18px;background:rgba(7,12,9,.34);box-shadow:0 8px 24px rgba(0,0,0,.16);-webkit-backdrop-filter:blur(14px) saturate(1.08);backdrop-filter:blur(14px) saturate(1.08);}
  .swingAnalyzerStoryFooter[hidden]{display:none;}
  .swingAnalyzerStorySheetHandle{display:block;width:36px;height:4px;margin:0 auto 1px;border-radius:999px;background:rgba(255,255,255,.48);}
  .swingAnalyzerStory .swingAnalyzerPlaybackControls button{border-color:var(--dirck-color-border-strong);background:transparent;color:var(--dirck-color-text-strong);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);}
  /* The story progress segments, edge arrows, and swipe gesture already expose
     every Period. Hiding the duplicate text rail gives the video roughly one
     additional club-length of vertical space on a phone. */
  .swingAnalyzerStory .swingAnalyzerPhaseRail{display:none;}
  .swingAnalyzerStoryArrow{top:42%;}
  .swingAnalyzerStory .swingAnalyzerPhaseInsight{max-height:9vh;overflow:auto;padding:4px 2px 1px;background:var(--dirck-color-surface);color:var(--dirck-color-text-strong);}
  .swingAnalyzerStory .swingAnalyzerPhaseInsight h3{color:var(--dirck-color-text-strong);}
  .swingAnalyzerStory .swingAnalyzerPhaseInsight p{color:var(--dirck-color-text-muted-strong);}
  .swingAnalyzerStory .swingAnalyzerPhaseInsight .pageEyebrow{color:var(--dirck-color-accent);}
  .swingAnalyzerStory .swingAnalyzerHotspotList{gap:6px;margin-top:7px;}
  .swingAnalyzerStory .swingAnalyzerHotspotList button{
min-height:44px;border-color:var(--dirck-color-border-strong);background:var(--dirck-color-surface);color:var(--dirck-color-accent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  border:1px solid var(--dirck-color-border-strong);
}
  .swingAnalyzerStory .swingAnalyzerHotspotExplanation{
right:10px;bottom:calc(var(--swing-story-footer-height,158px) + 36px + env(safe-area-inset-bottom));left:10px;max-height:min(24vh,190px);background:var(--dirck-color-surface);
  color:var(--dirck-color-text-strong);
  border:1px solid var(--dirck-color-border);
  border-left:3px solid var(--dirck-color-accent);
}
}

@media(prefers-reduced-motion:reduce){
  .swingAnalyzerTool *{scroll-behavior:auto!important;transition:none!important;animation:none!important;}
}
.swingAnalyzerStory.swingAnalyzerStory--reading{display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;}
.swingAnalyzerStory--reading .swingAnalyzerStoryHeader,.swingAnalyzerStory--reading .swingAnalyzerStoryProgress{flex:none;}
.swingAnalyzerStory--reading .swingAnalyzerStoryMedia{height:360px;min-height:360px;flex:0 0 360px;}
.swingAnalyzerStory--reading .swingAnalyzerStoryFooter{position:static;flex:none;align-self:center;width:calc(100% - 20px);max-width:320px;transform:none;margin:0 auto 12px;}
.swingAnalyzerStory.swingAnalyzerStory--reading .swingAnalyzerReviewActions>button{height:auto;}
.swingAnalyzerStory.swingAnalyzerStory--reading .swingAnalyzerHotspotExplanation{
position:static;flex:none;max-height:none;overflow:visible;
  background:var(--dirck-color-surface);
  color:var(--dirck-color-text-strong);
  border:1px solid var(--dirck-color-border);
}
.swingAnalyzerStory--reading .swingAnalyzerHotspotExplanation:has(.swingCoachingReview){max-height:none;}
.swingAnalyzerStory--reading .swingAnalyzerStorySummary{
flex:1 0 auto;overflow:visible;
  color:var(--dirck-color-text-strong);
}
.swingAnalyzerStorySummary .swingAnalyzerPriorityConsequence{margin:4px 0 2px;font-size:var(--dirck-font-size-caption);line-height:1.4;color:var(--dirck-color-text-muted-strong);}
/* Keep all review controls in one compact row: playback, skeleton, issues. */
.swingAnalyzerStory .swingAnalyzerStoryFooter{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;width:min(calc(100% - 24px),420px);max-width:420px;box-sizing:border-box;padding:8px;}
.swingAnalyzerStoryFooter>p,.swingAnalyzerStoryFooter>.swingShaftEvidenceButton{
grid-column:1 / -1;
  border:1px solid var(--dirck-color-accent);
  background:var(--dirck-color-accent);
  color:var(--dirck-color-on-accent);
}
.swingAnalyzerStory .swingAnalyzerPlaybackControls{display:flex;gap:0;margin:0;overflow:hidden;border:1px solid var(--dirck-color-border-strong);border-radius:14px;background:var(--dirck-color-surface);}
.swingAnalyzerStory .swingAnalyzerPlaybackControls button{
height:44px;min-height:44px;padding:0;border:0;border-radius:0;background:transparent;color:var(--dirck-color-text-strong);box-shadow:none;font-size:var(--dirck-font-size-body-sm);
  border-color:var(--dirck-color-border-strong);
}
.swingAnalyzerStory #saBreakdownPlay{display:grid;place-items:center;width:44px;min-width:44px;}
.swingAnalyzerStory #saBreakdownSpeed{width:auto;min-width:51px;padding:0 7px;white-space:nowrap;}
.swingAnalyzerPlayIcon{display:block;width:0;height:0;margin-left:3px;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:11px solid currentColor;}
.isPlaying .swingAnalyzerPlayIcon{box-sizing:border-box;width:12px;height:14px;margin-left:0;border-top:0;border-bottom:0;border-left:4px solid currentColor;border-right:4px solid currentColor;}
.swingAnalyzerStory .swingAnalyzerReviewActions{gap:7px;}
.swingAnalyzerStory .swingAnalyzerReviewActions>button{height:44px;min-height:44px;padding:6px 8px;border-radius:14px;font-size:var(--dirck-font-size-caption);line-height:1.25;}
.swingAnalyzerStory #saToggleSkeleton{flex:1 1 auto;}
.swingAnalyzerStory #saPeriodRecommendation{flex:0 0 62px;}
.swingAnalyzerStory .swingAnalyzerStoryFooter[hidden]{display:none;}
/* A finding whose lesson is not built yet says so instead of linking elsewhere. */
.swingAnalyzerLessonComing{margin:4px 0 0!important;font-size:var(--dirck-font-size-caption)!important;font-weight:700;letter-spacing:.02em;opacity:.75;}

/* Keep every club-family choice reachable on smaller phones. */
.swingAnalyzerClubConfirmation{overflow-y:auto;}
.swingAnalyzerClubConfirmation .swingAnalyzerLoadingInner{gap:10px;}
.swingAnalyzerClubConfirmation .swingAnalyzerLoadingInner>button{min-height:44px;}

/* Focused practice is available before video selection and in the story summary. */
.swingPracticeCard{display:grid;gap:12px;padding:20px;border:1px solid var(--dirck-color-border);border-radius:20px;background:var(--dirck-color-surface);color:var(--dirck-color-text-strong);text-align:left;min-width:0;}
.swingPracticeCard h3,.swingPracticeCard p{margin:0;overflow-wrap:anywhere;}
.swingPracticeCard label{display:grid;gap:8px;font-weight:600;}
.swingPracticeCard input[type="number"],.swingPracticeCard textarea{box-sizing:border-box;width:100%;padding:12px;border:1px solid var(--dirck-color-border-strong);border-radius:14px;background:var(--dirck-color-control);color:var(--dirck-color-text-strong);font:inherit;}
.swingPracticeCard button,.swingPracticeCard a,.swingPracticeCard summary{min-height:44px;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;font:inherit;}
.swingPracticeCard button{
padding:10px 14px;border:0;border-radius:14px;background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);font-weight:700;touch-action:manipulation;
  min-height:48px;
}
.swingPracticeCard .swingPracticeClear{background:transparent;color:inherit;border:1px solid var(--dirck-color-border-strong);}
.swingPracticeCard summary{justify-content:flex-start;font-weight:700;}
.swingPracticeInstructions{white-space:pre-line;}
.swingAnalyzerTrimSummary{margin:0;font-size:var(--dirck-font-size-body-sm);line-height:1.35;color:var(--dirck-color-text-muted-strong);}
.swingPracticeNotice{font-size:.9rem;line-height:1.5;}
.swingPracticeComparison{padding:14px;border-radius:12px;background:var(--dirck-color-surface-soft);display:grid;gap:8px;}
.swingPracticeCard .swingPracticeSetup{display:flex;align-items:center;gap:12px;line-height:1.4;min-height:44px;}
.swingPracticeSetup input{width:24px;height:24px;flex:none;accent-color:var(--dirck-color-accent);}
.swingPracticeEntry{padding:0;}
.swingPracticeEntry[hidden]{display:none;}
.swingAnalyzerTool.hasVideo>.swingPracticeEntry{display:none;}
.swingAnalyzerPracticeLink{margin:12px 0;}
.swingAnalyzerPracticeLink button{min-height:44px;padding:8px 12px;border:1px solid var(--dirck-color-border-strong);border-radius:12px;background:var(--dirck-color-surface);color:var(--dirck-color-accent);font:600 var(--dirck-font-size-body-sm)/1.4 var(--dirck-font-body);}
.swingAnalyzerTool.hasVideo.hasPendingRetest>.swingPracticeEntry{display:block;max-height:34vh;overflow-y:auto;overscroll-behavior:contain;}
.swingPracticeRetest{padding:12px;gap:8px;}
@media(max-width:760px){
  .swingAnalyzerTool.hasVideo.hasPendingRetest{grid-template-rows:auto minmax(0,1fr) auto auto;}
  .swingAnalyzerTool.hasFailure.hasPendingRetest{grid-template-rows:auto minmax(0,1fr);}
  /* The cancellation receipt is additional content. Scroll it with the retained
     video instead of squeezing trim controls into the remaining grid height. */
  .swingAnalyzerTool.hasVideo:has(.swingAnalyzerCancelled){grid-template-rows:none;grid-auto-rows:max-content;align-content:start;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-bottom:12px;}
  .swingAnalyzerTool:has(.swingAnalyzerCancelled) .swingAnalyzerForm.hasVideo{height:auto;grid-template-rows:auto auto auto;}
  .swingAnalyzerTool:has(.swingAnalyzerCancelled) .swingAnalyzerTrim{
grid-template-rows:minmax(140px,auto) auto;min-height:min-content;overflow:visible;
  background:var(--dirck-color-surface);
  border:1px solid var(--dirck-color-border);
  color:var(--dirck-color-text-strong);
  box-shadow:var(--dirck-shadow-sm);
}
  .swingAnalyzerTool:has(.swingAnalyzerCancelled) .swingAnalyzerTrimPreview{height:auto;min-height:140px;max-height:40vh;}
}
.swingAnalyzerStorySummary [data-practice-panel]{margin:16px 0;}
.swingPracticeCard button:focus-visible,.swingPracticeCard summary:focus-visible{outline:3px solid var(--dirck-color-focus);outline-offset:3px;}

.swingAnalyzerStorySummary .swingPracticeCard h3{color:inherit;}
.swingPracticeCard a,.swingAnalyzerStorySummary .swingPracticeCard a{color:var(--dirck-color-link,var(--text));}

/* Approved issue sheet: each result contains only its name and grade. */
.swingAnalyzerStory .swingAnalyzerHotspotExplanation.swingAnalyzerIssueSheet{
--swing-story-sheet-clearance:calc(var(--swing-story-footer-height,62px) + 32px + env(safe-area-inset-bottom));
position:absolute;z-index:7;left:0;right:0;bottom:0;box-sizing:border-box;display:flex;flex-direction:column;align-items:stretch;gap:0;max-height:min(calc(100dvh - env(safe-area-inset-top) - 86px),calc(var(--swing-story-sheet-body-height,45dvh) + var(--swing-story-sheet-clearance)));padding:0 14px var(--swing-story-sheet-clearance);border:1px solid var(--dirck-color-border);border-bottom:0;border-radius:26px 26px 0 0;background:linear-gradient(var(--dirck-color-surface),var(--dirck-color-surface)),var(--dirck-color-bg);box-shadow:0 -10px 32px #0003;backdrop-filter:none;-webkit-backdrop-filter:none;overflow:hidden;
  color:var(--dirck-color-text-strong);
}
/* Composite translucent theme surfaces over the page color so video cannot
   show through. The sheet continues behind the controls through the safe area.
   Keep the
   controls in their existing layer, with an opaque surface while it is open. */
.swingAnalyzerIssueSheet:not([hidden])~.swingAnalyzerStoryFooter{z-index:8;background:linear-gradient(var(--dirck-color-surface),var(--dirck-color-surface)),var(--dirck-color-bg);border-color:var(--dirck-color-border);box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;}
.swingAnalyzerIssueSheet:not([hidden])~.swingAnalyzerStoryFooter .swingAnalyzerSkeletonToggle[aria-pressed="false"]{border-color:var(--dirck-color-border-strong);background:var(--dirck-color-control);color:var(--dirck-color-text-strong);}
.swingAnalyzerStory .swingAnalyzerIssueSheet[hidden]{display:none;}
.swingAnalyzerIssueSheetTop{position:relative;min-height:44px;flex:none;}
.swingAnalyzerIssueSheetTop>span{display:block;width:34px;height:4px;margin:12px auto;border-radius:8px;background:var(--dirck-color-border-strong);}
.swingAnalyzerIssueSheetTop>button{position:absolute;right:-3px;top:0;display:grid;place-items:center;width:44px;height:44px;min-height:44px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--dirck-color-text-strong);font:var(--dirck-font-size-title-sm)/1 var(--dirck-font-body);}
.swingAnalyzerIssueCards{display:grid;gap:9px;overflow:auto;overscroll-behavior:contain;min-height:0;}
.swingAnalyzerIssueBubble{
display:flex;flex-direction:column;align-items:flex-start;gap:9px;min-width:0;padding:15px;border:1px solid var(--dirck-color-border);border-radius:17px;background:var(--dirck-color-surface-soft);
  color:var(--dirck-color-text-strong);
}
.swingAnalyzerIssueBubble h3{margin:0;color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-body);font-weight:700;line-height:1.35;overflow-wrap:anywhere;}
.swingAnalyzerIssueFrame{min-height:44px;padding:10px 14px;border:1px solid var(--dirck-color-accent);border-radius:10px;background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);font:inherit;font-weight:700;cursor:pointer;}
.swingAnalyzerIssueGrade{display:inline-block;flex:none;padding:6px 9px;border-radius:8px;background:#e0eee0;color:#285d38;font-size:var(--dirck-font-size-caption);font-weight:700;line-height:1.25;white-space:nowrap;}
[data-grade="Minor Issue"]>.swingAnalyzerIssueGrade,.swingAnalyzerIssueGrade[data-grade="Minor Issue"]{background:#f8ebcd;color:#735315;}
[data-grade="Major Issue"]>.swingAnalyzerIssueGrade,.swingAnalyzerIssueGrade[data-grade="Major Issue"]{background:#fce2df;color:#902b24;}
.swingAnalyzerIssueEmpty{padding:8px 4px 16px;}
.swingAnalyzerClosingIssue{
margin:15px 0;padding:18px;border-radius:18px;background:var(--dirck-color-surface);color:var(--dirck-color-text-strong);
  border:1px solid var(--dirck-color-border);
  box-shadow:var(--dirck-shadow-sm);
}
.swingAnalyzerClosingIssue h3{margin:4px 0 10px;color:inherit;}
.swingAnalyzerClosingIssue small{color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-caption);}
.swingAnalyzerClosingIssue p{line-height:1.55;}
.swingAnalyzerMoreIssues>summary{
cursor:pointer;padding:14px 0;font-weight:700;
  border:1px solid var(--dirck-color-border);
  background:var(--dirck-color-surface);
  color:var(--dirck-color-text-strong);
}
.swingAnalyzerUnratedNote{font-size:var(--dirck-font-size-body-sm);line-height:1.5;opacity:.8;}
.swingAnalyzerStory #saShaftEvidence,.swingAnalyzerStory #saShaftLegend,.swingAnalyzerStory #saDeliveryReview,.swingAnalyzerStory #saEvidenceContext,.swingAnalyzerStory #saPeriodVerdict{display:none;}
.swingAnalyzerStory.swingAnalyzerStory--reading .swingAnalyzerIssueSheet{position:static;max-height:none;padding-bottom:14px;overflow:visible;}
.swingAnalyzerStory.swingAnalyzerStory--reading .swingAnalyzerIssueCards{max-height:none;overflow:visible;}
@media(max-height:550px){.swingAnalyzerStory{--swing-story-sheet-body-height:38dvh;}}

/* Separate the grade from the findings while retaining the summary divider. */
.swingAnalyzerStorySummary{
background:transparent;padding:4px 0 16px;
  color:var(--dirck-color-text-strong);
}
.swingAnalyzerSummaryBubble{box-sizing:border-box;min-width:0;padding:20px;border:1px solid var(--dirck-color-border);border-radius:20px;background:color-mix(in srgb, var(--dirck-color-bg) 70%, var(--dirck-color-surface));color:var(--dirck-color-text-strong);}
.swingAnalyzerSummaryGrade{padding:16px;border:1px solid var(--dirck-color-border);border-radius:18px;background:var(--dirck-color-surface);color:var(--dirck-color-text-strong);}
.swingAnalyzerSummaryBubble .swingAnalyzerScoreCard{margin:0;padding:0;border:0;border-radius:0;background:transparent;}
.swingAnalyzerSummaryBubble .swingAnalyzerScoreCard small{line-height:1.45;color:var(--dirck-color-text-muted-strong);}
.swingAnalyzerSummaryDivider{margin:18px 0;border:0;border-top:1px solid var(--dirck-color-border);}
.swingAnalyzerSummaryFindings{min-width:0;padding:16px;border-radius:18px;background:var(--dirck-logo-green);color:var(--dirck-logo-white);}
.swingAnalyzerSummaryHeading{padding:3px 0 17px;}
.swingAnalyzerSummaryEyebrow{color:var(--dirck-logo-white);font-size:var(--dirck-font-size-caption);font-weight:700;letter-spacing:.13em;text-transform:uppercase;}
.swingAnalyzerStorySummary .swingAnalyzerSummaryHeading h2{margin:7px 0 0;color:var(--dirck-logo-white);font-size:var(--dirck-font-size-section);line-height:1.2;letter-spacing:-.65px;}
.swingAnalyzerSummaryFindings>.swingAnalyzerSummaryNote{margin:0 0 13px;padding:14px;border:1px solid var(--dirck-color-border);border-radius:14px;background:var(--dirck-color-surface);color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-body-sm);line-height:1.5;opacity:1;}
.swingAnalyzerSummaryFindings>:last-child{margin-bottom:0;}
.swingAnalyzerClosingIssue{box-sizing:border-box;min-width:0;margin:0 0 13px;padding:16px;border:1px solid var(--dirck-color-border);border-radius:20px;background:var(--dirck-color-surface);color:var(--dirck-color-text-strong);box-shadow:var(--dirck-shadow-sm);}
.swingAnalyzerClosingMeta{display:flex;flex-wrap:wrap;align-items:center;gap:7px;}
.swingAnalyzerClosingMeta>small{padding:5px 9px;border-radius:999px;background:var(--dirck-color-surface-soft);color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-caption);line-height:1.2;font-weight:700;}
.swingAnalyzerClosingMeta .swingAnalyzerIssueGrade,.swingAnalyzerClosingMeta .swingAnalyzerUnratedNote{
padding:5px 8px;border-radius:8px;font-size:var(--dirck-font-size-caption);line-height:1.2;font-weight:700;
  background:var(--dirck-color-surface-soft);
  color:var(--dirck-color-text-muted-strong);
}
.swingAnalyzerClosingMeta .swingAnalyzerUnratedNote{background:var(--dirck-color-surface-soft);color:var(--dirck-color-text-muted-strong);opacity:1;}
.swingAnalyzerStorySummary .swingAnalyzerClosingIssue h3{margin:11px 0 6px;color:var(--dirck-color-text-strong);font-size:var(--dirck-font-size-body);line-height:1.3;letter-spacing:-.2px;}
.swingAnalyzerClosingIssue .swingAnalyzerFindingDetails{margin:0 0 10px;font-size:var(--dirck-font-size-body-sm);}
.swingAnalyzerFindingDetails summary{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-caption);list-style:none;}
.swingAnalyzerFindingDetails summary::-webkit-details-marker{display:none;}
.swingAnalyzerFindingDetails summary::after{content:"";flex:none;width:6px;height:6px;margin-right:3px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);}
.swingAnalyzerFindingDetails[open] summary::after{transform:rotate(225deg);}
.swingAnalyzerClosingIssue a{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:48px;padding:11px 13px;border-radius:14px;background:var(--dirck-color-accent);color:var(--dirck-color-on-accent);text-decoration:none;font-size:var(--dirck-font-size-body);font-weight:700;line-height:1.25;box-sizing:border-box;}
.swingAnalyzerClosingIssue a>span{font-size:var(--dirck-font-size-section);flex:none;}
.swingAnalyzerMoreIssues{margin:0 0 13px;}
.swingAnalyzerMoreIssues>summary{min-height:44px;padding:12px 16px;margin-bottom:13px;border:1px solid var(--dirck-color-border);border-radius:16px;background:var(--dirck-color-surface);color:var(--dirck-color-text-strong);cursor:pointer;font-weight:700;}
.swingAnalyzerSummaryBubble>p{padding:0 3px;margin:0 0 16px;color:var(--dirck-color-text-muted-strong);font-size:var(--dirck-font-size-body-sm);line-height:1.5;}
.swingAnalyzerSummaryBubble>button{position:static;box-sizing:border-box;width:100%;min-height:48px;margin-top:3px;padding:11px 13px;border:1px solid var(--dirck-color-border-strong);border-radius:14px;background:var(--dirck-color-surface);color:var(--dirck-color-accent);font:600 var(--dirck-font-size-body)/1.4 var(--dirck-font-body);box-shadow:none;cursor:pointer;}
.swingAnalyzerStory .swingAnalyzerIssueSheet{transition:transform .22s ease,opacity .22s ease;transform:translateY(0);opacity:1;}
.swingAnalyzerStory .swingAnalyzerIssueSheet[hidden]{display:flex;visibility:hidden;pointer-events:none;transform:translateY(28px);opacity:0;transition:transform .22s ease,opacity .22s ease,visibility 0s .22s;}
.swingAnalyzerStory .swingAnalyzerIssueCards{max-height:38dvh;overflow:auto;}
.swingAnalyzerIssueBubble details{font-size:var(--dirck-font-size-body-sm);line-height:1.5;}
.swingAnalyzerIssueBubble details summary{min-height:44px;display:flex;align-items:center;}
.swingAnalyzerJointAngle .swingAnalyzerAngleArc{stroke-width:3;}
@media(prefers-reduced-motion:reduce){.swingAnalyzerStory .swingAnalyzerIssueSheet{transition:none;}}
.swingAnalyzerClubReferenceLayer .swingAnalyzerClubCue{position:absolute;inset:0;width:100%;height:100%;overflow:visible;}
.swingAnalyzerClubCue circle,.swingAnalyzerClubCue path{filter:drop-shadow(0 1px 2px #000);}
.swingAnalyzerStory--summary .swingAnalyzerIssueSheet{display:none;}

/* Theme accents for controls on the unchanged black video-review canvas. */
.swingAnalyzerStory, .swingAnalyzerLoading {
  --sa-review-accent: color-mix(in srgb, var(--dirck-color-accent) 55%, var(--dirck-logo-white));
  font-family: var(--dirck-font-body);
  font-size: var(--dirck-font-size-body);
}
.swingAnalyzerTool { font-family: var(--dirck-font-body); font-size: var(--dirck-font-size-body); }
.swingAnalyzerIssueSheet .swingAnalyzerIssueBubble :where(p, details, strong) {
  color: var(--dirck-color-text-strong) !important;
}
.swingAnalyzerSummaryBubble :where(.swingAnalyzerScoreRing, .swingAnalyzerScoreRing strong) { color: var(--dirck-color-text-strong); }

/* November 3 owner correction: retain the separate analyzer title and layered
   upload card, using compact natural sizing and semantic colors in every theme. */
.swingAnalyzerForm{padding:0;border:0;background:transparent;box-shadow:none;gap:12px;}
.swingAnalyzerEntryHeader{grid-template-columns:minmax(0,1fr);min-height:60px;gap:12px;padding:10px 14px;margin:0;border-radius:21px;border:1px solid var(--dirck-color-border);background:linear-gradient(135deg,var(--dirck-color-accent),color-mix(in srgb,var(--dirck-color-accent) 92%,var(--dirck-color-surface)));color:var(--dirck-color-on-accent);box-shadow:var(--dirck-shadow-sm);}
.swingAnalyzerEntryHeader h1{margin:0;font-family:var(--dirck-font-body);font-size:var(--dirck-font-size-section);font-weight:700;line-height:1.2;color:inherit;}
.swingAnalyzerEntryCard{display:grid;gap:12px;padding:16px;border:1px solid var(--dirck-color-border);border-radius:23px;background:var(--dirck-color-surface);color:var(--dirck-color-text-strong);box-shadow:var(--dirck-shadow-sm);}
.swingAnalyzerEntryHeading .pageEyebrow{margin:0;color:var(--dirck-color-accent);font-size:var(--dirck-font-size-caption);}
.swingAnalyzerEntryHeading h2{margin:4px 0 0;font-family:var(--dirck-font-body);font-size:var(--dirck-font-size-section);font-weight:700;line-height:1.2;}
.swingAnalyzerForm:not(.hasVideo) .swingAnalyzerUploadCard{min-height:0;height:auto;padding:14px;align-items:center;text-align:center;border:1px solid color-mix(in srgb,var(--dirck-color-on-accent) 18%,transparent);border-radius:18px;background:linear-gradient(135deg,var(--dirck-color-accent),color-mix(in srgb,var(--dirck-color-accent) 92%,var(--dirck-color-surface)));color:var(--dirck-color-on-accent);box-shadow:inset 0 1px 0 color-mix(in srgb,var(--dirck-color-on-accent) 10%,transparent);gap:10px;overflow:hidden;}
.swingAnalyzerEntryCard .swingAnalyzerUploadIcon{width:44px;height:44px;margin:0;border-radius:14px;border-color:color-mix(in srgb,var(--dirck-color-on-accent) 30%,transparent);background:color-mix(in srgb,var(--dirck-color-on-accent) 12%,transparent);color:inherit;}
.swingAnalyzerEntryCard .swingAnalyzerUploadIcon svg{width:25px;height:25px;}
.swingAnalyzerEntryCard .swingAnalyzerUploadCopy strong,.swingAnalyzerEntryCard .swingAnalyzerUploadCopy small{color:inherit;}
.swingAnalyzerEntryCard .swingAnalyzerUploadCopy strong{font-size:var(--dirck-font-size-body);line-height:1.3;}
.swingAnalyzerEntryCard .swingAnalyzerUploadCopy small{font-size:var(--dirck-font-size-body-sm);line-height:1.3;opacity:.85;}
.swingAnalyzerEntryCard .swingAnalyzerUploadAction{justify-content:center;min-height:44px;margin:0;padding:10px 18px;border-radius:var(--dirck-radius-pill);background:var(--dirck-color-surface);color:var(--dirck-color-accent);}
.swingAnalyzerForm.hasVideo .swingAnalyzerEntryHeader,.swingAnalyzerForm.hasVideo .swingAnalyzerEntryCard{display:none;}
.swingAnalyzerRecent{margin-top:12px;padding:16px 16px 6px;border-radius:23px;background:var(--dirck-color-surface);box-shadow:var(--dirck-shadow-sm);}
.swingAnalyzerRecentInstruction{margin:5px 0 10px;font-size:var(--dirck-font-size-body-sm);line-height:1.4;color:var(--dirck-color-text-muted-strong);}
.swingAnalyzerRecentList{margin:0;padding:0;}
.swingAnalyzerRecentList li{display:block;padding:0;border-top:1px solid var(--dirck-color-border);}
.swingAnalyzerRecentList li:first-child{border-top:0;}
.swingAnalyzerRecentList button{display:grid;grid-template-columns:minmax(0,1fr) 44px 14px;align-items:center;gap:10px;width:100%;min-height:68px;padding:10px 0;border:0;border-radius:0;background:transparent;color:var(--dirck-color-text-strong);text-align:left;}
.swingAnalyzerRecentCopy{display:grid;gap:4px;min-width:0;}
.swingAnalyzerRecentName{white-space:normal;overflow:visible;overflow-wrap:anywhere;text-overflow:clip;font-size:var(--dirck-font-size-body);font-weight:600;}
.swingAnalyzerRecentDetail{font-size:var(--dirck-font-size-caption);font-weight:400;color:var(--dirck-color-text-muted-strong);}
.swingAnalyzerRecentGrade{display:grid;place-items:center;width:44px;height:44px;border-radius:13px;background:var(--dirck-color-surface-soft);color:var(--dirck-color-accent);font-size:var(--dirck-font-size-section);font-weight:700;}
.swingAnalyzerRecentFooter{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;border-top:1px solid var(--dirck-color-border);}
.swingAnalyzerRecentHint{margin:0;font-size:var(--dirck-font-size-caption);}
.swingAnalyzerRecentFooter button{min-height:44px;min-width:44px;padding:8px 0;border:0;background:transparent;color:var(--dirck-color-accent);font:600 var(--dirck-font-size-body-sm)/1.3 var(--dirck-font-body);}
.swingAnalyzerRecentEmpty{padding:12px 0;margin:0;}
.swingAnalyzerRecentNotice{margin:8px 0;}
.swingAnalyzerSetup{display:grid;gap:12px;}
.swingAnalyzerSetupNav{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;}
.swingAnalyzerSetup[hidden]{display:none;}
.swingAnalyzerSetupBack{display:inline-flex;align-items:center;justify-content:center;flex:0 1 auto;gap:6px;width:auto;max-width:100%;min-width:44px;min-height:44px;padding:8px 12px;border:1px solid var(--dirck-color-border);border-radius:14px;background:var(--dirck-color-surface);color:var(--dirck-color-text-strong);font:600 var(--dirck-font-size-body-sm)/1.3 var(--dirck-font-body);}
.swingAnalyzerSetupCard{padding:16px;border:1px solid var(--dirck-color-border);border-radius:23px;background:var(--dirck-color-surface);box-shadow:var(--dirck-shadow-sm);}
.swingAnalyzerForm.hasVideo .swingAnalyzerSetup .swingAnalyzerFormHeading{display:flex;min-height:0;margin:0 0 12px;padding:0;border:0;background:transparent;color:var(--dirck-color-text-strong);}
.swingAnalyzerSetup .swingAnalyzerFormHeading h2{font-size:var(--dirck-font-size-title-sm);font-family:var(--dirck-font-body);}
.swingAnalyzerSetup .pageEyebrow{font-size:var(--dirck-font-size-caption);}
.swingAnalyzerNameHeading{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.swingAnalyzerNameHeading label{font-size:var(--dirck-font-size-body);font-weight:600;}
.swingAnalyzerNameHeading label span{font-size:var(--dirck-font-size-body-sm);font-weight:400;color:var(--dirck-color-text-muted-strong);}
.swingAnalyzerNameHeading button{min-height:44px;min-width:44px;border:0;background:transparent;color:var(--dirck-color-accent);font:600 var(--dirck-font-size-body-sm)/1.3 var(--dirck-font-body);}
#saSwingName{box-sizing:border-box;display:block;min-height:46px;width:100%;padding:10px 12px;border:1px solid var(--dirck-color-border-strong);border-radius:12px;background:var(--dirck-color-control);color:var(--dirck-color-text-strong);font:400 max(16px,var(--dirck-font-size-body))/1.35 var(--dirck-font-body);}
.swingAnalyzerChoiceField{min-width:0;padding:0;margin:16px 0 0;border:0;}
.swingAnalyzerChoiceField legend{margin:0 0 8px;padding:0;font-size:var(--dirck-font-size-body);font-weight:600;}
.swingAnalyzerChoices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;}
.swingAnalyzerChoices button{min-height:44px;padding:10px;border:1px solid var(--dirck-color-border-strong);border-radius:12px;background:var(--dirck-color-control);color:var(--dirck-color-text-strong);font:600 max(16px,var(--dirck-font-size-body-sm))/1.25 var(--dirck-font-body);overflow-wrap:anywhere;}
.swingAnalyzerChoices button[aria-pressed="true"]{background:var(--dirck-color-accent);border-color:var(--dirck-color-accent);color:var(--dirck-color-on-accent);}
.swingAnalyzerSetup :where(button,input):focus-visible{outline:3px solid var(--dirck-color-focus);outline-offset:2px;}
.swingAnalyzerTool.isSetup{display:grid;grid-template-rows:none;grid-auto-rows:max-content;gap:12px;align-content:start;overflow-y:auto;overscroll-behavior:contain;padding-top:var(--dirck-safe-top,env(safe-area-inset-top,0px));padding-bottom:16px;}
.swingAnalyzerTool.isSetup .swingAnalyzerForm.hasVideo{height:auto;padding:0;grid-template-rows:none;grid-auto-rows:max-content;gap:12px;overflow:visible;border:0;background:transparent;}
.swingAnalyzerTool.isSetup .swingAnalyzerTrim{display:block;position:relative;padding:8px 12px;overflow:visible;}
.swingAnalyzerTool.isSetup .swingAnalyzerTrim[hidden]{display:none;}
.swingAnalyzerTool.isSetup .swingAnalyzerTrimPreview{height:clamp(220px,32vh,300px);min-height:220px;max-height:none;aspect-ratio:auto;margin:8px 0;border-radius:12px;}
.swingAnalyzerTool.isSetup .swingAnalyzerTrimPlayhead{top:10px;bottom:auto;}
.swingAnalyzerTrimDetails{grid-column:1/-1;}
.swingAnalyzerTrimDetails>summary{display:flex;align-items:center;gap:8px;min-height:44px;font-size:var(--dirck-font-size-body);font-weight:600;cursor:pointer;}
.swingAnalyzerTrimDetails>summary::-webkit-details-marker{display:none;}
.swingAnalyzerTrimDetails>summary #saTrimBadge{margin-left:auto;}
.swingAnalyzerTrimDetails[open] .swingAnalyzerTrimChevron{transform:rotate(180deg);}
.swingAnalyzerTrimDetails>summary:focus-visible{outline:3px solid var(--dirck-color-focus);outline-offset:2px;}
.swingAnalyzerTrimDetails>summary span{font-weight:400;color:var(--dirck-color-text-muted-strong);}
.swingAnalyzerTool.isSetup .swingAnalyzerTrimControl{border:0;padding:8px 0 0;background:transparent;}
.swingAnalyzerTool.isSetup .swingAnalyzerStatus:empty{display:none;}
@media(max-width:620px){
  .swingAnalyzerTool:not(.hasVideo):not(.hasFailure){gap:0;}
  .swingAnalyzerForm:not(.hasVideo){grid-template-rows:none;gap:12px;}
  .swingAnalyzerTool.isSetup .swingAnalyzerForm.hasVideo{padding:0;}
}
