:root {
  --ink: #183126;
  --ink-soft: #5d6b61;
  --paper: #f1eedf;
  --paper-deep: #e5dfcc;
  --chalk: #faf8ef;
  --fairway: #8ebd77;
  --fairway-light: #b8d69a;
  --rough: #4f7a54;
  --rough-dark: #315a3b;
  --green: #c3da83;
  --water: #75aeb3;
  --sand: #d8bd79;
  --danger: #b5523e;
  --blue: #3f6685;
  --line: rgba(24, 49, 38, 0.16);
  --shadow: 0 18px 50px rgba(33, 44, 31, 0.12);
  --type-caption: .75rem;
  --type-ui: .875rem;
  --type-body: 1rem;
  --font-system: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  font-family: var(--font-system);
  color: var(--ink);
  background: #d9d5c4;
}

/* Game Master competition — a compact match card layered over the yardage book. */
.challenge-button {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 38px;
  padding: 5px 10px 5px 6px;
  border: 1px solid rgba(71, 109, 132, .34);
  border-radius: 999px;
  background: #f8faf3;
  color: #17372b;
  font: 800 .62rem var(--font-system);
}
.challenge-button-mark {
  display: grid;
  place-items: center;
  width: 27px;
  height: 27px;
  border-radius: 8px 8px 50% 50%;
  background: #476d84;
  color: #fff;
  font: 850 .72rem var(--font-data, var(--font-system));
}
body.challenge-active .challenge-button { color: #fff; background: #476d84; box-shadow: 0 0 0 2px rgba(71,109,132,.14); }
.challenge-match-card {
  position: absolute;
  z-index: 13;
  top: 9px;
  left: 12px;
  right: 12px;
  display: grid;
  grid-template-columns: auto minmax(250px, 1fr) auto auto auto;
  align-items: center;
  gap: 10px;
  min-height: 48px;
  padding: 6px 8px 6px 12px;
  border: 1px solid rgba(255,253,243,.3);
  border-radius: 11px;
  background: rgba(20,45,35,.94);
  color: #fffdf3;
  box-shadow: 0 10px 30px rgba(12,31,22,.24);
  backdrop-filter: blur(10px);
}
.challenge-match-card[hidden] { display: none; }
.challenge-match-title span,.challenge-match-title strong { display: block; }
.challenge-match-title span { color: #b9cfda; font-size: .46rem; font-weight: 900; letter-spacing: .12em; }
.challenge-match-title strong { margin-top: 2px; font-size: .66rem; }
.challenge-match-holes { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 5px; }
.challenge-match-holes article { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 6px; min-width: 0; padding: 5px 7px; border-radius: 7px; background: rgba(255,255,255,.08); }
.challenge-match-holes article[data-state="active"] { background: #fffdf3; color: #17372b; }
.challenge-match-holes article[data-state="complete"] { background: rgba(142,189,119,.18); }
.challenge-match-holes b { font: 850 .58rem var(--font-data,var(--font-system)); }
.challenge-match-holes span { overflow: hidden; font-size: .54rem; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.challenge-match-holes small { font: 800 .55rem var(--font-data,var(--font-system)); }
.challenge-match-card > button { min-height: 30px; padding: 5px 8px; border: 1px solid rgba(255,255,255,.2); border-radius: 7px; background: transparent; color: inherit; font-size: .55rem; font-weight: 800; }
.challenge-match-card > .challenge-next {
  border-color: #d8bd79;
  background: #d8bd79;
  color: #17372b;
  box-shadow: 0 4px 12px rgba(8,24,17,.22);
  white-space: nowrap;
}
.challenge-match-card > .challenge-next:hover { background: #ead28f; }
.challenge-match-card > .challenge-next:focus-visible { outline: 2px solid #fffdf3; outline-offset: 2px; }
.challenge-match-card > .challenge-next:disabled { opacity: .66; cursor: wait; }
body.challenge-active .competition-score-header { top: 68px; }
.challenge-setup-modal .modal-card,.challenge-complete-modal .modal-card { width: min(680px,calc(100vw - 28px)); }
@media (min-width: 761px) {
  .modal.challenge-setup-modal {
    width: min(880px, calc(100vw - 48px));
  }
  .modal.challenge-complete-modal {
    width: min(880px, calc(100vw - 48px));
  }
  .challenge-setup-modal .modal-card {
    box-sizing: border-box;
    width: 100%;
    padding: 28px 34px;
  }
  .challenge-complete-modal .modal-card {
    box-sizing: border-box;
    width: 100%;
    padding: 28px 34px;
  }
  .challenge-complete-modal .challenge-recap {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
  }
  .challenge-complete-modal .challenge-recap article {
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-content: start;
    min-height: 84px;
    padding: 13px 14px;
    border: 1px solid var(--line);
    border-radius: 9px;
    background: rgba(255,255,255,.3);
  }
  .challenge-complete-modal .challenge-recap article strong {
    grid-column: 1 / -1;
  }
  .challenge-complete-modal .challenge-recap article span {
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .challenge-setup-modal .competition-setup-grid,
  .challenge-setup-modal .challenge-volume-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .challenge-setup-modal .challenge-volume-grid {
    gap: 12px;
  }
  .challenge-setup-modal .challenge-volume-grid label {
    grid-template-columns: 64px minmax(0, 1fr);
  }
}
.challenge-route { display: grid; grid-template-columns: 1fr 20px 1fr 20px 1fr; align-items: center; margin: 20px 0; }
.challenge-route article { display: grid; grid-template-columns: 30px 1fr; column-gap: 8px; padding: 12px; border: 1px solid rgba(23,55,43,.11); border-radius: 10px; background: rgba(255,255,255,.42); }
.challenge-route article > span { grid-row: 1 / 3; display: grid; place-items: center; width: 30px; height: 38px; border-radius: 7px 7px 50% 50%; background: #476d84; color: white; font: 850 .72rem var(--font-data,var(--font-system)); }
.challenge-route strong { font-size: .74rem; }
.challenge-route small { color: var(--ink-soft); font-size: .58rem; }
.challenge-route > i { height: 1px; background: rgba(23,55,43,.25); }
.challenge-volume-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px 16px; margin-top: 16px; padding: 13px; border-radius: 10px; background: rgba(71,109,132,.07); }
.challenge-volume-grid label { display: grid; grid-template-columns: 78px 1fr; align-items: center; gap: 8px; color: var(--ink-soft); font-size: .6rem; font-weight: 750; }
.challenge-final-score { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 20px; margin: 20px 0; padding: 20px; border-radius: 12px; background: #17372b; color: #fffdf3; text-align: center; }
.challenge-final-score article span,.challenge-final-score article strong,.challenge-final-score article small { display: block; }
.challenge-final-score article span { color: #d8bd79; font-size: .55rem; font-weight: 850; letter-spacing: .1em; }
.challenge-final-score article strong { margin: 4px 0; font: 900 2rem var(--font-data,var(--font-system)); }
.challenge-final-score > b { color: rgba(255,255,255,.45); font-size: .62rem; }
.challenge-recap { display: grid; gap: 8px; }
.challenge-recap article { display: grid; grid-template-columns: 45px 1fr auto auto; gap: 10px; align-items: center; padding: 10px 12px; border-bottom: 1px solid var(--line); font-size: .68rem; }
.challenge-recap article span { color: var(--ink-soft); }
.challenge-audio-caption { margin: 14px 0 0; padding: 10px 12px; border-left: 3px solid #476d84; background: rgba(71,109,132,.07); font-size: .68rem; }

/* Golf Academy — a yardage-book decision desk, not another shot-control form. */
.modal.academy-setup-modal { width: min(760px, calc(100vw - 48px)); }
.academy-setup-modal .modal-card { width: 100%; min-width: 0; }
.academy-principle {
  display: grid;
  grid-template-columns: repeat(7, auto);
  justify-content: center;
  align-items: center;
  gap: 10px;
  margin: 18px 0;
  padding: 13px;
  border-block: 1px solid rgba(23,55,43,.12);
}
.academy-principle span { color: var(--rough-dark); font-size: .68rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.academy-principle i { color: #a88a45; font-style: normal; }
.academy-decision-desk { display: grid; gap: 12px; min-width: 0; }
.shot-desk > .academy-decision-desk { grid-column: 1 / -1; }
.academy-decision-desk[hidden] { display: none; }
body.academy-active .shot-desk > :not(.academy-decision-desk) { display: none !important; }
body.academy-active #course-map { pointer-events: none; }
body.academy-active .map-toolbar,
body.academy-active .hole-progress,
body.academy-active .score-strip,
body.academy-active .tee-switch { display: none; }
.academy-decision-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding-bottom: 12px; border-bottom: 1px solid rgba(23,55,43,.12); }
.academy-decision-header h2 { margin-top: 5px; font-size: 1.12rem; line-height: 1.15; }
.academy-decision-header button { min-height: 30px; padding: 5px 9px; border: 1px solid rgba(23,55,43,.16); border-radius: 8px; background: rgba(255,255,255,.64); color: var(--ink-soft); font-size: .56rem; font-weight: 800; }
.academy-situation { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 5px; }
.academy-situation > span { min-width: 0; padding: 8px; border-radius: 8px; background: rgba(23,55,43,.055); }
.academy-situation small,.academy-situation strong { display: block; }
.academy-situation small { color: var(--ink-soft); font-size: .46rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.academy-situation strong { margin-top: 4px; font-size: .66rem; line-height: 1.25; }
.academy-analysis-status { min-height: 18px; color: var(--ink-soft); font-size: .6rem; line-height: 1.4; }
.academy-choice-list { display: grid; gap: 8px; }
.academy-choice {
  display: grid;
  grid-template-columns: 30px minmax(0,1fr);
  gap: 0 9px;
  width: 100%;
  padding: 10px;
  border: 1px solid rgba(23,55,43,.12);
  border-radius: 11px;
  background: rgba(255,255,255,.7);
  color: var(--ink);
  text-align: left;
  box-shadow: 0 5px 14px rgba(24,45,33,.035);
  transition: border-color .18s ease, background-color .18s ease, box-shadow .18s ease;
}
.academy-choice:hover { border-color: rgba(71,109,132,.42); }
.academy-choice.selected { border-color: #476d84; background: rgba(71,109,132,.09); box-shadow: 0 0 0 2px rgba(71,109,132,.1); }
.academy-choice:focus-visible,.academy-commit:focus-visible,.academy-result button:focus-visible { outline: 3px solid rgba(63,102,133,.34); outline-offset: 2px; }
.academy-choice-letter { grid-row: 1 / 3; display: grid; place-items: center; width: 30px; height: 38px; border-radius: 7px 7px 50% 50%; background: #17372b; color: #fffdf3; font: 900 .72rem var(--font-data,var(--font-system)); }
.academy-choice.selected .academy-choice-letter { background: #476d84; }
.academy-choice-copy { min-width: 0; }
.academy-choice-copy > small,.academy-choice-copy > strong,.academy-choice-copy > b,.academy-choice-copy > em { display: block; }
.academy-choice-copy > small { color: #a04d39; font-size: .46rem; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; }
.academy-choice-copy > strong { margin-top: 3px; font-size: .78rem; }
.academy-choice-copy > b { margin-top: 4px; font-size: .58rem; font-weight: 720; }
.academy-choice-copy > em { margin-top: 3px; color: var(--ink-soft); font-size: .53rem; font-style: normal; line-height: 1.35; }
.academy-tradeoff-strip { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1px; margin-top: 9px; overflow: hidden; border-radius: 7px; background: rgba(23,55,43,.08); }
.academy-tradeoff-strip > span { padding: 6px 7px; background: rgba(250,248,239,.82); }
.academy-tradeoff-strip small,.academy-tradeoff-strip b { display: block; }
.academy-tradeoff-strip small { color: var(--ink-soft); font-size: .42rem; text-transform: uppercase; }
.academy-tradeoff-strip b { margin-top: 2px; font: 800 .58rem var(--font-data,var(--font-system)); }
.academy-commit,.academy-result > button { width: 100%; min-height: 44px; border: 0; border-radius: 9px; background: #17372b; color: #fffdf3; font-size: .68rem; font-weight: 850; box-shadow: 0 8px 18px rgba(20,45,35,.18); }
.academy-commit:disabled { background: rgba(23,55,43,.15); color: rgba(23,55,43,.48); box-shadow: none; }
.academy-loading,.academy-playing { display: grid; place-items: center; min-height: 180px; padding: 24px; border: 1px dashed rgba(23,55,43,.18); border-radius: 11px; text-align: center; }
.academy-loading i { width: 28px; height: 28px; border: 3px solid rgba(71,109,132,.18); border-top-color: #476d84; border-radius: 50%; animation: academy-spin .8s linear infinite; }
.academy-loading span { margin-top: 10px; color: var(--ink-soft); font-size: .62rem; }
.academy-playing span { color: #a04d39; font-size: .52rem; font-weight: 900; letter-spacing: .12em; }
.academy-playing strong { margin-top: 8px; font-size: 1rem; }
.academy-playing small { margin-top: 5px; color: var(--ink-soft); font-size: .6rem; }
@keyframes academy-spin { to { transform: rotate(360deg); } }
.academy-result { padding: 14px; border-radius: 12px; background: #17372b; color: #fffdf3; }
.academy-result .eyebrow { color: #d8bd79; }
.academy-result h3 { margin-top: 6px; font-size: 1.08rem; }
.academy-learning-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin-top: 12px; }
.academy-learning-pair article { padding: 10px; border-radius: 8px; background: rgba(255,255,255,.08); }
.academy-learning-pair small { color: #b9cfda; font-size: .46rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.academy-learning-pair p,.academy-lesson { margin-top: 5px; font-size: .62rem; line-height: 1.45; }
.academy-lesson { padding: 10px 0 12px; color: rgba(255,253,243,.82); }
.academy-result > button { background: #d8bd79; color: #17372b; box-shadow: none; }
.academy-report-lead { display: grid; grid-template-columns: auto minmax(0,1fr); align-items: center; gap: 16px; margin-top: 12px; }
.academy-report-lead h3 { margin: 0 0 5px; }
.academy-report-lead p { color: rgba(255,253,243,.82); font-size: .64rem; line-height: 1.5; }
.academy-score-seal { display: grid; place-items: center; align-content: center; width: 92px; aspect-ratio: 1; border: 1px solid rgba(216,189,121,.7); border-radius: 50%; background: radial-gradient(circle,rgba(216,189,121,.14),transparent 67%); box-shadow: inset 0 0 0 5px rgba(216,189,121,.06); }
.academy-score-seal strong { font: 900 2rem/1 var(--font-data,var(--font-system)); color: #d8bd79; }
.academy-score-seal small { margin-top: 3px; color: rgba(255,253,243,.68); font-size: .5rem; }
.academy-report-breakdown { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1px; margin: 15px 0 11px; overflow: hidden; border-radius: 8px; background: rgba(255,255,255,.12); }
.academy-report-breakdown span { padding: 9px 6px; background: rgba(255,255,255,.07); text-align: center; }
.academy-report-breakdown small,.academy-report-breakdown strong { display: block; }
.academy-report-breakdown small { color: #b9cfda; font-size: .43rem; font-weight: 800; text-transform: uppercase; }
.academy-report-breakdown strong { margin-top: 4px; font: 850 .82rem var(--font-data,var(--font-system)); }
.academy-score-note { margin-bottom: 12px; padding-left: 9px; border-left: 2px solid #d8bd79; color: rgba(255,253,243,.7); font-size: .55rem; line-height: 1.45; }
.academy-report > button { width: 100%; min-height: 44px; border: 0; border-radius: 9px; background: #d8bd79; color: #17372b; font-size: .68rem; font-weight: 850; }
.academy-flight-callout {
  position: absolute;
  z-index: 12;
  top: 14px;
  left: 50%;
  display: grid;
  min-width: 210px;
  padding: 9px 14px;
  border: 1px solid rgba(216,189,121,.62);
  border-radius: 10px;
  background: rgba(23,55,43,.91);
  color: #fffdf3;
  text-align: center;
  box-shadow: 0 10px 30px rgba(13,30,21,.28);
  transform: translateX(-50%);
  pointer-events: none;
}
.academy-flight-callout[hidden] { display: none; }
.academy-flight-callout span { color: #d8bd79; font-size: .46rem; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }
.academy-flight-callout strong { margin-top: 2px; font-size: .76rem; }
.academy-flight-callout small { margin-top: 2px; color: rgba(255,253,243,.72); font-size: .5rem; }
@media (prefers-reduced-motion: reduce) { .academy-loading i { animation: none; } }

/* A committed Academy shot becomes the only subject until its flight ends. */
body.academy-flight-active .game-layout { grid-template-columns: minmax(0,1fr) !important; }
body.academy-flight-active .hole-brief,
body.academy-flight-active .shot-desk { display: none !important; }
.shot-desk[hidden] { display: none !important; }
body.academy-flight-active .course-stage {
  grid-column: 1 / -1 !important;
  grid-row: 1 !important;
  min-height: calc(100vh - 92px) !important;
}
.competition-button {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 38px;
  padding: 5px 10px 5px 6px;
  border: 1px solid rgba(216, 189, 121, .48);
  border-radius: 999px;
  background: rgba(24, 49, 38, .92);
  color: #fffdf3;
  font: 750 .62rem var(--font-system);
}
.competition-button-mark {
  display: grid;
  place-items: center;
  width: 27px;
  height: 27px;
  border-radius: 50%;
  background: #d8bd79;
  color: #183126;
  font: 850 .55rem var(--font-data, var(--font-system));
  letter-spacing: .04em;
}
body.competition-active .competition-button { border-color: #d8bd79; box-shadow: 0 0 0 2px rgba(216, 189, 121, .12); }
.competition-score-header {
  position: absolute;
  z-index: 12;
  top: 11px;
  left: 50%;
  display: grid;
  grid-template-columns: minmax(92px, 1fr) auto minmax(92px, 1fr);
  align-items: center;
  gap: 10px;
  width: min(360px, calc(100% - 190px));
  padding: 7px 11px;
  border: 1px solid rgba(255, 253, 243, .28);
  border-radius: 9px;
  background: rgba(24, 49, 38, .93);
  color: #fffdf3;
  box-shadow: 0 8px 28px rgba(11, 29, 20, .22);
  transform: translateX(-50%);
  backdrop-filter: blur(8px);
}
.competition-score-header[hidden] { display: none; }
.competition-score-header > span { display: grid; grid-template-columns: 1fr auto; align-items: baseline; text-align: left; }
.competition-score-header > span:last-child { text-align: right; }
.competition-score-header small { color: #d8bd79; font-size: .48rem; font-weight: 850; letter-spacing: .1em; }
.competition-score-header strong { font: 850 .86rem var(--font-data, var(--font-system)); }
.competition-score-header i { grid-column: 1 / -1; margin-top: 2px; color: rgba(255,253,243,.68); font-size: .48rem; font-style: normal; }
.competition-score-header b { color: rgba(255,253,243,.44); font-size: .48rem; letter-spacing: .12em; }
.competition-busy .competition-score-header { box-shadow: 0 0 0 3px rgba(216,189,121,.28), 0 10px 28px rgba(14,36,25,.22); }
.competition-busy #competition-gm-shot { color: #f4d98d; animation: competition-thinking 1s ease-in-out infinite alternate; }
@keyframes competition-thinking { from { opacity: .58; } to { opacity: 1; } }
.modal.competition-setup-modal { width: min(760px, calc(100vw - 48px)); }
.competition-setup-modal .modal-card { width: 100%; min-width: 0; }
.competition-fairness-seal { display: flex; align-items: center; gap: 12px; margin: 18px 0; padding: 12px 14px; border: 1px solid rgba(49,93,68,.2); border-radius: 8px; background: rgba(142,189,119,.11); }
.competition-fairness-seal > span { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--ink); color: #fffdf3; font: 850 1rem var(--font-data, var(--font-system)); }
.competition-fairness-seal strong,.competition-fairness-seal small { display: block; }
.competition-fairness-seal strong { font-size: .78rem; }
.competition-fairness-seal small { margin-top: 3px; color: var(--ink-soft); font-size: .65rem; }
.competition-setup-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.competition-setup-grid label { display: grid; gap: 6px; color: var(--ink-soft); font-size: .59rem; font-weight: 750; letter-spacing: .04em; text-transform: uppercase; }
.competition-setup-grid select { min-width: 0; min-height: 42px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 7px; background: rgba(255,255,255,.44); color: var(--ink); font: 650 .7rem var(--font-system); text-transform: none; }
.competition-pace { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; margin: 18px 0 10px; padding: 0; border: 0; }
.competition-pace legend { grid-column: 1 / -1; margin-bottom: 7px; color: var(--ink-soft); font-size: .59rem; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.competition-pace label,.competition-coaching { display: flex; align-items: flex-start; gap: 9px; padding: 11px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255,255,255,.28); }
.competition-pace strong,.competition-pace small,.competition-coaching strong,.competition-coaching small { display: block; }
.competition-pace strong,.competition-coaching strong { font-size: .7rem; }
.competition-pace small,.competition-coaching small { margin-top: 3px; color: var(--ink-soft); font-size: .6rem; line-height: 1.35; }
.competition-coaching { margin-bottom: 8px; }
.competition-setup-status { min-height: 1.2em; margin: 8px 0 0; color: var(--ink-soft); font-size: .63rem; }
.competition-comparison {
  position: absolute;
  z-index: 18;
  right: 14px;
  bottom: 14px;
  width: min(410px, calc(100% - 28px));
  padding: 8px 14px 14px;
  border: 1px solid rgba(24,49,38,.16);
  border-radius: 12px;
  background: rgba(255,253,243,.97);
  color: var(--ink);
  box-shadow: 0 18px 50px rgba(14,36,25,.28);
}
.competition-comparison[hidden] { display: none; }
.competition-comparison-grip { display: block; width: 42px; height: 4px; min-height: 4px; margin: 0 auto 7px; padding: 0; border: 0; border-radius: 99px; background: rgba(24,49,38,.2); }
.competition-comparison header { display: flex; justify-content: space-between; align-items: center; }
.competition-comparison header button { width: 30px; height: 30px; border: 0; background: transparent; color: var(--ink-soft); font-size: 1.1rem; }
.competition-choice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 8px; }
.competition-choice-grid article { min-width: 0; padding: 10px; border-radius: 7px; background: rgba(24,49,38,.055); }
.competition-choice-grid article:last-child { border-left: 3px solid #d8bd79; }
.competition-choice-grid small,.competition-choice-grid strong,.competition-choice-grid span { display: block; }
.competition-choice-grid small { color: var(--ink-soft); font-size: .52rem; font-weight: 850; letter-spacing: .08em; }
.competition-choice-grid span + small { margin-top: 9px; }
.competition-choice-grid strong { margin-top: 5px; font-size: .72rem; }
.competition-choice-grid span { margin-top: 4px; color: var(--ink-soft); font-size: .61rem; line-height: 1.35; }
.competition-decision-row { display: flex; justify-content: space-between; gap: 12px; margin-top: 9px; padding: 8px 9px; border-radius: 6px; background: rgba(63,102,133,.08); font-size: .65rem; }
.competition-decision-row strong { font-family: var(--font-data, var(--font-system)); }
.competition-comparison > p { margin: 9px 0 0; color: var(--ink-soft); font-size: .66rem; line-height: 1.4; }
.competition-comparison .competition-why-copy { margin-top: 9px; padding-left: 9px; border-left: 3px solid #d8bd79; color: var(--ink); }
.competition-why-copy p { margin: 0; font-size: .66rem; line-height: 1.4; }
.competition-why-copy small { display: block; margin-top: 6px; color: var(--ink-soft); font-size: .57rem; }
.competition-comparison-actions { display: grid; grid-template-columns: 1fr 1.3fr; gap: 8px; margin-top: 11px; }
.competition-scorecard-table { width: 100%; border-collapse: collapse; font: 650 .7rem var(--font-system); font-variant-numeric: tabular-nums; }
.competition-scorecard-table th,.competition-scorecard-table td { padding: 8px 10px; border-bottom: 1px solid var(--line); text-align: center; }
.competition-scorecard-table th:first-child { text-align: left; }
.competition-scorecard-table thead th { color: var(--ink-soft); font-size: .55rem; letter-spacing: .07em; text-transform: uppercase; }
.competition-scorecard-table tfoot th,.competition-scorecard-table tfoot td { border-bottom: 0; font-weight: 850; }
.competition-scorecard-table tfoot small { display: block; margin-top: 2px; color: var(--ink-soft); font-size: .52rem; }
.competition-round-summary { margin-top: 12px; padding: 12px; border-left: 3px solid #d8bd79; border-radius: 0 8px 8px 0; background: rgba(24,49,38,.055); }
.competition-round-summary strong,.competition-round-summary small { display: block; }
.competition-round-summary strong { font-size: .74rem; }
.competition-round-summary p { margin: 5px 0; color: var(--ink); font-size: .66rem; }
.competition-round-summary small { color: var(--ink-soft); font-size: .6rem; line-height: 1.45; }

@media (max-width: 760px) {
  .challenge-button { min-width: 38px; padding-right: 5px; }
  .challenge-match-card { position: fixed; top: calc(52px + env(safe-area-inset-top)); left: 8px; right: 8px; grid-template-columns: auto minmax(0,1fr) auto auto; }
  .challenge-match-card #challenge-audio-toggle { display: none; }
  .challenge-match-holes article { grid-template-columns: 1fr auto; }
  .challenge-match-holes article b { display: none; }
  .challenge-match-holes article span { font-size: .48rem; }
  body.challenge-active .competition-score-header { top: calc(108px + env(safe-area-inset-top)); }
  .challenge-route { grid-template-columns: 1fr; gap: 7px; }
  .challenge-route > i { width: 1px; height: 10px; margin: -4px 0 -4px 26px; }
  .challenge-volume-grid { grid-template-columns: 1fr; }
  .modal.challenge-complete-modal {
    width: 100vw;
    max-width: 100vw;
    height: 100dvh;
    max-height: 100dvh;
    margin: 0;
    border-radius: 0;
  }
  .challenge-setup-modal .modal-card,.challenge-complete-modal .modal-card { min-height: 100dvh; overflow-y: auto; }
  .challenge-complete-modal .modal-card { box-sizing: border-box; width: 100%; }
  body.competition-active .course-stage { min-height: 100dvh; }
  .competition-button { min-width: 38px; padding-right: 5px; }
  .competition-score-header { position: fixed; top: calc(52px + env(safe-area-inset-top)); width: calc(100% - 24px); max-width: 390px; }
  .competition-comparison { position: fixed; right: 8px; bottom: calc(52px + env(safe-area-inset-bottom)); width: calc(100% - 16px); padding-bottom: calc(12px + env(safe-area-inset-bottom)); border-radius: 14px 14px 10px 10px; }
  .competition-setup-grid,.competition-pace { grid-template-columns: 1fr; }
  .competition-setup-modal .modal-card { max-height: calc(100dvh - 20px); overflow-y: auto; }
}

@media (prefers-reduced-motion: reduce) {
  .competition-comparison { scroll-behavior: auto; }
}

@media (max-width: 760px) {
  .mobile-hole-band { grid-template-columns: minmax(106px,1.2fr) minmax(76px,.9fr) 28px 28px 38px; }
  .gps-mode-button { display: inline-flex; }
  #reset-view { display: none; }
}

/* On-course mode — a high-contrast pocket yardage book for one-handed use. */
@media (max-width: 760px) {
  .mobile-hole-band { grid-template-columns: minmax(106px,1.2fr) minmax(76px,.9fr) 28px 28px 38px; }
  .gps-mode-button { display: inline-flex; }
  body.gps-mode-open .app-shell,
  body.gps-mode-open .mobile-round-nav { display: none; }
  .gps-mode-screen:not([hidden]) {
    position: fixed; z-index: 100; inset: 0; display: grid; height: 100dvh;
    grid-template-rows: auto auto auto minmax(0, 1fr) auto; overflow: hidden;
    background: linear-gradient(180deg, rgba(255,255,255,.7), transparent 23%), #eef1e7; color: #183126;
  }
  .gps-mode-screen [hidden] { display: none !important; }
  .gps-mode-header {
    display: grid; grid-template-columns: 104px minmax(0, 1fr) 72px; align-items: center;
    min-height: calc(54px + env(safe-area-inset-top)); padding: env(safe-area-inset-top) 12px 0;
    border-bottom: 1px solid rgba(24,49,38,.1); background: rgba(250,251,246,.92); backdrop-filter: blur(18px);
  }
  .gps-mode-header button { border: 0; background: transparent; color: #183126; font-size: .68rem; font-weight: 800; }
  .gps-exit-actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); padding: 2px; border: 1px solid rgba(24,49,38,.14); border-radius: 9px; background: #edf0e8; }
  .gps-mode-header .gps-exit-actions button { min-width: 0; min-height: 28px; padding: 3px 4px; border-radius: 7px; font-size: .57rem; }
  .gps-mode-header .gps-exit-actions button:first-child { background: #183126; color: #fffdf3; }
  .gps-mode-header .gps-exit-actions button:last-child { color: #3f6685; }
  .gps-mode-header > div { min-width: 0; text-align: center; }
  .gps-mode-header > div span, .gps-mode-header > div strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gps-mode-header > div span { color: #5d6d63; font-size: .5rem; }
  .gps-mode-header > div strong { margin-top: 1px; font-size: .8rem; }
  .gps-live-indicator { display: flex; align-items: center; justify-content: flex-end; gap: 4px; color: #4d6557; font-size: .53rem; font-weight: 800; }
  .gps-live-indicator > span { display: grid; justify-items: end; line-height: 1.15; }
  .gps-live-indicator b { font-size: .52rem; white-space: nowrap; }
  .gps-live-indicator small { margin-top: 2px; color: #708077; font-size: .42rem; font-weight: 750; white-space: nowrap; }
  .gps-live-indicator small[data-tone="syncing"] { color: #927436; }
  .gps-live-indicator small[data-tone="synced"] { color: #397147; }
  .gps-live-indicator small[data-tone="error"] { color: #a04d39; }
  .gps-live-indicator i { width: 7px; height: 7px; border-radius: 50%; background: #70a76b; box-shadow: 0 0 0 4px rgba(112,167,107,.14); }
  .gps-live-indicator[data-state="error"] i { background: #b5523e; box-shadow: 0 0 0 4px rgba(181,82,62,.13); }
  .gps-live-indicator[data-state="locating"] i { background: #d8bd79; animation: gps-pulse 1.1s ease-in-out infinite; }
  @keyframes gps-pulse { 50% { transform: scale(.6); opacity: .55; } }
  .gps-hole-nav { display: grid; grid-template-columns: 54px minmax(0, 1fr) 54px; min-height: 58px; background: #183126; color: #fffdf3; }
  .gps-hole-nav button { border: 0; background: transparent; color: inherit; }
  .gps-hole-nav > button:first-child { border-right: 1px solid rgba(255,255,255,.12); }
  .gps-hole-nav > button:last-child { border-left: 1px solid rgba(255,255,255,.12); }
  .gps-hole-nav > button:disabled { color: rgba(255,255,255,.25); }
  #gps-hole-card { display: grid; place-content: center; text-align: center; }
  #gps-hole-card span, #gps-hole-card strong { display: block; }
  #gps-hole-card span { color: #d8bd79; font-size: .54rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
  #gps-hole-card strong { margin-top: 2px; font-size: .76rem; }
  .gps-page-preview { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; min-height: 38px; padding: 5px 14px; border-bottom: 1px solid rgba(24,49,38,.1); background: #e5eadf; }
  .gps-page-preview label { display: flex; align-items: center; gap: 8px; min-width: 0; }
  .gps-page-preview label > span { flex: 0 0 auto; color: #52675a; font-size: .5rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
  .gps-page-preview select { min-width: 0; width: min(150px, 100%); min-height: 28px; padding: 3px 25px 3px 8px; border: 1px solid rgba(24,49,38,.16); border-radius: 8px; background: #fafbf6; color: #183126; font-size: .57rem; font-weight: 800; }
  .gps-page-preview small { padding-left: 8px; border-left: 2px solid #d8bd79; color: #7b5e2c; font-size: .46rem; font-weight: 800; line-height: 1.2; text-align: right; }
  .gps-mode-content { overflow-y: auto; overscroll-behavior: contain; padding: 14px 14px 22px; scrollbar-width: none; }
  .gps-mode-content::-webkit-scrollbar { display: none; }
  .gps-yardage-board { text-align: center; }
  .gps-primary-yardage > span { display: block; color: #627268; font-size: .58rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
  .gps-primary-yardage > strong { display: block; margin-top: 1px; font: 650 clamp(3.4rem, 17vw, 5rem)/.98 var(--font-display); letter-spacing: -.07em; }
  .gps-primary-yardage > small { display: block; color: #627268; font-size: .64rem; }
  .gps-shot-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: min(100%, 330px); margin-inline: auto; overflow: hidden; border: 1px solid rgba(24,49,38,.1); border-radius: 15px; background: rgba(255,255,255,.62); }
  .gps-shot-metrics > div { display: grid; min-height: 72px; padding: 9px 12px; place-content: center; }
  .gps-shot-metrics > div + div { border-left: 1px solid rgba(24,49,38,.1); }
  .gps-shot-metrics span { color: #627268; font-size: .52rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
  .gps-shot-metrics strong { margin-top: 3px; font: 650 2rem/1 var(--font-display); letter-spacing: -.05em; }
  .gps-position-strip { display: flex; justify-content: center; gap: 12px; margin-top: 8px; }
  .gps-position-strip span { padding-left: 9px; border-left: 2px solid #d8bd79; color: #3f5648; font-size: .56rem; font-weight: 750; }
  .gps-location-actions { display: grid; width: min(100%, 330px); margin: 14px auto 0; gap: 8px; }
  .gps-location-actions.has-on-green { grid-template-columns: minmax(0, 3fr) minmax(112px, 2fr); }
  .gps-location-button {
    position: relative; display: grid; width: 100%; min-width: 0; min-height: 112px; margin: 0;
    place-items: center; align-content: center; gap: 3px; overflow: hidden; border: 0; border-radius: 22px;
    background: linear-gradient(145deg, #315d43, #183126 72%); color: #fffdf3;
    box-shadow: 0 18px 38px rgba(20,49,36,.25), inset 0 1px rgba(255,255,255,.12);
  }
  .gps-location-button:active { transform: translateY(1px); }
  .gps-location-button:disabled { opacity: .54; }
  .gps-location-rings { position: absolute; top: 50%; left: 25px; width: 46px; height: 46px; border: 1px solid rgba(216,189,121,.32); border-radius: 50%; transform: translateY(-50%); }
  .gps-location-rings::before { content: ""; position: absolute; inset: 8px; border: 1px solid rgba(216,189,121,.55); border-radius: 50%; }
  .gps-location-rings i { position: absolute; inset: 17px; border-radius: 50%; background: #d8bd79; box-shadow: 0 0 0 3px rgba(216,189,121,.18); }
  .gps-location-button strong { font-size: 1.05rem; letter-spacing: -.02em; }
  .gps-location-button small { color: #cdd9cf; font-size: .57rem; }
  .gps-location-actions.has-on-green .gps-location-button { padding-left: 42px; }
  .gps-location-actions.has-on-green .gps-location-rings { left: 13px; width: 38px; height: 38px; }
  .gps-location-actions.has-on-green .gps-location-rings::before { inset: 7px; }
  .gps-location-actions.has-on-green .gps-location-rings i { inset: 14px; }
  .gps-on-green-button {
    display: grid; min-width: 0; min-height: 112px; padding: 12px 8px; place-items: center; align-content: center; gap: 5px;
    border: 1px solid rgba(49,93,67,.3); border-radius: 22px; background: linear-gradient(155deg, #edf3e7, #d5e2ce);
    color: #183126; box-shadow: 0 12px 26px rgba(20,49,36,.12), inset 0 1px rgba(255,255,255,.72);
  }
  .gps-on-green-button:active { transform: translateY(1px); }
  .gps-on-green-button:disabled { opacity: .54; }
  .gps-on-green-button strong { font-size: .78rem; letter-spacing: -.01em; }
  .gps-on-green-button small { color: #597064; font-size: .5rem; }
  .gps-green-mark { position: relative; width: 27px; height: 27px; border: 2px solid #315d43; border-radius: 50%; background: rgba(255,255,255,.5); }
  .gps-green-mark::before { content: ""; position: absolute; left: 12px; bottom: 12px; width: 1px; height: 22px; background: #315d43; }
  .gps-green-mark::after { content: ""; position: absolute; left: 13px; bottom: 25px; border-top: 4px solid transparent; border-bottom: 4px solid transparent; border-left: 8px solid #a04d39; }
  .gps-green-mark i { position: absolute; inset: 9px; border-radius: 50%; background: #183126; }
  .gps-tee-club-setup {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(145px, 1.1fr);
    align-items: center;
    gap: 7px 10px;
    width: min(100%, 330px);
    margin: 9px auto 0;
    padding: 10px 11px;
    border: 1px solid rgba(24,49,38,.13);
    border-top: 3px solid #d8bd79;
    border-radius: 12px;
    background: rgba(255,255,255,.72);
    box-shadow: 0 8px 20px rgba(20,49,36,.07);
  }
  .gps-tee-club-setup[hidden] { display: none; }
  .gps-tee-club-setup span,
  .gps-tee-club-setup strong { display: block; }
  .gps-tee-club-setup span { color: #627268; font-size: .47rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
  .gps-tee-club-setup strong { margin-top: 2px; font-size: .68rem; }
  .gps-tee-club-setup label { min-width: 0; }
  .gps-tee-club-setup select { width: 100%; min-width: 0; min-height: 36px; padding: 5px 27px 5px 9px; border: 1px solid rgba(24,49,38,.16); border-radius: 8px; background: #f5f6f0; color: #183126; font-size: .62rem; font-weight: 800; }
  .gps-tee-club-setup small { grid-column: 1 / -1; color: #52675a; font-size: .49rem; line-height: 1.35; }
  .gps-tee-club-setup + .gps-location-actions { margin-top: 8px; }
  .gps-mode-status { min-height: 16px; margin: 8px auto 0; color: #627268; font-size: .56rem; line-height: 1.4; text-align: center; }
  .gps-mode-status[data-tone="error"] { color: #9f4738; }
  .gps-last-shot { display: grid; grid-template-columns: 1fr auto; gap: 2px 10px; margin-top: 12px; padding: 10px 12px; border: 1px solid rgba(24,49,38,.1); border-radius: 12px; background: rgba(255,255,255,.58); }
  .gps-last-shot span { color: #627268; font-size: .55rem; text-transform: uppercase; }
  .gps-last-shot strong { grid-row: 1 / 3; grid-column: 2; align-self: center; font-size: 1rem; }
  .gps-last-shot small { overflow: hidden; color: #324b3c; font-size: .58rem; text-overflow: ellipsis; white-space: nowrap; }
  .gps-lie-controls, .gps-caddie, .gps-green-controls, .gps-hole-summary { margin-top: 11px; padding: 11px; border: 1px solid rgba(24,49,38,.1); border-radius: 14px; background: rgba(255,255,255,.62); }
  .gps-caddie header, .gps-green-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
  .gps-caddie header span, .gps-green-controls span { font-size: .64rem; font-weight: 850; }
  .gps-caddie header small, .gps-green-controls small { color: #627268; font-size: .51rem; }
  .gps-caddie-actions { display: flex; align-items: center; justify-content: flex-end; gap: 5px; }
  .gps-lie-controls .gps-surface-options { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; }
  .gps-lie-controls button { min-height: 31px; padding: 4px 2px; border: 1px solid rgba(24,49,38,.12); border-radius: 8px; background: #edf0e8; color: #395044; font-size: .48rem; font-weight: 800; }
  .gps-lie-controls button.active { border-color: #315d43; background: #315d43; color: white; }
  .gps-condition-groups { display: grid; gap: 7px; margin-top: 9px; }
  .gps-condition-group { min-width: 0; margin: 0; padding: 0; border: 0; }
  .gps-condition-group[hidden] { display: none; }
  .gps-condition-group legend { margin-bottom: 4px; padding: 0; color: #627268; font-size: .46rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
  .gps-condition-group > div { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; }
  .gps-condition-summary { display: block; margin-top: 7px; color: #52675a; font-size: .48rem; line-height: 1.3; }
  .gps-caddie-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin-top: 9px; }
  .gps-caddie-toggle { display: inline-flex; align-items: center; gap: 6px; min-height: 30px; padding: 4px 7px 4px 10px; border: 1px solid rgba(24,49,38,.14); border-radius: 9px; background: #edf0e8; color: #274737; font-size: .54rem; font-weight: 850; }
  .gps-target-select { min-height: 30px; padding: 4px 9px; border: 1px solid rgba(139,100,37,.3); border-radius: 9px; background: #f3ead1; color: #6f4e18; font-size: .52rem; font-weight: 850; }
  .gps-target-select[aria-pressed="true"]::before { content: "✓ "; }
  .gps-target-select[aria-pressed="true"] { border-color: #8b6425; background: #d8bd79; color: #183126; }
  .gps-target-status { display: block; margin-top: 6px; color: #627268; font-size: .49rem; line-height: 1.3; }
  .gps-caddie-toggle::after { content: "+"; font-size: .75rem; line-height: 1; }
  .gps-caddie-toggle[aria-expanded="true"]::after { content: "−"; }
  .gps-caddie header .gps-caddie-toggle small { display: inline-grid; min-width: 18px; height: 18px; padding: 0 4px; place-items: center; border-radius: 9px; background: #315d43; color: white; font-size: .46rem; }
  .gps-caddie-choice { min-width: 0; min-height: 78px; padding: 9px; border: 1px solid rgba(24,49,38,.11); border-radius: 11px; background: #f5f6f0; color: #183126; text-align: left; }
  .gps-caddie-choice.selected { border-color: #315d43; background: #e1eadc; box-shadow: inset 0 0 0 1px #315d43; }
  .gps-caddie-choice.considered:not(.selected) { border-color: rgba(49,93,67,.58); border-style: dashed; background: #f0f4eb; }
  .gps-caddie-choice span, .gps-caddie-choice strong, .gps-caddie-choice small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gps-caddie-choice span { color: #a04d39; font-size: .48rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
  .gps-caddie-choice strong { margin-top: 6px; font-size: .72rem; }
  .gps-caddie-choice small { margin-top: 4px; color: #627268; font-size: .5rem; }
  .gps-manual-choice { margin-top: 8px; }
  .gps-manual-fields { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(78px, .7fr); gap: 7px; }
  .gps-manual-fields label { display: grid; gap: 4px; }
  .gps-manual-fields label span { color: #395044; font-size: .5rem; font-weight: 850; text-transform: uppercase; letter-spacing: .04em; }
  .gps-manual-choice select { width: 100%; min-width: 0; min-height: 34px; padding: 5px 25px 5px 8px; border: 1px solid rgba(24,49,38,.14); border-radius: 8px; background: #f5f6f0; color: #183126; font-size: .6rem; font-weight: 750; }
  .gps-manual-choice > small { display: block; margin-top: 6px; color: #627268; font-size: .49rem; line-height: 1.35; }
  .gps-manual-choice[data-mode="manual"] > small { color: #a04d39; font-weight: 750; }

  /* Keep the active shot desk visible above the iPhone 13 browser chrome. */
  .gps-mode-screen.gps-shot-page .gps-mode-header { min-height: calc(46px + env(safe-area-inset-top)); }
  .gps-mode-screen.gps-shot-page .gps-hole-nav { min-height: 48px; }
  .gps-mode-screen.gps-shot-page .gps-page-preview { min-height: 32px; padding-block: 3px; }
  .gps-mode-screen.gps-shot-page .gps-mode-content { padding: 8px 12px 10px; }
  .gps-mode-screen.gps-shot-page .gps-shot-metrics { border-radius: 12px; }
  .gps-mode-screen.gps-shot-page .gps-shot-metrics > div { min-height: 52px; padding: 5px 10px; }
  .gps-mode-screen.gps-shot-page .gps-shot-metrics strong { margin-top: 1px; font-size: 1.5rem; }
  .gps-mode-screen.gps-shot-page .gps-position-strip { gap: 8px; margin-top: 4px; }
  .gps-mode-screen.gps-shot-page .gps-position-strip span { padding-left: 7px; font-size: .5rem; }
  .gps-mode-screen.gps-shot-page .gps-location-actions { margin-top: 7px; gap: 6px; }
  .gps-mode-screen.gps-shot-page .gps-location-button,
  .gps-mode-screen.gps-shot-page .gps-on-green-button { min-height: 72px; border-radius: 16px; }
  .gps-mode-screen.gps-shot-page .gps-location-rings { left: 18px; width: 34px; height: 34px; }
  .gps-mode-screen.gps-shot-page .gps-location-rings::before { inset: 6px; }
  .gps-mode-screen.gps-shot-page .gps-location-rings i { inset: 12px; }
  .gps-mode-screen.gps-shot-page .gps-location-button strong { font-size: .82rem; }
  .gps-mode-screen.gps-shot-page .gps-location-button small { font-size: .48rem; }
  .gps-mode-screen.gps-shot-page .gps-location-actions.has-on-green .gps-location-button { padding-left: 34px; }
  .gps-mode-screen.gps-shot-page .gps-location-actions.has-on-green .gps-location-rings { left: 10px; width: 30px; height: 30px; }
  .gps-mode-screen.gps-shot-page .gps-location-actions.has-on-green .gps-location-rings::before { inset: 5px; }
  .gps-mode-screen.gps-shot-page .gps-location-actions.has-on-green .gps-location-rings i { inset: 10px; }
  .gps-mode-screen.gps-shot-page .gps-on-green-button { padding: 7px 5px; gap: 2px; }
  .gps-mode-screen.gps-shot-page .gps-green-mark { width: 22px; height: 22px; }
  .gps-mode-screen.gps-shot-page .gps-green-mark::before { left: 9px; bottom: 9px; height: 17px; }
  .gps-mode-screen.gps-shot-page .gps-green-mark::after { left: 10px; bottom: 20px; }
  .gps-mode-screen.gps-shot-page .gps-green-mark i { inset: 7px; }
  .gps-mode-screen.gps-shot-page .gps-mode-status { min-height: 12px; margin-top: 4px; font-size: .49rem; }
  .gps-mode-screen.gps-shot-page .gps-last-shot { margin-top: 5px; padding: 6px 9px; }
  .gps-mode-screen.gps-shot-page .gps-last-shot span { font-size: .48rem; }
  .gps-mode-screen.gps-shot-page .gps-last-shot strong { font-size: .82rem; }
  .gps-mode-screen.gps-shot-page .gps-last-shot small { font-size: .5rem; }
  .gps-mode-screen.gps-shot-page .gps-lie-controls,
  .gps-mode-screen.gps-shot-page .gps-caddie { margin-top: 5px; padding: 6px; border-radius: 11px; }
  .gps-mode-screen.gps-shot-page .gps-lie-controls button { min-height: 28px; }
  .gps-mode-screen.gps-shot-page .gps-condition-groups { gap: 5px; margin-top: 6px; }
  .gps-mode-screen.gps-shot-page .gps-condition-group legend { margin-bottom: 3px; }
  .gps-mode-screen.gps-shot-page .gps-condition-summary { margin-top: 4px; }
  .gps-mode-screen.gps-shot-page .gps-caddie-toggle { min-height: 26px; }
  .gps-mode-screen.gps-shot-page .gps-target-select { min-height: 26px; }
  .gps-mode-screen.gps-shot-page .gps-target-status { margin-top: 3px; }
  .gps-mode-screen.gps-shot-page .gps-manual-choice { margin-top: 4px; }
  .gps-mode-screen.gps-shot-page .gps-manual-fields label { gap: 2px; }
  .gps-mode-screen.gps-shot-page .gps-manual-choice select { min-height: 30px; padding-block: 3px; }
  .gps-mode-screen.gps-shot-page .gps-manual-choice > small { margin-top: 3px; font-size: .46rem; line-height: 1.2; }
  .gps-mode-screen.gps-shot-page .gps-caddie-choices { gap: 5px; margin-top: 5px; }
  .gps-mode-screen.gps-shot-page .gps-caddie-choice { min-height: 60px; padding: 6px; }
  .gps-mode-screen.gps-shot-page .gps-caddie-choice strong { margin-top: 3px; font-size: .64rem; }
  .gps-mode-screen.gps-shot-page .gps-caddie-choice small { margin-top: 2px; font-size: .46rem; }
  .gps-mode-screen.gps-shot-page .gps-mode-actions { gap: 6px; padding: 5px 12px calc(5px + env(safe-area-inset-bottom)); }
  .gps-mode-screen.gps-shot-page .gps-mode-actions button { min-height: 36px; }
  .gps-green-controls { display: grid; gap: 8px; }
  .gps-green-actions { display: grid; grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr); gap: 7px; }
  .gps-green-actions button { min-height: 44px; border-radius: 10px; font-size: .62rem; font-weight: 850; }
  .gps-add-putt { border: 1px solid rgba(49,93,67,.24); background: #edf0e8; color: #315d43; }
  .gps-holed-out { border: 0; background: #315d43; color: white; box-shadow: 0 7px 16px rgba(49,93,67,.18); }
  .gps-holed-out span { display: inline-grid; width: 17px; height: 17px; margin-right: 4px; place-items: center; border: 1px solid rgba(255,255,255,.7); border-radius: 50%; font-size: .42rem; vertical-align: 1px; }
  .gps-green-actions button:disabled { opacity: .5; }
  .gps-green-controls > small { line-height: 1.35; }
  .gps-hole-summary { margin-top: 0; padding: 0; border: 0; background: transparent; color: #183126; text-align: left; }
  .gps-mode-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 9px 14px calc(9px + env(safe-area-inset-bottom)); border-top: 1px solid rgba(24,49,38,.12); background: rgba(250,251,246,.95); box-shadow: 0 -8px 24px rgba(24,49,38,.08); }
  .gps-mode-actions button { min-height: 44px; border: 1px solid rgba(24,49,38,.15); border-radius: 11px; background: transparent; color: #183126; font-size: .65rem; font-weight: 850; }
  .gps-mode-actions button > span { display: inline-block; margin-right: 5px; font-size: 1rem; line-height: 0; vertical-align: -.08em; }
  .gps-mode-actions button:disabled { cursor: default; opacity: .35; }
  #gps-hole-review-dialog { width: 100vw; max-width: none; height: 100dvh; max-height: 100dvh; margin: 0; overflow: hidden; border-radius: 0; }
  #gps-hole-review-dialog .modal-card { display: flex; box-sizing: border-box; height: 100%; min-height: 0; padding: calc(10px + env(safe-area-inset-top)) 16px calc(12px + env(safe-area-inset-bottom)); flex-direction: column; overflow-y: auto; overscroll-behavior: contain; }
  #gps-hole-review-dialog .modal-card > header { position: sticky; z-index: 2; top: 0; padding: 8px 0 10px; background: #eef1e7; }
  #gps-hole-review-dialog .modal-close { display: grid; flex: 0 0 auto; width: 44px; height: 44px; padding: 0; place-items: center; border-radius: 50%; background: #e1e7dc; }
  .gps-review-card > header { display: flex; align-items: flex-start; justify-content: space-between; padding-bottom: 12px; border-bottom: 1px solid rgba(24,49,38,.1); }
  .gps-review-card > header span { color: #627268; font-size: .54rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
  .gps-review-card > header h2 { margin-top: 4px; font-size: 1.35rem; }
  .gps-review-shots { display: grid; gap: 7px; margin-top: 12px; }
  .gps-review-shot { display: grid; grid-template-columns: minmax(58px,.7fr) minmax(0,1.25fr) auto auto; align-items: center; gap: 7px; min-height: 46px; padding: 8px 9px; border: 1px solid rgba(24,49,38,.1); border-radius: 10px; background: rgba(255,255,255,.62); }
  .gps-review-shot span { color: #627268; font-size: .52rem; font-weight: 850; text-transform: uppercase; }
  .gps-review-shot-selection { min-width: 0; }
  .gps-review-shot strong, .gps-review-shot-selection small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gps-review-shot strong { font-size: .66rem; }
  .gps-review-shot-selection small { margin-top: 2px; color: #627268; font-size: .47rem; }
  .gps-review-shot b { color: #315d43; font-size: .68rem; white-space: nowrap; }
  .gps-review-shot-actions { display: grid; gap: 3px; }
  .gps-review-edit,
  .gps-review-delete { min-height: 30px; padding: 4px 8px; border: 1px solid rgba(49,93,67,.22); border-radius: 8px; background: #edf0e8; color: #315d43; font-size: .52rem; font-weight: 850; }
  .gps-review-delete { border-color: rgba(160,77,57,.3); background: #f7ece8; color: #914431; }
  .gps-review-edit:disabled,
  .gps-review-delete:disabled { opacity: .45; }
  .gps-review-shot.editing { border-color: rgba(49,93,67,.38); background: #f7f8f2; }
  .gps-review-shot.editing .gps-review-edit { background: #315d43; color: white; }
  .gps-review-editor { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0,1.5fr) minmax(92px,.8fr); gap: 7px; padding-top: 8px; border-top: 1px solid rgba(24,49,38,.1); }
  .gps-review-editor[hidden] { display: none; }
  .gps-review-editor label { display: grid; min-width: 0; gap: 3px; }
  .gps-review-editor label span { font-size: .47rem; }
  .gps-review-editor select { width: 100%; min-width: 0; min-height: 36px; padding: 5px 24px 5px 7px; border: 1px solid rgba(24,49,38,.16); border-radius: 8px; background: white; color: #183126; font-size: .57rem; font-weight: 750; }
  .gps-review-editor-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: 6px; }
  .gps-review-editor-actions button { min-height: 34px; padding: 5px 10px; border: 1px solid rgba(24,49,38,.15); border-radius: 8px; background: transparent; color: #315d43; font-size: .54rem; font-weight: 850; }
  .gps-review-editor-actions [data-gps-review-save] { border-color: #315d43; background: #315d43; color: white; }
  .gps-review-edit-status { grid-column: 1 / -1; color: #a04d39; font-size: .5rem; }
  .gps-review-empty { margin: 12px 0 0; color: #627268; font-size: .62rem; }
  .gps-review-facts { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; margin-top: 12px; }
  .gps-review-facts > div { padding: 10px; border-radius: 10px; background: #e2e8dd; }
  .gps-review-facts span, .gps-review-facts strong { display: block; }
  .gps-review-facts span { color: #627268; font-size: .5rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
  .gps-review-facts strong { margin-top: 4px; font-size: .7rem; }
  .gps-review-delete-putt { margin-top: 7px; padding: 4px 7px; border: 1px solid rgba(160,77,57,.3); border-radius: 7px; background: #f7ece8; color: #914431; font-size: .49rem; font-weight: 850; }
  .gps-review-delete-putt[hidden] { display: none; }
  .gps-hole-review-score { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); align-items: stretch; margin-top: 12px; padding: 0; overflow: hidden; border-radius: 14px; background: #183126; color: #fffdf3; }
  .gps-hole-review-score > div { display: grid; min-height: 74px; padding: 11px 14px; place-content: center; text-align: center; }
  .gps-hole-review-score > div + div { border-left: 1px solid rgba(255,255,255,.2); }
  .gps-hole-review-score span, .gps-hole-review-score strong, .gps-hole-review-score b { display: block; }
  .gps-hole-review-score span { color: #aebcaf; font-size: .52rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
  .gps-hole-review-score strong { margin-top: 3px; font: 650 1.8rem/1 var(--font-display); }
  .gps-hole-review-score b { margin-top: 5px; color: #d8bd79; font-size: 1.05rem; letter-spacing: -.01em; }
  .gps-hole-review-score[data-score-tone="under"] b { color: #f0d58e; }
  .gps-hole-review-score[data-score-tone="over"] b { color: #efb29d; }
  .gps-hole-review-score[data-score-tone="high"] { background: #262d29; }
  .gps-hole-review-score[data-score-tone="high"] b { color: #f2a58f; }
  .gps-hole-ai-summary { margin-top: 12px; padding: 12px 13px; border-left: 3px solid #d8bd79; border-radius: 0 10px 10px 0; background: rgba(226,232,221,.72); }
  .gps-hole-ai-summary header { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
  .gps-hole-ai-summary header span { color: #315d43; font-size: .57rem; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; }
  .gps-hole-ai-summary header small { color: #7a887f; font-size: .47rem; font-weight: 750; }
  .gps-hole-ai-summary p { margin: 7px 0 0; color: #283e31; font-size: .62rem; line-height: 1.5; white-space: pre-line; }
  .gps-hole-ai-summary[data-ai-state="fallback"] { border-left-color: #9ba79f; }
  #gps-hole-review-dialog .modal-actions { position: sticky; z-index: 2; bottom: 0; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 8px; margin-top: auto; padding: 12px 0 2px; background: #eef1e7; }
  #gps-hole-review-dialog .modal-actions button { width: 100%; min-height: 46px; }
  .gps-review-header-actions { display: flex; align-items: center; gap: 6px; }
  .gps-review-trace { min-height: 38px; padding: 7px 10px; border: 1px solid rgba(49,93,67,.26); border-radius: 10px; background: #e3eadf; color: #315d43; font-size: .56rem; font-weight: 850; white-space: nowrap; }
  #gps-hole-review-dialog .gps-review-trace { background: #dfe8da; }
  .gps-review-next { align-self: center; min-height: 38px; padding: 7px 11px; border: 0; border-radius: 10px; background: #315d43; color: white; font-size: .58rem; font-weight: 850; white-space: nowrap; }
  .gps-review-card > header .gps-review-next span { margin-left: 4px; color: inherit; font-size: inherit; font-weight: inherit; letter-spacing: 0; text-transform: none; }
}

* { box-sizing: border-box; }
body { margin: 0; min-width: 320px; min-height: 100vh; background: linear-gradient(145deg, #dedac9, #cbc7b6); }
button, select, input { font: inherit; color: inherit; }
button { cursor: pointer; }
button:focus-visible, select:focus-visible, input:focus-visible { outline: 3px solid rgba(63, 102, 133, .35); outline-offset: 2px; }
.mobile-action-icon { display: none; }

.loading-screen { position: fixed; inset: 0; z-index: 100; display: grid; place-content: center; justify-items: center; background: var(--ink); color: var(--paper); transition: opacity .5s; }
.loading-mark, .brand-mark { display: grid; place-items: center; font-family: var(--font-system); border: 1px solid currentColor; border-radius: 50% 50% 45% 45%; }
.loading-mark { width: 74px; height: 74px; font-size: 2.7rem; }
.loading-screen p { font-family: var(--font-system); font-size: .72rem; text-transform: uppercase; letter-spacing: .16em; }

.app-shell { min-height: 100vh; padding: 14px; }
.topbar { height: 68px; display: grid; grid-template-columns: 1fr auto auto 1fr; gap: 18px; align-items: center; padding: 0 18px; background: var(--chalk); border: 1px solid rgba(255,255,255,.65); border-radius: 12px 12px 0 0; }
.brand { display: flex; align-items: center; gap: 10px; color: inherit; text-decoration: none; }
.brand-mark { width: 38px; height: 38px; background: var(--ink); color: var(--paper); font-size: 1.25rem; }
.brand strong, .brand small { display: block; }
.brand strong { font-family: var(--font-system); font-size: 1.12rem; line-height: 1; }
.course-picker { justify-self: start; display: grid; gap: 3px; }
.course-source-attribution { max-width: 220px; color: var(--muted); font-size: .52rem; line-height: 1.15; }
.course-select { justify-self: start; max-width: 220px; padding: 7px 28px 7px 9px; border: 1px solid var(--line); border-radius: 5px; background: var(--chalk); font-size: .68rem; font-weight: 600; }
.map-version-status { color: var(--ink-soft); font-family: var(--font-system); font-size: .5rem; font-weight: 650; letter-spacing: .055em; text-transform: uppercase; }
.map-version-status.custom { color: #1f6845; }
.map-version-status.custom::before { content: ""; display: inline-block; width: 5px; height: 5px; margin: 0 5px 1px 1px; border-radius: 50%; background: #2b8b5d; box-shadow: 0 0 0 3px rgba(43,139,93,.12); }
.brand small { margin-top: 3px; color: var(--ink-soft); font-family: var(--font-system); font-size: .59rem; letter-spacing: .12em; text-transform: uppercase; }
.round-status { display: flex; align-items: center; gap: 14px; color: var(--ink-soft); font-size: .75rem; }
.round-status strong { color: var(--ink); }
.status-rule { width: 28px; height: 1px; background: var(--line); }
.profile-button { justify-self: end; display: flex; align-items: center; gap: 9px; border: 0; background: transparent; font-size: .76rem; font-weight: 600; }
.profile-button > span:first-child { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--blue); color: white; font-family: var(--font-system); }
.topbar-actions { justify-self: end; display: flex; align-items: center; gap: 16px; }
.account-button { display: flex; align-items: center; gap: 7px; padding: 3px 9px 3px 4px; border: 1px solid rgba(24,49,38,.12); border-radius: 999px; background: rgba(255,255,255,.46); font-size: .66rem; font-weight: 700; }
.account-button > span:first-child { display: grid; place-items: center; width: 25px; height: 25px; border-radius: 50%; background: var(--rough-dark); color: white; font-size: .65rem; }
.account-button:hover { border-color: rgba(49,90,59,.35); background: rgba(142,189,119,.12); }
.fullscreen-button,
.reset-game-button,
.player-guide-button { padding: 6px 0; border: 0; border-bottom: 1px solid rgba(24,49,38,.35); background: transparent; color: var(--ink-soft); font-family: var(--font-system); font-size: .56rem; text-transform: uppercase; letter-spacing: .08em; }
.fullscreen-button:hover,
.reset-game-button:hover,
.player-guide-button:hover { color: var(--danger); border-color: var(--danger); }
.player-guide-button {
  padding: 6px 9px;
  border: 1px solid rgba(71,109,132,.28);
  border-radius: 999px;
  color: #476d84;
}
.fullscreen-button[aria-pressed="true"] { color: var(--ink); border-color: rgba(24,49,38,.65); }

.game-layout { min-height: calc(100vh - 96px); display: grid; grid-template-columns: minmax(230px, .72fr) minmax(360px, 1.3fr) minmax(380px, 1.28fr); background: var(--paper); border-radius: 0 0 12px 12px; overflow: hidden; box-shadow: var(--shadow); }
.panel { position: relative; z-index: 2; padding: clamp(16px, 1.7vw, 28px); background: var(--paper); }
.hole-brief { border-right: 1px solid var(--line); }
.shot-desk { border-left: 1px solid var(--line); }
.eyebrow, .field-label { font-family: var(--font-system); font-size: .62rem; font-weight: 500; text-transform: uppercase; letter-spacing: .12em; color: var(--ink-soft); }
.hole-title { display: flex; align-items: center; gap: 12px; margin: 20px 0; }
.hole-number { font-family: var(--font-system); font-size: clamp(3.8rem, 5vw, 5.6rem); line-height: .75; letter-spacing: -.06em; color: var(--rough); }
h1, h2 { margin: 0; font-family: var(--font-system); font-weight: 650; }
h1 { font-size: clamp(1.45rem, 2vw, 2rem); }
h2 { font-size: 1.55rem; }
.hole-title p { margin: 5px 0 0; color: var(--ink-soft); font-size: .76rem; }
.tee-switch { display: grid; grid-template-columns: repeat(3, 1fr); padding: 3px; border: 1px solid var(--line); border-radius: 7px; background: rgba(255,255,255,.26); }
.tee-switch button { padding: 7px 4px; border: 0; border-radius: 5px; background: transparent; color: var(--ink-soft); font-size: .69rem; font-weight: 700; }
.tee-switch button.active { background: var(--ink); color: white; box-shadow: 0 4px 12px rgba(24,49,38,.18); }
.strategy-note { margin: 18px 0; padding: 12px 0 14px; border-block: 1px solid var(--line); }
.strategy-note span { color: var(--danger); font-family: var(--font-system); font-size: .59rem; text-transform: uppercase; letter-spacing: .12em; }
.strategy-note p { min-height: 56px; margin: 7px 0 0; font-family: var(--font-system); font-size: .94rem; line-height: 1.36; }
.conditions { margin: 0; }
.conditions div { display: flex; justify-content: space-between; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--line); }
.conditions dt { color: var(--ink-soft); font-size: .69rem; }
.conditions dd { margin: 0; font-size: .7rem; font-weight: 700; }
.conditions select { max-width: 145px; border: 0; background: transparent; text-align: right; font-size: .7rem; font-weight: 700; }
.hole-progress { margin-top: 18px; }
.round-card-heading { display: flex; align-items: baseline; justify-content: space-between; }
.round-card-heading strong { font-family: var(--font-system); font-size: 1.1rem; }
.round-card-grid { display: grid; gap: 8px; margin-top: 8px; }
.round-nine-card { min-width: 0; }
.round-nine-card > header { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 4px; }
.round-nine-card > header strong { color: var(--ink); font-family: var(--font-system); font-size: .58rem; letter-spacing: .025em; }
.round-nine-card > header span { color: var(--ink-soft); font-size: .5rem; font-weight: 700; letter-spacing: .03em; }
.round-nine-holes { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 3px; }
.round-hole { position: relative; display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto 1fr; min-width: 0; height: 39px; padding: 4px 4px 3px; border: 1px solid var(--line); border-radius: 5px; background: rgba(255,255,255,.24); color: var(--ink-soft); text-align: left; }
.round-hole-number { font-family: var(--font-system); font-size: .57rem; font-weight: 800; line-height: 1; }
.round-hole small { align-self: end; overflow: hidden; font-size: .43rem; line-height: 1; white-space: nowrap; }
.round-hole-score { grid-column: 2; grid-row: 1 / 3; align-self: center; min-width: 17px; font-family: var(--font-system); line-height: 1; text-align: center; }
.round-hole-unplayed { color: rgba(24,49,38,.36); font-size: .62rem; }
.score-mark {
  position: relative;
  display: inline-grid;
  width: 25px;
  height: 25px;
  place-items: center;
  border: 2px solid transparent;
  color: var(--ink);
  font-family: var(--font-system);
  font-size: .7rem;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  vertical-align: middle;
}
.score-mark.birdie { border-color: var(--ink); border-radius: 50%; }
.score-mark.eagle { border-color: var(--ink); border-radius: 50%; }
.score-mark.eagle::after { content: ""; position: absolute; inset: 2px; border: 1px solid var(--ink); border-radius: 50%; }
.score-mark.bogey { border-color: var(--ink); }
.score-mark.double-bogey { border-color: #151515; background: #151515; color: var(--paper); }
.score-mark.unplayed { color: var(--ink-soft); font-weight: 500; }
.round-hole .score-mark { width: 18px; height: 18px; border-width: 1.5px; font-size: .48rem; }
.round-hole .score-mark.eagle::after { inset: 1.5px; border-width: 1px; }
.round-hole.complete { border-color: rgba(49,90,59,.34); background: rgba(79,122,84,.12); color: var(--rough-dark); }
.round-hole.active { z-index: 1; border-color: var(--danger); background: var(--chalk); color: var(--ink); box-shadow: inset 3px 0 0 var(--danger), 0 2px 7px rgba(181,82,62,.14); }
.round-hole:hover { border-color: var(--rough-dark); }
.round-hole.active { cursor: default; }
.round-card-actions { display: flex; justify-content: space-between; margin-top: 6px; }
.round-card-actions button { padding: 5px 0; border: 0; background: transparent; color: var(--ink-soft); font-size: .58rem; font-weight: 700; }
.round-card-actions button:not(:disabled):hover { color: var(--danger); }
.round-card-actions button:disabled { opacity: .3; cursor: default; }

.course-stage { position: relative; min-height: 660px; overflow: hidden; background: #a5b78a; }
.course-stage::before { content: ""; position: absolute; inset: 0; opacity: .22; background-image: radial-gradient(rgba(255,255,255,.45) .6px, transparent .6px); background-size: 5px 5px; pointer-events: none; }
.course-map { position: absolute; inset: 0; }
.course-map svg { width: 100%; height: 100%; display: block; cursor: crosshair; }
.map-top-controls { display: contents; }
.map-toolbar { position: absolute; z-index: 3; top: 18px; left: 20px; right: 20px; display: flex; justify-content: space-between; align-items: center; pointer-events: none; }
.map-toolbar > * { pointer-events: auto; }
.map-actions { display: flex; gap: 7px; }
.course-mode-switch {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  border: 1px solid rgba(255,255,255,.52);
  border-radius: 999px;
  background: rgba(250,248,239,.9);
  backdrop-filter: blur(12px);
  box-shadow: 0 7px 20px rgba(24,45,33,.14);
  pointer-events: auto;
}
.course-mode-switch button,
.map-toolbar .course-mode-switch button {
  min-height: 25px;
  padding: 4px 9px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  box-shadow: none;
  color: var(--ink-soft);
  font-size: .51rem;
  font-weight: 800;
  letter-spacing: .035em;
  text-transform: none;
}
.course-mode-switch button[aria-pressed="true"],
.map-toolbar .course-mode-switch button[aria-pressed="true"] {
  background: var(--ink);
  color: var(--paper);
}
.course-mode-switch button[data-course-map-mode="live"][aria-pressed="true"] { background: var(--blue); }
.course-mode-switch button i,
.live-round-panel header i {
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-right: 4px;
  border-radius: 50%;
  background: #65c98b;
  box-shadow: 0 0 0 3px rgba(101,201,139,.18);
}
.mobile-course-mode-switch { display: none; }
.mobile-enlarge-green[hidden],
.mobile-header-reset[hidden],
.map-actions button[hidden] { display: none; }
.map-hint, .map-toolbar button, .map-key { padding: 8px 11px; border: 1px solid rgba(255,255,255,.38); border-radius: 5px; background: rgba(250,248,239,.87); backdrop-filter: blur(8px); box-shadow: 0 5px 16px rgba(36,58,39,.1); font-family: var(--font-system); font-size: .58rem; text-transform: uppercase; letter-spacing: .07em; }
.map-hint i { display: inline-block; width: 6px; height: 6px; margin-right: 5px; border-radius: 50%; background: var(--danger); }
.map-toolbar button { border-color: rgba(255,255,255,.38); }
.map-toolbar button.active { border-color: rgba(255,253,243,.72); background: var(--ink); color: var(--paper); box-shadow: 0 5px 16px rgba(24,49,38,.24); }
.map-key {
  position: absolute;
  z-index: 3;
  bottom: 16px;
  left: 50%;
  display: flex;
  flex-wrap: nowrap;
  justify-content: center;
  gap: 6px 9px;
  max-width: min(92%, 720px);
  padding: 7px 10px;
  overflow: hidden;
  transform: translateX(-50%);
  white-space: nowrap;
}
.map-key span { display: flex; align-items: center; gap: 5px; }
.map-key span { font-size: .52rem; }
.map-key i { width: 7px; height: 7px; border-radius: 2px; }
.map-key .fairway { background: var(--fairway); }
.map-key .rough { background: var(--rough); }
.map-key .bunker { background: var(--sand); }
.map-key .water { background: var(--water); }
.map-key .green { background: var(--green); }
.map-key .ball { border: 1px solid var(--ink); border-radius: 50%; background: white; }
.map-key .target { border-radius: 50%; background: var(--danger); }
.map-key .carry { height: 2px; border-radius: 0; background: repeating-linear-gradient(90deg, #fffdf3 0 2px, transparent 2px 5px); }
.map-key .roll { height: 3px; border-radius: 2px; background: #f59d45; }
.mobile-hole-overlay,
.mobile-shot-sheet { display: none; }
.live-round-panel {
  position: absolute;
  z-index: 8;
  left: 18px;
  bottom: 18px;
  width: min(330px, calc(100% - 36px));
  padding: 13px 14px;
  border: 1px solid rgba(255,255,255,.58);
  border-radius: 13px;
  background: linear-gradient(155deg, rgba(250,252,248,.96), rgba(227,237,232,.94));
  box-shadow: 0 18px 44px rgba(18,46,38,.24);
  backdrop-filter: blur(16px);
  font-family: var(--font-system);
}
.live-round-panel[hidden] { display: none; }
.live-round-panel header { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.live-round-panel header span { color: var(--blue); font-size: .56rem; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; }
.live-round-panel header small { overflow: hidden; color: var(--ink-soft); font-size: .5rem; text-overflow: ellipsis; white-space: nowrap; }
.live-round-head-actions { display: flex; min-width: 0; align-items: center; gap: 7px; }
#live-round-move,
#live-round-collapse { display: none; }
.live-round-panel > strong { display: block; margin-top: 8px; font-size: 1rem; }
.live-round-panel > p { margin: 3px 0 9px; color: var(--ink-soft); font-size: .62rem; line-height: 1.35; }
.live-map-measure-hint {
  position: absolute;
  z-index: 7;
  top: 62px;
  left: 50%;
  display: flex;
  max-width: min(520px, calc(100% - 32px));
  align-items: center;
  gap: 6px;
  margin: 0;
  padding: 7px 9px;
  border: 1px solid rgba(255,255,255,.58);
  border-radius: 999px;
  background: rgba(247,251,249,.94);
  box-shadow: 0 8px 22px rgba(18,46,38,.18);
  color: #355f7b;
  font-size: .54rem;
  font-weight: 800;
  line-height: 1.25;
  transform: translateX(-50%);
  backdrop-filter: blur(12px);
  pointer-events: none;
}
.live-map-measure-mark {
  display: grid;
  place-items: center;
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: rgba(71,109,132,.12);
}
.live-map-measure-hint[hidden] { display: none; }
.live-map-measure-hint button {
  min-height: 25px;
  flex: 0 0 auto;
  padding: 3px 8px;
  border: 1px solid rgba(63,102,133,.22);
  border-radius: 999px;
  background: #355f7b;
  color: white;
  font: inherit;
  pointer-events: auto;
}
.live-map-measure-hint button[hidden] { display: none; }
#live-map-measure-voice { background: rgba(71,109,132,.1); color: #355f7b; }
#live-map-target-use { background: #8b6425; }
#live-map-target-use:disabled { opacity: .45; }
#live-map-target-cancel { background: rgba(255,255,255,.72); color: #355f7b; }
.live-round-facts { display: grid; grid-template-columns: .7fr .8fr 1.5fr; gap: 5px; }
.live-round-facts span { min-width: 0; padding: 7px 8px; border-radius: 8px; background: rgba(255,255,255,.62); }
.live-round-facts small,
.live-round-facts b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.live-round-facts small { color: var(--ink-soft); font-size: .46rem; }
.live-round-facts b { margin-top: 2px; font-size: .65rem; }
.live-round-actions { display: flex; gap: 6px; margin-top: 8px; }
.live-round-actions[hidden] { display: none; }
.live-round-actions button { min-height: 28px; padding: 4px 10px; border: 1px solid rgba(63,102,133,.2); border-radius: 7px; background: rgba(255,255,255,.68); color: var(--blue); font-size: .55rem; font-weight: 800; }
.gps-replay-controls { display: grid; gap: 7px; margin-top: 10px; padding-top: 10px; border-top: 1px solid rgba(63,102,133,.18); }
.gps-replay-controls[hidden] { display: none; }
.gps-replay-evidence-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; }
.gps-replay-evidence-card { min-width: 0; padding: 7px 8px; border: 1px solid rgba(63,102,133,.14); border-radius: 8px; background: rgba(255,255,255,.58); }
.gps-replay-evidence-card span,
.gps-replay-evidence-card strong,
.gps-replay-evidence-card small { display: block; }
.gps-replay-evidence-card span { color: #607582; font-family: var(--font-data); font-size: .43rem; font-weight: 900; letter-spacing: .075em; text-transform: uppercase; }
.gps-replay-evidence-card strong { margin-top: 4px; color: #355f7b; font-size: .56rem; line-height: 1.15; }
.gps-replay-evidence-card small { margin-top: 3px; overflow: hidden; color: var(--ink-soft); font-size: .47rem; line-height: 1.2; text-overflow: ellipsis; }
#gps-replay-result-card[data-result="good"] { border-color: rgba(65,132,93,.25); background: rgba(65,132,93,.1); }
#gps-replay-result-card[data-result="good"] strong { color: #315f43; }
#gps-replay-result-card[data-result="mixed"] { border-color: rgba(202,155,70,.27); background: rgba(202,155,70,.11); }
#gps-replay-result-card[data-result="mixed"] strong { color: #805b1c; }
#gps-replay-result-card[data-result="costly"] { border-color: rgba(177,76,58,.24); background: rgba(177,76,58,.08); }
#gps-replay-result-card[data-result="costly"] strong { color: #994534; }
.gps-replay-decision-card { box-shadow: inset 0 2px 0 rgba(63,102,133,.34); }
.gps-replay-target-card { box-shadow: inset 0 2px 0 rgba(168,126,51,.48); }
.gps-replay-target-card strong { color: #795f2d; }
.gps-replay-controls > p { margin: 0; color: var(--ink); font-size: .61rem; font-weight: 700; line-height: 1.45; }
.gps-replay-controls blockquote { margin: 0; padding: 7px 9px; border-left: 3px solid #476d84; background: rgba(255,255,255,.5); color: var(--ink-soft); font-size: .57rem; line-height: 1.45; }
.gps-replay-transport { display: grid; grid-template-columns: 34px minmax(64px, 1fr) 34px minmax(76px, auto); gap: 5px; }
.gps-replay-transport button { min-height: 30px; padding: 4px 8px; border: 1px solid rgba(63,102,133,.25); border-radius: 7px; background: white; color: #355f7b; font-size: .55rem; font-weight: 850; }
.gps-replay-transport #gps-replay-play { background: #355f7b; color: white; }
.gps-replay-transport button:disabled { cursor: default; opacity: .38; }
body.live-round-view .course-stage { box-shadow: inset 0 0 0 2px rgba(63,102,133,.28), 0 14px 38px rgba(24,45,33,.09); }
body.live-round-view .course-map,
body.live-round-view .course-map * {
  -webkit-touch-callout: none;
  -webkit-user-drag: none;
  -webkit-user-select: none;
  user-select: none;
}
body.live-round-view .course-map {
  touch-action: none;
  -webkit-tap-highlight-color: transparent;
}
body.live-round-view .course-map svg { cursor: default; touch-action: none; }
body.live-round-view .shot-desk { opacity: .38; pointer-events: none; filter: saturate(.45); }
.live-gps-shot { fill: none; stroke: #3f78a0; stroke-width: 5; stroke-linecap: round; stroke-dasharray: 12 7; vector-effect: non-scaling-stroke; }
.live-gps-shot.replay-current { stroke-dasharray: 1; stroke-dashoffset: 0; animation: gps-replay-draw 1.15s cubic-bezier(.22,.7,.28,1) both; }
.live-gps-shot-halo.replay-current { stroke-dasharray: 1; stroke-dashoffset: 0; animation: gps-replay-draw 1.15s cubic-bezier(.22,.7,.28,1) both; }
@keyframes gps-replay-draw { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
.live-gps-shot-halo { fill: none; stroke: rgba(255,255,255,.78); stroke-width: 9; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.live-gps-shot-number circle { fill: #3f6685; stroke: #fffdf3; stroke-width: 2; vector-effect: non-scaling-stroke; }
.live-gps-shot-number text { fill: white; font: 800 11px var(--font-system); }
.live-gps-tee circle { fill: #fffdf3; stroke: #3f6685; stroke-width: 3; vector-effect: non-scaling-stroke; }
.live-gps-ball .live-ball-halo { fill: rgba(63,102,133,.22); stroke: #fff; stroke-width: 2; vector-effect: non-scaling-stroke; }
.live-gps-ball .live-ball-core { fill: #3f6685; stroke: #fffdf3; stroke-width: 3; vector-effect: non-scaling-stroke; }
.live-range-reference > line { fill: none; stroke-width: 2; stroke-dasharray: 4 7; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.live-range-reference.bunker > line { stroke: rgba(255,226,151,.92); }
.live-range-reference.green > line { stroke: rgba(190,239,164,.92); }
.live-range-endpoint circle { stroke-width: 2; vector-effect: non-scaling-stroke; }
.live-range-endpoint path { fill: none; stroke: #173b2b; stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.live-range-reference.bunker .live-range-endpoint circle { fill: #eed291; stroke: #fff8de; }
.live-range-reference.green .live-range-endpoint circle { fill: #a7d88c; stroke: #f3ffe8; }
.live-range-label rect { fill: rgba(22,52,39,.91); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.live-range-reference.bunker .live-range-label rect { stroke: #eed291; }
.live-range-reference.green .live-range-label rect { stroke: #a7d88c; }
.live-range-label text { fill: #fffdf3; font: 800 9px var(--font-system); letter-spacing: .035em; }
.gps-mode-button,
.mobile-enlarge-green,
.gps-mode-screen { display: none; }
.mobile-hole-overlay {
  position: absolute;
  z-index: 6;
  top: 8px;
  left: 8px;
  right: 8px;
  pointer-events: none;
}
.mobile-hole-band {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  gap: 6px;
}
.mobile-hole-chip,
.mobile-scorecard-chip {
  pointer-events: auto;
  border: 1px solid rgba(255,255,255,.45);
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(250,248,239,.94), rgba(241,238,223,.88));
  backdrop-filter: blur(14px);
  box-shadow: 0 10px 28px rgba(20,37,28,.18);
}
.mobile-hole-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 8px;
}
.mobile-hole-chip strong,
.mobile-hole-chip span,
.mobile-scorecard-chip span,
.mobile-scorecard-chip strong { display: block; }
.mobile-hole-chip strong,
.mobile-scorecard-chip strong { font-size: .8rem; }
.mobile-hole-chip span,
.mobile-scorecard-chip span { color: var(--ink-soft); font-size: .56rem; }
.mobile-hole-chip strong { letter-spacing: -.02em; }
.mobile-hole-chip span {
  display: inline;
  line-height: 1;
  white-space: nowrap;
}
.mobile-scorecard-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  justify-self: end;
  align-self: start;
  gap: 6px;
  min-width: 0;
  min-height: 28px;
  padding: 4px 9px;
  border-color: rgba(24,49,38,.08);
  text-align: left;
}
.mobile-scorecard-chip span {
  display: inline;
  line-height: 1;
  font-size: .5rem;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.mobile-scorecard-chip strong {
  display: inline;
  line-height: 1.05;
  font-size: .72rem;
}
.mobile-scorecard-chip strong { color: var(--danger); }
.gps-mode-button {
  pointer-events: auto;
  align-items: center;
  gap: 5px;
  min-height: 28px;
  padding: 4px 9px;
  border: 1px solid rgba(24,49,38,.14);
  border-radius: 10px;
  background: #183126;
  color: #fffdf3;
  box-shadow: 0 8px 20px rgba(20,37,28,.2);
  font-size: .58rem;
}
.mobile-header-reset {
  pointer-events: auto;
  align-self: start;
  min-height: 28px;
  padding: 4px 9px;
  border: 1px solid rgba(24,49,38,.1);
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(250,248,239,.94), rgba(241,238,223,.88));
  color: var(--ink-soft);
  font-size: .5rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  backdrop-filter: blur(14px);
  box-shadow: 0 10px 28px rgba(20,37,28,.14);
}
.mobile-enlarge-green {
  pointer-events: auto;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(24,49,38,.1);
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(250,248,239,.94), rgba(241,238,223,.88));
  color: var(--ink-soft);
  font-size: .46rem;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
  text-transform: uppercase;
  backdrop-filter: blur(14px);
  box-shadow: 0 10px 28px rgba(20,37,28,.14);
}
.mobile-hole-action-icon {
  display: block;
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.gps-mode-dot { position: relative; width: 9px; height: 9px; border: 2px solid #d8bd79; border-radius: 50%; }
.gps-mode-dot::after { content: ""; position: absolute; inset: 2px; border-radius: 50%; background: #d8bd79; }
.mobile-shot-sheet {
  position: absolute;
  z-index: 7;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 0 8px calc(8px + env(safe-area-inset-bottom));
  pointer-events: none;
}
.mobile-shot-sheet > * { pointer-events: auto; }
.mobile-shot-sheet::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 40px;
  background: linear-gradient(180deg, rgba(24,49,38,0), rgba(24,49,38,.14));
  pointer-events: none;
}
.mobile-sheet-handle,
.mobile-sheet-summary,
.mobile-sheet-body {
  max-width: 100%;
  margin: 0 auto;
  background: linear-gradient(180deg, rgba(250,248,239,.98), rgba(241,238,223,.95));
  backdrop-filter: blur(16px);
  box-shadow: 0 -10px 30px rgba(20,37,28,.2);
}
.mobile-sheet-handle {
  display: grid;
  place-items: center;
  width: 100%;
  padding: 4px 0 3px;
  border: 0;
  border-radius: 12px 12px 0 0;
}
.mobile-sheet-handle span {
  width: 30px;
  height: 3px;
  border-radius: 999px;
  background: rgba(24,49,38,.22);
}
.mobile-sheet-summary {
  display: grid;
  gap: 6px;
  padding: 0 8px 8px;
  border-top: 1px solid rgba(255,255,255,.55);
}
.mobile-shot-sheet[data-sheet-state="full"] .mobile-sheet-summary {
  display: none;
}
.mobile-plan-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.mobile-plan-actions { display: flex; align-items: center; gap: 5px; }
.mobile-map-plan-drag { display: none; }
.mobile-plan-head strong {
  display: block;
  font-size: .72rem;
}
.mobile-plan-grid {
  display: grid;
  grid-template-columns: minmax(90px, 120px);
  gap: 5px;
}
.mobile-plan-card {
  min-width: 0;
  padding: 6px 6px 5px;
  border: 1px solid rgba(24,49,38,.08);
  border-radius: 8px;
  background: linear-gradient(180deg, rgba(255,255,255,.76), rgba(255,255,255,.58));
}
.mobile-plan-card span,
.mobile-plan-card strong {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mobile-plan-card span {
  color: var(--ink-soft);
  font-size: .46rem;
  line-height: 1.1;
}
.mobile-plan-card strong {
  margin-top: 2px;
  font-size: .64rem;
  line-height: 1.1;
}
.mobile-plan-copy {
  margin: 0;
  color: var(--ink-soft);
  font-size: .5rem;
  line-height: 1.3;
}
.mobile-shot-pill {
  min-width: 0;
  padding: 5px 6px 4px;
  border: 1px solid rgba(24,49,38,.06);
  border-radius: 7px;
  background: linear-gradient(180deg, rgba(255,255,255,.76), rgba(255,255,255,.56));
}
.mobile-shot-pill-button {
  width: 100%;
  text-align: left;
}
.mobile-shot-pill-button.active {
  border-color: rgba(169,71,53,.28);
  background: linear-gradient(180deg, rgba(210,118,94,.18), rgba(255,255,255,.72));
  box-shadow: inset 0 0 0 1px rgba(169,71,53,.08);
}
.mobile-shot-pill strong,
.mobile-shot-pill span { display: block; }
.mobile-shot-pill strong {
  overflow: hidden;
  font-size: .68rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mobile-shot-pill span {
  margin-top: 1px;
  overflow: hidden;
  color: var(--ink-soft);
  font-size: .5rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mobile-play-shot {
  min-height: 28px;
  padding: 0 8px;
  border: 0;
  border-radius: 7px;
  background: linear-gradient(180deg, #c3644d, #a94735);
  color: white;
  font-size: .6rem;
  font-weight: 700;
  box-shadow: 0 10px 20px rgba(181,82,62,.24);
}
.mobile-play-shot:disabled,
.mobile-play-shot[aria-disabled="true"] {
  background: rgba(181,82,62,.45);
  cursor: default;
  box-shadow: none;
}
.mobile-quick-controls {
  margin: 0 auto;
  padding: 0 8px 8px;
  background: linear-gradient(180deg, rgba(250,248,239,.98), rgba(241,238,223,.95));
  backdrop-filter: blur(16px);
  box-shadow: 0 -10px 30px rgba(20,37,28,.2);
}
.mobile-quick-panel {
  display: grid;
  gap: 8px;
  padding: 8px;
  border-top: 1px solid rgba(24,49,38,.08);
  border-radius: 9px;
  background: rgba(255,255,255,.34);
}
.mobile-quick-club-carousel {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding-bottom: 2px;
  scrollbar-width: none;
}
.mobile-quick-club-carousel::-webkit-scrollbar { display: none; }
.mobile-quick-club-card {
  min-width: 76px;
  padding: 7px 8px;
  border: 1px solid rgba(24,49,38,.08);
  border-radius: 9px;
  background: rgba(255,255,255,.72);
  text-align: left;
}
.mobile-quick-club-card.active {
  border-color: rgba(169,71,53,.28);
  background: linear-gradient(180deg, rgba(210,118,94,.18), rgba(255,255,255,.9));
}
.mobile-quick-club-card strong,
.mobile-quick-club-card span {
  display: block;
  white-space: nowrap;
}
.mobile-quick-club-card strong { font-size: .63rem; }
.mobile-quick-club-card span {
  margin-top: 2px;
  color: var(--ink-soft);
  font-size: .5rem;
}
.mobile-quick-target-actions,
.mobile-quick-power-presets {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
}
.mobile-quick-target-actions button,
.mobile-quick-power-presets button {
  min-height: 30px;
  padding: 0 8px;
  border-radius: 999px;
  border: 1px solid rgba(24,49,38,.08);
  background: rgba(255,255,255,.78);
  font-size: .58rem;
  font-weight: 600;
}
.mobile-quick-power-presets button.active {
  border-color: rgba(169,71,53,.28);
  background: rgba(210,118,94,.18);
  color: var(--danger);
}
.mobile-quick-note {
  margin: 0;
  color: var(--ink-soft);
  font-size: .52rem;
  line-height: 1.3;
}
.mobile-quick-power-slider {
  width: 100%;
  margin: 2px 0 0;
}
.mobile-sheet-body {
  overflow: hidden auto;
  max-height: 0;
  padding: 0 8px;
  border-radius: 0 0 12px 12px;
  transition: max-height .25s ease, padding-bottom .25s ease;
  scrollbar-width: none;
}
.mobile-sheet-body::-webkit-scrollbar { display: none; }
.mobile-shot-sheet[data-sheet-state="full"] .mobile-sheet-body {
  max-height: min(78dvh, 680px);
  padding-bottom: 8px;
}
.mobile-sheet-section {
  padding: 7px 0;
  border-top: 1px solid rgba(24,49,38,.08);
}
.mobile-sheet-section:first-child { border-top: 0; }
.mobile-sheet-section:first-child {
  padding-top: 5px;
  padding-bottom: 5px;
}
.mobile-sheet-header,
.mobile-section-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.mobile-sheet-header strong,
.mobile-sheet-distance strong,
.mobile-sheet-grid strong,
.mobile-power-readout { font-size: .74rem; }
.mobile-sheet-distance { text-align: right; }
.mobile-sheet-header .eyebrow { font-size: .46rem; letter-spacing: .05em; }
.mobile-sheet-header > div:first-child { min-width: 0; }
.mobile-sheet-header > div:first-child strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mobile-sheet-distance strong { font-size: .68rem; }
.mobile-sheet-distance span,
.mobile-sheet-grid span,
.mobile-projection-copy,
.mobile-inline-action { font-size: .52rem; }
.mobile-sheet-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4px;
  margin-top: 5px;
}
.mobile-sheet-grid > div {
  min-width: 0;
  padding: 4px 4px 3px;
  border-radius: 6px;
  background: rgba(255,255,255,.58);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.4);
}
.mobile-sheet-grid span,
.mobile-sheet-grid strong { display: block; }
.mobile-sheet-grid span {
  overflow: hidden;
  color: var(--ink-soft);
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .46rem;
  line-height: 1.1;
}
.mobile-sheet-grid strong {
  margin-top: 2px;
  overflow: hidden;
  font-size: .62rem;
  line-height: 1.08;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mobile-projection-copy {
  margin: 5px 0 0;
  color: var(--ink-soft);
  font-size: .47rem;
  line-height: 1.22;
}
.mobile-caddie-section {
  margin-top: 2px;
}
.mobile-caddie-section .mobile-section-title {
  align-items: baseline;
}
.mobile-caddie-section .mobile-section-title strong {
  font-size: .62rem;
  color: var(--danger);
}
.mobile-gm-history {
  display: grid;
  gap: 5px;
  max-height: 180px;
  margin-top: 6px;
  overflow-y: auto;
  padding: 2px 2px 2px 0;
  scrollbar-width: thin;
}
.mobile-gm-history .gm-message {
  margin: 0;
  padding: 7px 8px;
  border: 1px solid rgba(24,49,38,.08);
  border-radius: 8px;
  background: linear-gradient(180deg, rgba(255,255,255,.72), rgba(255,255,255,.58));
  font-size: .52rem;
  line-height: 1.34;
}
.mobile-gm-history .gm-message.player {
  border-color: rgba(63,102,133,.18);
  background: linear-gradient(180deg, rgba(63,102,133,.12), rgba(255,255,255,.62));
}
.mobile-gm-form {
  display: grid;
  gap: 5px;
}
.structured-shot-fields {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1.25fr) minmax(62px, .7fr);
  gap: 6px;
}
.structured-shot-fields label {
  display: grid;
  min-width: 0;
  gap: 4px;
  color: var(--ink-soft);
  font-family: var(--font-system);
  font-size: .5rem;
  font-weight: 700;
}
.structured-shot-fields label span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.structured-shot-fields label b {
  color: var(--danger);
  font: inherit;
}
.structured-shot-fields select {
  width: 100%;
  min-width: 0;
  height: 32px;
  padding: 0 24px 0 7px;
  border: 1px solid rgba(24,49,38,.15);
  border-radius: 7px;
  background-color: rgba(255,255,255,.9);
  color: var(--ink);
  font-family: var(--font-system);
  font-size: .62rem;
  font-weight: 650;
}
.structured-shot-fields select:focus-visible {
  outline: 3px solid rgba(181,82,62,.16);
  border-color: var(--danger);
}
.structured-shot-fields select:disabled {
  opacity: .45;
  background-color: rgba(225,231,220,.7);
}
.mobile-gm-form > label {
  color: var(--danger);
  font-size: .48rem;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.mobile-gm-command {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 4px;
  padding: 3px;
  border: 1px solid rgba(24,49,38,.12);
  border-radius: 7px;
  background: rgba(255,255,255,.76);
}
.mobile-gm-command input {
  min-width: 0;
  padding: 7px 6px;
  border: 0;
  background: transparent;
  font-size: 16px;
}
.mobile-gm-command input:focus {
  outline: 0;
}
.mobile-gm-command button {
  min-height: 28px;
  min-width: 64px;
  padding: 0 12px;
  border: 0;
  border-radius: 8px;
  background: linear-gradient(180deg, #c3644d, #a94735);
  color: var(--paper);
  font-size: .62rem;
  font-weight: 700;
  box-shadow: 0 7px 16px rgba(181,82,62,.2);
}
.mobile-gm-help {
  margin: 0;
  color: var(--ink-soft);
  font-size: .46rem;
  line-height: 1.24;
}
.mobile-club-picker {
  position: relative;
  min-height: 40px;
  margin-top: 7px;
  border: 1px solid rgba(24,49,38,.1);
  border-radius: 10px;
  background: rgba(255,255,255,.78);
}
.mobile-club-picker:focus-within {
  box-shadow: 0 0 0 3px rgba(71,109,132,.12);
}
.mobile-club-picker select {
  width: 100%;
  min-height: 40px;
  padding: 8px 10px;
  border: 0;
  border-radius: inherit;
  background: transparent;
  color: var(--ink);
  font-size: 16px;
  font-weight: 700;
}
.mobile-power-slider {
  width: 100%;
  margin: 8px 0 6px;
  accent-color: var(--danger);
}
.swing-scale {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-top: -3px;
  color: var(--ink-soft);
  font-family: var(--font-system);
  font-size: .52rem;
  font-weight: 700;
  line-height: 1;
  text-align: center;
}
.swing-scale span:first-child { text-align: left; }
.swing-scale span:last-child { text-align: right; }
.swing-scale[hidden] { display: none; }
.mobile-sheet-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px;
  position: sticky;
  bottom: 0;
  padding-top: 6px;
  background: linear-gradient(180deg, rgba(241,238,223,0), rgba(241,238,223,.96) 35%);
}
.mobile-sheet-actions .secondary-action,
.mobile-sheet-actions .primary-action {
  width: 100%;
  min-height: 28px;
  padding: 4px 6px;
  border-radius: 7px;
  font-size: .52rem;
}
.mobile-sheet-actions .secondary-action {
  background: rgba(255,255,255,.6);
  border-color: rgba(24,49,38,.1);
}
.mobile-sheet-actions .primary-action {
  background: linear-gradient(180deg, #c3644d, #a94735);
  box-shadow: 0 8px 18px rgba(181,82,62,.2);
}
.mobile-sheet-actions .primary-action[aria-disabled="true"] {
  background: rgba(181,82,62,.45);
  box-shadow: none;
}
.mobile-sheet-actions .game-finished-button { grid-column: 1 / -1; }
.distance-badge { position: absolute; z-index: 4; padding: 6px 9px; border: 1px solid rgba(255,255,255,.3); border-radius: 6px; background: rgba(24,49,38,.94); color: white; box-shadow: 0 5px 14px rgba(12,28,20,.22); font-family: var(--font-system); font-size: .62rem; font-variant-numeric: tabular-nums; font-weight: 700; white-space: nowrap; transform: translate(-50%, -145%); pointer-events: none; }
.mobile-shot-toast {
  position: absolute;
  z-index: 9;
  left: 8px;
  right: 8px;
  bottom: calc(64px + env(safe-area-inset-bottom));
  padding: 10px 12px;
  border: 1px solid rgba(255,255,255,.48);
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(24,49,38,.92), rgba(34,61,46,.9));
  color: var(--paper);
  box-shadow: 0 12px 28px rgba(20,37,28,.28);
  backdrop-filter: blur(14px);
}
.mobile-shot-toast strong,
.mobile-shot-toast p { display: block; }
.mobile-shot-toast strong {
  font-size: .72rem;
  letter-spacing: -.01em;
}
.mobile-shot-toast p {
  margin: 3px 0 0;
  color: rgba(250,248,239,.84);
  font-size: .56rem;
  line-height: 1.35;
}
.green-toolbar {
  position: absolute;
  z-index: 37;
  top: 18px;
  left: 50%;
  display: grid;
  grid-template-columns: 126px auto auto auto 38px;
  align-items: center;
  gap: 6px;
  width: max-content;
  max-width: calc(100% - 28px);
  padding: 5px;
  border: 1px solid rgba(255,255,255,.38);
  border-radius: 12px;
  background: rgba(24,49,38,.9);
  box-shadow: 0 10px 28px rgba(13,30,21,.28);
  backdrop-filter: blur(14px);
  transform: translateX(-50%);
}
.green-toolbar[hidden] { display: none; }
.close-enlarged-green {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  padding: 0;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 8px;
  background: rgba(255,255,255,.1);
  color: var(--paper);
  font-family: var(--font-system);
  font-size: 1.2rem;
  line-height: 1;
}
.close-enlarged-green[hidden] { display: none; }
.green-view-switch {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  width: 126px;
  padding: 3px;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 8px;
  background: rgba(255,255,255,.08);
}
.green-view-switch[hidden] { display: none; }
.green-view-switch button { min-height: 32px; padding: 6px 9px; border: 0; border-radius: 6px; background: transparent; color: rgba(255,253,243,.72); font-family: var(--font-system); font-size: .61rem; font-weight: 800; text-transform: uppercase; }
.green-view-switch button.active { background: var(--paper); color: var(--ink); box-shadow: 0 3px 9px rgba(13,30,21,.24); }
.green-zoom-control {
  display: flex;
  align-items: center;
  gap: 6px;
  min-height: 38px;
  padding: 3px 4px 3px 8px;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 8px;
  background: rgba(255,255,255,.08);
  color: var(--paper);
}
.green-zoom-control[hidden] { display: none; }
.green-zoom-control > span { font-family: var(--font-system); font-size: .52rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.green-zoom-control select { min-width: 54px; height: 30px; padding: 4px 22px 4px 7px; border: 0; border-radius: 6px; background: var(--paper); color: var(--ink); font-size: .66rem; font-weight: 800; }
.green-caddie-read-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-height: 38px;
  padding: 6px 10px;
  border: 1px solid rgba(216,189,121,.58);
  border-radius: 8px;
  background: rgba(216,189,121,.12);
  color: #f4dfa7;
  font-family: var(--font-system);
  font-size: .58rem;
  font-weight: 850;
  white-space: nowrap;
}
.green-caddie-read-toggle[hidden] { display: none; }
.green-caddie-read-toggle svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.green-caddie-read-toggle[aria-pressed="true"] { background: #d8bd79; color: #183126; box-shadow: 0 4px 12px rgba(13,30,21,.25); }
.green-caddie-read-toggle:focus-visible { outline: 3px solid rgba(216,189,121,.32); outline-offset: 2px; }
.green-orientation-switch {
  display: grid;
  grid-template-columns: repeat(2, auto);
  gap: 3px;
  padding: 3px;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 8px;
  background: rgba(255,255,255,.08);
}
.green-player-view {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-height: 32px;
  padding: 5px 8px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--paper);
  font-family: var(--font-system);
  font-size: .56rem;
  font-weight: 800;
  white-space: nowrap;
}
.green-player-view svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.green-player-view:hover { background: rgba(255,255,255,.15); }
.green-player-view:focus-visible { outline: 3px solid rgba(255,253,243,.3); outline-offset: 2px; }
.green-caddie-read-panel {
  position: absolute;
  z-index: 35;
  top: 78px;
  right: 18px;
  width: min(350px, calc(100% - 36px));
  padding: 12px 14px;
  border: 1px solid rgba(216,189,121,.55);
  border-radius: 11px;
  background: rgba(24,49,38,.92);
  color: #fffdf3;
  box-shadow: 0 14px 34px rgba(13,30,21,.32);
  backdrop-filter: blur(14px);
}
.green-caddie-read-panel[hidden] { display: none; }
.green-caddie-read-panel span,
.green-caddie-read-panel strong,
.green-caddie-read-panel small { display: block; }
.green-caddie-read-panel span { color: #d8bd79; font-size: .52rem; font-weight: 850; letter-spacing: .09em; text-transform: uppercase; }
.green-caddie-read-panel strong { margin-top: 4px; font-size: .86rem; line-height: 1.25; }
.green-caddie-read-panel p { margin: 7px 0; color: rgba(255,253,243,.9); font-size: .66rem; line-height: 1.46; }
.green-caddie-read-panel small { color: rgba(255,253,243,.62); font-size: .5rem; line-height: 1.35; }
.green-putt-controls {
  position: absolute;
  z-index: 36;
  left: 50%;
  bottom: 18px;
  display: grid;
  grid-template-columns: minmax(116px, .68fr) minmax(230px, 1.25fr) minmax(190px, 1.05fr) auto;
  align-items: center;
  gap: 14px;
  width: min(860px, calc(100% - 36px));
  padding: 11px 12px 11px 16px;
  border: 1px solid rgba(255,255,255,.48);
  border-radius: 11px;
  background: linear-gradient(180deg, rgba(24,49,38,.94), rgba(28,56,42,.92));
  color: var(--paper);
  box-shadow: 0 14px 34px rgba(13,30,21,.34);
  backdrop-filter: blur(16px);
  transform: translateX(-50%);
}
.green-putt-controls[hidden] { display: none; }
.green-putt-summary { min-width: 0; }
.green-putt-summary span,
.green-putt-power > span { display: block; color: rgba(255,253,243,.68); font-family: var(--font-system); font-size: .54rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.green-putt-summary strong { display: block; margin-top: 2px; font-family: var(--font-system); font-size: 1.08rem; }
.green-putt-summary small { display: block; overflow: hidden; margin-top: 2px; color: var(--fairway-light); font-size: .56rem; text-overflow: ellipsis; white-space: nowrap; }
.green-putt-aim { min-width: 0; }
.green-putt-aim-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.green-putt-aim-heading label { display: block; color: rgba(255,253,243,.68); font-family: var(--font-system); font-size: .54rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.green-putt-input-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; margin-top: 3px; }
.green-putt-aim input { min-width: 0; height: 34px; padding: 6px 9px; border: 1px solid rgba(255,255,255,.28); border-radius: 6px 0 0 6px; background: rgba(255,253,243,.96); color: var(--ink); font-size: .66rem; outline: none; }
.green-putt-aim input:focus { border-color: #d8bd79; box-shadow: 0 0 0 2px rgba(216,189,121,.24); }
.green-putt-input-row button { min-height: 34px; padding: 6px 10px; border: 0; border-radius: 0 6px 6px 0; background: #d8bd79; color: var(--ink); font-family: var(--font-system); font-size: .59rem; font-weight: 800; white-space: nowrap; }
.green-putt-drag-handle { display: none; }
.green-putt-aim > small { display: block; overflow: hidden; margin-top: 3px; color: var(--fairway-light); font-size: .5rem; text-overflow: ellipsis; white-space: nowrap; }
.green-putt-aim > small.error { color: #ffc0b1; }
.green-full-shot-club { display: grid; gap: 5px; min-width: 0; }
.green-full-shot-club[hidden] { display: none; }
.green-full-shot-club > span { color: rgba(255,253,243,.68); font-family: var(--font-system); font-size: .54rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.green-full-shot-club select { width: 100%; min-height: 38px; padding: 6px 9px; border: 1px solid rgba(255,255,255,.28); border-radius: 6px; background: rgba(255,253,243,.96); color: var(--ink); font-size: .66rem; }
.green-putt-power { display: grid; grid-template-columns: 1fr auto; align-items: baseline; gap: 1px 10px; min-width: 0; }
.green-putt-power strong { color: var(--fairway-light); font-family: var(--font-system); font-size: .66rem; font-variant-numeric: tabular-nums; }
.green-putt-power input { grid-column: 1 / -1; width: 100%; height: 22px; margin: 1px 0 0; accent-color: #d8bd79; }
.green-putt-controls > button { min-height: 42px; padding: 9px 18px; border: 1px solid rgba(255,255,255,.24); border-radius: 8px; background: #b5523e; color: #fffdf3; box-shadow: 0 8px 18px rgba(181,82,62,.28); font-family: var(--font-system); font-size: .7rem; font-weight: 800; white-space: nowrap; }
.green-putt-controls > button:disabled { cursor: not-allowed; opacity: .5; box-shadow: none; }
.course-stage.enlarged-green #course-map svg { touch-action: none; }
.green-3d-hint { position: absolute; z-index: 34; top: 137px; left: 50%; padding: 6px 10px; border-radius: 999px; background: rgba(24,49,38,.78); color: rgba(255,253,243,.9); font-family: var(--font-system); font-size: .53rem; letter-spacing: .025em; pointer-events: none; transform: translateX(-50%); white-space: nowrap; }
.green-3d-hint[hidden] { display: none; }
.course-stage.green-3d .course-map svg { cursor: crosshair; touch-action: none; }
.course-stage.green-3d .course-map svg:active { cursor: grabbing; }
.course-stage.enlarged-green {
  position: fixed;
  z-index: 30;
  top: var(--green-view-top, 82px);
  right: 14px;
  bottom: 14px;
  left: 14px;
  min-height: 0;
  border: 6px solid var(--paper);
  border-radius: 10px;
  box-shadow: 0 30px 100px rgba(13,30,21,.55);
}
.course-stage.enlarged-green .map-toolbar,
.course-stage.enlarged-green .map-key { display: none; }
body.green-view-open { overflow: hidden; }
body.green-view-open .mobile-round-nav { display: none; }
.course-stage.enlarged-green .mobile-shot-sheet { display: none; }

.shot-desk {
  display: flex;
  flex-direction: column;
  gap: 6px;
  overflow-y: auto;
}
.desktop-shot-plan,
.desktop-strategy-planner,
.desktop-shot-controls,
.desktop-shot-entry {
  border: 1px solid var(--line);
  border-radius: 9px;
  background: rgba(255,255,255,.32);
}
.desktop-shot-plan {
  padding: 12px;
}
.shot-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.shot-heading h2 { margin-top: 7px; font-size: 1.3rem; }
.shot-plan-title-line { display: flex; align-items: baseline; gap: 9px; }
.shot-heading-lie { display: inline-flex; align-items: baseline; gap: 4px; color: var(--ink-soft); font-size: .52rem; letter-spacing: .06em; text-transform: uppercase; }
.shot-heading-lie strong { color: var(--ink); font-size: .7rem; letter-spacing: 0; text-transform: none; }
.yards-left { text-align: right; }
.yards-left strong, .yards-left span { display: block; }
.yards-left strong { font-family: var(--font-system); font-size: 1.8rem; line-height: .82; }
.yards-left span { margin-top: 5px; color: var(--ink-soft); font-family: var(--font-system); font-size: .55rem; text-transform: uppercase; }
.desktop-shot-projection { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin-top: 9px; }
.desktop-shot-projection > span { min-width: 0; padding: 7px 9px; border-radius: 7px; background: rgba(23,55,43,.055); }
.desktop-shot-projection small,
.desktop-shot-projection strong { display: block; }
.desktop-shot-projection small { color: var(--ink-soft); font-size: .48rem; letter-spacing: .07em; text-transform: uppercase; }
.desktop-shot-projection strong { margin-top: 3px; font-family: var(--font-data, var(--font-system)); font-size: .7rem; font-variant-numeric: tabular-nums; }
.strategy-planner {
  min-width: 0;
}
.desktop-strategy-planner {
  padding: 11px;
}
.strategy-planner-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}
.strategy-planner-heading strong,
.strategy-planner-heading small {
  display: block;
}
.strategy-planner-heading strong {
  margin-top: 3px;
  font-size: .82rem;
}
.strategy-planner-heading small {
  color: var(--ink-soft);
  font-size: .52rem;
  text-align: right;
}
.mobile-caddie-back {
  flex: 0 0 auto;
  min-height: 32px;
  padding: 6px 10px;
  border: 1px solid rgba(24,49,38,.16);
  border-radius: 9px;
  background: rgba(255,255,255,.7);
  color: var(--rough-dark);
  font-size: .58rem;
  font-weight: 700;
}
.strategy-choice-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
}
.strategy-choice-row[data-count="2"] {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.strategy-choice-row[data-count="1"] {
  grid-template-columns: minmax(0, 1fr);
}
.strategy-choice {
  position: relative;
  min-width: 0;
  overflow: hidden;
  border: 1px solid rgba(24,49,38,.13);
  border-radius: 8px;
  background: rgba(255,255,255,.48);
  transition: border-color .16s ease, background-color .16s ease, transform .16s ease;
}
.strategy-choice::after {
  content: "";
  position: absolute;
  left: 9px;
  right: 9px;
  bottom: 0;
  height: 3px;
  border-radius: 3px 3px 0 0;
  background: transparent;
}
.strategy-choice.selected {
  border-color: var(--blue);
  background: rgba(63,102,133,.09);
  transform: translateY(-1px);
}
.strategy-choice.selected::after { background: var(--blue); }
.strategy-choice.confirmed {
  border-color: var(--rough);
  background: rgba(142,189,119,.14);
}
.strategy-choice.confirmed::after { background: var(--rough); }
.strategy-choice-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 4px;
  padding: 6px 6px 0 8px;
}
.strategy-choice-head span {
  overflow: hidden;
  color: var(--ink-soft);
  font-size: .46rem;
  letter-spacing: .04em;
  text-overflow: ellipsis;
  text-transform: uppercase;
  white-space: nowrap;
}
.strategy-help {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 21px;
  height: 21px;
  padding: 0;
  border: 1px solid rgba(24,49,38,.2);
  border-radius: 50%;
  background: var(--chalk);
  color: var(--blue);
  font-size: .62rem;
  font-weight: 800;
}
.strategy-choice-main {
  display: block;
  width: 100%;
  padding: 4px 8px 10px;
  border: 0;
  background: transparent;
  text-align: left;
}
.strategy-choice-main strong,
.strategy-choice-main span,
.strategy-choice-main small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tree-recovery-summary { color: #315d43 !important; font-weight: 850; }
.strategy-choice-main .tree-recovery-summary { white-space: normal; line-height: 1.28; }
.tree-recovery-details { margin-top: 12px; padding: 10px 11px; border-left: 3px solid #d8bd79; background: rgba(216,189,121,.1); line-height: 1.48; }
.greenside-strategy-summary { color: #365d76 !important; font-weight: 850; }
.greenside-strategy-details { margin-top: 12px; padding: 10px 11px; border-left: 3px solid #7ea5bc; background: rgba(92,137,165,.09); line-height: 1.48; }
.strategy-choice-main strong { font-size: .68rem; }
.strategy-choice-main span {
  margin-top: 4px;
  color: var(--ink);
  font-size: .57rem;
  font-weight: 650;
}
.strategy-choice-main small {
  margin-top: 2px;
  color: var(--ink-soft);
  font-size: .5rem;
}
.desktop-shot-controls {
  display: grid;
  gap: 10px;
  padding: 12px;
}
.desktop-shot-entry {
  overflow: hidden;
}
.desktop-shot-entry > header {
  padding: 10px 12px 0;
}
.desktop-shot-entry > header strong {
  display: block;
  margin-top: 4px;
  font-family: var(--font-system);
  font-size: .95rem;
}
.desktop-control-section {
  display: grid;
  gap: 8px;
}
.desktop-control-heading {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
}
.desktop-control-heading strong {
  font-family: var(--font-system);
  font-size: .95rem;
}
.desktop-club-choice-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
  gap: 7px;
}
.desktop-caddie-toggle {
  display: grid;
  grid-template-columns: 22px auto;
  grid-template-rows: auto auto;
  align-content: center;
  column-gap: 7px;
  width: 100%;
  min-width: 0;
  padding: 5px 10px 5px 8px;
  border: 1px solid rgba(49,90,59,.22);
  border-radius: 10px;
  background: rgba(49,90,59,.08);
  color: var(--rough-dark);
  text-align: left;
  transition: background-color .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.desktop-caddie-toggle svg {
  grid-row: 1 / 3;
  align-self: center;
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.desktop-caddie-toggle span {
  font-size: .62rem;
  font-weight: 800;
  line-height: 1.1;
  white-space: nowrap;
}
.desktop-caddie-toggle small {
  margin-top: 2px;
  color: var(--ink-soft);
  font-size: .48rem;
  line-height: 1;
}
.desktop-caddie-toggle:hover:not(:disabled),
.desktop-caddie-toggle[aria-expanded="true"] {
  border-color: rgba(49,90,59,.48);
  background: var(--rough-dark);
  color: #fffdf4;
  box-shadow: 0 6px 14px rgba(24,49,38,.12);
}
.desktop-caddie-toggle[aria-expanded="true"] small { color: rgba(255,253,244,.72); }
.desktop-caddie-toggle:focus-visible { outline: 3px solid rgba(71,109,132,.24); outline-offset: 2px; }
.desktop-caddie-toggle:disabled { cursor: not-allowed; opacity: .46; }
.desktop-strategy-planner[hidden] { display: none; }
.field-label { display: block; margin: 24px 0 8px; }
.club-picker { display: flex; align-items: center; border: 1px solid var(--line); border-radius: 8px; background: rgba(255,255,255,.52); box-shadow: inset 0 1px 0 rgba(255,255,255,.35); }
.club-picker select { flex: 1; min-width: 0; padding: 13px; border: 0; background: transparent; font-size: .78rem; font-weight: 700; }
.club-picker span { padding-right: 12px; color: var(--ink-soft); font-family: var(--font-system); font-size: .6rem; }
.desktop-power-slider {
  width: 100%;
  margin: 0;
  accent-color: var(--danger);
}
.aim-mode-control { display: grid; gap: 7px; }
.aim-mode-toggle { display: grid; grid-template-columns: 1fr 1fr; gap: 5px; padding: 3px; border-radius: 9px; background: rgba(23,55,43,.07); }
.aim-mode-toggle button { min-height: 34px; padding: 7px 9px; border: 0; border-radius: 7px; background: transparent; color: var(--ink-soft); font-size: .61rem; font-weight: 800; }
.aim-mode-toggle button.active { background: var(--chalk); color: var(--ink); box-shadow: 0 2px 8px rgba(23,55,43,.12); }
.aim-mode-toggle button:focus-visible { outline: 3px solid rgba(71,109,132,.24); outline-offset: 1px; }
.short-game-plan { padding: 10px 12px; border: 1px solid rgba(49,93,68,.16); border-radius: 9px; background: rgba(142,189,119,.1); }
.short-game-plan > strong { display: block; font-size: .68rem; }
.short-game-plan > p { margin: 4px 0 0; color: var(--ink-soft); font-size: .58rem; line-height: 1.45; }
.short-game-plan table { width: 100%; margin-top: 8px; border-collapse: collapse; font-size: .52rem; }
.short-game-plan th,.short-game-plan td { padding: 4px 5px; border-top: 1px solid rgba(23,55,43,.09); text-align: right; }
.short-game-plan th:first-child,.short-game-plan td:first-child { text-align: left; }
.short-game-plan tr.selected { color: var(--danger); font-weight: 800; }
.short-game-plan tr.recommended td:first-child::after { content: " Best"; margin-left: 3px; color: var(--rough-dark); font-size: .46rem; text-transform: uppercase; }
.mobile-power-slider:disabled { opacity: .42; cursor: not-allowed; }
.game-master { border: 1px solid var(--line); border-radius: 9px; overflow: hidden; background: rgba(255,255,255,.27); }
.game-master > header { display: flex; align-items: center; gap: 9px; padding: 9px 10px; border-bottom: 1px solid var(--line); }
.gm-mark { display: grid; place-items: center; width: 31px; height: 31px; border-radius: 50%; background: var(--blue); color: white; font-family: var(--font-system); font-size: .57rem; }
.game-master header strong, .game-master header small { display: block; }
.game-master header strong { font-family: var(--font-system); font-size: .88rem; }
.game-master header small { margin-top: 1px; color: var(--ink-soft); font-size: .54rem; text-transform: uppercase; letter-spacing: .08em; }
.gm-voice-toggle {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 8px;
  border: 1px solid rgba(71,109,132,.24);
  border-radius: 999px;
  background: rgba(255,255,255,.48);
  color: var(--ink-soft);
  font-family: var(--font-system);
  font-size: .52rem;
  font-weight: 700;
  letter-spacing: .025em;
}
.gm-voice-toggle svg { width: 14px; height: 14px; fill: currentColor; }
.gm-voice-toggle .gm-voice-waves { fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; }
.gm-voice-toggle[aria-pressed="true"] { border-color: rgba(49,90,59,.35); background: rgba(142,189,119,.2); color: var(--rough-dark); }
.gm-voice-toggle:disabled { opacity: .48; cursor: not-allowed; }
.gm-conversation {
  height: 96px;
  overflow-y: scroll;
  padding: 8px 10px;
  scrollbar-gutter: stable;
}
.gm-message { max-width: 92%; margin: 0 0 6px; padding: 7px 9px; border-radius: 4px 9px 9px 9px; background: var(--paper-deep); font-size: .62rem; line-height: 1.4; }
.gm-message.player { margin-left: auto; border-radius: 9px 4px 9px 9px; background: var(--ink); color: white; }
.gm-form { padding: 8px 10px; border-top: 1px solid var(--line); background: var(--chalk); }
.gm-form > label { display: block; margin-bottom: 5px; color: var(--danger); font-family: var(--font-system); font-size: .59rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; }
.gm-command-help { margin: -1px 0 6px; color: var(--ink-soft); font-size: .58rem; line-height: 1.38; }
.gm-command-help strong { color: var(--ink); font-weight: 700; }
.gm-form .structured-shot-fields { margin-bottom: 7px; }
.gm-form .structured-shot-fields select { height: 30px; font-size: .6rem; }
.gm-command { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px; padding: 3px; border: 2px solid var(--ink); border-radius: 7px; background: white; box-shadow: 0 5px 14px rgba(24,49,38,.1); }
.gm-command:focus-within { border-color: var(--danger); box-shadow: 0 0 0 3px rgba(181,82,62,.15); }
.gm-form input { min-width: 0; padding: 8px 8px; border: 0; background: transparent; font-size: .68rem; }
.gm-form input:focus { outline: 0; }
.gm-form button { padding: 8px 11px; border: 0; border-radius: 4px; background: var(--danger); color: white; font-size: .66rem; font-weight: 700; white-space: nowrap; box-shadow: 0 4px 10px rgba(181,82,62,.2); }
.gm-form .gm-spell-hint { width: 100%; margin-top: 7px; padding: 7px 9px; border: 1px solid rgba(181,82,62,.28); background: rgba(181,82,62,.07); color: var(--ink); box-shadow: none; text-align: left; white-space: normal; font-size: .61rem; font-weight: 500; }
.gm-suggestions { display: flex; gap: 5px; padding: 0 8px 8px; }
.gm-suggestions button { padding: 4px 7px; border: 1px solid var(--line); border-radius: 10px; background: transparent; color: var(--ink-soft); font-size: .5rem; }
.shot-result {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr);
  align-items: baseline;
  gap: 10px;
  margin-top: 8px;
  padding: 8px 0 8px 13px;
  border-left: 3px solid var(--rough);
}
.shot-result[hidden] { display: none; }
.shot-result span,
.shot-result strong,
.shot-result p { display: block; margin: 0; }
.shot-result span {
  color: var(--ink-soft);
  font-family: var(--font-system);
  font-size: .55rem;
  text-transform: uppercase;
  white-space: nowrap;
}
.shot-result strong {
  font-family: var(--font-system);
  white-space: nowrap;
}
.shot-result p {
  min-width: 0;
  color: var(--ink-soft);
  font-size: .65rem;
  line-height: 1.4;
}
.declare-unplayable { margin-top: 8px; padding: 5px 0; border: 0; border-bottom: 1px solid currentColor; background: transparent; color: var(--danger); font-size: .58rem; font-weight: 700; }
.mobile-round-nav { display: none; }
.putt-analysis { margin-top: 8px; padding: 14px; border: 1px solid var(--line); border-radius: 7px; background: var(--chalk); }
.putt-analysis > header { display: flex; justify-content: space-between; align-items: baseline; }
.putt-analysis > header strong { font-family: var(--font-system); font-size: 1.05rem; }
.putt-analysis-grid { display: grid; grid-template-columns: 1.1fr 1fr 1fr; margin-top: 11px; border: 1px solid var(--line); border-radius: 5px; overflow: hidden; }
.putt-analysis-grid > * { padding: 7px; border-bottom: 1px solid var(--line); font-size: .63rem; }
.putt-analysis-grid > *:nth-child(3n+2), .putt-analysis-grid > *:nth-child(3n+3) { border-left: 1px solid var(--line); }
.putt-analysis-grid > *:nth-last-child(-n+3) { border-bottom: 0; }
.putt-analysis-grid b { color: var(--ink-soft); font-family: var(--font-system); font-size: .54rem; text-transform: uppercase; }
.putt-analysis-grid strong.correct { color: var(--rough-dark); }
.putt-analysis-grid strong.incorrect { color: var(--danger); }
.putt-analysis dl { margin: 10px 0 0; }
.putt-analysis dl div { display: flex; justify-content: space-between; padding: 5px 0; border-bottom: 1px solid var(--line); font-size: .63rem; }
.putt-analysis dd { margin: 0; font-weight: 700; }
.putt-analysis > p { margin: 10px 0 0; padding-left: 9px; border-left: 3px solid var(--danger); color: var(--ink-soft); font-size: .68rem; line-height: 1.45; }
.score-strip { display: grid; grid-template-columns: 1fr 1fr auto; align-items: end; gap: 12px; margin-top: 8px; padding-top: 12px; border-top: 1px solid var(--line); }
.score-strip span, .score-strip strong { display: block; }
.score-strip span { color: var(--ink-soft); font-size: .57rem; text-transform: uppercase; letter-spacing: .08em; }
.score-strip strong { margin-top: 3px; font-family: var(--font-system); font-size: 1.25rem; }
.score-strip button { border: 0; border-bottom: 1px solid currentColor; background: transparent; padding: 2px 0; font-size: .62rem; font-weight: 700; }
.score-links { display: grid; justify-items: start; gap: 7px; }
.score-links .game-finished-button {
  margin-top: 2px;
  padding: 6px 9px;
  border: 1px solid currentColor;
  border-radius: 999px;
  color: var(--danger);
  font-size: .57rem;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.score-links .game-finished-button:not(:disabled) {
  background: var(--danger);
  color: white;
  box-shadow: 0 6px 14px rgba(174,90,69,.2);
}
.game-finished-button:disabled { cursor: not-allowed; opacity: .38; }
.game-finished-button[data-state="saved"]::after { content: "  ✓"; }

.modal { width: min(620px, calc(100% - 28px)); max-height: 88vh; padding: 0; border: 0; border-radius: 10px; background: var(--paper); color: var(--ink); box-shadow: 0 30px 90px rgba(13,30,21,.35); }
.modal::backdrop { background: rgba(20,37,28,.65); backdrop-filter: blur(4px); }
.modal-card { padding: clamp(22px, 4vw, 38px); }
.modal-card header { display: flex; justify-content: space-between; align-items: flex-start; }
.modal-card header h2 { margin-top: 6px; font-size: 2rem; }
.modal-close { border: 0; background: transparent; font-size: 1.5rem; }
.modal-intro { color: var(--ink-soft); font-size: .78rem; }
.player-login-modal { width: min(720px, calc(100% - 28px)); overflow: hidden; background: #edf0e7; }
.player-login-modal::backdrop { background: rgba(13,30,21,.82); backdrop-filter: blur(10px); }
.player-login-card { display: grid; grid-template-columns: minmax(210px, .8fr) minmax(320px, 1.2fr); min-height: 470px; }
.login-yardage-mark { position: relative; display: grid; place-content: center; justify-items: center; overflow: hidden; background: linear-gradient(150deg, #17372b, #315e4a); color: #f6f5eb; }
.login-yardage-mark::before { content: ""; position: absolute; inset: 20px; border: 1px solid rgba(246,245,235,.2); border-radius: 50% 50% 42% 42%; }
.login-yardage-mark::after { content: ""; position: absolute; width: 1px; height: 88px; top: 34px; background: rgba(246,245,235,.28); box-shadow: 0 276px 0 rgba(246,245,235,.28); }
.login-yardage-mark span,
.login-yardage-mark small { position: relative; z-index: 1; font-family: var(--font-data, var(--font-system)); text-transform: uppercase; letter-spacing: .18em; }
.login-yardage-mark span { font-size: .59rem; }
.login-yardage-mark strong { position: relative; z-index: 1; margin: 10px 0 5px; font-family: var(--font-data, var(--font-system)); font-size: 6.5rem; font-weight: 550; line-height: .8; letter-spacing: -.09em; }
.login-yardage-mark small { font-size: .52rem; color: var(--fairway-light); }
.login-fields { align-self: center; padding: clamp(28px, 5vw, 54px); }
.login-fields h2 { max-width: 380px; margin-top: 8px; font-size: clamp(2rem, 5vw, 3.1rem); line-height: .96; letter-spacing: -.045em; }
.login-fields > p:not(.player-login-status) { margin: 16px 0 24px; color: var(--ink-soft); font-size: .79rem; line-height: 1.55; }
.login-fields label { display: grid; gap: 6px; margin-top: 13px; color: var(--ink-soft); font-size: .63rem; font-weight: 750; letter-spacing: .04em; text-transform: uppercase; }
.login-fields label > span { display: flex; justify-content: space-between; gap: 8px; }
.login-fields label > span small { align-self: center; color: rgba(93,107,97,.72); font-size: .5rem; font-weight: 600; letter-spacing: .02em; text-transform: none; }
.login-fields input { width: 100%; padding: 12px 13px; border: 1px solid rgba(24,49,38,.16); border-radius: 8px; background: rgba(255,255,255,.7); font-size: .88rem; text-transform: none; }
.login-fields input:focus { border-color: #476d84; outline: 3px solid rgba(71,109,132,.12); }
.player-login-status { min-height: 18px; margin: 9px 0 0; color: var(--danger); font-size: .68rem; line-height: 1.35; }
.login-actions { display: grid; grid-template-columns: 1.15fr 1fr; gap: 8px; margin-top: 10px; }
.login-actions button { min-height: 42px; }
.login-note { display: block; margin-top: 13px; color: var(--ink-soft); font-size: .59rem; line-height: 1.45; }
.forgot-password-button { margin-top: 12px; padding: 2px 0; border: 0; border-bottom: 1px solid rgba(71,109,132,.35); background: transparent; color: #476d84; font-size: .62rem; font-weight: 700; }
.forgot-password-button:hover { border-color: #315e4a; color: #315e4a; }
.player-login-card[data-mode="supabase"] .player-name-field { display: none; }
.player-login-card[data-mode="recovery"] .player-name-field,
.player-login-card[data-mode="recovery"] #player-email-field,
.player-login-card[data-mode="recovery"] #forgot-password-button,
.player-login-card[data-mode="recovery"] [data-player-action="register"] { display: none; }
.player-login-card[data-mode="recovery"] .login-actions { grid-template-columns: 1fr; }
.account-modal { width: min(480px, calc(100% - 28px)); }
.account-sync-card { display: grid; grid-template-columns: auto 1fr; gap: 12px; align-items: start; margin: 22px 0 16px; padding: 15px; border-radius: 10px; background: rgba(142,189,119,.13); }
.account-sync-dot { width: 10px; height: 10px; margin-top: 4px; border: 2px solid var(--paper); border-radius: 50%; background: #41845d; box-shadow: 0 0 0 3px rgba(65,132,93,.18); }
.account-sync-card[data-tone="saving"] .account-sync-dot { background: var(--sand); }
.account-sync-card[data-tone="error"] .account-sync-dot { background: var(--danger); }
.account-sync-card strong { font-size: .78rem; }
.account-sync-card p { margin: 4px 0 0; color: var(--ink-soft); font-size: .68rem; line-height: 1.45; }
.account-profile-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  margin: 0 0 16px;
  padding: 14px;
  border: 1px solid rgba(71,109,132,.18);
  border-radius: 10px;
  background: linear-gradient(110deg, rgba(71,109,132,.08), rgba(255,255,255,.32));
}
.account-profile-mark { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: #476d84; color: white; font-family: var(--font-data); font-size: .62rem; font-weight: 800; letter-spacing: .08em; }
.account-profile-card strong { display: block; margin-top: 3px; font-size: .8rem; }
.account-profile-card p { margin: 3px 0 0; color: var(--ink-soft); font-size: .62rem; line-height: 1.35; }
.account-profile-card .secondary-action { padding: 8px 10px; white-space: nowrap; }
.account-history-button {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  width: 100%;
  margin-bottom: 8px;
  padding: 12px 14px;
  border: 1px solid rgba(24,49,38,.12);
  border-radius: 10px;
  background: rgba(255,255,255,.34);
  color: var(--ink);
  text-align: left;
}
.account-history-button:hover { border-color: rgba(49,90,59,.35); background: rgba(142,189,119,.1); }
.account-history-mark { display: grid; place-items: center; width: 36px; height: 36px; border: 1px solid rgba(24,49,38,.18); border-radius: 6px; font-family: var(--font-data); font-size: .72rem; font-weight: 800; }
.account-history-button strong, .account-history-button small { display: block; }
.account-history-button strong { font-size: .74rem; }
.account-history-button small { margin-top: 3px; color: var(--ink-soft); font-size: .58rem; line-height: 1.3; }
.account-access-card,
.license-summary-card,
.license-create-card {
  margin: 14px 0;
  padding: 15px;
  border: 1px solid rgba(49,90,59,.18);
  border-radius: 12px;
  background: rgba(247,249,242,.86);
}
.account-access-heading { display: flex; justify-content: space-between; gap: 14px; align-items: start; }
.account-access-heading strong { display: block; margin-top: 3px; font-size: .84rem; }
.account-access-heading p { margin: 4px 0 0; color: var(--ink-soft); font-size: .65rem; line-height: 1.4; }
.account-access-heading .account-access-guidance { margin-top: 8px; color: var(--ink); }
.access-timeline-card,
.access-continuation-card,
.coach-grace-notice {
  position: relative;
  margin-top: 12px;
  padding: 12px 14px;
  border: 1px solid rgba(139,100,37,.28);
  border-radius: 10px;
  background: linear-gradient(105deg, rgba(184,139,55,.1), rgba(255,255,255,.72));
}
.access-timeline-card { display: grid; grid-template-columns: 12px minmax(0, 1fr); gap: 10px; }
.access-timeline-card[hidden], .access-continuation-card[hidden], .coach-grace-notice[hidden] { display: none; }
.access-timeline-marker { width: 8px; height: 8px; margin-top: 4px; border: 2px solid #fff; border-radius: 50%; background: #b88637; box-shadow: 0 0 0 2px rgba(139,100,37,.35); }
.access-timeline-card strong, .access-continuation-card strong, .coach-grace-notice strong { display: block; font-size: .72rem; }
.access-timeline-card p, .access-continuation-card p, .coach-grace-notice p { margin: 4px 0 0; color: var(--ink-soft); font-size: .62rem; line-height: 1.45; }
.access-continuation-card { border-color: rgba(71,109,132,.25); background: linear-gradient(105deg, rgba(71,109,132,.1), rgba(255,255,255,.72)); }
.preferred-courses-card {
  margin-top: 14px;
  padding: 15px;
  border: 1px solid rgba(30,69,48,.16);
  border-radius: 12px;
  background: linear-gradient(145deg, rgba(247,249,243,.98), rgba(229,238,224,.72));
}
.preferred-courses-card > header { display: flex; justify-content: space-between; gap: 18px; align-items: end; }
.preferred-courses-card > header strong { display: block; margin-top: 3px; color: var(--ink); font-size: .82rem; }
.preferred-courses-card > header small { max-width: 240px; color: var(--ink-soft); font-size: .59rem; line-height: 1.4; text-align: right; }
.preferred-course-search { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; margin-top: 12px; align-items: end; }
.preferred-course-search label span { display: block; margin: 0 0 5px 2px; color: var(--ink-soft); font-size: .56rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.preferred-course-search input { width: 100%; min-height: 36px; padding: 8px 11px; border: 1px solid rgba(30,69,48,.2); border-radius: 8px; background: rgba(255,255,255,.9); color: var(--ink); }
.preferred-course-search button { min-height: 36px; padding: 8px 13px; border: 0; border-radius: 8px; background: var(--rough-dark); color: #fff; font-size: .62rem; font-weight: 700; }
.preferred-course-status { min-height: 14px; margin: 7px 2px 0; color: var(--ink-soft); font-size: .58rem; }
.preferred-course-results, .preferred-course-list { display: grid; gap: 7px; margin-top: 8px; }
.preferred-course-results[hidden] { display: none; }
.preferred-course-tag { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 9px 10px 9px 13px; border-left: 4px solid #b88637; border-radius: 7px; background: rgba(255,255,255,.88); box-shadow: 0 3px 10px rgba(24,49,38,.05); }
.preferred-course-results .preferred-course-tag { border-left-color: #789174; background: rgba(255,255,255,.68); }
.preferred-course-tag strong, .preferred-course-tag small { display: block; }
.preferred-course-tag strong { font-size: .65rem; }
.preferred-course-tag small { margin-top: 3px; color: var(--ink-soft); font-size: .56rem; }
.preferred-course-tag button { padding: 6px 9px; border: 1px solid rgba(30,69,48,.18); border-radius: 6px; background: #fff; color: var(--rough-dark); font-size: .56rem; font-weight: 700; }
.preferred-course-empty { padding: 10px 2px 3px; color: var(--ink-soft); font-size: .59rem; line-height: 1.45; }
.coach-preferred-courses { margin-bottom: 14px; }
@media (max-width: 560px) {
  .preferred-courses-card > header { display: block; }
  .preferred-courses-card > header small { display: block; max-width: none; margin-top: 6px; text-align: left; }
  .preferred-course-search { grid-template-columns: 1fr; }
}
.account-code-entry { margin-top: 12px; }
.account-code-entry p { margin: 6px 0 0; color: var(--ink-soft); font-size: .61rem; }
.account-code-entry label,
.license-create-card label { display: block; margin-bottom: 6px; font-size: .62rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
.account-code-entry > div,
.license-create-card > div { display: flex; gap: 7px; }
.account-code-entry input,
.license-create-card input,
.license-create-card select { min-width: 0; flex: 1; padding: 9px; border: 1px solid rgba(49,90,59,.2); border-radius: 8px; background: #fff; }
.account-code-entry button,
.license-create-card button { padding: 9px 12px; border-radius: 8px; background: var(--green); color: #fff; }
.account-code-entry small,
.license-create-card small { display: block; min-height: 1.2em; margin-top: 6px; color: var(--ink-soft); font-size: .62rem; }
.account-coach-invitations { margin-top: 12px; display: grid; gap: 7px; }
.account-invitation-arrival {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: 12px;
  padding: 10px 12px;
  border: 1px solid rgba(49,90,59,.28);
  border-radius: 9px;
  background: rgba(142,189,119,.13);
}
.account-invitation-arrival[hidden] { display: none; }
.account-invitation-arrival.is-error { border-color: rgba(145,65,51,.28); background: rgba(190,101,81,.1); }
.account-invitation-arrival p { margin: 0; color: var(--ink); font-size: .65rem; line-height: 1.4; }
.account-invitation-arrival button { flex: none; padding: 7px 9px; border-radius: 7px; border: 1px solid rgba(49,90,59,.22); background: #fff; color: var(--green); font-size: .6rem; font-weight: 800; }
.account-invitation,
.license-roster article { padding: 10px; border-radius: 9px; background: #fff; border: 1px solid rgba(49,90,59,.12); }
.account-invitation strong,
.license-roster strong { display: block; font-size: .72rem; }
.account-invitation small,
.license-roster small { color: var(--ink-soft); font-size: .6rem; }
.account-invitation div,
.license-roster .license-row-actions { display: flex; gap: 6px; margin-top: 8px; }
.account-license-actions { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }
.license-dashboard-modal {
  width: min(820px, calc(100% - 28px));
  max-height: min(880px, calc(100dvh - 28px));
  overflow: hidden;
}
#coach-dashboard-dialog { width: min(960px, calc(100% - 28px)); }
.license-dashboard-modal .modal-card {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  max-height: min(880px, calc(100dvh - 28px));
  overflow-x: hidden;
  overflow-y: auto;
}
.license-summary-card { font-size: .78rem; line-height: 1.45; }
.coach-start-route {
  margin: 14px 0;
  padding: 15px;
  border: 1px solid rgba(49,90,59,.18);
  border-left: 4px solid #8b6425;
  border-radius: 12px;
  background: linear-gradient(105deg, rgba(184,139,55,.08), rgba(247,249,242,.9));
}
.coach-start-route h3 { margin: 3px 0 0; font-family: var(--font-display); font-size: 1rem; }
.coach-start-route ol { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0; margin: 14px 0 10px; padding: 0; list-style: none; }
.coach-start-route li { position: relative; min-width: 0; padding: 0 10px; border-left: 1px solid rgba(49,90,59,.16); }
.coach-start-route li:first-child { padding-left: 0; border-left: 0; }
.coach-start-route li > span { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: #315a3b; color: #fff; font-family: var(--font-data); font-size: .58rem; font-weight: 850; }
.coach-start-route li p { margin: 7px 0 0; color: var(--ink); font-size: .58rem; line-height: 1.42; }
.coach-start-route > p { margin: 0; color: var(--ink-soft); font-size: .61rem; line-height: 1.45; }
.coach-dashboard-help { margin: 12px 0 2px; padding: 11px 13px; border: 1px solid rgba(49,90,59,.15); border-radius: 9px; background: rgba(255,255,255,.42); }
.coach-dashboard-help summary { color: var(--green); font-size: .65rem; font-weight: 800; cursor: pointer; }
.coach-dashboard-help dl { display: grid; gap: 8px; margin: 12px 0 0; }
.coach-dashboard-help dl > div { display: grid; grid-template-columns: 94px minmax(0, 1fr); gap: 9px; }
.coach-dashboard-help dt { font-size: .61rem; font-weight: 850; }
.coach-dashboard-help dd { margin: 0; color: var(--ink-soft); font-size: .61rem; line-height: 1.4; }
.license-roster { display: grid; gap: 8px; margin-top: 12px; }
.license-roster article { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; }
.license-roster article > div { min-width: 0; }
.license-roster strong,
.license-roster small { overflow-wrap: anywhere; }
.license-roster .license-row-actions { flex-wrap: wrap; justify-content: flex-end; }
.license-roster button { padding: 7px 9px; border-radius: 7px; }
.account-replay-button { border-color: rgba(71,109,132,.28); background: linear-gradient(110deg, rgba(71,109,132,.11), rgba(255,255,255,.42)); }
.account-replay-button .account-history-mark { border-color: #476d84; background: #476d84; color: white; }
.gps-replay-library-dialog { width: min(760px, calc(100% - 28px)); }
.gps-replay-key { display: flex; flex-wrap: wrap; gap: 8px 14px; margin: 14px 0; padding: 10px 12px; border: 1px solid rgba(24,49,38,.1); border-radius: 9px; background: rgba(255,255,255,.34); }
.gps-replay-key span { display: inline-flex; align-items: center; gap: 6px; color: var(--ink-soft); font-size: .57rem; font-weight: 750; }
.gps-replay-key i { width: 8px; height: 8px; border-radius: 50%; background: #476d84; }
.gps-replay-key i[data-evidence="modeled"] { background: #9f7930; }
.gps-replay-key i[data-evidence="ungraded"] { background: #92978f; }
.gps-replay-library-list { display: grid; gap: 8px; max-height: min(58vh, 560px); overflow-y: auto; }
.gps-replay-round { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto auto; align-items: center; gap: 12px; padding: 12px; border: 1px solid rgba(24,49,38,.12); border-radius: 10px; background: rgba(255,255,255,.42); }
.gps-replay-round time { display: grid; justify-items: center; padding-right: 10px; border-right: 1px solid rgba(24,49,38,.12); font-family: var(--font-data); }
.gps-replay-round time strong { font-size: .7rem; }
.gps-replay-round time span { margin-top: 2px; color: var(--ink-soft); font-size: .48rem; }
.gps-replay-round-copy strong, .gps-replay-round-copy span { display: block; }
.gps-replay-round-copy strong { font-size: .76rem; }
.gps-replay-round-copy span { margin-top: 3px; color: var(--ink-soft); font-size: .58rem; }
.gps-replay-round-copy [data-round-status] { color: #315d47; font-weight: 850; }
.gps-replay-round-copy [data-round-status="progress"] { color: #8a5a16; }
.gps-replay-round[data-round-state="progress"] { border-left: 4px solid #c58a2d; }
.gps-replay-round-score { text-align: right; }
.gps-replay-round-score span, .gps-replay-round-score strong { display: block; }
.gps-replay-round-score span { color: var(--ink-soft); font-size: .48rem; text-transform: uppercase; }
.gps-replay-round-score strong { margin-top: 2px; font-family: var(--font-data); font-size: 1rem; }
.gps-replay-round button { min-height: 34px; padding: 7px 12px; border: 0; border-radius: 7px; background: #355f7b; color: white; font-size: .61rem; font-weight: 850; }
.gps-replay-round button:disabled { background: #a4a9a3; cursor: not-allowed; }
.feedback-unread-badge,
#feedback-tab-unread {
  display: inline-grid;
  place-items: center;
  min-width: 19px;
  height: 19px;
  padding-inline: 5px;
  border-radius: 999px;
  background: var(--danger);
  color: white;
  font-family: var(--font-data);
  font-size: .52rem;
  font-weight: 900;
}
.feedback-unread-badge[hidden], #feedback-tab-unread[hidden] { display: none; }
.account-learning-button { margin-bottom: 8px; }
.account-learning-button .account-history-mark { border-color: rgba(71,109,132,.3); color: #476d84; }
.account-leaderboard-button { margin-bottom: 16px; }
.account-leaderboard-button .account-history-mark { border-color: rgba(184,139,55,.38); color: #8b6425; }
.player-learning-modal { width: min(760px, calc(100% - 28px)); max-height: 94vh; }
.player-learning-content { display: grid; gap: 14px; max-height: min(68vh, 680px); margin-top: 20px; padding-right: 4px; overflow-y: auto; }
.learning-ledger-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 22px;
  align-items: center;
  padding: 17px 18px;
  border-left: 4px solid #476d84;
  background: rgba(71,109,132,.07);
}
.learning-ledger-head > div:first-child > strong { display: block; margin-top: 5px; font-family: var(--font-display); font-size: 1.22rem; }
.learning-ledger-head p { max-width: 480px; margin: 6px 0 0; color: var(--ink-soft); font-size: .68rem; line-height: 1.48; }
.learning-tally { min-width: 112px; padding-left: 18px; border-left: 1px solid rgba(71,109,132,.2); text-align: right; }
.learning-tally strong, .learning-tally span, .learning-tally small { display: block; }
.learning-tally strong { font-family: var(--font-data); font-size: 1.65rem; line-height: 1; }
.learning-tally span { margin-top: 3px; color: var(--ink-soft); font-size: .5rem; letter-spacing: .08em; text-transform: uppercase; }
.learning-tally small { margin-top: 8px; color: var(--ink-soft); font-size: .52rem; }
.learning-gate { display: grid; grid-template-columns: auto 1fr auto 1fr; gap: 9px; align-items: center; padding: 10px 13px; border: 1px solid rgba(24,49,38,.12); border-radius: 8px; }
.learning-gate > span { color: var(--ink-soft); font-size: .52rem; letter-spacing: .08em; text-transform: uppercase; }
.learning-gate strong { font-size: .66rem; text-align: center; }
.learning-gate i { color: #476d84; font-family: var(--font-data); font-style: normal; font-weight: 800; }
.learning-form { padding: 15px 16px 13px; border: 1px solid var(--line); border-radius: 9px; background: rgba(255,255,255,.3); }
.learning-form > header { display: flex; gap: 18px; align-items: center; justify-content: space-between; }
.learning-form > header strong { display: block; margin-top: 5px; font-family: var(--font-display); font-size: 1rem; }
.learning-form > header > b { min-width: 64px; padding: 8px 10px; border-radius: 999px; background: rgba(71,109,132,.1); color: #476d84; font-family: var(--font-data); font-size: .72rem; text-align: center; }
.learning-form.improving > header > b { background: rgba(49,90,59,.11); color: var(--rough-dark); }
.learning-form.needs_attention > header > b { background: rgba(181,82,62,.1); color: var(--danger); }
.learning-form > p { margin: 7px 0 0; color: var(--ink-soft); font-size: .64rem; line-height: 1.45; }
.learning-form-rounds { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); margin-top: 13px; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.learning-form-round { min-width: 0; padding: 9px 8px 8px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: rgba(241,238,223,.42); }
.learning-form-round.latest { background: rgba(142,189,119,.13); box-shadow: inset 0 3px var(--rough); }
.learning-form-round time, .learning-form-round strong, .learning-form-round span, .learning-form-round small { display: block; }
.learning-form-round time { color: var(--ink-soft); font-size: .46rem; letter-spacing: .04em; text-transform: uppercase; }
.learning-form-round strong { margin-top: 6px; font-family: var(--font-data); font-size: 1.05rem; line-height: 1; }
.learning-form-round span { margin-top: 6px; overflow: hidden; font-size: .49rem; font-weight: 700; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }
.learning-form-round small { margin-top: 3px; color: var(--ink-soft); font-size: .44rem; }
.learning-form footer { margin-top: 9px; color: var(--ink-soft); font-size: .49rem; line-height: 1.4; }
.learning-pattern-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.learning-pattern { min-height: 126px; padding: 14px 15px; border: 1px solid var(--line); border-left: 4px solid #476d84; border-radius: 8px; background: rgba(255,255,255,.3); }
.learning-pattern.review { border-left-color: var(--danger); }
.learning-pattern > span { color: var(--ink-soft); font-size: .5rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.learning-pattern > strong { display: block; margin-top: 8px; font-family: var(--font-display); font-size: 1rem; }
.learning-pattern p { margin: 7px 0 0; color: var(--ink-soft); font-size: .64rem; line-height: 1.45; }
.learning-waiting { padding: 26px 20px; border: 1px dashed rgba(24,49,38,.2); border-radius: 9px; text-align: center; }
.learning-waiting strong { font-family: var(--font-display); font-size: 1.06rem; }
.learning-waiting p { max-width: 470px; margin: 7px auto 0; color: var(--ink-soft); font-size: .66rem; line-height: 1.5; }
.learning-coverage { padding-top: 4px; }
.learning-coverage > div { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin-top: 8px; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.learning-coverage > div > span { display: grid; gap: 4px; min-height: 58px; padding: 10px 11px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.learning-coverage b { font-size: .64rem; }
.learning-coverage small { color: var(--ink-soft); font-size: .52rem; }
.round-history-modal { width: min(820px, calc(100% - 28px)); max-height: 94vh; }
.feedback-modal { width: min(900px, calc(100% - 28px)); max-height: 94vh; }
.feedback-card { max-height: 94vh; overflow: hidden; }
.feedback-tabs {
  display: flex;
  gap: 5px;
  margin-top: 18px;
  padding: 4px;
  border-radius: 10px;
  background: rgba(23,55,43,.07);
}
.feedback-tabs button {
  flex: 1 1 0;
  min-height: 34px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: var(--ink-soft);
  font-size: .62rem;
  font-weight: 850;
}
.feedback-tabs button[aria-pressed="true"] { background: white; color: var(--ink); box-shadow: 0 4px 12px rgba(23,55,43,.1); }
.feedback-panel { max-height: min(70vh, 720px); padding: 16px 2px 2px; overflow-y: auto; overscroll-behavior: contain; }
.feedback-panel[hidden] { display: none; }
.feedback-rating-card {
  display: grid;
  grid-template-columns: minmax(210px, 1fr) auto minmax(190px, .9fr) auto;
  gap: 12px;
  align-items: end;
  padding: 15px 17px;
  border-left: 4px solid #b88b37;
  border-radius: 8px;
  background: linear-gradient(100deg, rgba(184,139,55,.1), rgba(255,255,255,.38));
}
.feedback-rating-card strong, .feedback-rating-card p { display: block; }
.feedback-rating-card strong { margin-top: 4px; font-family: var(--font-display); font-size: 1rem; }
.feedback-rating-card p { margin: 3px 0 0; color: var(--ink-soft); font-size: .58rem; }
.feedback-rating-card label,
.feedback-submit-form label,
.feedback-developer-toolbar label { display: grid; gap: 5px; color: var(--ink-soft); font-size: .55rem; font-weight: 800; }
.feedback-rating-card input,
.feedback-submit-form input,
.feedback-submit-form select,
.feedback-submit-form textarea,
.feedback-developer-toolbar select,
.feedback-thread-reply textarea,
.feedback-developer-action textarea,
.feedback-developer-action select {
  box-sizing: border-box;
  width: 100%;
  padding: 9px 10px;
  border: 1px solid rgba(23,55,43,.16);
  border-radius: 7px;
  outline: none;
  background: rgba(255,255,255,.68);
  color: var(--ink);
  font: inherit;
}
.feedback-rating-card input:focus,
.feedback-submit-form :is(input, select, textarea):focus,
.feedback-thread-reply textarea:focus,
.feedback-developer-action :is(textarea, select):focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(71,109,132,.12); }
.feedback-rating-stars { display: flex; gap: 2px; align-self: center; }
.feedback-rating-stars button { padding: 2px; border: 0; background: transparent; color: rgba(139,100,37,.25); font-size: 1.25rem; line-height: 1; }
.feedback-rating-stars button.selected { color: #b88b37; text-shadow: 0 2px 7px rgba(184,139,55,.18); }
.feedback-submit-form { display: grid; gap: 12px; margin-top: 14px; padding: 17px; border: 1px solid var(--line); border-radius: 9px; background: rgba(255,255,255,.28); }
.feedback-form-heading { display: flex; align-items: end; justify-content: space-between; gap: 15px; }
.feedback-form-heading strong { display: block; margin-top: 4px; font-family: var(--font-display); font-size: 1.08rem; }
.feedback-form-heading small { color: var(--ink-soft); font-size: .54rem; }
.feedback-form-grid { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 12px; }
.feedback-submit-form textarea { min-height: 110px; resize: vertical; line-height: 1.45; }
.feedback-file-field small { font-weight: 500; }
.feedback-form-status { min-height: 1em; margin: 0; color: var(--blue); font-size: .6rem; }
.feedback-submit-form > .primary-action { justify-self: end; min-width: 140px; }
.feedback-list { display: grid; gap: 10px; }
.feedback-item { border: 1px solid var(--line); border-radius: 9px; background: rgba(255,255,255,.3); overflow: hidden; }
.feedback-item-head { display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: 10px; align-items: center; padding: 12px 14px; border-bottom: 1px solid var(--line); }
.feedback-category, .feedback-status { padding: 4px 7px; border-radius: 999px; font-size: .47rem; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; }
.feedback-category { background: rgba(71,109,132,.11); color: var(--blue); }
.feedback-status { background: rgba(49,94,74,.11); color: #315e4a; }
.feedback-item-head strong { overflow: hidden; font-family: var(--font-display); font-size: .9rem; text-overflow: ellipsis; white-space: nowrap; }
.feedback-item-head time { color: var(--ink-soft); font-size: .5rem; }
.feedback-item-body { padding: 13px 14px; }
.feedback-item-body > p { margin: 0; color: var(--ink-soft); font-size: .68rem; line-height: 1.5; white-space: pre-wrap; }
.feedback-context { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 9px; }
.feedback-context span { padding: 4px 7px; border-radius: 5px; background: rgba(23,55,43,.055); color: var(--ink-soft); font-size: .49rem; }
.feedback-attachment-link { display: inline-flex; margin-top: 9px; color: var(--blue); font-size: .56rem; font-weight: 800; }
.feedback-thread { display: grid; gap: 7px; margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--line); }
.feedback-message { max-width: 84%; padding: 8px 10px; border-radius: 8px 8px 8px 2px; background: rgba(71,109,132,.09); }
.feedback-message[data-role="player"] { justify-self: end; border-radius: 8px 8px 2px 8px; background: rgba(142,189,119,.14); }
.feedback-message strong, .feedback-message time { font-size: .48rem; }
.feedback-message time { margin-left: 6px; color: var(--ink-soft); }
.feedback-message p { margin: 4px 0 0; font-size: .62rem; line-height: 1.45; }
.feedback-thread-reply { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 7px; margin-top: 10px; }
.feedback-thread-reply textarea { min-height: 42px; resize: vertical; }
.feedback-thread-reply button { align-self: end; }
.feedback-developer-toolbar { display: grid; grid-template-columns: minmax(0,1fr) 150px 150px; gap: 10px; align-items: end; margin-bottom: 12px; padding: 12px 14px; border-left: 4px solid var(--blue); background: rgba(71,109,132,.07); }
.feedback-developer-toolbar > div strong, .feedback-developer-toolbar > div span { display: block; }
.feedback-developer-toolbar > div span { margin-top: 4px; color: var(--ink-soft); font-size: .56rem; }
.feedback-player-line { margin-bottom: 8px; color: var(--blue); font-size: .54rem; font-weight: 800; }
.feedback-developer-action { display: grid; grid-template-columns: 170px minmax(0,1fr) auto; gap: 8px; align-items: end; margin-top: 11px; padding-top: 11px; border-top: 1px solid var(--line); }
.feedback-developer-action label { display: grid; gap: 5px; color: var(--ink-soft); font-size: .52rem; font-weight: 800; }
.feedback-developer-action textarea { min-height: 54px; resize: vertical; }
.round-history-intro {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-rows: auto auto;
  column-gap: 24px;
  align-items: end;
  margin: 20px 0 14px;
  padding: 15px 17px;
  border-left: 4px solid #476d84;
  background: rgba(71,109,132,.07);
}
.round-history-intro p { grid-row: 1 / 3; max-width: 520px; margin: 0; color: var(--ink-soft); font-size: .7rem; line-height: 1.5; }
.round-history-intro > strong { font-family: var(--font-data); font-size: 1.5rem; line-height: 1; text-align: right; }
.round-history-intro > span { color: var(--ink-soft); font-size: .5rem; letter-spacing: .08em; text-align: right; text-transform: uppercase; }
.round-history-list { position: relative; display: grid; max-height: min(60vh, 620px); overflow-y: auto; padding: 2px 4px 2px 0; }
.history-round {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr) repeat(3, minmax(88px, auto));
  align-items: center;
  min-height: 86px;
  border-bottom: 1px solid var(--line);
  background: rgba(255,255,255,.18);
}
.history-round:first-child { border-top: 1px solid var(--line); }
.history-round-date { align-self: stretch; display: grid; place-content: center start; padding: 12px 14px; border-left: 3px solid var(--rough-dark); color: var(--ink-soft); }
.history-round-date strong, .history-round-date span { display: block; }
.history-round-date strong { color: var(--ink); font-family: var(--font-data); font-size: .72rem; letter-spacing: .05em; text-transform: uppercase; }
.history-round-date span { margin-top: 4px; font-size: .52rem; }
.history-round-course { min-width: 0; padding: 12px 16px; }
.history-round-course strong, .history-round-course span { display: block; }
.history-round-course strong { overflow: hidden; font-family: var(--font-display); font-size: 1.05rem; text-overflow: ellipsis; white-space: nowrap; }
.history-round-course span { margin-top: 5px; color: var(--ink-soft); font-size: .58rem; }
.history-round-stat { display: grid; align-content: center; min-height: 54px; padding: 7px 14px; border-left: 1px solid var(--line); }
.history-round-stat span { color: var(--ink-soft); font-size: .48rem; letter-spacing: .07em; text-transform: uppercase; }
.history-round-stat strong { margin-top: 4px; font-family: var(--font-data); font-size: 1rem; }
.history-round-stat small { margin-top: 2px; color: var(--ink-soft); font-size: .5rem; }
.history-round-management strong { color: #315e4a; }
.history-replay-open { grid-column: 1 / -1; margin: 0 10px 10px; padding: 7px 9px; font-size: .58rem; white-space: nowrap; }
.history-hole-replay { grid-column: 1 / -1; padding: 12px 14px; border-top: 1px solid var(--line); background: rgba(71,109,132,.055); }
.history-hole-replay p { margin: 8px 0; color: var(--ink-soft); font-size: .65rem; }
.history-replay-holes { display: grid; grid-template-columns: repeat(9, minmax(28px, 1fr)); gap: 5px; }
.history-replay-holes button { min-height: 30px; padding: 4px; border: 1px solid var(--line); background: rgba(255,255,255,.64); font-size: .62rem; }
.history-replay-holes button[aria-current="true"] { border-color: var(--rough-dark); background: var(--rough-dark); color: white; }
.history-replay-shots { display: grid; gap: 5px; margin: 8px 0 0; padding-left: 24px; }
.history-replay-shots li { font-size: .62rem; }
.history-replay-shots strong, .history-replay-shots span { display: block; }
.history-replay-shots span { margin-top: 2px; color: var(--ink-soft); }

/* Dedicated replay room: map-first, with the round arranged like a shot tape. */
body.replay-mode-active { overflow: hidden; background: #10281e; }
body.replay-mode-active #app,
body.replay-mode-active #gps-mode-screen,
body.replay-mode-active .mobile-round-nav { display: none !important; }
.replay-mode-screen[hidden] { display: none !important; }
.replay-mode-screen { position: fixed; inset: 0; z-index: 120; display: grid; grid-template-rows: auto minmax(0, 1fr); overflow: hidden; background: #e8eadf; color: #183126; }
.replay-page-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 86px; padding: 14px clamp(18px, 3vw, 42px); border-bottom: 1px solid rgba(24,49,38,.22); background: #f5f3e9; }
.replay-page-header h1 { margin: 2px 0 0; font-family: var(--font-display); font-size: clamp(1.5rem, 2.5vw, 2.35rem); line-height: 1; }
.replay-page-header p { margin: 6px 0 0; color: var(--ink-soft); font-size: .68rem; }
.replay-page-header > button { min-width: 116px; padding: 11px 16px; border: 1px solid #183126; background: #183126; color: white; font-weight: 750; }
.replay-page-layout { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(330px, .72fr); min-height: 0; }
.replay-map-column { display: grid; grid-template-rows: auto minmax(0, 1fr) auto auto; min-width: 0; min-height: 0; padding: clamp(14px, 2vw, 26px); background: #233d2e; color: white; }
.replay-map-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 0 0 14px; }
.replay-map-heading span, .replay-map-heading strong { display: block; }
.replay-map-heading span { color: #b8cbb9; font-size: .6rem; letter-spacing: .08em; text-transform: uppercase; }
.replay-map-heading strong { margin-top: 4px; font-family: var(--font-display); font-size: 1.35rem; }
.replay-map-heading button { padding: 9px 13px; border: 1px solid rgba(255,255,255,.35); background: rgba(255,255,255,.08); color: white; font-weight: 700; }
.replay-page-map { position: relative; min-height: 0; overflow: hidden; border: 1px solid rgba(255,255,255,.14); background: #172e22; box-shadow: inset 0 0 0 1px rgba(0,0,0,.15); }
.replay-page-map svg { display: block; width: 100%; height: 100%; }
.replay-map-rough { fill: #466c4c; }
.replay-map-fairway { fill: #79a66d; }
.replay-map-green { fill: #a8c87b; stroke: #d8e6ae; stroke-width: 2; }
.replay-map-tee { fill: #d6d6bd; }
.replay-map-sand { fill: #d5bd78; stroke: #f0dba0; stroke-width: 1.5; }
.replay-map-water { fill: #5d9ba4; stroke: #97c8ca; stroke-width: 1.5; }
.replay-map-trees { fill: #254c34; stroke: #183826; stroke-width: 1.5; }
.replay-shot-path { fill: none; stroke: #fff1b7; stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 10 8; }
.replay-target-line { stroke: rgba(255,255,255,.5); stroke-width: 2; stroke-dasharray: 5 6; }
.replay-start-mark { fill: white; stroke: #183126; stroke-width: 3; }
.replay-target-mark { fill: #e7ca72; stroke: #fff8d5; stroke-width: 3; }
.replay-finish-mark { fill: #cf654f; stroke: white; stroke-width: 3; }
.replay-moving-ball { fill: white; stroke: #183126; stroke-width: 2; filter: drop-shadow(0 3px 3px rgba(0,0,0,.45)); }
.replay-page-result { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 1px; margin-top: 12px; overflow: hidden; border: 1px solid rgba(255,255,255,.16); background: rgba(255,255,255,.16); }
.replay-page-result > div { min-width: 0; padding: 10px 12px; background: #294735; }
.replay-page-result span, .replay-page-result strong { display: block; }
.replay-page-result span { color: #abc2ae; font-size: .52rem; letter-spacing: .07em; text-transform: uppercase; }
.replay-page-result strong { margin-top: 4px; overflow: hidden; font-size: .72rem; line-height: 1.25; text-overflow: ellipsis; }
.replay-page-coach { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px 14px; margin-top: 10px; padding: 13px 15px; border-left: 4px solid #d8bd79; background: #f4efd9; color: #183126; }
.replay-page-coach[data-tone="good"] { border-left-color: #82a96f; }
.replay-page-coach[data-tone="review"] { border-left-color: #cf654f; }
.replay-page-coach[data-tone="recorded"] { border-left-color: #7794a0; }
.replay-coach-mark { grid-row: 1 / span 2; display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid currentColor; border-radius: 50%; font-family: var(--font-data); font-size: .68rem; font-weight: 850; }
.replay-coach-copy { min-width: 0; }
.replay-coach-heading { display: flex; flex-wrap: wrap; align-items: baseline; gap: 7px 10px; }
.replay-coach-heading span { color: #617069; font-size: .5rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.replay-coach-heading strong { font-family: var(--font-display); font-size: .9rem; }
.replay-coach-grades { display: flex; gap: 6px; }
.replay-coach-grades span { padding: 3px 6px; border: 1px solid rgba(24,49,38,.18); background: rgba(255,255,255,.45); color: #42564b; font-size: .48rem; font-weight: 750; }
.replay-page-coach p { margin: 5px 0 0; color: #405249; font-size: .62rem; line-height: 1.42; }
.replay-page-coach p + p { color: #183126; font-weight: 650; }
.replay-shot-rail { min-height: 0; overflow-y: auto; border-left: 1px solid rgba(24,49,38,.2); background: #f5f3e9; }
.replay-rail-heading { position: sticky; top: 0; z-index: 2; padding: 18px 20px 12px; background: #f5f3e9; }
.replay-rail-heading span, .replay-rail-heading strong { display: block; }
.replay-rail-heading strong { margin-top: 4px; font-family: var(--font-display); font-size: 1.2rem; }
.replay-page-holes { display: grid; grid-template-columns: repeat(6, 1fr); gap: 5px; padding: 0 20px 16px; border-bottom: 1px solid var(--line); }
.replay-page-holes button { min-height: 34px; padding: 4px; border: 1px solid var(--line); background: transparent; font-family: var(--font-data); font-size: .65rem; }
.replay-page-holes button[aria-current="true"] { border-color: #183126; background: #183126; color: white; }
.replay-page-holes button:disabled { opacity: .32; }
.replay-page-shots { display: grid; gap: 0; padding: 8px 20px 28px; }
.replay-shot-button { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; align-items: center; gap: 10px; width: 100%; padding: 13px 5px; border: 0; border-bottom: 1px solid var(--line); background: transparent; color: inherit; text-align: left; }
.replay-shot-button > b { display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid rgba(24,49,38,.25); border-radius: 50%; font-family: var(--font-data); font-size: .64rem; }
.replay-shot-button strong, .replay-shot-button small { display: block; }
.replay-shot-button strong { font-size: .72rem; }
.replay-shot-button small { margin-top: 4px; color: var(--ink-soft); font-size: .57rem; }
.replay-shot-button > span { color: var(--ink-soft); font-size: .58rem; }
.replay-shot-button[aria-current="true"] { margin: 4px 0; padding-inline: 8px; border-bottom-color: transparent; background: #dfe7d8; box-shadow: inset 4px 0 0 #41694d; }
.scorecard-replay-action { display: flex; justify-content: flex-end; margin-top: 14px; }
.round-history-empty { padding: 34px 22px; border: 1px dashed rgba(24,49,38,.2); border-radius: 9px; color: var(--ink-soft); text-align: center; }
.round-history-empty strong, .round-history-empty span { display: block; }
.round-history-empty strong { color: var(--ink); font-family: var(--font-display); font-size: 1.1rem; }
.round-history-empty span { max-width: 430px; margin: 7px auto 0; font-size: .66rem; line-height: 1.5; }
.leaderboard-modal { width: min(760px, calc(100% - 28px)); max-height: 94vh; }
.leaderboard-intro {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 22px;
  align-items: center;
  margin: 20px 0 14px;
  padding: 15px 17px;
  border-left: 4px solid #8b6425;
  background: rgba(184,139,55,.08);
}
.leaderboard-intro p { max-width: 540px; margin: 0; color: var(--ink-soft); font-size: .7rem; line-height: 1.5; }
.leaderboard-intro strong { color: #8b6425; font-family: var(--font-data); font-size: .72rem; letter-spacing: .12em; }
.leaderboard-head,
.leaderboard-row {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr) 90px 142px;
  align-items: center;
}
.leaderboard-head { padding: 0 0 7px; color: var(--ink-soft); font-size: .49rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.leaderboard-head i { font-style: normal; }
.leaderboard-compact-label { display: none; }
.leaderboard-head span:nth-last-child(-n+2) { text-align: center; }
.leaderboard-list { max-height: min(58vh, 590px); margin: 0; padding: 0; overflow-y: auto; list-style: none; }
.leaderboard-row { min-height: 64px; border-top: 1px solid var(--line); background: rgba(255,255,255,.18); }
.leaderboard-row:last-child { border-bottom: 1px solid var(--line); }
.leaderboard-rank { align-self: stretch; display: grid; place-items: center; border-left: 3px solid rgba(23,55,43,.22); }
.leaderboard-rank b { display: grid; place-items: center; width: 28px; height: 28px; border: 1px solid rgba(23,55,43,.16); border-radius: 50%; font-family: var(--font-data); font-size: .72rem; }
.leaderboard-row[data-rank="1"] .leaderboard-rank { border-left-color: #b88b37; }
.leaderboard-row[data-rank="1"] .leaderboard-rank b { border-color: #b88b37; background: rgba(184,139,55,.13); color: #79551d; }
.leaderboard-row[data-rank="2"] .leaderboard-rank { border-left-color: #7a8b88; }
.leaderboard-row[data-rank="3"] .leaderboard-rank { border-left-color: #a46d47; }
.leaderboard-player { min-width: 0; padding: 10px 14px; }
.leaderboard-player strong, .leaderboard-player span { display: block; }
.leaderboard-player strong { overflow: hidden; font-family: var(--font-display); font-size: .92rem; text-overflow: ellipsis; white-space: nowrap; }
.leaderboard-player span { margin-top: 4px; overflow: hidden; color: var(--ink-soft); font-size: .55rem; text-overflow: ellipsis; white-space: nowrap; }
.leaderboard-strokes,
.leaderboard-management { align-self: stretch; display: grid; place-items: center; border-left: 1px solid var(--line); font-family: var(--font-data); font-size: 1rem; }
.leaderboard-management { color: #315e4a; font-size: 1.14rem; }
.player-guide-modal { width: min(820px, calc(100% - 28px)); max-height: 94vh; }
.player-guide-modal .modal-card { padding-bottom: 22px; }
.guide-language-switch { display: inline-grid; grid-template-columns: repeat(2, auto); gap: 3px; margin-top: 14px; padding: 3px; border: 1px solid rgba(71,109,132,.2); border-radius: 8px; background: rgba(71,109,132,.06); }
.guide-language-switch button { min-height: 30px; padding: 5px 12px; border: 0; border-radius: 5px; background: transparent; color: var(--ink-soft); font-size: .62rem; font-weight: 800; }
.guide-language-switch button[aria-pressed="true"] { background: #355f7b; color: white; box-shadow: 0 2px 8px rgba(40,75,98,.18); }
.guide-language-switch button:focus-visible { outline: 2px solid var(--danger); outline-offset: 2px; }
.player-guide-content {
  max-height: min(68vh, 760px);
  margin-top: 20px;
  padding: 0 18px 10px 0;
  overflow-y: auto;
  scrollbar-color: rgba(71,109,132,.45) transparent;
}
.player-guide-content h3 {
  margin: 30px 0 8px;
  padding-top: 18px;
  border-top: 1px solid var(--line);
  color: var(--ink);
  font-family: var(--font-display);
  font-size: 1.18rem;
  letter-spacing: -.012em;
}
.player-guide-content .guide-part-heading {
  margin-top: 36px;
  padding: 14px 17px;
  border: 0;
  border-left: 5px solid var(--fairway-light);
  border-radius: 7px;
  background: var(--ink);
  color: var(--paper);
  font-size: 1.04rem;
  letter-spacing: .015em;
}
.player-guide-content h4 { margin: 20px 0 6px; color: #315e4a; font-size: .82rem; }
.player-guide-content p,
.player-guide-content li { color: var(--ink-soft); font-size: .8rem; line-height: 1.68; }
.player-guide-content[lang="zh-Hant"] p,
.player-guide-content[lang="zh-Hant"] li { line-height: 1.82; }
.player-guide-content p { margin: 8px 0; }
.player-guide-content ul,
.player-guide-content ol { margin: 8px 0 14px; padding-left: 1.35rem; }
.player-guide-content li + li { margin-top: 4px; }
.guide-principle {
  margin: 2px 0 24px;
  padding: 17px 20px;
  border-radius: 10px;
  background: linear-gradient(115deg, #17372b, #315e4a);
  color: #f6f5eb;
  font-family: var(--font-data);
  font-size: clamp(.78rem, 2vw, .94rem);
  font-weight: 700;
  letter-spacing: .08em;
  text-align: center;
}
.guide-principle.guide-loop {
  position: relative;
  overflow: hidden;
  padding: 20px 18px;
  border: 1px solid rgba(246,245,235,.2);
  background: linear-gradient(105deg, #17372b 0 58%, #315e4a 58% 100%);
  font-size: clamp(.72rem, 2vw, .9rem);
  line-height: 1.65;
  word-spacing: .2em;
}
.guide-comparison-scroll {
  margin: 14px 0 20px;
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: rgba(255,255,255,.36);
}
.guide-comparison {
  width: 100%;
  min-width: 620px;
  border-collapse: collapse;
  color: var(--ink-soft);
  font-size: .72rem;
  line-height: 1.45;
}
.guide-comparison th,
.guide-comparison td { padding: 10px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.guide-comparison th { background: rgba(49,94,74,.1); color: var(--ink); font-family: var(--font-system); font-size: .64rem; letter-spacing: .025em; }
.guide-comparison th:first-child,
.guide-comparison td:first-child { width: 24%; color: #315e4a; font-weight: 800; }
.guide-comparison tbody tr:last-child td { border-bottom: 0; }
.guide-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 14px; border-top: 1px solid var(--line); }
.guide-actions a { color: #476d84; font-size: .7rem; font-weight: 700; }
.profile-list { display: grid; gap: 9px; margin: 22px 0 15px; }
.profile-option { width: 100%; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 14px; padding: 14px; border: 1px solid var(--line); border-radius: 7px; background: transparent; text-align: left; }
.profile-option.selected { border-color: var(--rough); background: rgba(142,189,119,.13); }
.profile-badge { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: var(--ink); color: white; font-family: var(--font-system); }
.profile-option strong, .profile-option small { display: block; }
.profile-option small { margin-top: 3px; color: var(--ink-soft); }
.profile-driver { font-family: var(--font-system); font-size: .65rem; }
.secondary-action, .primary-action { padding: 11px 15px; border-radius: 6px; font-weight: 700; font-size: .72rem; }
.secondary-action { border: 1px solid var(--line); background: transparent; }
.primary-action { border: 0; background: var(--danger); color: white; }
.editor-name { display: grid; gap: 7px; margin: 18px 0; font-size: .7rem; font-weight: 700; }
.editor-name input { padding: 10px; border: 1px solid var(--line); border-radius: 5px; background: var(--chalk); }
.editor-guidance { margin: -6px 0 13px; color: var(--ink-soft); font-size: .66rem; line-height: 1.45; }
.profile-editor { max-height: 88vh; overflow-y: auto; }
#custom-dialog { width: min(900px, calc(100% - 28px)); }
.on-course-stats-summary { display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; align-items: center; margin: 0 0 12px; padding: 11px 13px; border-left: 4px solid #476d84; border-radius: 6px; background: rgba(71,109,132,.07); }
.on-course-stats-summary strong { font-family: var(--font-system); font-size: .68rem; }
.on-course-stats-summary span { color: var(--ink-soft); font-size: .6rem; line-height: 1.4; }
.editor-head, .club-row { display: grid; grid-template-columns: minmax(105px,1fr) 82px 102px minmax(220px,1.45fr); align-items: center; gap: 10px; }
.editor-head { padding: 7px 9px; color: var(--ink-soft); font-family: var(--font-system); font-size: .57rem; text-transform: uppercase; }
.club-editor { max-height: 45vh; overflow: auto; border-block: 1px solid var(--line); }
.club-row { padding: 7px 9px; border-bottom: 1px solid var(--line); font-size: .7rem; }
.club-row > input { width: 100%; padding: 7px; border: 1px solid var(--line); border-radius: 4px; background: var(--chalk); }
.on-course-club-stat { min-width: 0; padding: 6px 8px; border-left: 3px solid rgba(71,109,132,.45); border-radius: 5px; background: rgba(71,109,132,.06); }
.on-course-club-stat > strong,
.on-course-club-stat > small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.on-course-club-stat > strong { font-family: var(--font-data); font-size: .72rem; }
.on-course-club-stat > strong i { color: var(--ink-soft); font-style: normal; font-weight: 400; }
.on-course-club-stat > small,
.on-course-stat-waiting { color: var(--ink-soft); font-size: .51rem; line-height: 1.35; }
.on-course-club-stat footer { display: flex; align-items: center; justify-content: space-between; gap: 7px; margin-top: 5px; }
.on-course-club-stat footer span { padding: 3px 6px; border-radius: 999px; background: rgba(71,109,132,.11); color: #476d84; font-size: .45rem; font-weight: 800; text-transform: uppercase; }
.on-course-club-stat footer span[data-confidence="reliable"] { background: rgba(49,90,59,.12); color: var(--rough-dark); }
.on-course-club-stat footer button { padding: 4px 7px; border: 1px solid rgba(71,109,132,.28); border-radius: 5px; background: rgba(255,255,255,.55); color: #476d84; font-size: .49rem; font-weight: 800; }
.on-course-club-stat footer button:disabled { opacity: .5; cursor: default; }
.percent-field { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; border: 1px solid var(--line); border-radius: 4px; background: var(--chalk); }
.percent-field:focus-within { border-color: var(--rough-dark); box-shadow: 0 0 0 2px rgba(53,95,61,.15); }
.percent-field input { width: 100%; min-width: 0; padding: 7px 2px 7px 7px; border: 0; outline: 0; background: transparent; }
.percent-field span { padding: 0 8px 0 3px; color: var(--ink-soft); font-family: var(--font-system); font-size: .64rem; }
.putting-editor { margin-top: 18px; padding: 15px; border: 1px solid var(--line); border-left: 4px solid var(--rough-dark); border-radius: 6px; background: rgba(142,189,119,.09); }

@media (max-width: 760px) {
  #custom-dialog { width: 100%; max-height: 100dvh; border-radius: 0; }
  #custom-dialog .modal-card { min-height: 100dvh; padding: 18px 14px calc(24px + env(safe-area-inset-bottom)); }
  .on-course-stats-summary { grid-template-columns: 1fr; }
  .editor-head { display: none; }
  .club-row { grid-template-columns: minmax(82px,1fr) 72px 88px; gap: 7px; padding: 9px 5px; }
  .on-course-club-stat { grid-column: 1 / -1; }
}
.putting-editor-heading { display: flex; align-items: end; justify-content: space-between; gap: 18px; }
.putting-editor-heading h3 { margin: 3px 0 0; font-family: var(--font-system); font-size: 1.15rem; }
.putting-editor-heading small { max-width: 220px; color: var(--ink-soft); font-size: .61rem; line-height: 1.4; text-align: right; }
.putting-rate-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 13px; }
.putting-rate-grid label { display: grid; gap: 5px; color: var(--ink-soft); font-family: var(--font-system); font-size: .6rem; }
.putting-editor > p { margin: 10px 0 0; color: var(--ink-soft); font-size: .61rem; line-height: 1.4; }
.modal-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }
.strategy-explanation-modal .modal-card { width: min(520px, calc(100vw - 28px)); }
.strategy-explanation-result {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  margin-top: 20px;
  padding: 14px 16px;
  border-left: 4px solid var(--blue);
  background: rgba(63,102,133,.08);
}
.strategy-explanation-result strong { font-size: 1rem; }
.strategy-explanation-result span { color: var(--ink-soft); font-size: .72rem; text-align: right; }
.strategy-explanation-reasons {
  display: grid;
  gap: 9px;
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
}
.strategy-explanation-reasons li {
  position: relative;
  padding-left: 18px;
  font-size: .76rem;
  line-height: 1.45;
}
.strategy-explanation-reasons li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .48em;
  width: 8px;
  height: 8px;
  border: 1px solid var(--rough);
  border-radius: 50%;
}
.strategy-probability { margin-top: 18px; padding: 13px 15px; border: 1px solid rgba(63,102,133,.2); border-radius: 9px; background: rgba(63,102,133,.06); }
.strategy-probability > span { display: block; margin-bottom: 9px; color: var(--blue); font-family: var(--font-system); font-size: .56rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.strategy-probability-scroll { overflow-x: auto; }
.strategy-probability table { width: 100%; border-collapse: collapse; font-family: var(--font-system); font-size: .66rem; font-variant-numeric: tabular-nums; }
.strategy-probability th, .strategy-probability td { padding: 7px 8px; border-bottom: 1px solid rgba(49,93,68,.13); text-align: right; white-space: nowrap; }
.strategy-probability th:first-child { padding-left: 0; color: var(--ink-soft); font-weight: 600; text-align: left; }
.strategy-probability thead th { color: var(--ink); font-size: .6rem; font-weight: 800; }
.strategy-probability tbody tr:last-child th, .strategy-probability tbody tr:last-child td { border-bottom: 0; }
.strategy-probability p { margin: 10px 0 0; color: var(--ink-soft); font-size: .68rem; line-height: 1.45; }
.strategy-probability p strong { color: var(--ink); }
.strategy-probability .strategy-probability-loading { margin: 0; }
.strategy-ai-check { margin-top: 18px; padding: 13px 15px; border: 1px solid rgba(49,93,68,.18); border-radius: 9px; background: rgba(135,170,128,.1); }
.strategy-ai-check > span { display: block; color: var(--rough-dark); font-family: var(--font-system); font-size: .56rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.strategy-ai-check strong { display: block; margin-top: 5px; font-size: .82rem; }
.strategy-ai-check p { margin: 4px 0 0; color: var(--ink-soft); font-size: .7rem; line-height: 1.45; }
.strategy-model-note {
  margin: 18px 0 0;
  color: var(--ink-soft);
  font-size: .64rem;
  line-height: 1.45;
}
.scorecard-modal { width: min(900px, calc(100% - 28px)); }
.round-nav-modal { width: min(560px, calc(100% - 20px)); }
.round-card-grid-expanded { gap: 18px; margin-top: 24px; }
.round-card-grid-expanded .round-nine-card > header { margin-bottom: 8px; padding-bottom: 7px; border-bottom: 1px solid var(--line); }
.round-card-grid-expanded .round-nine-card > header strong { font-size: .82rem; }
.round-card-grid-expanded .round-nine-card > header span { font-size: .68rem; }
.round-card-grid-expanded .round-nine-holes { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }
.round-card-grid-expanded .round-hole { height: 62px; padding: 9px 10px 8px; border-radius: 7px; }
.round-card-grid-expanded .round-hole-number { font-size: .8rem; }
.round-card-grid-expanded .round-hole small { font-size: .59rem; }
.round-card-grid-expanded .round-hole .score-mark { width: 28px; height: 28px; font-size: .68rem; }
.round-review-modal { width: min(980px, calc(100% - 28px)); max-height: 94vh; }
.round-review-modal .modal-card { padding-bottom: 24px; }
.review-summary { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 9px; margin: 22px 0; }
.review-verdict { grid-column: 1 / -1; display: grid; grid-template-columns: 140px 1fr; gap: 20px; padding: 18px 20px; border-radius: 7px; background: var(--ink); color: var(--paper); }
.review-verdict .eyebrow { color: var(--fairway-light); }
.review-verdict p { margin: 0; font-family: var(--font-system); font-size: 1.15rem; line-height: 1.45; }
.review-stat { padding: 13px 14px; border: 1px solid var(--line); border-radius: 6px; background: var(--chalk); }
.review-stat span, .review-stat strong, .review-stat small { display: block; }
.review-stat span { color: var(--ink-soft); font-size: .68rem; text-transform: uppercase; letter-spacing: .07em; }
.review-stat strong { margin-top: 5px; font-family: var(--font-system); font-size: 1.55rem; }
.review-stat small { margin-top: 3px; color: var(--ink-soft); font-size: .7rem; }
.review-score { background: var(--paper-deep); }
.review-focus strong { color: var(--danger); font-size: 1.15rem; }
.review-list { display: grid; gap: 8px; max-height: 56vh; overflow-y: auto; padding-right: 6px; }
.blended-snapshot { grid-column: 1 / -1; overflow: hidden; border: 1px solid rgba(24,49,38,.25); border-radius: 9px; background: var(--chalk); }
.blended-snapshot > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 14px; background: var(--ink); color: var(--paper); }
.blended-snapshot > header span,.blended-snapshot > header strong { display: block; }
.blended-snapshot > header span { color: var(--fairway-light); font-size: .63rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.blended-snapshot > header strong { margin-top: 2px; font-size: .72rem; }
.blended-snapshot > header > b { padding: 5px 9px; border: 1px solid rgba(255,255,255,.22); border-radius: 999px; font-size: .6rem; letter-spacing: .08em; text-transform: uppercase; }
.blended-snapshot-grid { display: grid; grid-template-columns: .75fr repeat(3,1fr) 1.45fr; }
.blended-snapshot-grid > div { min-width: 0; min-height: 92px; padding: 13px 14px; border-right: 1px solid var(--line); }
.blended-snapshot-grid > div:last-child { border-right: 0; }
.blended-snapshot-grid span,.blended-snapshot-grid strong,.blended-snapshot-grid small { display: block; }
.blended-snapshot-grid span { color: var(--ink-soft); font-size: .58rem; font-weight: 800; letter-spacing: .075em; text-transform: uppercase; }
.blended-snapshot-grid strong { margin-top: 6px; font-family: var(--font-system); font-size: 1.45rem; }
.blended-snapshot-grid small { margin-top: 4px; color: var(--ink-soft); font-size: .62rem; line-height: 1.35; }
.blended-snapshot-grid .snapshot-round { background: var(--paper-deep); }
.blended-snapshot-grid .snapshot-focus { background: rgba(181,82,62,.07); }
.blended-snapshot-grid .snapshot-focus strong { color: var(--danger); font-size: 1rem; line-height: 1.25; }
.blended-snapshot-note { margin: 0; padding: 10px 14px 12px; border-top: 1px solid var(--line); color: var(--ink-soft); font-size: .64rem; line-height: 1.5; }
.blended-snapshot-note strong { color: var(--ink); }
.round-story,.blended-learning-section,.blended-detail-section { padding: 18px; border: 1px solid var(--line); border-radius: 9px; background: rgba(255,255,255,.34); }
.round-story > header,.blended-learning-section > header,.blended-detail-section > header { display: flex; align-items: center; gap: 11px; }
.section-number { display: grid; flex: 0 0 32px; width: 32px; height: 32px; place-items: center; border: 1px solid rgba(24,49,38,.2); border-radius: 50%; color: var(--rough-dark); font: 800 .58rem var(--font-system); }
.round-story header small,.blended-learning-section header small,.blended-detail-section header small { display: block; color: var(--ink-soft); font-size: .56rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.round-story h3,.blended-learning-section h3,.blended-detail-section h3 { margin: 2px 0 0; font-size: .9rem; }
.round-story > p { margin: 14px 0 0 43px; color: var(--ink); font-family: var(--font-system); font-size: 1.02rem; line-height: 1.55; }
.narrative-status { margin-left: auto; padding: 5px 8px; border-radius: 999px; font-size: .56rem; font-weight: 800; white-space: nowrap; }
.narrative-status.available { background: #dfeadf; color: #315f42; }
.narrative-status.fallback { background: #e7e9e5; color: var(--ink-soft); }
.remember-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; margin-top: 14px; }
.remember-grid article { min-height: 94px; padding: 13px; border-top: 4px solid var(--rough); border-radius: 5px; background: var(--paper-deep); }
.remember-grid article[data-type="focus"] { border-color: var(--danger); }
.remember-grid article[data-type="round_characteristic"] { border-color: #476d84; }
.remember-grid span { color: var(--ink-soft); font-size: .56rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.remember-grid p { margin: 8px 0 0; font-size: .76rem; font-weight: 750; line-height: 1.42; }
.learning-moment-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; margin-top: 14px; }
.learning-moment { position: relative; overflow: hidden; padding: 14px; border: 1px solid rgba(24,49,38,.16); border-radius: 7px; background: var(--chalk); }
.learning-moment::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 4px; background: #476d84; }
.learning-moment[data-type="penalty_or_water"]::before,.learning-moment[data-type="decision_to_review"]::before { background: var(--danger); }
.learning-moment > header { display: flex; justify-content: space-between; gap: 10px; color: var(--ink-soft); font-size: .56rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.learning-moment h4 { margin: 9px 0; font-size: .86rem; }
.learning-moment > p { margin: 10px 0; color: var(--ink-soft); font-size: .7rem; line-height: 1.48; }
.learning-moment > button { padding: 0; border: 0; background: transparent; color: var(--rough-dark); font-size: .64rem; font-weight: 800; cursor: pointer; }
.moment-separation { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 4px; }
.moment-separation span { padding: 6px; border-radius: 4px; background: rgba(24,49,38,.055); color: var(--ink-soft); font-size: .53rem; text-transform: uppercase; }
.moment-separation b { display: block; margin-top: 3px; color: var(--ink); font-size: .58rem; }
.pattern-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; margin-top: 14px; }
.pattern-grid article { padding: 12px; border-left: 3px solid #476d84; background: rgba(71,109,132,.07); }
.pattern-grid span,.pattern-grid strong { display: block; }
.pattern-grid span { color: #476d84; font-size: .52rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.pattern-grid strong { margin-top: 5px; font-size: .76rem; }
.pattern-grid p,.report-empty { margin: 6px 0 0; color: var(--ink-soft); font-size: .68rem; line-height: 1.45; }
.next-round-section { border-color: rgba(181,82,62,.25); background: rgba(181,82,62,.045); }
.next-round-section ol { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1px; margin: 14px 0 0; padding: 0; list-style: none; counter-reset: focus; background: rgba(181,82,62,.16); }
.next-round-section li { counter-increment: focus; min-height: 96px; padding: 12px; background: var(--paper); }
.next-round-section li::before { content: counter(focus,decimal-leading-zero); display: block; color: var(--danger); font: 850 .58rem var(--font-system); }
.next-round-section li strong { display: block; margin-top: 6px; font-size: .7rem; text-transform: uppercase; }
.next-round-section li p { margin: 5px 0 0; color: var(--ink-soft); font-size: .67rem; line-height: 1.42; }
.blended-report-section { border: 1px solid var(--line); border-radius: 9px; background: rgba(255,255,255,.28); overflow: hidden; }
.blended-report-section > summary { display: flex; align-items: center; justify-content: space-between; padding: 13px 15px; cursor: pointer; list-style: none; }
.blended-report-section > summary::-webkit-details-marker { display: none; }
.blended-report-section > summary span { display: flex; align-items: center; gap: 10px; }
.blended-report-section > summary small { color: var(--rough-dark); font: 850 .58rem var(--font-system); }
.blended-report-section > summary b { font-size: .76rem; }
.blended-report-section > summary em { color: var(--ink-soft); font-size: .62rem; font-style: normal; }
.blended-scorecard-summary { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; margin: 0 15px 10px; background: var(--line); }
.blended-scorecard-summary span { padding: 8px; background: var(--paper); color: var(--ink-soft); font-size: .58rem; text-align: center; }
.blended-scorecard-summary b { display: block; margin-top: 3px; color: var(--ink); font-size: .8rem; }
.blended-scorecard-scroll { margin: 0 15px 15px; overflow-x: auto; }
.blended-scorecard-scroll table { width: 100%; min-width: 700px; border-collapse: collapse; font-size: .62rem; }
.blended-scorecard-scroll th,.blended-scorecard-scroll td { padding: 7px; border: 1px solid var(--line); text-align: center; }
.blended-scorecard-scroll th:first-child { position: sticky; left: 0; background: var(--paper); text-align: left; }
.blended-detail-section { display: grid; gap: 8px; }
.blended-detail-section > header { margin-bottom: 5px; }
.blended-hole > summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; }
.blended-hole > summary div strong,.blended-hole > summary div span { display: block; }
.blended-hole > summary div strong { font-size: .76rem; }
.blended-hole > summary div span { margin-top: 3px; color: var(--ink-soft); font-size: .62rem; }
.blended-hole > summary > b { color: var(--danger); font-family: var(--font-system); }
.blended-hole-body { display: grid; gap: 8px; padding: 0 11px 11px; }
.blended-shot { padding: 12px; border-radius: 6px; background: var(--paper-deep); }
.blended-shot-head { display: grid; grid-template-columns: 180px minmax(0,1fr); gap: 12px; }
.blended-shot-head > div:first-child span,.blended-shot-head > div:first-child strong,.blended-shot-head > div:first-child small { display: block; }
.blended-shot-head > div:first-child span { color: var(--ink-soft); font-size: .54rem; font-weight: 800; text-transform: uppercase; }
.blended-shot-head > div:first-child strong { margin-top: 3px; font-size: .74rem; }
.blended-shot-head > div:first-child small { margin-top: 3px; color: var(--ink-soft); font-size: .58rem; }
.blended-shot-grades { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 5px; }
.blended-shot-grades span { padding: 6px 8px; border-radius: 4px; background: rgba(24,49,38,.055); color: var(--ink-soft); font-size: .53rem; text-transform: uppercase; }
.blended-shot-grades b { display: block; margin-top: 3px; color: var(--ink); font-size: .58rem; }
.blended-shot-grades span[data-grade="sound"] b { color: var(--rough-dark); }
.blended-shot-grades span[data-grade="review"] b { color: var(--danger); }
.blended-shot-lesson { margin: 10px 0 0; color: var(--ink-soft); font-size: .7rem; line-height: 1.45; }
.blended-shot-lesson span { margin-right: 7px; color: var(--ink); font-size: .54rem; font-weight: 850; letter-spacing: .07em; text-transform: uppercase; }
.shot-evidence { margin-top: 9px; border-top: 1px solid var(--line); }
.shot-evidence > summary { padding: 8px 0 0; color: #476d84; font-size: .6rem; font-weight: 800; cursor: pointer; }
.shot-evidence-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 5px; margin-top: 9px; }
.shot-evidence-grid div { padding: 7px; background: rgba(255,255,255,.5); }
.shot-evidence-grid span,.shot-evidence-grid strong { display: block; }
.shot-evidence-grid span { color: var(--ink-soft); font-size: .5rem; text-transform: uppercase; }
.shot-evidence-grid strong { margin-top: 3px; font-size: .6rem; }
.shot-evidence > p { margin: 7px 0 0; font-size: .62rem; line-height: 1.4; }
.shot-evidence > small { display: block; margin-top: 7px; color: var(--ink-soft); font-size: .5rem; }
.appendix-shot-list { display: grid; gap: 7px; max-height: 420px; padding: 0 13px 13px; overflow-y: auto; }
.report-appendix > footer { padding: 9px 13px; border-top: 1px solid var(--line); color: var(--ink-soft); font-size: .52rem; }
.post-round-export {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 22px;
  margin-bottom: 4px;
  padding: 16px 18px;
  border: 1px solid rgba(71,109,132,.24);
  border-radius: 8px;
  background: linear-gradient(112deg, rgba(71,109,132,.11), rgba(255,255,255,.42));
}
.post-round-export .eyebrow { color: #476d84; }
.post-round-export strong { display: block; margin-top: 4px; font-family: var(--font-system); font-size: .9rem; }
.post-round-export p { margin: 4px 0 0; color: var(--ink-soft); font-size: .68rem; line-height: 1.4; }
.post-round-export-actions { display: flex; gap: 7px; }
.post-round-export-actions button { min-width: 132px; }
.post-round-export-actions button:disabled { cursor: wait; opacity: .5; }
.review-hole { border: 1px solid var(--line); border-radius: 7px; background: rgba(255,255,255,.18); overflow: hidden; }
.review-hole.needs-improvement { border-color: rgba(181,82,62,.34); background: rgba(250,238,230,.56); }
.review-hole.needs-improvement > summary { box-shadow: inset 5px 0 0 #b5523e; background: rgba(181,82,62,.055); }
.review-hole.needs-improvement .review-hole-title strong { color: #9d4938; }
.review-hole.needs-improvement .hole-review-count { background: #f2d8ca; color: #87402f; }
.review-hole.review-clean { border-color: rgba(50,105,72,.25); }
.review-hole.review-clean > summary { box-shadow: inset 5px 0 0 #4f805f; background: rgba(79,128,95,.045); }
.review-hole.review-clean .hole-review-count { background: #dfeadf; color: #315f42; }
.review-hole.review-neutral { border-color: rgba(91,105,96,.18); }
.review-hole.review-neutral .hole-review-count { background: #e8e9e3; color: #657068; }
.review-hole > summary { display: flex; align-items: center; gap: 12px; min-height: 66px; padding: 10px 14px; cursor: pointer; list-style: none; }
.review-hole > summary::-webkit-details-marker { display: none; }
.review-hole > summary::after { content: "+"; margin-left: 12px; font-size: 1.15rem; }
.review-hole[open] > summary::after { content: "−"; }
.review-hole-overview { flex: 1; min-width: 0; display: grid; grid-template-columns: 86px minmax(0, 1fr); align-items: center; gap: 12px; }
.review-hole-title strong, .review-hole-title small { display: block; }
.review-hole-title strong { font-family: var(--font-system); font-size: 1.08rem; }
.review-hole-title small { margin-top: 2px; color: var(--ink-soft); font-size: .65rem; }
.review-hole-scorecard { display: grid; grid-template-columns: .65fr 1fr .9fr 1.35fr; gap: 5px; }
.review-hole-scorecard > span { min-width: 0; padding: 7px 9px; border-radius: 6px; background: rgba(24,49,38,.055); }
.review-hole-scorecard small, .review-hole-scorecard b { display: block; }
.review-hole-scorecard small { color: var(--ink-soft); font-size: .56rem; letter-spacing: .055em; text-transform: uppercase; }
.review-hole-scorecard b { margin-top: 3px; overflow: hidden; font-family: var(--font-system); font-size: .76rem; text-overflow: ellipsis; white-space: nowrap; }
.review-hole-scorecard em { margin-left: 3px; color: var(--ink-soft); font-family: inherit; font-size: .62rem; font-style: normal; font-weight: 600; }
.hole-review-count { padding: 5px 8px; border-radius: 12px; background: var(--paper-deep); color: var(--ink-soft); font-size: .67rem; }
.hole-ai-insight {
  margin: 0 12px 9px;
  padding: 11px 13px;
  border: 1px solid rgba(71,109,132,.2);
  border-left: 3px solid #476d84;
  border-radius: 7px;
  background: #edf1ed;
}
.hole-ai-insight span { color: #476d84; font-size: .59rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.hole-ai-insight p { margin: 5px 0 0; font-size: .74rem; line-height: 1.5; white-space: pre-line; }
.ai-review-retry {
  min-height: 2rem;
  margin-top: 8px;
  padding: 5px 10px;
  border: 1px solid rgba(71,109,132,.35);
  border-radius: 999px;
  background: rgba(255,255,255,.72);
  color: var(--ink);
  font: inherit;
  font-size: .68rem;
  font-weight: 700;
  cursor: pointer;
}
.ai-review-retry:hover { background: #fff; border-color: rgba(71,109,132,.6); }
.review-shot { display: grid; grid-template-columns: 125px 170px 1fr; gap: 12px; margin: 0 12px 9px; padding: 13px; border-radius: 6px; background: var(--paper-deep); }
.review-shot.good { border-left: 3px solid var(--rough); }
.review-shot.bad { border-left: 3px solid var(--danger); }
.shot-verdict b, .shot-verdict strong { display: block; }
.shot-verdict b { color: var(--ink-soft); font-family: var(--font-system); font-size: .64rem; text-transform: uppercase; }
.shot-verdict strong { margin-top: 4px; font-size: .78rem; }
.shot-judgments { display: grid; gap: 5px; }
.shot-judgments span { display: flex; justify-content: space-between; gap: 8px; font-size: .7rem; }
.shot-judgments b { font-family: var(--font-system); font-size: .62rem; text-transform: uppercase; }
.shot-judgments .good b { color: var(--rough-dark); }
.shot-judgments .review b { color: var(--danger); }
.shot-strategy { grid-column: 2 / 4; display: flex; flex-wrap: wrap; gap: 8px; }
.shot-strategy span { display: inline-flex; align-items: center; gap: 7px; padding: 6px 8px; border-radius: 999px; background: rgba(24,49,38,.06); font-size: .68rem; }
.shot-strategy b { font-family: var(--font-system); font-size: .62rem; text-transform: uppercase; }
.strategy-score.excellent b, .strategy-score.sound b, .strategy-score.acceptable b { color: var(--rough-dark); }
.strategy-score.aggressive b, .strategy-score.poor b, .strategy-score.reckless b { color: var(--danger); }
.shot-path { grid-column: 3; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 8px; font-size: .71rem; }
.shot-path span { color: var(--ink-soft); }
.shot-path i { color: var(--danger); font-style: normal; }
.shot-reasons { grid-column: 3; display: flex; flex-wrap: wrap; gap: 6px; margin-top: -2px; }
.shot-reasons span { padding: 4px 7px; border: 1px solid var(--line); border-radius: 999px; background: var(--chalk); color: var(--ink-soft); font-size: .65rem; }
.shot-learning-context { grid-column: 3; padding: 9px 11px; border-left: 3px solid #476d84; background: rgba(71,109,132,.07); }
.shot-learning-context > span { display: block; margin-bottom: 4px; color: #476d84; font-family: var(--font-system); font-size: .52rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.shot-learning-context p { grid-column: auto; margin: 2px 0 0; color: var(--ink); font-size: .7rem; line-height: 1.42; }
.review-shot > p { grid-column: 3; margin: -3px 0 0; color: var(--ink-soft); font-size: .78rem; line-height: 1.45; }
.replay-hole-button { margin: 1px 12px 12px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 5px; background: transparent; font-size: .7rem; font-weight: 700; }
.shot-replay-library {
  margin-bottom: 12px;
  border: 1px solid rgba(49,90,59,.2);
  border-radius: 9px;
  background: rgba(255,255,255,.42);
  overflow: hidden;
}
.shot-replay-library > summary {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  cursor: pointer;
  font-family: var(--font-system);
  font-size: .72rem;
  font-weight: 800;
}
.shot-replay-library > summary small { color: var(--ink-soft); font-size: .58rem; font-weight: 600; }
.shot-replay-groups { display: grid; gap: 9px; max-height: 260px; padding: 0 12px 12px; overflow: auto; }
.shot-replay-groups section { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 7px; align-items: start; }
.shot-replay-groups section > strong { padding-top: 6px; color: var(--ink-soft); font-size: .58rem; }
.shot-replay-groups section > div { display: flex; flex-wrap: wrap; gap: 5px; }
.shot-replay-button {
  min-height: 28px;
  padding: 5px 8px;
  border: 1px solid rgba(49,90,59,.22);
  border-radius: 6px;
  background: rgba(255,255,255,.8);
  color: var(--ink);
  font-size: .58rem;
  font-weight: 700;
}
.shot-replay-button:hover:not(:disabled) { border-color: var(--rough-dark); background: rgba(142,189,119,.16); }
.shot-replay-button:disabled { opacity: .42; cursor: not-allowed; }
.shot-replay-button.inline { margin-top: 8px; }
.review-actions { position: sticky; bottom: 0; display: flex; justify-content: flex-end; gap: 8px; padding: 12px 0 2px; background: linear-gradient(transparent, var(--paper) 28%); }
.confirm-modal { width: min(480px, calc(100% - 28px)); }
.reference-image-modal { width: min(600px, calc(100% - 28px)); }
.reference-image-modal img { display: block; max-width: 100%; max-height: 70vh; margin: 18px auto 0; border-radius: 6px; object-fit: contain; }
.scorecard-grid { overflow-x: auto; margin-top: 22px; }
.scorecard-tally { position: sticky; left: 0; display: grid; grid-template-columns: repeat(5, minmax(56px, 1fr)); gap: 4px; min-width: 290px; margin-bottom: 12px; }
.scorecard-tally-item { display: grid; grid-template-columns: 26px auto; grid-template-rows: 28px auto; align-items: center; justify-content: center; column-gap: 4px; padding: 6px 3px 5px; border: 1px solid var(--line); border-radius: 6px; background: rgba(255,255,255,.28); }
.scorecard-tally-item .score-mark { width: 26px; height: 26px; font-size: .58rem; }
.scorecard-tally-item strong { font-family: var(--font-system); font-size: .88rem; line-height: 1; }
.scorecard-tally-item small { grid-column: 1 / -1; color: var(--ink-soft); font-size: .51rem; line-height: 1.15; text-align: center; white-space: nowrap; }
.score-table { width: 100%; border-collapse: collapse; font-size: .68rem; }
.score-table th, .score-table td { min-width: 38px; padding: 9px 5px; border: 1px solid var(--line); text-align: center; }
.score-table th:first-child, .score-table td:first-child { position: sticky; left: 0; min-width: 70px; background: var(--paper); text-align: left; }
.score-table .total { background: var(--paper-deep); font-weight: 700; }
.score-table .score-row td { height: 46px; padding: 5px; }
.review-score-value { display: flex !important; align-items: center; gap: 5px; }
.review-score-value .score-mark { flex: 0 0 auto; width: 23px; height: 23px; font-size: .64rem; }
.round-file-panel {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 22px;
  margin-top: 24px;
  padding: 20px 0 2px;
  border-top: 1px dashed rgba(24,49,38,.35);
}
.round-file-panel::before {
  content: "";
  position: absolute;
  top: -5px;
  left: 0;
  width: 42px;
  height: 9px;
  background:
    radial-gradient(circle at 4px 50%, var(--paper) 0 3px, transparent 3.5px)
    0 0 / 10px 9px repeat-x;
}
.round-file-panel h3 { margin: 4px 0 0; font-size: 1.05rem; }
.round-file-panel p {
  margin: 6px 0 0;
  color: var(--ink-soft);
  font-size: var(--type-ui);
  line-height: 1.45;
}
.round-file-panel p[data-tone="success"] { color: var(--rough-dark); }
.round-file-panel p[data-tone="error"] { color: var(--danger); }
.round-file-actions { display: flex; gap: 8px; }

/* One formal type system: consistent reading sizes across desktop and mobile. */
.loading-screen p,
.brand small,
.reset-game-button,
.eyebrow, .field-label,
.strategy-note span,
.round-nine-label, .round-hole span,
.map-hint, .map-toolbar button, .map-key,
.distance-badge, .close-enlarged-green,
.yards-left span, .club-picker span,
.coverage-key,
.game-master header small,
.gm-form > label,
.shot-result span,
.putt-analysis-grid b,
.score-strip span,
.editor-head, .putting-rate-grid label,
.review-stat span,
.shot-verdict b, .shot-judgments b,
.mobile-round-current small { font-size: var(--type-caption); }

.course-select,
.round-status, .profile-button,
.hole-title p,
.tee-switch button,
.conditions dt, .conditions dd, .conditions select,
.round-hole strong, .round-card-actions button,
.aim-readout span, .aim-readout strong,
.risk-title, .risk-card p,
.gm-message, .gm-command-help,
.gm-form input, .gm-form button, .gm-form .gm-spell-hint,
.gm-suggestions button,
.shot-result p,
.putt-analysis-grid > *, .putt-analysis dl div, .putt-analysis > p,
.score-strip button,
.modal-intro, .profile-driver,
.secondary-action, .primary-action,
.editor-name, .editor-guidance, .club-row, .percent-field span,
.putting-editor-heading small, .putting-editor > p,
.review-stat small,
.review-hole summary small, .hole-review-count,
.shot-verdict strong, .shot-judgments span, .shot-path,
.review-shot p, .replay-hole-button,
.score-table,
.mobile-round-nav > button { font-size: var(--type-ui); }

.strategy-note p,
.game-master header strong { font-size: var(--type-body); }

.eyebrow, .field-label,
.brand small, .strategy-note span,
.map-hint, .map-toolbar button, .map-key,
.reset-game-button { letter-spacing: .06em; }

button, select, input { font-family: inherit; }
strong, h1, h2, h3 { font-weight: 600; }
.yards-left strong, .hole-number { font-weight: 500; }
.score-strip strong, .round-card-heading strong,
.aim-readout strong, .round-hole strong { font-variant-numeric: tabular-nums; }

@media (max-width: 1050px) {
  .game-layout { grid-template-columns: 230px 1fr; }
  .shot-desk {
    grid-column: 1 / -1;
    border-top: 1px solid var(--line);
    border-left: 0;
  }
}

@media (max-width: 760px) {
  html, body { height: 100dvh; min-height: 100dvh; overflow: hidden; }
  body { background: linear-gradient(180deg, #cbd4b2 0%, #9cad84 52%, #7d8e66 100%); }
  .app-shell {
    height: 100dvh;
    min-height: 100dvh;
    padding: 0;
    overflow: hidden;
  }
  .topbar {
    position: sticky;
    top: 0;
    z-index: 20;
    height: 52px;
    border: 0;
    border-radius: 0;
    background: linear-gradient(180deg, rgba(250,248,239,.94), rgba(241,238,223,.88));
    backdrop-filter: blur(16px);
    box-shadow: 0 8px 20px rgba(20,37,28,.12);
  }
  .round-status { display: none; }
  .topbar { grid-template-columns: auto minmax(0, 1fr) auto; gap: 6px; padding-inline: 8px; }
  .brand-mark { width: 28px; height: 28px; font-size: .82rem; }
  .brand > span:last-child { display: none; }
  .course-select {
    max-width: 86px;
    padding: 5px 18px 5px 7px;
    border-radius: 7px;
    background: rgba(255,255,255,.62);
    font-size: .54rem;
  }
  .course-picker { width: 100%; gap: 0; }
  .map-version-status { display: none; }
  .topbar-actions { gap: 4px; }
  .fullscreen-button,
  .reset-game-button,
  .player-guide-button { font-size: 0; }
  .fullscreen-button { display: none; }
  .player-guide-button,
  .reset-game-button,
  .account-button,
  .profile-button {
    display: grid;
    place-items: center;
    box-sizing: border-box;
    width: 30px;
    height: 30px;
    min-height: 30px;
    padding: 0;
    border: 1px solid rgba(24,49,38,.13);
    border-radius: 10px;
    background: rgba(255,255,255,.56);
    color: var(--ink);
  }
  .player-guide-button::after,
  .reset-game-button::after { content: none; }
  .mobile-action-icon {
    display: block;
    width: 17px;
    height: 17px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
  }
  .desktop-action-label,
  .account-button > span,
  .profile-button > span { display: none; }
  .player-guide-button,
  .profile-button { color: #3f6685; }
  .account-button { color: #315a3b; }
  .game-layout {
    position: relative;
    display: grid;
    height: calc(100dvh - 52px);
    min-height: calc(100dvh - 52px);
    grid-template-columns: 1fr;
    grid-template-rows: 1fr;
    border-radius: 0;
    overflow: hidden;
  }
  .hole-brief,
  .shot-desk { display: none; }
  body.academy-active .mobile-shot-sheet,
  body.academy-active .mobile-round-nav,
  body.academy-active .map-top-controls { display: none; }
  body.academy-active .shot-desk {
    position: absolute;
    z-index: 24;
    top: 8px;
    right: 8px;
    bottom: 8px;
    left: 8px;
    display: block;
    padding: 0;
    overflow: auto;
    border: 0;
    border-radius: 14px;
    background: rgba(241,238,223,.96);
    box-shadow: 0 18px 50px rgba(13,30,21,.34);
    backdrop-filter: blur(14px);
  }
  body.academy-active .academy-decision-desk { padding: 15px; }
  body.academy-active .academy-decision-header h2 { font-size: 1rem; }
  body.academy-active .academy-choice { padding: 9px; }
  body.academy-active .academy-tradeoff-strip { grid-template-columns: repeat(2,minmax(0,1fr)); }
  body.academy-active .academy-learning-pair { grid-template-columns: 1fr; }
  .gm-voice-toggle { display: none; }
  .course-stage {
    order: 1;
    height: 100%;
    min-height: 100%;
    border-radius: 0;
  }
  .course-stage::before {
    opacity: .18;
    background-image:
      radial-gradient(rgba(255,255,255,.4) .6px, transparent .6px),
      linear-gradient(180deg, rgba(17,34,22,.08), transparent 26%, transparent 72%, rgba(17,34,22,.16));
    background-size: 5px 5px, 100% 100%;
  }
  .mobile-hole-overlay,
  .mobile-shot-sheet { display: block; }
  .mobile-shot-sheet { bottom: calc(50px + env(safe-area-inset-bottom)); }
  .mobile-shot-sheet.mobile-map-plan-moved[data-sheet-state="collapsed"] {
    top: var(--mobile-map-plan-top);
    bottom: auto;
  }
  .mobile-shot-toast { bottom: calc(48px + env(safe-area-inset-bottom)); }
  .mobile-hole-overlay {
    top: 8px;
    left: 8px;
    right: 8px;
  }
  .mobile-hole-band { width: 100%; }
  .mobile-hole-chip { min-width: 0; }
  .map-toolbar {
    top: 50px;
    left: 8px;
    right: 8px;
    justify-content: flex-end;
  }
  .map-actions {
    gap: 4px;
    margin-left: auto;
    justify-content: flex-end;
  }
  .map-toolbar button {
    min-height: 28px;
    padding: 4px 6px;
    font-size: .44rem;
    line-height: 1;
  }
  .map-actions button {
    border-radius: 999px;
    background: rgba(250,248,239,.92);
  }
  .map-key {
    top: 90px;
    bottom: auto;
    left: 8px;
    right: 8px;
    max-width: none;
    gap: 6px;
    justify-content: flex-start;
    flex-wrap: nowrap;
    overflow-x: auto;
    transform: none;
    scrollbar-width: none;
  }
  .map-key::-webkit-scrollbar { display: none; }
  .map-key {
    padding: 5px 8px;
    border-radius: 999px;
    background: rgba(250,248,239,.82);
  }
  .mobile-sheet-summary {
    gap: 4px;
    padding: 0 7px 7px;
  }
  .mobile-plan-head strong {
    font-size: .68rem;
  }
  .mobile-map-plan-drag {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 4px 7px;
    border: 1px solid rgba(24,49,38,.14);
    border-radius: 8px;
    background: rgba(255,255,255,.7);
    color: var(--ink-soft);
    font-family: var(--font-system);
    font-size: .48rem;
    font-weight: 800;
    touch-action: none;
    cursor: grab;
  }
  .mobile-map-plan-drag:active { cursor: grabbing; background: rgba(216,189,121,.24); }
  .mobile-plan-grid {
    gap: 4px;
  }
  .mobile-plan-card {
    padding: 5px 5px 4px;
  }
  .mobile-plan-card strong {
    font-size: .6rem;
  }
  .mobile-plan-copy {
    font-size: .48rem;
  }
  .mobile-shot-sheet .strategy-planner-heading { margin-bottom: 7px; }
  .mobile-shot-sheet .strategy-planner-heading strong { font-size: .7rem; }
  .mobile-shot-sheet .strategy-planner-heading small { font-size: .46rem; }
  .mobile-shot-sheet .strategy-choice-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
    overflow: visible;
    padding: 1px 1px 5px;
    scroll-snap-type: none;
  }
  .mobile-shot-sheet .strategy-choice-row[data-count="1"] { grid-template-columns: minmax(0, 1fr); }
  .mobile-shot-sheet .strategy-choice {
    min-width: 0;
  }
  .mobile-shot-sheet .strategy-choice-main strong { font-size: .66rem; }
  .mobile-shot-sheet .strategy-choice-main span { font-size: .56rem; }
  .mobile-shot-sheet .strategy-choice-main small { font-size: .49rem; }
  .mobile-gm-history {
    max-height: 160px;
  }
  .mobile-gm-history .gm-message {
    font-size: .5rem;
  }
  .map-key span {
    flex: 0 0 auto;
    white-space: nowrap;
  }
  .mobile-round-nav { position: fixed; z-index: 32; bottom: 0; left: 0; right: 0; display: grid; grid-template-columns: minmax(78px, 1fr) minmax(142px, 1.45fr) minmax(78px, 1fr); min-height: 64px; padding-bottom: env(safe-area-inset-bottom); border-top: 1px solid rgba(24,49,38,.2); background: var(--chalk); box-shadow: 0 -8px 24px rgba(24,49,38,.16); }
  .mobile-round-nav {
    min-height: 50px;
    height: calc(50px + env(safe-area-inset-bottom));
    background: linear-gradient(180deg, rgba(250,248,239,.96), rgba(241,238,223,.92));
    backdrop-filter: blur(14px);
  }
  .mobile-round-nav > button { min-width: 0; border: 0; background: transparent; color: var(--ink); font-size: .62rem; font-weight: 700; }
  .mobile-round-nav > button:first-child, .mobile-round-nav > button:last-child { display: flex; align-items: center; justify-content: center; gap: 7px; }
  .mobile-round-nav > button:disabled { color: rgba(24,49,38,.28); cursor: default; }
  .mobile-round-current {
    display: grid;
    place-content: center;
    margin: 6px 0;
    border-radius: 8px;
    background: linear-gradient(180deg, #274636, #183126) !important;
    color: var(--paper) !important;
    box-shadow: 0 8px 18px rgba(20,37,28,.22);
  }
  .mobile-round-current strong, .mobile-round-current small { display: block; }
  .mobile-round-current strong { font-family: var(--font-system); font-size: .68rem; }
  .mobile-round-current small { margin-top: 0; color: var(--fairway-light); font-family: var(--font-system); font-size: .48rem; font-weight: 500; letter-spacing: .03em; }
  .round-nav-modal { width: 100%; max-width: none; max-height: 70vh; margin: auto 0 0; border-radius: 14px 14px 0 0; }
  .round-nav-modal .modal-card { padding: 22px 16px calc(24px + env(safe-area-inset-bottom)); }
  .round-nav-modal .modal-card header h2 { font-size: 1.65rem; }
  .round-card-grid-expanded .round-nine-holes { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .round-card-grid-expanded .round-hole { height: 58px; }
  .map-key span { font-size: .62rem; }
  .map-hint { display: none; }
  .course-stage.enlarged-green {
    top: var(--green-view-top, 54px);
    right: 0;
    bottom: 0;
    left: 0;
    height: auto;
    min-height: 0;
    max-height: none;
    border: 0;
    border-radius: 0;
  }
  .course-stage.enlarged-green .green-toolbar {
    position: fixed;
    top: calc(var(--green-view-top, 54px) + 10px);
    grid-template-columns: minmax(82px, 1fr) auto auto 69px 34px;
    width: calc(100% - 20px);
    max-width: 370px;
  }
  .green-caddie-read-toggle { min-width: 61px; padding-inline: 6px; gap: 3px; font-size: .45rem; }
  .green-caddie-read-toggle svg { width: 16px; height: 16px; }
  .green-view-switch { width: 82px; }
  .green-view-switch button { padding-inline: 4px; }
  .green-zoom-control { padding-left: 4px; }
  .green-zoom-control > span { display: none; }
  .green-orientation-switch { width: 69px; }
  .green-player-view { width: 30px; min-height: 30px; padding: 0; }
  .green-player-view svg { width: 17px; height: 17px; }
  .green-player-view span { display: none; }
  .close-enlarged-green { width: 34px; }
  .green-caddie-read-panel {
    position: fixed;
    top: calc(var(--green-view-top, 54px) + 64px);
    right: 10px;
    width: calc(100% - 20px);
    padding: 10px 12px;
  }
  .green-putt-controls {
    position: fixed;
    bottom: calc(28px + env(safe-area-inset-bottom));
    grid-template-columns: minmax(0, 1fr) 94px;
    gap: 7px 10px;
    width: calc(100% - 20px);
    max-height: calc(100dvh - 170px);
    padding: 10px;
    border-radius: 10px;
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .green-putt-summary { grid-column: 1 / -1; display: grid; grid-template-columns: auto 1fr; align-items: baseline; gap: 2px 9px; }
  .green-putt-summary strong { font-size: .9rem; }
  .green-putt-summary small { grid-column: 1 / -1; }
  .green-putt-aim { grid-column: 1 / -1; }
  .green-full-shot-club { grid-column: 1 / -1; }
  .green-putt-controls.full-shot {
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) 82px;
    gap: 7px 8px;
    padding: 9px 10px;
  }
  .green-putt-controls.full-shot .green-full-shot-club { grid-column: 1; }
  .green-putt-controls.full-shot .green-putt-power { grid-column: 2; }
  .green-putt-controls.full-shot > button {
    grid-column: 3;
    min-width: 0;
    padding-inline: 7px;
  }
  .green-putt-drag-handle {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: 3px 7px;
    border: 1px solid rgba(255,255,255,.28);
    border-radius: 999px;
    background: rgba(255,255,255,.09);
    color: var(--fairway-light);
    font-family: var(--font-system);
    font-size: .5rem;
    font-weight: 800;
    letter-spacing: .03em;
    touch-action: none;
    cursor: grab;
  }
  .green-putt-drag-handle:active { cursor: grabbing; background: rgba(216,189,121,.2); }
  .green-putt-power { min-width: 0; }
  .green-putt-controls > button { min-height: 46px; padding-inline: 10px; }
  body.green-putt-panel-moved .green-putt-controls,
  body.green-aim-editing .green-putt-controls {
    top: var(--green-aim-top, 138px);
    bottom: auto;
  }
  body.green-aim-editing .green-putt-controls {
    grid-template-columns: minmax(0, 1fr);
    padding: 12px;
  }
  body.green-aim-editing .green-putt-summary,
  body.green-aim-editing .green-putt-power,
  body.green-aim-editing .green-putt-controls > button { display: none; }
  body.green-aim-editing .green-putt-aim { grid-column: 1; }
  body.green-aim-editing .green-putt-aim-heading label { color: var(--fairway-light); font-size: .6rem; }
  body.green-aim-editing .green-putt-aim input { height: 44px; font-size: 1rem; }
  body.green-aim-editing .green-putt-input-row button { min-height: 44px; padding-inline: 14px; font-size: .65rem; }
  body.green-aim-editing .green-putt-aim > small { margin-top: 6px; font-size: .56rem; white-space: normal; }
  .round-review-modal {
    width: 100%;
    height: 100dvh;
    max-height: 100dvh;
    margin: 0;
    overflow: hidden;
    border-radius: 0;
  }
  .round-review-modal .modal-card {
    display: grid;
    box-sizing: border-box;
    height: 100%;
    min-height: 0;
    grid-template-rows: auto auto minmax(0, 1fr);
    padding: 20px 16px calc(16px + env(safe-area-inset-bottom));
  }
  .round-review-modal .review-summary { margin: 16px 0; }
  .round-review-modal .review-list {
    min-height: 0;
    max-height: none;
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .player-guide-modal { width: 100%; max-height: 100vh; border-radius: 0; }
  .player-guide-modal .modal-card { padding: 20px 16px calc(18px + env(safe-area-inset-bottom)); }
  .player-guide-content { max-height: calc(100dvh - 160px); padding-right: 8px; }
  .guide-language-switch { width: 100%; grid-template-columns: 1fr 1fr; }
  .guide-actions { position: sticky; bottom: 0; background: var(--paper); }
  .player-login-modal { width: 100%; max-width: none; max-height: 100dvh; border-radius: 0; }
  .player-login-card { min-height: 100dvh; grid-template-columns: 1fr; grid-template-rows: 150px 1fr; }
  .login-yardage-mark { place-content: center; grid-auto-flow: column; gap: 10px; }
  .login-yardage-mark::before { inset: 12px 20%; }
  .login-yardage-mark::after { display: none; }
  .login-yardage-mark strong { margin: 0; font-size: 4rem; }
  .login-fields { align-self: start; padding: 28px 22px calc(30px + env(safe-area-inset-bottom)); }
  .login-fields h2 { max-width: 320px; font-size: 2.25rem; }
  .login-actions { grid-template-columns: 1fr; }
  .account-modal { width: calc(100% - 20px); }
  .license-dashboard-modal,
  #coach-dashboard-dialog {
    width: 100%;
    max-width: none;
    max-height: 100dvh;
    margin: 0;
    border-radius: 0;
  }
  .license-dashboard-modal .modal-card {
    min-height: 100dvh;
    max-height: 100dvh;
    padding: 20px 16px calc(24px + env(safe-area-inset-bottom));
  }
  .license-create-card > div { flex-direction: column; }
  .license-create-card button { width: 100%; }
  .coach-start-route ol { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .coach-start-route li,
  .coach-start-route li:first-child { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 8px; align-items: start; padding: 0; border-left: 0; }
  .coach-start-route li p { margin: 3px 0 0; }
  .coach-dashboard-help dl > div { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .license-roster article { grid-template-columns: minmax(0, 1fr); }
  .license-roster .license-row-actions { justify-content: flex-start; }
  .license-roster .license-row-actions button { flex: 1 1 120px; }
  .account-profile-card { grid-template-columns: auto minmax(0, 1fr); }
  .account-profile-card .secondary-action { grid-column: 1 / -1; width: 100%; }
  .feedback-modal { width: 100%; max-width: none; max-height: 100dvh; border-radius: 0; }
  .feedback-card { min-height: 100dvh; max-height: 100dvh; padding: 17px 13px calc(18px + env(safe-area-inset-bottom)); }
  .feedback-tabs { margin-top: 12px; }
  .feedback-panel { max-height: calc(100dvh - 116px); padding-top: 11px; }
  .feedback-rating-card { grid-template-columns: minmax(0, 1fr) auto; gap: 9px; padding: 12px; }
  .feedback-rating-card > div:first-child { grid-column: 1 / -1; }
  .feedback-rating-card > label { grid-column: 1 / -1; }
  .feedback-rating-stars button { font-size: 1.08rem; }
  .feedback-submit-form { padding: 12px; }
  .feedback-form-grid { grid-template-columns: 1fr; gap: 9px; }
  .feedback-form-heading { align-items: start; }
  .feedback-form-heading small { max-width: 120px; text-align: right; }
  .feedback-item-head { grid-template-columns: auto minmax(0,1fr); }
  .feedback-item-head time { grid-column: 2; }
  .feedback-thread-reply { grid-template-columns: 1fr; }
  .feedback-thread-reply button { justify-self: end; }
  .feedback-developer-toolbar { grid-template-columns: 1fr 1fr; }
  .feedback-developer-toolbar > div { grid-column: 1 / -1; }
  .feedback-developer-action { grid-template-columns: 1fr; }
  .feedback-developer-action button { justify-self: end; }
  .round-history-modal { width: 100%; max-width: none; max-height: 100dvh; border-radius: 0; }
  .round-history-modal .modal-card { min-height: 100dvh; padding: 20px 16px calc(24px + env(safe-area-inset-bottom)); }
  .round-history-intro { grid-template-columns: 1fr auto; column-gap: 12px; }
  .round-history-intro p { grid-row: auto; grid-column: 1 / -1; margin-bottom: 12px; }
  .round-history-list { max-height: calc(100dvh - 270px); }
  .history-round { grid-template-columns: 78px minmax(0, 1fr) 82px; grid-template-rows: auto auto; min-height: 112px; }
  .history-round-date { grid-row: 1 / 3; padding: 10px; }
  .history-round-course { padding: 12px; }
  .history-round-course strong { white-space: normal; }
  .history-round-stat { min-height: 50px; padding: 7px 10px; }
  .history-round-strokes { grid-column: 3; grid-row: 1; }
  .history-round-relative { grid-column: 2; grid-row: 2; border-top: 1px solid var(--line); }
  .history-round-management { grid-column: 3; grid-row: 2; border-top: 1px solid var(--line); }
  .history-replay-open { grid-column: 1 / -1; margin: 0 10px 10px; }
  .history-replay-holes { grid-template-columns: repeat(6, minmax(28px, 1fr)); }
  body.replay-mode-active { overflow: auto; }
  .replay-mode-screen { position: fixed; overflow-y: auto; }
  .replay-page-header { position: sticky; top: 0; z-index: 5; min-height: 72px; padding: 11px 14px; }
  .replay-page-header p { display: none; }
  .replay-page-header > button { min-width: auto; padding: 9px 11px; }
  .replay-page-layout { display: block; }
  .replay-map-column { min-height: auto; padding: 12px; }
  .replay-map-heading { padding-bottom: 10px; }
  .replay-map-heading strong { font-size: 1.05rem; }
  .replay-page-map { height: min(58vh, 520px); min-height: 330px; }
  .replay-page-result { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .replay-shot-rail { overflow: visible; border-left: 0; }
  .replay-rail-heading { position: static; }
  .replay-page-holes { grid-template-columns: repeat(9, 1fr); }
  .leaderboard-modal { width: 100%; max-width: none; max-height: 100dvh; border-radius: 0; }
  .leaderboard-modal .modal-card { min-height: 100dvh; padding: 20px 14px calc(24px + env(safe-area-inset-bottom)); }
  .leaderboard-intro { gap: 12px; margin-top: 16px; padding: 13px 14px; }
  .leaderboard-intro strong { display: none; }
  .leaderboard-head,
  .leaderboard-row { grid-template-columns: 48px minmax(0, 1fr) 58px 82px; }
  .leaderboard-wide-label { display: none; }
  .leaderboard-compact-label { display: inline; }
  .leaderboard-list { max-height: calc(100dvh - 250px); }
  .leaderboard-row { min-height: 68px; }
  .leaderboard-player { padding: 9px 8px; }
  .leaderboard-player strong { white-space: normal; }
  .leaderboard-player span { font-size: .49rem; white-space: normal; }
  .leaderboard-strokes { font-size: .86rem; }
  .leaderboard-management { font-size: 1rem; }
  .player-learning-modal { width: 100%; max-width: none; max-height: 100dvh; border-radius: 0; }
  .player-learning-modal .modal-card { min-height: 100dvh; padding: 20px 16px calc(24px + env(safe-area-inset-bottom)); }
  .player-learning-content { max-height: calc(100dvh - 150px); }
  .learning-ledger-head { grid-template-columns: 1fr; gap: 14px; }
  .learning-tally { display: grid; grid-template-columns: auto 1fr; gap: 4px 8px; padding: 12px 0 0; border-top: 1px solid rgba(71,109,132,.2); border-left: 0; text-align: left; }
  .learning-tally strong { grid-row: 1 / 3; }
  .learning-tally small { grid-column: 1 / -1; margin-top: 3px; }
  .learning-gate { grid-template-columns: 1fr auto 1fr; }
  .learning-gate > span { grid-column: 1 / -1; }
  .learning-form { padding: 14px 13px 12px; }
  .learning-form > header { align-items: flex-start; }
  .learning-form-rounds { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .learning-form-round { min-height: 78px; }
  .learning-pattern-list { grid-template-columns: 1fr; }
  .learning-coverage > div { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .scorecard-modal { width: 100%; max-height: 100vh; border-radius: 0; }
  .scorecard-modal .modal-card { padding: 20px 16px calc(24px + env(safe-area-inset-bottom)); }
  #competition-scorecard-dialog {
    height: 100dvh;
    max-height: 100dvh;
    margin: 0;
  }
  #competition-scorecard-dialog .modal-card {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    box-sizing: border-box;
    height: 100%;
    padding: calc(14px + env(safe-area-inset-top)) 14px calc(12px + env(safe-area-inset-bottom));
    overflow: hidden;
  }
  #competition-scorecard-dialog .modal-card > header {
    align-items: center;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--line);
  }
  #competition-scorecard-dialog .modal-card > header h2 {
    margin-top: 2px;
    font-size: 1.35rem;
  }
  #competition-scorecard-dialog .modal-close {
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    padding: 0;
  }
  #competition-scorecard-grid {
    min-height: 0;
    margin-top: 10px;
    padding-bottom: 8px;
    overflow: auto;
    overscroll-behavior: contain;
  }
  #competition-scorecard-dialog .competition-scorecard-table th,
  #competition-scorecard-dialog .competition-scorecard-table td { padding: 6px 8px; }
  #competition-scorecard-dialog .competition-round-summary { margin-top: 9px; padding: 10px; }
  #competition-scorecard-dialog .modal-actions {
    margin-top: 0;
    padding-top: 10px;
    border-top: 1px solid var(--line);
  }
  #competition-scorecard-dialog .modal-actions button {
    width: 100%;
    min-height: 44px;
  }
  .round-file-panel { grid-template-columns: 1fr; gap: 14px; }
  .round-file-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .round-file-actions button { min-width: 0; padding-inline: 8px; }
  .review-summary { grid-template-columns: 1fr 1fr; }
  .review-verdict { grid-template-columns: 1fr; gap: 8px; padding: 15px; }
  .review-verdict p { font-size: 1rem; }
  .review-score, .review-focus { grid-column: span 2; }
  .review-list { max-height: 62vh; }
  .blended-snapshot-grid { grid-template-columns: 1fr 1fr; }
  .blended-snapshot-grid > div { min-height: 82px; border-bottom: 1px solid var(--line); }
  .blended-snapshot-grid .snapshot-round,.blended-snapshot-grid .snapshot-focus { grid-column: span 2; }
  .blended-snapshot-grid .snapshot-focus { border-bottom: 0; }
  .round-story,.blended-learning-section,.blended-detail-section { padding: 14px; }
  .round-story > header { align-items: flex-start; flex-wrap: wrap; }
  .round-story > p { margin: 12px 0 0; font-size: .9rem; }
  .narrative-status { margin-left: 43px; }
  .remember-grid,.learning-moment-list,.pattern-grid,.next-round-section ol { grid-template-columns: 1fr; }
  .remember-grid article,.next-round-section li { min-height: 0; }
  .moment-separation { grid-template-columns: 1fr; }
  .blended-shot-head { grid-template-columns: 1fr; }
  .blended-shot-grades { grid-template-columns: 1fr 1fr; }
  .blended-shot-grades span:last-child { grid-column: span 2; }
  .shot-evidence-grid { grid-template-columns: 1fr 1fr; }
  .post-round-export { grid-template-columns: 1fr; gap: 12px; padding: 14px; }
  .post-round-export-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .post-round-export-actions button { min-width: 0; padding-inline: 8px; }
  .review-hole > summary { align-items: flex-start; flex-wrap: wrap; gap: 8px; padding: 11px; }
  .review-hole > summary::after { margin-left: 2px; }
  .review-hole-overview { flex-basis: 100%; grid-template-columns: 1fr; gap: 8px; }
  .review-hole-title { display: flex; align-items: baseline; gap: 7px; }
  .review-hole-title small { margin-top: 0; }
  .review-hole-scorecard { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-hole-scorecard > span { padding: 7px 8px; }
  .review-hole-scorecard b { font-size: .72rem; }
  .hole-review-count { margin-left: auto; }
  .hole-ai-insight { margin-inline: 10px; padding: 10px 11px; }
  .hole-ai-insight p { font-size: .7rem; }
  .review-shot { grid-template-columns: 1fr 1fr; gap: 10px; }
  .shot-strategy, .shot-path, .shot-reasons, .shot-learning-context, .review-shot > p { grid-column: 1 / -1; }
  .review-actions { flex-direction: column-reverse; }
  .review-actions button { width: 100%; }
}

@media (max-width: 430px) {
  .academy-principle { gap: 6px; padding-inline: 6px; }
  .academy-principle span { font-size: .56rem; }
  .academy-situation { grid-template-columns: 1fr 1fr; }
  .academy-situation > span:last-child { grid-column: 1 / -1; }
}

@media (max-width: 360px) {
  .brand { gap: 0; }
  .brand strong { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}

@media (max-width: 700px) {
  .mobile-shot-carousel {
    left: 10px;
    right: 10px;
    bottom: auto;
    width: auto;
    max-width: 420px;
    height: 286px;
    margin-inline: auto;
    padding: 0;
    border: 1px solid rgba(255,255,255,.7);
    border-radius: 18px;
    background: rgba(246,248,240,.98);
    box-shadow: 0 18px 46px rgba(15,38,25,.28);
    pointer-events: auto;
    overflow: hidden;
    transition: top .24s ease, bottom .24s ease, transform .24s ease;
  }
  .mobile-shot-carousel::before { display: none; }
  .mobile-shot-carousel[data-dock="top"] { top: var(--mobile-carousel-safe-top, 48px); bottom: auto; transform: none; }
  .mobile-shot-carousel[data-dock="bottom"] { top: auto; bottom: calc(96px + env(safe-area-inset-bottom)); transform: none; }
  .mobile-shot-carousel[data-flight="true"] {
    height: 58px;
    border-color: rgba(255,255,255,.86);
    background: rgba(248,250,244,.96);
    box-shadow: 0 10px 30px rgba(15,38,25,.22);
    transition: height .2s ease, top .24s ease, bottom .24s ease, transform .24s ease;
  }
  .mobile-shot-carousel[data-flight="true"] .mobile-carousel-viewport { display: none; }
  .mobile-shot-carousel[data-flight="true"] .mobile-carousel-header { min-height: 56px; border-bottom: 0; }
  .mobile-shot-carousel[data-flight="true"] .mobile-carousel-dock { pointer-events: none; }
  .mobile-shot-carousel[data-flight="true"] .mobile-carousel-dock > span {
    width: 9px;
    height: 9px;
    background: #b5523e;
    box-shadow: 0 0 0 0 rgba(181,82,62,.38);
    animation: mobile-flight-live 1.15s ease-out infinite;
  }
  .mobile-shot-carousel[data-flight="true"] .mobile-carousel-dock small,
  .mobile-shot-carousel[data-flight="true"] .mobile-carousel-nav button { display: none; }
  .mobile-shot-carousel[data-flight="true"] .mobile-carousel-nav { grid-template-columns: 42px; justify-content: end; }
  .mobile-shot-carousel[data-flight="true"] .mobile-carousel-nav span {
    padding: 6px 8px;
    border-radius: 999px;
    background: #17372b;
    color: #fffdf3;
    letter-spacing: .08em;
  }
  @keyframes mobile-flight-live {
    70%, 100% { box-shadow: 0 0 0 9px rgba(181,82,62,0); }
  }
  .mobile-shot-carousel[data-dragging="true"] {
    top: var(--mobile-carousel-drag-top);
    bottom: auto;
    transform: none;
    transition: none;
  }
  .mobile-carousel-header {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 54px minmax(0, 1fr);
    align-items: center;
    min-height: 52px;
    padding: 5px 7px;
    border-bottom: 1px solid rgba(23,55,43,.1);
    background: linear-gradient(180deg, #f9faf4, #e9eee4);
  }
  .mobile-carousel-dock {
    display: grid;
    place-items: center;
    align-self: center;
    width: 50px;
    height: 36px;
    gap: 2px;
    padding: 3px 5px;
    border: 1px solid rgba(23,55,43,.1);
    border-radius: 9px;
    background: rgba(255,255,255,.68);
    color: var(--ink-soft);
    touch-action: none;
    cursor: grab;
  }
  .mobile-carousel-dock:active { cursor: grabbing; }
  .mobile-carousel-dock > span {
    width: 24px;
    height: 4px;
    border-radius: 999px;
    background: linear-gradient(90deg, #315d43, #8ebd77);
  }
  .mobile-carousel-dock small {
    font-size: .46rem;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
  }
  .mobile-carousel-heading { min-width: 0; padding-inline: 9px; }
  .mobile-carousel-heading span,
  .mobile-carousel-heading strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .mobile-carousel-heading .eyebrow { font-size: .45rem; }
  .mobile-carousel-heading strong { margin-top: 2px; font-size: .72rem; }
  .mobile-carousel-nav { display: grid; grid-template-columns: 30px 28px 30px; align-items: center; justify-self: end; }
  .mobile-carousel-nav button {
    width: 30px;
    height: 34px;
    padding: 0;
    border: 0;
    border-radius: 9px;
    background: rgba(255,255,255,.8);
    color: var(--ink);
    font-size: .9rem;
  }
  .mobile-carousel-nav button:disabled { color: rgba(23,55,43,.22); }
  .mobile-carousel-nav span { color: var(--ink-soft); font: 700 .48rem var(--font-data); text-align: center; }
  .mobile-carousel-viewport {
    height: 232px;
    overflow: hidden;
    outline: none;
    touch-action: pan-x;
  }
  .mobile-carousel-viewport:focus-visible { box-shadow: inset 0 0 0 3px rgba(71,109,132,.18); }
  .mobile-carousel-track {
    height: 100%;
    transition: transform .26s cubic-bezier(.22,.72,.22,1);
  }
  .mobile-carousel-page {
    box-sizing: border-box;
    height: 100%;
    padding: 10px 12px 11px;
    overflow: hidden auto;
    background:
      linear-gradient(90deg, rgba(49,93,67,.05) 1px, transparent 1px) 22px 0 / 52px 100%,
      rgba(246,248,240,.98);
    scrollbar-width: thin;
  }
  .mobile-carousel-page[aria-hidden="true"] { visibility: hidden; }
  .mobile-plan-page .mobile-plan-head { align-items: end; }
  .mobile-plan-page .mobile-plan-grid { min-width: 88px; }
  .mobile-plan-page .mobile-plan-copy { margin: 6px 0 8px; }
  .mobile-plan-page .mobile-sheet-header { padding-top: 7px; border-top: 1px solid rgba(23,55,43,.08); }
  .mobile-club-power-page { display: grid; align-content: center; gap: 12px; }
  .mobile-club-power-page .mobile-club-section,
  .mobile-club-power-page .mobile-power-section { padding: 0; }
  .mobile-caddie-section .mobile-gm-history { max-height: 142px; }
  .mobile-caddie-section .mobile-gm-history .gm-message { padding: 8px 9px; font-size: .61rem; line-height: 1.42; }
  .mobile-shot-carousel .strategy-planner { padding: 10px 12px; }
  .mobile-shot-carousel .strategy-choice-row { margin-top: 9px; }
  .mobile-shot-carousel .mobile-adjustment-section { display: grid; align-content: center; gap: 12px; padding: 12px; }
  .mobile-shot-carousel .mobile-sheet-actions { padding: 0; }
}

/* Comfort pass — a quiet caddie desk with the course kept visually primary. */
:root {
  --ink: #17372b;
  --ink-soft: #657269;
  --paper: #eef1e8;
  --paper-deep: #e1e7dc;
  --chalk: #fbfcf7;
  --danger: #ae5a45;
  --blue: #476d84;
  --line: rgba(23, 55, 43, .11);
  --shadow: 0 20px 55px rgba(24, 45, 33, .12);
  --font-display: "Avenir Next", "Segoe UI", Helvetica, Arial, sans-serif;
  --font-data: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}

body {
  color: var(--ink);
  background:
    radial-gradient(circle at 18% 8%, rgba(255,255,255,.68), transparent 30%),
    linear-gradient(145deg, #dfe5da, #cbd5c8);
  line-height: 1.45;
}

h1, h2, h3,
.brand strong,
.strategy-planner-heading strong,
.game-master header strong {
  font-family: var(--font-display);
  letter-spacing: -.018em;
}

.app-shell {
  width: min(100%, 1800px);
  margin: 0 auto;
  padding: 16px;
}

.topbar {
  height: 70px;
  margin-bottom: 12px;
  padding-inline: 22px;
  border-color: rgba(255,255,255,.72);
  border-radius: 16px;
  background: rgba(251,252,247,.88);
  box-shadow: 0 10px 32px rgba(24,45,33,.08);
  backdrop-filter: blur(18px);
}

.brand-mark {
  width: 40px;
  height: 40px;
  border: 0;
  background: linear-gradient(145deg, #214936, #122d23);
  box-shadow: 0 7px 16px rgba(23,55,43,.2);
}

.course-select {
  width: 220px;
  min-height: 36px;
  padding-inline: 12px 34px;
  border-radius: 9px;
  background-color: rgba(255,255,255,.7);
}

.fullscreen-button,
.reset-game-button {
  border-bottom-color: transparent;
  transition: color .18s ease, border-color .18s ease;
}

.profile-button {
  padding: 5px 8px 5px 5px;
  border-radius: 999px;
  transition: background-color .18s ease;
}

.profile-button:hover { background: rgba(23,55,43,.06); }

.game-layout {
  min-height: calc(100vh - 114px);
  grid-template-columns: minmax(240px, .72fr) minmax(480px, 1.42fr) minmax(410px, 1.12fr);
  gap: 12px;
  overflow: visible;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.panel,
.course-stage {
  border: 1px solid rgba(255,255,255,.58);
  border-radius: 16px;
  box-shadow: 0 14px 38px rgba(24,45,33,.09);
}

.panel {
  padding: clamp(18px, 1.65vw, 25px);
  background: rgba(238,241,232,.95);
}

.hole-brief,
.shot-desk {
  border-right: 1px solid rgba(255,255,255,.58);
  border-left: 1px solid rgba(255,255,255,.58);
}

.hole-title { margin: 22px 0 24px; }
.hole-number { color: #4c7658; }
.hole-title h1 { line-height: 1.08; }
.hole-title p { margin-top: 8px; line-height: 1.35; }

.tee-switch {
  padding: 4px;
  border: 0;
  border-radius: 11px;
  background: rgba(23,55,43,.06);
}

.tee-switch button {
  min-height: 36px;
  border-radius: 8px;
}

.strategy-note {
  margin: 22px 0;
  padding: 16px 0 18px;
  border-color: rgba(23,55,43,.1);
}

.strategy-note p {
  min-height: 0;
  margin-top: 9px;
  font-size: .86rem;
  line-height: 1.48;
}

.conditions div { padding: 10px 0; }
.hole-progress { margin-top: 22px; }
.round-hole { border-radius: 5px; }
.score-strip { margin-top: 12px; padding-top: 15px; }

.course-stage {
  min-height: 680px;
  overflow: hidden;
  background: #9eb58e;
}

.map-toolbar { top: 16px; left: 16px; right: 16px; }
.map-hint,
.map-toolbar button,
.map-key {
  border-color: rgba(255,255,255,.62);
  border-radius: 10px;
  background: rgba(251,252,247,.88);
  box-shadow: 0 8px 22px rgba(24,45,33,.12);
}

.map-toolbar button {
  min-height: 27px;
  padding: 5px 10px;
  line-height: 1.1;
  transition: background-color .18s ease, transform .18s ease;
}

.map-hint {
  min-height: 27px;
  padding: 5px 10px;
  line-height: 1.1;
}

.map-actions { gap: 5px; }

.map-toolbar button:hover {
  background: #fff;
  transform: translateY(-1px);
}

.map-key { bottom: 14px; padding: 8px 11px; }

.shot-desk {
  gap: 10px;
  padding: 18px;
  scrollbar-color: rgba(23,55,43,.2) transparent;
}

.desktop-shot-plan,
.desktop-strategy-planner,
.desktop-shot-controls,
.desktop-shot-entry,
.game-master {
  border-color: transparent;
  border-radius: 13px;
  background: rgba(251,252,247,.72);
  box-shadow: inset 0 0 0 1px rgba(23,55,43,.07), 0 6px 18px rgba(24,45,33,.035);
}

.desktop-shot-plan { padding: 12px; }
.shot-heading { padding-bottom: 0; border-bottom: 0; }
.shot-heading h2 { margin-top: 5px; font-size: 1.18rem; }
.yards-left strong {
  font-family: var(--font-data);
  font-size: 1.72rem;
  letter-spacing: -.06em;
}

.desktop-strategy-planner { padding: 12px; }
.strategy-planner-heading { margin-bottom: 9px; }
.strategy-planner-heading strong { margin-top: 4px; font-size: .92rem; }
.strategy-planner-heading small { max-width: 135px; font-size: .6rem; line-height: 1.3; }
.strategy-choice-row { gap: 8px; }

.strategy-choice {
  border-color: rgba(23,55,43,.09);
  border-radius: 11px;
  background: rgba(255,255,255,.72);
  box-shadow: 0 5px 14px rgba(24,45,33,.04);
  transition: border-color .18s ease, background-color .18s ease, box-shadow .18s ease;
}

.strategy-choice.selected {
  border-color: rgba(71,109,132,.55);
  background: rgba(71,109,132,.1);
  box-shadow: 0 0 0 2px rgba(71,109,132,.1), 0 8px 18px rgba(24,45,33,.07);
  transform: none;
}

.strategy-choice-head { padding: 8px 8px 0 10px; }
.strategy-choice-head span { font-size: .52rem; }
.strategy-help { width: 24px; height: 24px; background: rgba(255,255,255,.78); }
.strategy-choice-main { min-height: 72px; padding: 5px 10px 10px; }
.strategy-choice-main strong { font-size: .78rem; }
.strategy-choice-main span,
.strategy-choice-main small {
  display: -webkit-box;
  white-space: normal;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-height: 1.3;
}
.strategy-choice-main span { margin-top: 5px; font-size: .61rem; }
.strategy-choice-main small { margin-top: 4px; font-size: .55rem; }

.game-master > header { padding: 11px 12px; border-bottom-color: rgba(23,55,43,.08); }
.gm-mark { width: 34px; height: 34px; background: #476d84; }
.game-master header strong { font-size: .92rem; }
.gm-conversation { height: 168px; padding: 11px 12px; }
.gm-message {
  max-width: 94%;
  margin-bottom: 8px;
  padding: 10px 12px;
  border-radius: 5px 12px 12px 12px;
  background: #e5e2d2;
  font-size: .79rem;
  line-height: 1.52;
}
.gm-message.player { border-radius: 12px 5px 12px 12px; }
.gm-message.coaching {
  border-left: 3px solid rgba(71,109,132,.46);
  background: #edf1ed;
}
.gm-feedback-stack {
  display: grid;
  gap: 8px;
  padding: 0 12px 12px;
}
.gm-feedback-stack[hidden] { display: none; }
.gm-feedback-card {
  padding: 10px 11px;
  border-radius: 10px;
}
.gm-review-item > span {
  display: block;
  margin-bottom: 5px;
  font-size: .53rem;
  font-weight: 800;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.gm-review-item + .gm-review-item { margin-top: 9px; padding-top: 9px; border-top: 1px solid rgba(40,76,59,.12); }
.gm-feedback-card p { margin: 0; font-size: .74rem; line-height: 1.48; }
.ai-caddie-feedback {
  border: 1px solid rgba(71,109,132,.18);
  background: #edf1ed;
}
.ai-caddie-feedback summary { color: #476d84; cursor: pointer; font-size: .65rem; font-weight: 800; }
.ai-caddie-feedback summary + p { margin-top: 8px; }
.standalone-ai-caddie {
  flex: 0 0 auto;
  border-radius: 13px;
  box-shadow: inset 0 0 0 1px rgba(71,109,132,.04), 0 6px 18px rgba(24,45,33,.035);
}
.standalone-ai-caddie[hidden] { display: none; }
#desktop-ai-caddie-feedback { padding: 12px 14px; }
#mobile-ai-caddie-feedback { margin: 0; padding: 12px 14px; }
.immediate-result {
  border: 1px solid rgba(40,76,59,.18);
  background: #f1eadb;
}
.immediate-result .gm-review-item > span { color: #8b5b31; }
.immediate-result strong {
  display: block;
  margin-top: 8px;
  padding: 10px 11px;
  border-radius: 8px;
  background: #284c3b;
  color: #fffdf4;
  font-size: .84rem;
  line-height: 1.4;
  letter-spacing: .01em;
}
.compact-in-play { display: grid; gap: 9px; }
.compact-in-play .in-play-next > span,
.compact-in-play .in-play-event > span {
  display: block;
  color: #627268;
  font-size: .52rem;
  font-weight: 850;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.compact-in-play .in-play-next > strong { display: block; margin-top: 4px; padding: 0; background: transparent; color: var(--ink); font-size: .84rem; }
.compact-in-play .in-play-next p { margin: 4px 0 0; color: var(--ink-soft); font-size: .67rem; line-height: 1.35; }
.in-play-previous { border-top: 1px solid rgba(40,76,59,.12); padding-top: 8px; }
.in-play-previous summary { cursor: pointer; color: var(--ink-soft); font-size: .62rem; font-weight: 750; }
.in-play-previous summary b { margin-left: 5px; color: #476d84; font-size: .56rem; }
.in-play-previous ul { margin: 8px 0 0; padding-left: 16px; color: var(--ink-soft); font-size: .62rem; line-height: 1.45; }
.in-play-event { padding: 8px 9px; border-left: 3px solid #a04d39; background: rgba(160,77,57,.09); }
.in-play-event strong { display: block; margin-top: 3px; padding: 0; background: transparent; color: var(--ink); font-size: .72rem; }
.in-play-strategy { padding-top: 9px; border-top: 1px solid rgba(40,76,59,.12); }
.in-play-strategy > span { display: block; margin-bottom: 6px; color: #315d43; font-size: .52rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.compact-in-play .in-play-strategy .strategy-choice-row { margin: 0; }

.desktop-shot-controls { gap: 7px; padding: 9px 12px; }
.desktop-control-section { gap: 5px; }
.club-picker {
  min-height: 34px;
  border-color: rgba(23,55,43,.1);
  border-radius: 10px;
  background: rgba(255,255,255,.78);
  box-shadow: none;
}
.club-picker:focus-within { box-shadow: 0 0 0 3px rgba(71,109,132,.12); }
.club-picker select { padding: 8px 12px; }
.desktop-power-slider { height: 18px; }

.desktop-shot-entry > header { padding: 12px 14px 0; }
.gm-form { padding: 9px 12px 10px; border-top: 0; background: transparent; }
.gm-command-help { margin-bottom: 8px; font-size: .68rem; }
.gm-command {
  gap: 5px;
  padding: 4px;
  border: 1px solid rgba(23,55,43,.18);
  border-radius: 10px;
  box-shadow: none;
}
.gm-form input { padding: 9px; font-size: .72rem; }
.gm-form button { min-width: 86px; border-radius: 7px; }
.gm-suggestions { gap: 7px; padding: 0 12px 11px; }
.gm-suggestions button { padding: 6px 9px; border-radius: 999px; font-size: .58rem; }

.shot-result {
  margin-top: 2px;
  padding: 10px 12px;
  border: 0;
  border-radius: 11px;
  background: rgba(142,189,119,.13);
}

.hole-brief .shot-result {
  grid-template-columns: 1fr;
  align-items: start;
  gap: 4px;
  margin: 14px 0 0;
  padding: 12px;
  background: rgba(142,189,119,.16);
  box-shadow: inset 0 0 0 1px rgba(23,55,43,.07);
}
.hole-brief .shot-result strong {
  white-space: normal;
  font-size: .78rem;
  line-height: 1.35;
}
.hole-brief .shot-result p {
  margin-top: 2px;
  line-height: 1.42;
}
.hole-brief .declare-unplayable {
  justify-self: start;
}

.modal { border-radius: 16px; background: var(--paper); }
.primary-action, .secondary-action { border-radius: 9px; }

@media (min-width: 1181px) {
  .app-shell {
    width: 100%;
    max-width: none;
    padding: 10px;
  }

  .topbar {
    height: 64px;
    margin-bottom: 8px;
  }

  .game-layout {
    min-height: calc(100vh - 92px);
    /* Retain 75% of the former flexible map column and divide the released
       width evenly between the 220px and 380px information rails. */
    grid-template-columns:
      calc(12.5% + 143px)
      calc(75% - 462px)
      calc(12.5% + 303px);
    gap: 8px;
  }

  .hole-brief { padding-inline: 16px; }
  .shot-desk { padding: 14px; }
  .course-stage { min-height: calc(100vh - 92px); }
}

@media (max-width: 1180px) and (min-width: 761px) {
  .game-layout { grid-template-columns: 238px minmax(480px, 1fr); }
  .shot-desk {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: 1fr 1.35fr;
    align-items: start;
    border-top: 1px solid rgba(255,255,255,.58);
  }
  .desktop-shot-plan,
  .game-master { grid-column: 1; }
  .desktop-strategy-planner,
  .desktop-shot-controls { grid-column: 2; }
  .desktop-shot-entry { grid-column: 1 / -1; }
  body.academy-active .game-layout {
    height: calc(100vh - 92px);
    min-height: calc(100vh - 92px);
    grid-template-columns: minmax(420px,1fr) minmax(360px,430px);
    overflow: hidden;
  }
  body.academy-active .hole-brief { display: none; }
  body.academy-active .course-stage { grid-column: 1; min-height: 0; }
  body.academy-active .shot-desk {
    grid-column: 2;
    display: block;
    min-height: 0;
    overflow-y: auto;
    border-top: 0;
    border-left: 1px solid rgba(255,255,255,.58);
  }
}

@media (max-width: 760px) {
  body { background: linear-gradient(180deg, #cad7c2 0%, #9db38d 56%, #7f956f 100%); }
  .app-shell { width: 100%; padding: 0; }
  .topbar {
    height: 54px;
    margin: 0;
    padding-inline: 10px;
    border-radius: 0;
    background: rgba(251,252,247,.91);
  }
  .brand-mark { width: 28px; height: 28px; }
  #account-monogram,
  #account-name,
  #profile-monogram,
  #profile-button-name { display: none; }
  .game-layout {
    height: calc(100dvh - 54px);
    min-height: calc(100dvh - 54px);
    grid-template-columns: 1fr;
    grid-template-rows: 1fr;
    gap: 0;
  }
  .hole-brief,
  .shot-desk { display: none; }
  .course-stage {
    height: 100%;
    min-height: 100%;
    border: 0;
    border-radius: 0;
    box-shadow: none;
  }
  .course-select { width: 100%; max-width: none; }
  .map-top-controls {
    position: absolute;
    z-index: 8;
    top: 8px;
    left: 8px;
    right: 8px;
    display: grid;
    gap: 8px;
    pointer-events: none;
  }
  body.competition-active .map-top-controls {
    top: 60px;
  }
  .map-top-controls .mobile-hole-overlay {
    position: static;
    inset: auto;
  }
  .map-toolbar {
    display: none;
  }
  .mobile-course-mode-switch {
    display: inline-flex;
    justify-self: stretch;
    align-self: stretch;
    width: 100%;
    height: 32px;
    margin: 0;
    padding: 2px;
    pointer-events: auto;
  }
  .mobile-course-mode-switch button {
    flex: 1 1 0;
    min-width: 0;
    min-height: 26px;
    padding: 2px 4px;
    overflow: hidden;
    font-size: .43rem;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .mobile-course-mode-switch button i { width: 5px; height: 5px; margin-right: 2px; }
  body.live-round-view .mobile-shot-sheet { display: none; }
  body.live-round-view .mobile-hole-overlay { pointer-events: none; }
  body.live-round-view .mobile-hole-overlay button { pointer-events: auto; }
  .live-round-panel {
    left: 10px;
    bottom: calc(58px + env(safe-area-inset-bottom));
    width: min(330px, calc(100% - 20px));
    padding: 11px 12px;
    border-radius: 11px;
  }
  .live-round-panel[data-dock="top"] { top: 48px; bottom: auto; }
  .live-round-panel[data-dock="bottom"] { top: auto; bottom: calc(58px + env(safe-area-inset-bottom)); }
  .live-round-panel[data-dock="free"] { right: auto; bottom: auto; }
  .live-round-panel[data-dragging="true"] { transition: none; user-select: none; }
  #live-round-move,
  #live-round-collapse {
    display: inline-flex;
    min-height: 22px;
    padding: 2px 7px;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(63,102,133,.2);
    border-radius: 999px;
    background: rgba(255,255,255,.72);
    color: var(--blue);
    font-size: .48rem;
    font-weight: 850;
  }
  #live-round-move {
    cursor: grab;
    touch-action: none;
  }
  #live-round-move:active { cursor: grabbing; }
  #live-round-collapse { touch-action: manipulation; }
  .live-round-panel[data-collapsed="true"] {
    width: min(205px, calc(100% - 20px));
    padding: 7px 9px;
    border-radius: 999px;
    cursor: pointer;
  }
  .live-round-panel[data-collapsed="true"] > strong,
  .live-round-panel[data-collapsed="true"] > p,
  .live-round-panel[data-collapsed="true"] > .live-round-facts,
  .live-round-panel[data-collapsed="true"] > .live-round-actions,
  .live-round-panel[data-collapsed="true"] .live-round-head-actions > small,
  .live-round-panel[data-collapsed="true"] #live-round-move { display: none; }
  .live-round-panel[data-collapsed="true"] header { gap: 7px; }
  .live-round-panel[data-collapsed="true"] .live-round-head-actions { margin-left: auto; }
  .live-round-panel > strong { margin-top: 6px; font-size: .84rem; }
  .live-round-panel > p { margin-bottom: 7px; font-size: .56rem; }
  .live-map-measure-hint {
    top: 84px;
    max-width: calc(100% - 20px);
    padding: 6px 8px;
    font-size: .5rem;
  }
  body.competition-active .live-map-measure-hint { top: 136px; }
  body.challenge-active:not(.green-view-open) .live-map-measure-hint { top: 236px; }
  .live-round-facts span { padding: 6px 7px; }
  .map-top-controls .mobile-hole-band,
  .map-top-controls .map-actions { pointer-events: auto; }
  .mobile-shot-sheet {
    z-index: 9;
    bottom: calc(50px + env(safe-area-inset-bottom));
    padding: 0 10px calc(10px + env(safe-area-inset-bottom));
  }
  .course-stage.mobile-shot-setup-open .map-top-controls,
  .course-stage.mobile-shot-setup-open .map-key {
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
  }
  .mobile-sheet-handle,
  .mobile-sheet-summary,
  .mobile-sheet-body {
    background: linear-gradient(180deg, rgba(251,252,247,.985), rgba(238,241,232,.97));
    box-shadow: 0 -16px 42px rgba(20,42,29,.22);
  }
  .mobile-sheet-handle {
    padding: 7px 0 5px;
    border-radius: 18px 18px 0 0;
  }
  .mobile-sheet-handle span { width: 38px; height: 4px; background: rgba(23,55,43,.2); }
  .mobile-sheet-summary { gap: 8px; padding: 0 11px 11px; }
  .mobile-plan-head strong { font-size: .76rem; }
  .mobile-play-shot { min-height: 34px; padding-inline: 12px; border-radius: 9px; }
  .mobile-plan-grid { gap: 7px; }
  .mobile-plan-card { padding: 8px 8px 7px; border: 0; border-radius: 10px; background: rgba(225,231,220,.72); }
  .mobile-plan-card span { font-size: .48rem; }
  .mobile-plan-card strong { margin-top: 4px; font-size: .68rem; }
  .mobile-plan-copy { font-size: .54rem; line-height: 1.38; }
  .mobile-shot-sheet[data-sheet-state="full"] .mobile-sheet-body {
    max-height: min(79dvh, 700px);
    padding: 0 11px 11px;
  }
  .mobile-sheet-body { padding-inline: 11px; border-radius: 0 0 18px 18px; }
  .mobile-sheet-section { padding: 10px 0; border-top-color: rgba(23,55,43,.08); }
  .mobile-sheet-grid { gap: 6px; margin-top: 8px; }
  .mobile-sheet-grid > div { padding: 7px; border-radius: 9px; background: rgba(225,231,220,.68); }
  .mobile-sheet-grid span { font-size: .48rem; }
  .mobile-sheet-grid strong { margin-top: 4px; font-size: .66rem; }
  .mobile-projection-copy { margin-top: 7px; font-size: .54rem; line-height: 1.36; }
  .mobile-shot-sheet .strategy-planner-heading { margin-bottom: 9px; }
  .mobile-shot-sheet .strategy-planner-heading strong { font-size: .78rem; }
  .mobile-shot-sheet .strategy-planner-heading small { font-size: .52rem; }
  .mobile-shot-sheet .strategy-choice-row { gap: 6px; padding-bottom: 5px; }
  .mobile-shot-sheet .strategy-choice-head { padding: 5px 5px 0 6px; }
  .mobile-shot-sheet .strategy-choice-head span { font-size: .43rem; }
  .mobile-shot-sheet .strategy-help { width: 24px; height: 24px; }
  .mobile-shot-sheet .strategy-choice-main { min-height: 64px; padding: 3px 6px 8px; }
  .mobile-shot-sheet .strategy-choice-main strong { font-size: .68rem; }
  .mobile-shot-sheet .strategy-choice-main span { margin-top: 3px; font-size: .54rem; }
  .mobile-shot-sheet .strategy-choice-main small { margin-top: 3px; font-size: .49rem; }
  .mobile-gm-history { gap: 8px; max-height: none; margin-top: 8px; }
  .mobile-gm-history .gm-message {
    width: 100%;
    max-width: none;
    padding: 11px 12px;
    border-radius: 10px;
    font-size: .68rem;
    line-height: 1.5;
  }
  .mobile-caddie-section .gm-feedback-stack { gap: 7px; padding: 9px 0 0; }
  .mobile-caddie-section .gm-feedback-card { padding: 9px 10px; }
  .mobile-caddie-section .gm-feedback-card p { font-size: .66rem; }
  .mobile-caddie-section .immediate-result strong { font-size: .73rem; }
  .mobile-club-picker,
  .mobile-club-picker select { min-height: 44px; }
  .mobile-power-slider { height: 26px; margin-block: 9px 5px; }
  .mobile-gm-command { padding: 4px; border-radius: 10px; background: rgba(255,255,255,.82); }
  .mobile-gm-command input { padding: 9px 8px; font-size: 16px; }
  .mobile-gm-command button { min-height: 34px; padding-inline: 12px; border-radius: 8px; }
  .mobile-gm-help { font-size: .5rem; line-height: 1.35; }
  .mobile-club-section,
  .mobile-power-section,
  .mobile-adjustment-section { padding-block: 6px; }
  .mobile-club-section .mobile-section-title,
  .mobile-power-section .mobile-section-title { min-height: 26px; }
  .mobile-club-section .mobile-caddie-back {
    min-height: 26px;
    padding: 3px 8px;
    border-radius: 7px;
    font-size: .52rem;
  }
  .mobile-club-section .mobile-club-picker { margin-top: 3px; }
  .mobile-club-section .mobile-club-picker,
  .mobile-club-section .mobile-club-picker select { min-height: 40px; }
  .mobile-club-section .mobile-club-picker select { padding-block: 5px; }
  .mobile-power-section .mobile-power-slider {
    height: 18px;
    margin-block: 2px 0;
  }
  .mobile-adjustment-section .mobile-gm-form { gap: 3px; }
  .mobile-adjustment-section .mobile-gm-command {
    min-height: 40px;
    padding: 2px;
    border-radius: 8px;
  }
  .mobile-adjustment-section .mobile-gm-command input { padding: 5px 7px; }
  .mobile-adjustment-section .mobile-gm-command button {
    min-height: 34px;
    min-width: 60px;
    padding-inline: 10px;
    box-shadow: 0 4px 10px rgba(181,82,62,.16);
  }
  .mobile-adjustment-section .mobile-gm-help {
    overflow: hidden;
    font-size: .46rem;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .mobile-sheet-actions { gap: 6px; padding-top: 9px; }
  .mobile-sheet-actions { position: static; background: transparent; }
  .mobile-sheet-actions .secondary-action { min-height: 34px; }
  .mobile-round-nav { box-shadow: 0 -8px 24px rgba(23,55,43,.12); }
  .mobile-round-current { border-radius: 10px; }
  .map-toolbar button { min-height: 32px; padding-inline: 9px; }
  .map-key {
    top: 94px;
    bottom: auto;
    background: rgba(251,252,247,.84);
    box-shadow: 0 7px 18px rgba(24,45,33,.1);
  }
  .mobile-hole-band {
    grid-template-columns: minmax(106px,1.2fr) minmax(76px,.9fr) 28px 28px 38px;
    align-items: stretch;
    gap: 3px;
  }
  .mobile-hole-chip,
  .mobile-header-reset,
  .mobile-enlarge-green,
  .gps-mode-button {
    box-sizing: border-box;
    width: 100%;
    height: 32px;
    min-height: 32px;
    margin: 0;
    padding: 4px 5px;
  }
  .mobile-hole-chip {
    gap: 3px;
    overflow: hidden;
    padding-inline: 5px;
    white-space: nowrap;
  }
  .mobile-hole-chip strong { font-size: .65rem; }
  .mobile-hole-chip span { font-size: .46rem; }
  .mobile-header-reset,
  .mobile-enlarge-green { display: inline-flex; align-items: center; justify-content: center; }
  .gps-mode-button { display: inline-flex; grid-column: 5; }
  body.live-round-view .mobile-hole-band {
    grid-template-columns: minmax(116px,1.2fr) minmax(88px,1fr) minmax(62px,.65fr);
    gap: 4px;
  }
  body.live-round-view .gps-mode-button {
    grid-column: 3;
    justify-content: center;
    font-size: .62rem;
  }
}

@media (max-width: 700px) {
  .gps-replay-library-dialog { width: 100%; max-width: none; max-height: 100dvh; border-radius: 0; }
  .gps-replay-library-dialog .modal-card { min-height: 100dvh; padding: 18px 14px calc(22px + env(safe-area-inset-bottom)); }
  .gps-replay-library-list { max-height: calc(100dvh - 250px); }
  .gps-replay-round { grid-template-columns: 52px minmax(0, 1fr) auto; gap: 9px; }
  .gps-replay-round-score { display: none; }
  .gps-replay-round button { padding-inline: 10px; }
  body.live-round-view .live-round-panel:has(.gps-replay-controls:not([hidden])) { width: min(390px, calc(100% - 20px)); }
  .gps-replay-controls blockquote { max-height: 72px; overflow-y: auto; }
  .mobile-shot-sheet.mobile-shot-carousel { padding: 0; }
  .mobile-carousel-empty { margin: 32px 8px 0; color: var(--ink-soft); font-size: .68rem; line-height: 1.5; text-align: center; }
}

@media (max-width: 760px) {
  .desktop-replay-only,
  .shot-replay-library,
  .shot-replay-button,
  .history-replay-open {
    display: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .live-gps-shot.replay-current,
  .live-gps-shot-halo.replay-current { animation: none; }
}

/* Compact mobile yardage-book roller: one fact appears only once. */
@media (max-width: 700px) {
  .mobile-shot-sheet.mobile-shot-carousel { height: 182px; }
  .mobile-shot-sheet.mobile-shot-carousel[data-flight="true"] { height: 58px; }
  .mobile-shot-carousel .mobile-carousel-header {
    min-height: 50px;
    padding-block: 3px;
  }
  .mobile-shot-carousel .mobile-carousel-viewport { height: 130px; }
  .mobile-shot-carousel .mobile-carousel-page { padding: 8px 10px; }
  .mobile-shot-carousel .mobile-plan-page {
    display: grid;
    align-content: center;
    gap: 8px;
  }
  .mobile-shot-carousel .mobile-plan-page .mobile-sheet-grid { gap: 5px; margin-top: 0; }
  .mobile-shot-carousel .mobile-plan-page .mobile-sheet-grid > div { padding: 7px; }
  .mobile-shot-carousel .mobile-plan-page .mobile-plan-copy {
    margin: 0;
    font-size: .52rem;
    line-height: 1.35;
    text-align: center;
  }
  .mobile-shot-carousel .mobile-caddie-section { margin-top: 0; }
  .mobile-shot-carousel .mobile-caddie-section .mobile-section-title { display: none; }
  .mobile-shot-carousel .mobile-caddie-section .mobile-gm-history {
    gap: 5px;
    max-height: 114px;
    margin-top: 0;
  }
  .mobile-shot-carousel .mobile-caddie-section .mobile-gm-history .gm-message {
    padding: 7px 8px;
    font-size: .59rem;
    line-height: 1.38;
  }
  .mobile-shot-carousel .mobile-club-power-page { gap: 7px; padding-block: 7px; }
  .mobile-shot-carousel .mobile-club-section,
  .mobile-shot-carousel .mobile-power-section { padding-block: 0; }
  .mobile-shot-carousel .mobile-club-section .mobile-section-title,
  .mobile-shot-carousel .mobile-power-section .mobile-section-title { min-height: 18px; }
  .mobile-shot-carousel .strategy-planner { padding: 7px 9px; }
  .mobile-shot-carousel .strategy-planner-heading { display: none; }
  .mobile-shot-carousel .strategy-choice-row { margin-top: 0; }
  .mobile-shot-carousel .mobile-adjustment-section { gap: 7px; padding: 8px 10px; }
  .mobile-shot-carousel .mobile-sheet-actions { padding-top: 2px; }
}
.gm-animation-ball{fill:#d8bd79;stroke:#183126;stroke-width:3}
.gm-animation-core{fill:#183126;stroke:none}
.gm-animation-label{fill:#fffdf3;stroke:#183126;stroke-width:3px;paint-order:stroke;font:800 12px var(--font-system);letter-spacing:.8px}
.gm-animation.full-shot-flight-trace,.gm-animation.terrain-flight-trace{stroke:#d8bd79;stroke-dasharray:10 8}
.gm-animation.putt-roll-trace,.gm-animation.relief-putt-trace{stroke:#76a7c7}

/* Mobile plan/map handoff: one surface gets the player's full attention. */
.mobile-shot-sheet-peek,
.mobile-sheet-minimize,
.mobile-edit-target,
.academy-decision-actions #academy-minimize { display: none; }
.academy-decision-actions { display: flex; align-items: center; gap: 7px; }
.academy-decision-actions svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

@media (max-width: 760px) {
  body.mobile-shot-plan-expanded { overflow: hidden; }
  body.mobile-shot-plan-expanded .topbar { visibility: hidden; pointer-events: none; }

  .mobile-shot-sheet.mobile-shot-carousel {
    position: fixed;
    z-index: 40;
    inset: 0;
    box-sizing: border-box;
    width: 100%;
    max-width: none;
    height: 100dvh !important;
    max-height: 100dvh;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: #eef1e8;
    box-shadow: none;
    overflow: hidden;
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition: opacity .18s ease, transform .22s cubic-bezier(.22,.72,.22,1), visibility 0s;
  }
  .mobile-shot-sheet.mobile-shot-carousel[data-sheet-state="minimized"] {
    pointer-events: none;
    opacity: 0;
    visibility: hidden;
    transform: translateY(100%);
    transition: opacity .14s ease, transform .2s ease-in, visibility 0s .2s;
  }
  .mobile-shot-sheet.mobile-shot-carousel[data-sheet-state="expanded"] {
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
  }
  .mobile-shot-carousel .mobile-carousel-header {
    grid-template-columns: minmax(0, 1fr) auto;
    min-height: calc(62px + env(safe-area-inset-top));
    padding: env(safe-area-inset-top) 10px 0 14px;
    border-bottom: 1px solid rgba(23,55,43,.12);
    background:
      linear-gradient(90deg, rgba(216,189,121,.46) 0 4px, transparent 4px),
      linear-gradient(180deg, #fbfcf7, #e7ece2);
  }
  .mobile-carousel-heading { padding-inline: 0 10px; }
  .mobile-carousel-heading .eyebrow { color: #476d84; font-size: .52rem; letter-spacing: .09em; }
  .mobile-carousel-heading strong { margin-top: 3px; font-size: .82rem; }
  .mobile-carousel-dock { display: none; }
  .mobile-sheet-minimize {
    display: inline-grid;
    grid-template-columns: 18px auto;
    place-items: center;
    align-items: center;
    min-width: 68px;
    min-height: 44px;
    margin-right: 8px;
    padding: 5px 10px;
    border: 1px solid rgba(23,55,43,.14);
    border-radius: 11px;
    background: rgba(255,255,255,.76);
    color: #17372b;
    font-size: .61rem;
    font-weight: 850;
  }
  .mobile-sheet-minimize svg {
    width: 18px;
    height: 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
  }
  .mobile-shot-carousel .mobile-carousel-nav { display: none; }
  .mobile-carousel-nav { grid-template-columns: 36px 34px 36px; }
  .mobile-carousel-nav button { width: 36px; height: 44px; }
  .mobile-carousel-nav span { font-size: .52rem; }
  .mobile-shot-carousel .mobile-carousel-viewport {
    height: calc(100dvh - 62px - env(safe-area-inset-top)) !important;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scroll-behavior: smooth;
    touch-action: pan-y;
  }
  .mobile-shot-carousel .mobile-carousel-track {
    height: auto;
    min-height: 100%;
    transform: none !important;
    transition: none;
  }
  .mobile-shot-carousel .mobile-carousel-page {
    position: relative;
    isolation: isolate;
    height: auto;
    min-height: 0;
    padding: 20px 18px;
    border-bottom: 1px solid rgba(23,55,43,.13);
    overflow: visible;
    background:
      linear-gradient(90deg, rgba(49,93,67,.045) 1px, transparent 1px) 28px 0 / 64px 100%,
      #eef1e8;
  }
  .mobile-shot-carousel .mobile-carousel-page[aria-hidden="true"] { visibility: visible; }
  .mobile-shot-carousel .mobile-carousel-page:last-child {
    padding-bottom: calc(30px + env(safe-area-inset-bottom));
    border-bottom: 0;
  }
  .mobile-one-page-section-heading {
    display: flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 15px;
    color: #17372b;
  }
  .mobile-one-page-section-heading span {
    display: grid;
    place-items: center;
    width: 27px;
    height: 27px;
    border-radius: 50%;
    background: #17372b;
    color: #e8d494;
    font: 800 .55rem var(--font-data);
  }
  .mobile-one-page-section-heading strong { font-size: .88rem; letter-spacing: -.01em; }
  .mobile-shot-carousel .mobile-plan-page {
    align-content: start;
    gap: 15px;
  }
  .mobile-shot-carousel .mobile-plan-page .mobile-sheet-grid { gap: 9px; }
  .mobile-shot-carousel .mobile-plan-page .mobile-sheet-grid > div { padding: 14px 12px; }
  .mobile-shot-carousel .mobile-plan-page .mobile-plan-copy {
    font-size: .68rem;
    line-height: 1.5;
  }
  .mobile-edit-target {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    justify-self: stretch;
    min-height: 46px;
    padding: 8px 14px;
    border: 1px solid rgba(71,109,132,.24);
    border-radius: 12px;
    background: rgba(255,255,255,.72);
    color: #355f7b;
    font-size: .65rem;
    font-weight: 850;
  }
  .mobile-shot-carousel .mobile-caddie-section .mobile-section-title { display: flex; }
  .mobile-shot-carousel .mobile-caddie-section .mobile-section-title .eyebrow,
  .mobile-shot-carousel .strategy-planner-heading .eyebrow { display: none; }
  .mobile-shot-carousel .mobile-caddie-section .mobile-gm-history {
    height: auto !important;
    max-height: none;
    overflow: visible;
  }
  .mobile-shot-carousel .mobile-caddie-section .mobile-gm-history .gm-message.player {
    color: #17372b;
  }
  .mobile-shot-carousel .mobile-club-power-page {
    align-content: start;
    gap: 18px;
    padding-block: 20px;
  }
  .mobile-shot-carousel .mobile-club-power-page > * { min-width: 0; }
  .mobile-shot-carousel .mobile-club-power-page .aim-mode-control,
  .mobile-shot-carousel .mobile-club-power-page .mobile-club-section,
  .mobile-shot-carousel .mobile-club-power-page .mobile-power-section {
    position: relative;
    display: grid;
    gap: 9px;
  }
  .mobile-shot-carousel .strategy-planner { padding: 20px 18px; }
  .mobile-shot-carousel .strategy-planner-heading { display: flex; }
  .mobile-shot-carousel .strategy-choice-row { grid-template-columns: minmax(0, 1fr); margin-top: 14px; }
  .mobile-shot-carousel .mobile-adjustment-section { align-content: start; gap: 18px; padding: 20px 18px; }

  .mobile-shot-sheet-peek {
    position: absolute;
    z-index: 9;
    right: 8px;
    bottom: calc(58px + env(safe-area-inset-bottom));
    left: 8px;
    display: grid;
    grid-template-columns: 5px minmax(0, 1fr) auto;
    align-items: center;
    min-height: 76px;
    padding: 7px 8px 7px 7px;
    border: 2px solid rgba(216,189,121,.82);
    border-radius: 17px;
    background: linear-gradient(145deg, rgba(23,55,43,.97), rgba(35,75,55,.96));
    color: #fffdf3;
    box-shadow: 0 14px 34px rgba(13,30,21,.28);
    backdrop-filter: blur(16px);
    text-align: left;
  }
  .mobile-shot-sheet-peek[hidden] { display: none; }
  .mobile-shot-sheet-peek:disabled { cursor: default; opacity: 1; }
  .mobile-sheet-peek-mark {
    align-self: stretch;
    border-radius: 999px;
    background: #d8bd79;
  }
  .mobile-sheet-peek-copy { min-width: 0; padding: 3px 12px; }
  .mobile-sheet-peek-copy small,
  .mobile-sheet-peek-copy strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .mobile-sheet-peek-copy small { color: #e8d494; font-size: .58rem; font-weight: 900; letter-spacing: .075em; text-transform: uppercase; }
  .mobile-sheet-peek-copy strong { margin-top: 4px; font-size: .82rem; line-height: 1.2; }
  .mobile-sheet-peek-action {
    display: grid;
    grid-template-columns: minmax(0, auto) 22px;
    align-items: center;
    justify-content: center;
    gap: 5px;
    min-width: 96px;
    min-height: 54px;
    padding: 0 10px 0 12px;
    border: 1px solid rgba(255,255,255,.62);
    border-radius: 12px;
    background: #fffdf3;
    color: #17372b;
    font-size: .68rem;
    font-weight: 900;
    box-shadow: 0 7px 18px rgba(7,25,16,.2);
  }
  .mobile-shot-sheet-peek:disabled .mobile-sheet-peek-action { visibility: hidden; }
  .mobile-sheet-peek-action svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
  body.mobile-shot-plan-minimized .mobile-shot-toast { bottom: calc(142px + env(safe-area-inset-bottom)); }

  .course-stage.enlarged-green .mobile-shot-sheet-peek { display: none; }
  body.academy-active .mobile-shot-sheet-peek { bottom: calc(10px + env(safe-area-inset-bottom)); }
  body.academy-active.mobile-shot-plan-minimized .shot-desk { display: none; }
  body.academy-active.mobile-shot-plan-expanded .shot-desk {
    position: fixed;
    z-index: 40;
    inset: 0;
    display: block;
    box-sizing: border-box;
    height: 100dvh;
    padding: env(safe-area-inset-top) 0 env(safe-area-inset-bottom);
    border-radius: 0;
    background: #eef1e8;
  }
  body.academy-active.mobile-shot-plan-expanded .academy-decision-desk { min-height: 100%; padding: 16px; }
  .academy-decision-header {
    position: sticky;
    z-index: 2;
    top: 0;
    align-items: center;
    background: #eef1e8;
  }
  .academy-decision-actions #academy-minimize {
    display: inline-grid;
    grid-template-columns: 17px auto;
    place-items: center;
    min-height: 44px;
    padding: 5px 9px;
  }
  .academy-decision-actions #academy-exit { min-height: 44px; }
}

/* Keep map actions below the two challenge ribbons instead of underneath them. */
body.challenge-active:not(.green-view-open) .map-toolbar { top: 122px; }
.course-stage.enlarged-green .challenge-match-card,
.course-stage.enlarged-green .competition-score-header,
.course-stage.enlarged-green .map-top-controls { display: none; }

@media (max-width: 760px) {
  body.challenge-active:not(.green-view-open) .map-top-controls { top: calc(160px + env(safe-area-inset-top)); }
}

/* Yardage-book header: playing context first, utilities folded into one menu. */
.topbar {
  position: relative;
  z-index: 70;
  grid-template-columns: minmax(185px, 1fr) minmax(360px, auto) auto auto;
  gap: 14px;
}
.play-context {
  display: grid;
  grid-template-columns: minmax(180px, 240px) 174px;
  align-items: end;
  gap: 8px;
}
.course-picker,
.game-mode-picker { min-width: 0; }
.course-picker label,
.game-mode-picker label {
  display: block;
  margin: 0 0 2px 3px;
  color: var(--ink-soft);
  font: 800 .43rem var(--font-data, var(--font-system));
  letter-spacing: .11em;
  text-transform: uppercase;
}
.play-context .course-select,
.game-mode-picker select {
  width: 100%;
  max-width: none;
  min-height: 36px;
  padding: 6px 28px 6px 10px;
  border: 1px solid rgba(23,55,43,.13);
  border-radius: 8px;
  background-color: rgba(255,255,255,.7);
  font-size: .63rem;
  font-weight: 750;
}
.game-mode-picker select {
  border-left: 3px solid var(--blue);
  background-color: rgba(71,109,132,.08);
  color: #284c62;
}
.game-mode-picker select[data-mode="challenge"] { border-left-color: var(--danger); color: #8f4938; }
.game-mode-picker select[data-mode="competition"] { border-left-color: #b59549; color: #6c5725; }
.game-mode-picker select[data-mode="gps"] { border-left-color: #2f7a63; color: #245f4f; }
.map-version-status { display: none; }
.topbar-actions { gap: 7px; }
.utility-menu { position: relative; }
.utility-menu summary {
  display: flex;
  align-items: center;
  gap: 6px;
  min-height: 34px;
  padding: 5px 9px;
  border: 1px solid rgba(23,55,43,.13);
  border-radius: 9px;
  background: rgba(255,255,255,.55);
  color: var(--ink-soft);
  cursor: pointer;
  font-size: .58rem;
  font-weight: 800;
  list-style: none;
}
.utility-menu summary::-webkit-details-marker { display: none; }
.utility-menu summary svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
}
.utility-menu[open] summary { border-color: rgba(71,109,132,.34); background: rgba(71,109,132,.1); color: var(--blue); }
.utility-menu-panel {
  position: absolute;
  z-index: 60;
  top: calc(100% + 8px);
  right: 0;
  display: grid;
  width: 220px;
  padding: 7px;
  border: 1px solid rgba(255,255,255,.72);
  border-radius: 11px;
  background: rgba(251,252,247,.98);
  box-shadow: 0 18px 44px rgba(18,46,38,.24);
  backdrop-filter: blur(18px);
}
.utility-menu-panel button,
.utility-menu-panel .profile-button,
.utility-menu-panel .player-guide-button,
.utility-menu-panel .fullscreen-button,
.utility-menu-panel .reset-game-button {
  display: flex;
  width: 100%;
  min-height: 40px;
  align-items: center;
  justify-content: flex-start;
  gap: 9px;
  padding: 7px 9px;
  border: 0;
  border-bottom: 1px solid rgba(23,55,43,.08);
  border-radius: 7px;
  background: transparent;
  color: var(--ink);
  font-size: .63rem;
  font-weight: 750;
  letter-spacing: 0;
  text-transform: none;
}
.utility-menu-panel button:last-child { border-bottom: 0; }
.utility-menu-panel button:hover { background: rgba(71,109,132,.08); color: var(--blue); }
.utility-menu-panel .profile-button > span:first-child { width: 25px; height: 25px; flex: 0 0 auto; }

@media (max-width: 920px) and (min-width: 761px) {
  .topbar { grid-template-columns: auto minmax(330px, 1fr) auto; }
  .round-status { display: none; }
  .brand > span:last-child { display: none; }
}

@media (max-width: 760px) {
  .topbar { grid-template-columns: auto minmax(0, 1fr) auto; gap: 6px; padding-inline: 8px; }
  .play-context { grid-template-columns: minmax(0, 1fr) 108px; gap: 4px; }
  .course-picker label,
  .game-mode-picker label { display: none; }
  .play-context .course-select,
  .game-mode-picker select {
    width: 100%;
    min-height: 32px;
    padding: 4px 17px 4px 6px;
    border-radius: 7px;
    font-size: .5rem;
  }
  .game-mode-picker select { border-left-width: 2px; }
  .topbar-actions { gap: 3px; }
  .topbar-actions .account-button,
  .utility-menu summary {
    display: grid;
    place-items: center;
    width: 30px;
    height: 30px;
    min-height: 30px;
    padding: 0;
    border-radius: 9px;
  }
  .utility-menu summary span { display: none; }
  .utility-menu-panel {
    position: fixed;
    top: 48px;
    right: 8px;
    width: min(230px, calc(100vw - 16px));
  }
  .utility-menu-panel #profile-button,
  .utility-menu-panel #player-guide-button,
  .utility-menu-panel #fullscreen-button,
  .utility-menu-panel #reset-game-button {
    display: flex;
    width: 100%;
    height: auto;
    min-height: 42px;
    padding: 7px 9px;
    font-size: .63rem;
  }
  .utility-menu-panel .desktop-action-label,
  .utility-menu-panel #profile-button-name { display: inline; }
  .utility-menu-panel #profile-monogram { display: grid; }
  .utility-menu-panel .mobile-action-icon { display: block; flex: 0 0 auto; }
}

.terrain-first-cut { fill: #6c9655; stroke: none; }

/* Desktop header: consistent controls and a quiet hierarchy. */
@media (min-width: 761px) {
  .topbar {
    height: 80px;
    padding: 10px 22px;
    gap: 20px;
    border: 1px solid rgba(23,55,43,.1);
    border-radius: 12px;
    background: #f9fbf7;
    box-shadow: 0 3px 12px rgba(24,45,33,.05);
    align-items: center;
  }
  .brand { min-width: 0; gap: 12px; }
  .brand-mark { width: 40px; height: 40px; border-radius: 11px; box-shadow: none; }
  .brand strong { display: block; max-width: 360px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 16px; line-height: 1.4; }
  .brand small { margin-top: 3px; font-size: 9px; letter-spacing: .1em; color: #758377; }
  .play-context { align-items: start; gap: 12px; }
  .course-picker { position: relative; }
  .course-picker label, .game-mode-picker label { margin: 0 0 5px; font-size: 9px; font-weight: 650; letter-spacing: .08em; color: #69786d; }
  .play-context .course-select, .game-mode-picker select {
    height: 38px; min-height: 38px;
    padding: 7px 28px 7px 12px;
    border: 1px solid #d5dfd5;
    border-radius: 7px;
    background-color: #fff;
    color: #213d2d;
    font-size: 12px; font-weight: 600;
  }
  .course-source-attribution { position: absolute; top: 100%; left: 0; margin-top: 2px; font-size: 8px; line-height: 1.1; color: #758377; white-space: nowrap; }
  .round-status { padding: 0 16px; border-left: 1px solid #dde5db; gap: 12px; font-size: 12px; white-space: nowrap; }
  .round-status strong { font-weight: 750; color: #214936; }
  .status-rule { display: none; }
  .topbar-actions .account-button, .utility-menu > summary {
    min-height: 38px; border-radius: 7px; border-color: #d5dfd5;
    background: #fff; font-size: 11px; box-shadow: none;
  }
  .play-context select:focus-visible, .topbar-actions button:focus-visible, .utility-menu > summary:focus-visible { outline: 2px solid #3f7854; outline-offset: 3px; }
}

@media (min-width: 1181px) {
  .topbar { grid-template-columns: minmax(340px, 1fr) minmax(470px, auto) auto auto; gap: 16px; }
  .play-context { grid-template-columns: minmax(270px, 330px) 174px; }
  .brand > span:last-child { display: block; min-width: 0; }
  .brand strong { max-width: none; }
  .brand-course-location { display: block; margin-top: 2px; color: #586f60; font-size: 11px; line-height: 1.3; }
  .brand-course-location[hidden] { display: none; }
}

/* Give location-rich course labels priority in the desktop header. */
@media (min-width: 1181px) {
  .topbar { grid-template-columns: minmax(220px, .65fr) minmax(0, 1.5fr) auto auto; gap: 14px; }
  .play-context { min-width: 0; grid-template-columns: minmax(340px, 1fr) 150px; gap: 10px; }
  .play-context .course-select { width: 100%; max-width: none; }
  .brand strong { max-width: 300px; }
}
@media (min-width: 761px) and (max-width: 1180px) {
  .play-context { grid-template-columns: minmax(240px, 1fr) 150px; }
}

/* Unavailable scorecard tees remain visible with a clear disabled appearance. */
.tee-switch button:disabled {
  color: #929991;
  background: rgba(120, 128, 120, .08);
  opacity: .48;
  cursor: not-allowed;
  box-shadow: none;
}
/* Keep mobile Live instructions in their own row below the hole map. */
@media (max-width: 760px) {
  body.live-round-view .course-stage {
    display: grid;
    grid-template-rows: minmax(0, 1fr) auto;
  }
  body.live-round-view .course-map {
    position: relative;
    inset: auto;
    grid-row: 1;
    min-width: 0;
    min-height: 0;
  }
  body.live-round-view .live-map-measure-hint {
    position: relative;
    inset: auto;
    grid-row: 2;
    width: 100%;
    max-width: none;
    box-sizing: border-box;
    flex-wrap: wrap;
    padding: 8px 10px calc(8px + env(safe-area-inset-bottom));
    border-radius: 0;
    box-shadow: none;
    transform: none;
    pointer-events: auto;
  }
  body.live-round-view #live-map-measure-copy {
    flex: 1 1 140px;
    min-width: 0;
  }
  body.live-round-view .live-map-measure-hint button {
    min-height: 44px;
    padding-inline: 12px;
  }
}

/* Distance labels use measured bounds and leave room for touch input. */
.distance-badge {
  max-width: calc(100% - 16px);
  box-sizing: border-box;
  white-space: normal;
  text-align: center;
  transform: none;
}

.gps-practice-controls { padding: 6px 12px; background: #eef4e9; }
.gps-practice-controls button { min-height: 36px; padding: 6px 10px; margin-right: 6px; border: 1px solid #66826a; border-radius: 7px; color: #244d33; background: white; font: inherit; font-size: .65rem; }
.gps-practice-controls p { margin: 6px 0; font-size: .62rem; line-height: 1.4; }

@media (max-width: 760px) {
  .gps-mode-screen:not([hidden]) { grid-template-rows: auto auto auto auto minmax(0, 1fr) auto; }
}

.gps-review-header-actions { flex-wrap: wrap; justify-content: flex-end; }

.gps-location-button:disabled {
  background: #e1e5df;
  color: #858c84;
  border-color: #cbd1c9;
  opacity: .55;
  cursor: not-allowed;
  box-shadow: none;
}

.sidebar-reset-game-button { display: block; width: 100%; margin-top: 12px; }

@media (max-width: 760px) {
  .mobile-carousel-heading #mobile-carousel-title {
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    line-height: 1.3;
  }
}

@media (max-width: 760px) {
  .mobile-hole-band { grid-template-columns: minmax(0, 1fr) 28px 28px 38px; }
  .mobile-hole-band .gps-mode-button { grid-column: 4; }
  body.live-round-view .mobile-hole-band { grid-template-columns: minmax(0, 1fr) 62px; }
  body.live-round-view .mobile-hole-band .gps-mode-button { grid-column: 2; }
}

#mobile-game-mode-slot { display: none; }
@media (max-width: 760px) {
  #mobile-game-mode-slot { display: block; min-width: 0; pointer-events: auto; }
  #mobile-game-mode-slot .game-mode-picker { display: block; margin: 0; }
  #mobile-game-mode-slot label { display: none; }
  #mobile-game-mode-slot select {
    box-sizing: border-box; width: 100%; min-width: 0; height: 32px;
    padding: 4px; font-size: .62rem; border-radius: 9px;
    background: #f5f2e8; color: #17372b; opacity: 1;
    border: 1px solid #d6d9cb; color-scheme: light;
  }
  .mobile-hole-band { grid-template-columns: minmax(98px, 1.1fr) minmax(0, 1fr) 28px 28px 38px; }
  .mobile-hole-band .gps-mode-button { grid-column: 5; }
  body.live-round-view .mobile-hole-band { grid-template-columns: minmax(98px, 1fr) minmax(0, 1fr) 62px; }
  body.live-round-view .mobile-hole-band .gps-mode-button { grid-column: 3; }
}

@media (max-width: 760px) {
  .mobile-hole-band { grid-template-columns: minmax(98px, 1.1fr) minmax(0, 1fr) 28px 28px; }
  body.live-round-view .mobile-hole-band { grid-template-columns: minmax(98px, 1fr) minmax(0, 1fr); }
}

@media (max-width: 760px) {
  .topbar .play-context { grid-template-columns: minmax(0, 1fr); width: 100%; min-width: 0; }
  .topbar .course-picker { width: 100%; }
  .topbar .course-select { font-size: .65rem; }
}

@media (max-width: 760px) {
  .mobile-shot-sheet-peek {
    grid-template-columns: minmax(0, 1fr);
    min-height: 44px;
    padding: 8px 12px;
    border-radius: 12px;
    text-align: center;
  }
  .mobile-shot-sheet-peek .mobile-sheet-peek-copy { padding: 0; }
  .mobile-shot-sheet-peek .mobile-sheet-peek-copy strong { margin: 0; font-size: .78rem; }
  body.mobile-shot-plan-minimized .mobile-shot-toast { bottom: calc(110px + env(safe-area-inset-bottom)); }
}

/* Compact mobile shot controls without shrinking the primary touch targets. */
@media (max-width: 760px) {
  .mobile-shot-carousel .mobile-carousel-page,
  .mobile-shot-carousel .strategy-planner,
  .mobile-shot-carousel .mobile-adjustment-section {
    padding: 12px;
  }
  .mobile-shot-carousel .mobile-carousel-page:last-child {
    padding-bottom: calc(16px + env(safe-area-inset-bottom));
  }
  .mobile-shot-carousel .mobile-one-page-section-heading { gap: 7px; margin-bottom: 6px; }
  .mobile-shot-carousel .mobile-one-page-section-heading span { width: 22px; height: 22px; }
  .mobile-shot-carousel .mobile-plan-page,
  .mobile-shot-carousel .mobile-club-power-page,
  .mobile-shot-carousel .mobile-adjustment-section { gap: 8px; }
  .mobile-shot-carousel .mobile-plan-page .mobile-sheet-grid { gap: 6px; }
  .mobile-shot-carousel .mobile-plan-page .mobile-sheet-grid > div { padding: 8px; }
  .mobile-shot-carousel .mobile-plan-page .mobile-plan-copy { margin-block: 0; line-height: 1.35; }
  .mobile-shot-carousel .mobile-club-power-page .aim-mode-control,
  .mobile-shot-carousel .mobile-club-power-page .mobile-club-section,
  .mobile-shot-carousel .mobile-club-power-page .mobile-power-section { gap: 5px; }
  .mobile-shot-carousel .mobile-gm-history { margin-top: 5px; gap: 5px; }
  .mobile-shot-carousel .strategy-choice-row { margin-top: 7px; }
}

.mobile-gm-more-messages { margin-top: 8px; }
.mobile-gm-more-messages > summary {
  min-height: 32px; padding: 6px 0; box-sizing: border-box;
  color: #476d84; font-size: .68rem; font-weight: 750; cursor: pointer;
}
.mobile-gm-more-messages[open] > summary { margin-bottom: 5px; }

@media (max-width: 760px) { #green-zoom-control { display: none; } }
