:root{font-family:Inter,system-ui,sans-serif;color:#17251d;background:#eef3ee}*{box-sizing:border-box}body{margin:0}header{padding:1rem 1.25rem;background:#173f2b;color:#fff}header h1{margin:0;font-size:1.35rem}main{max-width:1180px;margin:auto;padding:1rem}.game-shell{background:#fff;border-radius:18px;overflow:hidden;border:1px solid #d3ded5}.game-meta{display:flex;flex-wrap:wrap;gap:.55rem 1rem;align-items:center;padding:.8rem 1rem;background:#f6f9f6;border-bottom:1px solid #dbe4dc;font-size:.92rem}.game-meta span{font-weight:650}.icon-button{margin-left:auto;width:auto;padding:.45rem .7rem;background:#fff;color:#173f2b;border:1px solid #bfd0c2}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:1rem;padding:1rem}.course-wrap{min-width:0}.course-wrap svg{display:block;width:100%;max-height:72vh;border-radius:14px;background:#80a75f;touch-action:manipulation}.controls{padding:.25rem}.controls h2{margin-top:0}button{width:100%;border:0;border-radius:10px;padding:.8rem 1rem;background:#205c3b;color:#fff;font-weight:750;cursor:pointer;margin:.3rem 0}button.secondary{background:#e6eee7;color:#173f2b;border:1px solid #b8c9bb}button:disabled{opacity:.45;cursor:not-allowed}.club-grid{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}.club-grid button.selected{outline:3px solid #8fb99b}.rough{fill:#8bad69}.fairway{fill:#b7d58d}.green{fill:#d4eba8}.water{fill:#5ba4c7}.sand{fill:#e7cf8b}.tree{fill:#2f6a3c}.cup{fill:#18231d}.flag-pole{stroke:#f3f3f3;stroke-width:6}.flag{fill:#c4453a}.elevation-zone{fill:rgba(255,255,255,.08);stroke:rgba(42,72,46,.45);stroke-width:3}.elevation-zone.elevation-2{fill:rgba(255,255,255,.16);stroke-width:5}.elevation-label circle{fill:rgba(23,63,43,.82);stroke:#fff;stroke-width:3}.elevation-label text{fill:#fff;font-size:25px;font-weight:850;text-anchor:middle;paint-order:stroke;stroke:#173f2b;stroke-width:4}.elevation-key{display:flex;flex-wrap:wrap;gap:.6rem 1rem;margin-top:.55rem;padding:.55rem .7rem;background:#f1f6f1;border-radius:9px;font-size:.85rem;color:#425649}.elevation-key strong{color:#173f2b}.tee-marker line,.tee-marker circle{stroke:#fff;stroke-width:5;fill:none}.tee-marker text{fill:#fff;font-size:27px;font-weight:800;paint-order:stroke;stroke:#355438;stroke-width:7}.ball{fill:#fff;stroke:#19251e;stroke-width:5}.legal-target{fill:rgba(255,255,255,.72);stroke:#173f2b;stroke-width:6;cursor:pointer}.legal-target:hover,.legal-target.is-selected{fill:#fff;stroke-width:10}.shot-history-path{fill:none;stroke:#fff;stroke-width:9;stroke-dasharray:18 12;stroke-linecap:round;stroke-linejoin:round}.shot-history-point{fill:#173f2b;stroke:#fff;stroke-width:5}.shot-history-label{fill:#fff;font-size:32px;font-weight:800;paint-order:stroke;stroke:#173f2b;stroke-width:8}.target-inspection{margin-top:.65rem;padding:.75rem;border-radius:10px;background:#f1f6f1;min-height:2.8rem}.roll-result{font-size:1.15rem;padding:.75rem;border-radius:10px;background:#edf5ed}.hint{color:#5b6b60;font-size:.92rem}.shot-history-card{margin-top:1rem;border-top:1px solid #dbe4dc;padding-top:.8rem}.shot-history-card h3{margin:.2rem 0 .55rem}.shot-list{padding-left:1.4rem;margin:0}.shot-list li{padding:.55rem 0;border-bottom:1px solid #e5ece6}.shot-list span{display:block;font-size:.9rem;color:#506057}form.home-card{max-width:560px;background:#fff;padding:1.2rem;border-radius:16px;margin:2rem auto}select{width:100%;padding:.7rem;margin:.35rem 0 1rem;border-radius:8px;border:1px solid #b8c4bb}@media(max-width:800px){.play-layout{grid-template-columns:1fr}.course-wrap svg{max-height:none}.icon-button{margin-left:0}.game-meta{align-items:stretch}}
.completion-banner{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;padding:.9rem 1rem;background:#e7f4e8;border-bottom:1px solid #bad1bd}.completion-banner strong{font-size:1.05rem}.round-summary{display:grid;gap:.45rem;padding:1rem;border-radius:12px;background:#edf5ed}.button-link{display:block;text-align:center;text-decoration:none;border-radius:10px;padding:.8rem 1rem;background:#205c3b;color:#fff;font-weight:750;margin-top:.35rem}


/* Golf-style scorecard */
.golf-scorecard{margin:0 1rem 1rem;border:1px solid #9eaa9f;background:#f8f6ec;box-shadow:0 1px 0 rgba(23,63,43,.08)}
.scorecard-heading-row{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;padding:.85rem 1rem;background:#faf9f1;border-bottom:2px solid #173f2b}
.scorecard-heading-row h2{margin:0;font-size:1.2rem;letter-spacing:.02em;text-transform:uppercase}
.scorecard-kicker{margin:0 0 .15rem;color:#5b665d;font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.scorecard-summary{display:flex;gap:.55rem;flex-wrap:wrap;justify-content:flex-end}
.scorecard-summary span{padding:.35rem .55rem;border:1px solid #b8c0b5;background:#fff;font-size:.82rem}
.scorecard-scroll{overflow-x:auto;overscroll-behavior-inline:contain}
.scorecard-table{width:100%;min-width:650px;border-collapse:collapse;table-layout:fixed;font-family:Arial,Helvetica,sans-serif;font-variant-numeric:tabular-nums}
.scorecard-table th,.scorecard-table td{height:46px;padding:.35rem;text-align:center;border-right:1px solid #59655c;border-bottom:1px solid #59655c;font-weight:700}
.scorecard-table thead th{height:38px;background:#167044;color:#fff;font-size:.82rem;letter-spacing:.04em}
.scorecard-table .row-label{width:92px;text-align:left;padding-left:.75rem;background:#167044;color:#fff;letter-spacing:.04em}
.scorecard-table tbody .row-label{font-size:.82rem}
.scorecard-table .total-column{width:74px;background:#e2d79d;color:#17251d;border-left:2px solid #31483a}
.scorecard-table thead .total-column{background:#d5bd58}
.scorecard-table .current-hole{box-shadow:inset 0 0 0 3px #e2b93c;background-color:#fff8d6}
.scorecard-table thead .current-hole{background:#205c3b;color:#fff}
.scorecard-table .distance-row td{background:#e7eee8;color:#30483a;font-size:.82rem}
.scorecard-table .par-row td{background:#eff0e8}
.scorecard-table .player-row td{background:#fff}
.scorecard-table .relative-row td{height:38px;background:#eef3ee;color:#405247;font-size:.82rem}
.score-mark{position:relative;display:inline-grid;place-items:center;width:30px;height:30px;line-height:1;font-weight:850;z-index:0}
.score-mark.score-in-progress{border-bottom:2px dotted #59705f}
.score-mark.score-birdie{border:2px solid #173f2b;border-radius:50%}
.score-mark.score-eagle{border:2px solid #173f2b;border-radius:50%;outline:2px solid #173f2b;outline-offset:2px}
.score-mark.score-bogey{border:2px solid #173f2b}
.score-mark.score-double-bogey{border:2px solid #173f2b;outline:2px solid #173f2b;outline-offset:2px}
.scorecard-legend{display:flex;flex-wrap:wrap;gap:.55rem 1rem;padding:.6rem .8rem;color:#4c5a50;font-size:.74rem}
.scorecard-legend span{display:flex;align-items:center;gap:.35rem}
.legend-mark{display:inline-block;width:15px;height:15px}
.legend-mark.eagle{border:1px solid #173f2b;border-radius:50%;outline:1px solid #173f2b;outline-offset:2px}
.legend-mark.birdie{border:1px solid #173f2b;border-radius:50%}
.legend-mark.par{border-bottom:2px solid #173f2b}
.legend-mark.bogey{border:1px solid #173f2b}
.legend-mark.double-bogey{border:1px solid #173f2b;outline:1px solid #173f2b;outline-offset:2px}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(max-width:800px){.golf-scorecard{margin:0 .75rem .75rem}.scorecard-heading-row{align-items:flex-start;flex-direction:column}.scorecard-summary{justify-content:flex-start}.scorecard-scroll{border-top:1px solid #aab3aa}.scorecard-table{min-width:590px}}

/* v0.2.5 hole and round summaries */
.hole-summary-card { gap: .8rem; }
.hole-result { font-size: 1.15rem; }
.summary-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .55rem; width: 100%; }
.summary-stats span { display: grid; gap: .15rem; padding: .6rem; border: 1px solid rgba(255,255,255,.16); border-radius: .55rem; }
.summary-stats small { opacity: .72; }
@media (max-width: 560px) { .summary-stats { grid-template-columns: 1fr; } }


/* v0.2.6 responsive camera, minimap and navigation polish */
.site-header { display:flex; align-items:center; }
.brand-home,
.brand-home:link,
.brand-home:visited {
  display:inline-flex;
  align-items:center;
  gap:.55rem;
  color:#fff;
  text-decoration:none;
  font-weight:850;
  letter-spacing:.01em;
  padding:.48rem .72rem;
  border:1px solid rgba(255,255,255,.22);
  border-radius:999px;
  background:rgba(255,255,255,.08);
  transition:background .16s ease, transform .16s ease, border-color .16s ease;
}
.brand-home:hover { background:rgba(255,255,255,.16); border-color:rgba(255,255,255,.42); transform:translateY(-1px); }
.brand-home:focus-visible { outline:3px solid #f4d77a; outline-offset:3px; }
.brand-home-icon { display:grid; place-items:center; width:1.45rem; height:1.45rem; font-size:1rem; }
.course-stage { position:relative; overflow:hidden; border-radius:14px; background:#80a75f; }
.course-stage > #course { border-radius:0; background:#80a75f; }
.course-minimap {
  position:absolute;
  top:.7rem;
  right:.7rem;
  width:clamp(105px, 18%, 155px);
  padding:.35rem;
  border-radius:11px;
  border:2px solid rgba(255,255,255,.9);
  background:rgba(23,63,43,.9);
  box-shadow:0 5px 18px rgba(14,42,27,.3);
  pointer-events:none;
  z-index:4;
}
.minimap-label { color:#fff; font-size:.67rem; line-height:1; font-weight:850; text-align:center; letter-spacing:.08em; text-transform:uppercase; margin:.08rem 0 .3rem; }
.course-minimap svg { display:block; width:100%; height:auto; max-height:145px; border-radius:6px; background:#80a75f; }
.course-minimap .tee-marker text,
.course-minimap .shot-history-label,
.course-minimap .elevation-label { display:none; }
.course-minimap .legal-target { display:none; }
.course-minimap .shot-history-path { stroke-width:14; }
.course-minimap .ball { stroke-width:9; r:26px; }
.minimap-viewport { fill:rgba(255,255,255,.08); stroke:#fff; stroke-width:10; vector-effect:non-scaling-stroke; }
.camera-status { margin-top:.45rem; min-height:1rem; color:#506057; font-size:.78rem; font-weight:750; text-align:right; }
#course { transition:filter .2s ease; }
@media(max-width:800px){
  .course-minimap { width:112px; top:.45rem; right:.45rem; }
  .camera-status { text-align:left; }
}
@media(max-width:460px){
  .course-minimap { width:92px; padding:.25rem; }
  .minimap-label { font-size:.58rem; }
}

/* v0.2.7 camera refinement */
.shot-history-path,
.shot-history-point,
.ball,
.legal-target,
.shot-history-label {
  vector-effect: non-scaling-stroke;
}
.course-minimap .shot-history-point { r:13px !important; }
.course-minimap .ball { r:26px !important; }
.course-minimap .minimap-viewport,
.minimap-viewport {
  fill:rgba(255,255,255,.06);
  stroke:#fff;
  stroke-width:2;
  vector-effect:non-scaling-stroke;
}
@media (prefers-reduced-motion: reduce) {
  #course { transition:none; }
}

/* v0.2.8 distance display, constant-size markers and mobile controls */
.distance-card{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:.5rem;
  margin:0 0 .75rem;
}
.distance-card span{
  display:grid;
  gap:.12rem;
  padding:.65rem .75rem;
  border:1px solid #d4e0d6;
  border-radius:10px;
  background:#f1f6f1;
}
.distance-card small{font-size:.72rem;color:#5b6b60;font-weight:750;text-transform:uppercase;letter-spacing:.04em}
.distance-card strong{font-size:1.2rem;color:#173f2b;font-variant-numeric:tabular-nums}
.blocked-target{
  fill:rgba(255,255,255,.18);
  stroke:rgba(23,63,43,.48);
  stroke-width:4;
  stroke-dasharray:8 7;
  pointer-events:none;
}
.shot-option{vector-effect:non-scaling-stroke}
.pin-marker .flag-pole,
.pin-marker .flag,
.pin-marker .cup{vector-effect:non-scaling-stroke}
.course-minimap .blocked-target{display:none}

@media(max-width:800px){
  main{padding:.5rem}
  .game-shell{border-radius:12px}
  .play-layout{gap:.55rem;padding:.55rem}
  .course-stage{height:min(54vh,560px);min-height:330px}
  .course-stage > #course{width:100%;height:100%;max-height:none}
  .controls{display:flex;flex-direction:column;padding:0 .05rem .5rem}
  .controls h2{font-size:1rem;margin:.1rem 0 .45rem}
  .distance-card{margin-bottom:.4rem}
  .distance-card span{padding:.45rem .55rem}
  .distance-card strong{font-size:1rem}
  .mobile-club-strip{
    display:flex;
    gap:.4rem;
    overflow-x:auto;
    padding:.15rem .12rem .35rem;
    scroll-snap-type:x proximity;
    scrollbar-width:thin;
  }
  .mobile-club-strip button{
    flex:0 0 auto;
    width:auto;
    min-width:118px;
    padding:.62rem .75rem;
    margin:0;
    scroll-snap-align:start;
  }
  .selected-club-line{display:none}
  .mobile-action-zone{
    position:sticky;
    bottom:0;
    z-index:8;
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:.35rem;
    padding:.45rem;
    margin:.15rem -.05rem 0;
    border:1px solid #d2ded4;
    border-radius:12px;
    background:rgba(255,255,255,.96);
    box-shadow:0 -7px 20px rgba(23,63,43,.12);
    backdrop-filter:blur(8px);
  }
  .mobile-action-zone button{margin:0}
  .mobile-action-zone .roll-result{padding:.58rem;font-size:1rem}
  .controls .hint{margin:.55rem 0}
  .shot-history-card{margin-top:.55rem}
  .elevation-key,.target-inspection{display:none}
}

@media(max-width:460px){
  .game-meta{padding:.55rem .65rem;gap:.35rem .65rem;font-size:.78rem}
  .game-meta .icon-button{width:auto;padding:.35rem .5rem}
  .course-stage{height:50vh;min-height:300px}
  .distance-card{grid-template-columns:1fr 1fr}
  .distance-card small{font-size:.62rem}
  .mobile-club-strip button{min-width:104px;font-size:.78rem;padding:.55rem .65rem}
}

/* v0.2.9 mobile control fit and snapped cup alignment */
html,body{max-width:100%;overflow-x:hidden}
@media(max-width:800px){
  .mobile-club-strip{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    overflow:visible;
    width:100%;
    padding:.1rem 0 .3rem;
    gap:.35rem;
  }
  .mobile-club-strip button{
    min-width:0;
    width:100%;
    padding:.58rem .25rem;
    font-size:.75rem;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .controls,.distance-card,.mobile-action-zone{min-width:0;max-width:100%}
  .mobile-action-zone{position:static;width:100%;margin:.1rem 0 0}
}
@media(max-width:460px){
  .play-layout{padding:.4rem}
  .course-stage{height:46vh;min-height:280px}
  .mobile-club-strip button{font-size:.68rem;padding:.52rem .15rem}
  .distance-card span{min-width:0}
}

/* v0.2.11 adaptive course canvas and mobile-first game screen */
.course-stage{height:min(72vh,780px)}
.course-stage>#course{width:100%;height:100%;max-height:none}
.mobile-view-tools,.mobile-panel-close{display:none}

@media(max-width:800px){
  html,body{height:100%;overflow:hidden}
  body{background:#fff}
  header.site-header{height:58px;padding:.55rem .7rem}
  .brand-home{padding:.35rem .58rem;font-size:1rem}
  main{height:calc(100dvh - 58px);max-width:none;padding:0;overflow:hidden}
  .game-shell{height:100%;border:0;border-radius:0;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}
  .game-meta{min-height:54px;padding:.45rem .65rem;gap:.25rem .7rem;font-size:.76rem;line-height:1.15;overflow:hidden}
  .game-meta span:nth-of-type(3),.game-meta span:nth-of-type(4){display:none}
  .game-meta .icon-button{margin-left:auto;padding:.3rem .45rem;font-size:.72rem}
  .completion-banner{position:absolute;z-index:12;left:.5rem;right:.5rem;top:62px;border:1px solid #bad1bd;border-radius:10px;box-shadow:0 5px 18px rgba(23,63,43,.15);font-size:.8rem;padding:.55rem .65rem}
  .play-layout{height:100%;min-height:0;display:grid;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;gap:0;padding:0;background:#fff}
  .course-wrap{min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto}
  .course-stage{height:auto;min-height:0;border-radius:0;background:#8bad69}
  .course-stage>#course{border-radius:0}
  .camera-status{position:absolute;left:.55rem;bottom:.45rem;z-index:5;margin:0;padding:.25rem .45rem;border-radius:999px;background:rgba(23,63,43,.82);color:#fff;font-size:.68rem;font-weight:750}
  .course-minimap{top:.45rem;right:.45rem;width:82px;padding:.25rem;border-radius:8px}
  .minimap-label{font-size:.52rem;margin-bottom:.18rem}
  .elevation-key,.target-inspection{display:none}
  .controls{position:relative;z-index:9;display:grid;grid-template-columns:1fr;gap:.35rem;padding:.45rem .55rem .55rem;border-top:1px solid #cbd8cd;background:#fff;box-shadow:0 -7px 20px rgba(23,63,43,.12)}
  .controls h2,.selected-club-line,.controls>.hint{display:none}
  .mobile-view-tools{display:flex;position:absolute;right:.55rem;top:-2.15rem;z-index:10;gap:.3rem}
  .mobile-tool-button{width:auto;margin:0;padding:.35rem .55rem;border:1px solid rgba(255,255,255,.75);background:rgba(23,63,43,.88);font-size:.68rem;border-radius:999px}
  .distance-card{grid-template-columns:1fr 1fr;gap:.35rem;margin:0}
  .distance-card span{padding:.35rem .5rem;border-radius:8px}
  .distance-card small{font-size:.58rem}
  .distance-card strong{font-size:.95rem}
  .mobile-club-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.25rem;padding:0;width:100%}
  .mobile-club-strip button{min-width:0;width:100%;margin:0;padding:.48rem .15rem;font-size:.62rem;line-height:1.05;white-space:normal;text-overflow:clip;border-radius:8px}
  .mobile-action-zone{position:static;display:grid;gap:.25rem;padding:0;margin:0;border:0;border-radius:0;box-shadow:none;background:transparent}
  .mobile-action-zone button{padding:.62rem .5rem}
  .mobile-action-zone p{display:none}
  .mobile-action-zone .roll-result{padding:.42rem .55rem;font-size:.82rem}
  .shot-history-card,.golf-scorecard{display:none}
  .mobile-overlay-panel{position:fixed!important;display:none!important;z-index:50;inset:64px .5rem .5rem;margin:0!important;overflow:auto;background:#fff;border:1px solid #bdcbbf;border-radius:14px;box-shadow:0 16px 50px rgba(0,0,0,.28)}
  .mobile-overlay-panel.is-open{display:block!important}
  .shot-history-card.mobile-overlay-panel{padding:1rem}
  .mobile-panel-close{display:grid;place-items:center;position:absolute;right:.55rem;top:.45rem;z-index:3;width:34px;height:34px;margin:0;padding:0;border-radius:50%;font-size:1.35rem;background:#173f2b}
  .scorecard-heading-row{padding-right:3.2rem}
  .scorecard-scroll{overflow:auto}
  .scorecard-table{min-width:590px}
}

@media(max-width:480px){
  .game-meta span:nth-of-type(6){display:none}
  .course-minimap{width:72px}
  .controls{padding:.38rem .42rem .45rem}
  .mobile-club-strip button{font-size:.56rem;padding:.42rem .08rem}
  .distance-card strong{font-size:.88rem}
}

@media(max-height:700px) and (max-width:800px){
  header.site-header{height:50px;padding:.35rem .6rem}
  main{height:calc(100dvh - 50px)}
  .game-meta{min-height:44px;padding:.3rem .55rem}
  .course-minimap{width:66px}
  .distance-card span{padding:.28rem .45rem}
  .mobile-club-strip button{padding:.36rem .08rem}
  .mobile-action-zone button{padding:.5rem}
}

/* v0.2.12 mobile completion flow: scorecard is part of every hole/round review */
@media(max-width:800px){
  .game-shell.state-complete{
    display:flex;
    flex-direction:column;
    overflow-y:auto;
    overscroll-behavior:contain;
    background:#f4f7f4;
  }
  .game-shell.state-complete .completion-banner{
    position:static;
    order:0;
    margin:.55rem .55rem 0;
    box-shadow:none;
  }
  .game-shell.state-complete .play-layout{
    display:block;
    height:auto;
    order:1;
    background:transparent;
  }
  .game-shell.state-complete .course-wrap,
  .game-shell.state-complete .mobile-view-tools,
  .game-shell.state-complete .shot-history-card{
    display:none!important;
  }
  .game-shell.state-complete .controls{
    display:block;
    padding:.65rem .65rem .45rem;
    border:0;
    box-shadow:none;
    background:transparent;
  }
  .game-shell.state-complete .controls h2,
  .game-shell.state-complete .distance-card{
    display:none;
  }
  .game-shell.state-complete .hole-summary-card{
    padding:.85rem;
    border:1px solid #cbd8cd;
    background:#fff;
  }
  .game-shell.state-complete .mobile-completion-scorecard{
    display:block!important;
    position:static!important;
    order:2;
    inset:auto;
    width:auto;
    margin:0 .65rem .8rem!important;
    overflow:visible;
    border-radius:12px;
    box-shadow:none;
  }
  .game-shell.state-complete .mobile-completion-scorecard .mobile-panel-close{
    display:none;
  }
  .game-shell.state-complete .mobile-completion-scorecard .scorecard-heading-row{
    padding:.65rem .7rem;
    flex-direction:row;
    align-items:center;
  }
  .game-shell.state-complete .mobile-completion-scorecard .scorecard-kicker{
    display:none;
  }
  .game-shell.state-complete .mobile-completion-scorecard .scorecard-summary{
    margin-left:auto;
    justify-content:flex-end;
  }
  .game-shell.state-complete .mobile-completion-scorecard .scorecard-summary span{
    padding:.25rem .38rem;
    font-size:.68rem;
  }
  .game-shell.state-complete .mobile-completion-scorecard .scorecard-scroll{
    overflow-x:hidden;
  }
  .game-shell.state-complete .mobile-completion-scorecard .scorecard-table{
    width:100%;
    min-width:0;
    table-layout:fixed;
  }
  .game-shell.state-complete .mobile-completion-scorecard .scorecard-table th,
  .game-shell.state-complete .mobile-completion-scorecard .scorecard-table td{
    height:35px;
    padding:.18rem .08rem;
    font-size:.68rem;
  }
  .game-shell.state-complete .mobile-completion-scorecard .scorecard-table .row-label{
    width:68px;
    padding-left:.35rem;
    font-size:.62rem;
  }
  .game-shell.state-complete .mobile-completion-scorecard .scorecard-table .total-column{
    width:48px;
  }
  .game-shell.state-complete .mobile-completion-scorecard .scorecard-legend{
    display:none;
  }
}

/* v0.3.0 unified game UI */
:root{
  --dg-deep:#173f2b;--dg-deep-2:#0f2f20;--dg-fair:#b7d58d;--dg-paper:#f7f5ea;
  --dg-line:#d4ded5;--dg-muted:#607066;--dg-accent:#d8bd58;--dg-radius:16px;
  --dg-space:8px;
}
html,body{min-height:100%;background:#e9efe9}
body{overflow-x:hidden}
.site-header{height:56px;padding:0 max(16px,env(safe-area-inset-left));display:flex;justify-content:space-between;align-items:center;background:var(--dg-deep);box-shadow:0 1px 0 rgba(255,255,255,.12);position:relative;z-index:20}
.brand-home,.brand-home:link,.brand-home:visited{border:0;background:transparent;padding:0;border-radius:0;font-size:1.05rem;letter-spacing:.01em}
.brand-home:hover{transform:none;background:transparent}
.site-tagline{color:rgba(255,255,255,.68);font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
main{max-width:1440px;padding:16px}

.home-screen{min-height:calc(100vh - 88px);display:grid;grid-template-columns:minmax(280px,.82fr) minmax(360px,1.18fr);align-items:center;gap:clamp(28px,6vw,92px);max-width:1080px;margin:auto;padding:clamp(24px,5vw,72px)}
.home-hero h1{font-size:clamp(3rem,8vw,6.8rem);line-height:.9;margin:.2rem 0 1rem;letter-spacing:-.07em;color:var(--dg-deep)}
.eyebrow{margin:0;color:#51705b;font-size:.8rem;font-weight:850;text-transform:uppercase;letter-spacing:.16em}
.home-intro{max-width:420px;font-size:1.05rem;color:var(--dg-muted)}
.round-setup{background:rgba(255,255,255,.88);backdrop-filter:blur(12px);padding:24px;border:1px solid rgba(23,63,43,.12);border-radius:24px;box-shadow:0 18px 50px rgba(23,63,43,.1)}
.mode-picker{border:0;padding:0;margin:0 0 20px;display:grid;grid-template-columns:1fr 1fr;gap:12px}
.mode-picker legend{grid-column:1/-1;font-weight:850;margin-bottom:10px;color:var(--dg-deep)}
.mode-card{cursor:pointer}
.mode-card input{position:absolute;opacity:0;pointer-events:none}
.mode-card-body{display:grid;gap:7px;height:100%;padding:18px;border:1px solid #cbd8cd;border-radius:16px;background:#fff;transition:border-color .16s,box-shadow .16s,transform .16s}
.mode-card-body strong{font-size:1.25rem;color:var(--dg-deep)}
.mode-card-body small{font-weight:800;color:#55705e}
.mode-card-body>span{font-size:.86rem;color:var(--dg-muted);line-height:1.4}
.mode-card input:checked+.mode-card-body{border-color:var(--dg-deep);box-shadow:inset 0 0 0 2px var(--dg-deep),0 8px 24px rgba(23,63,43,.1);transform:translateY(-2px)}
.course-picker{display:grid;gap:8px;font-weight:850;color:var(--dg-deep)}
.course-picker select{margin:0 0 16px;background:#fff;border:1px solid #cbd8cd;padding:13px}
.start-round-button{min-height:52px;font-size:1rem;border-radius:14px;background:var(--dg-deep)}

.game-shell{border:0;border-radius:20px;box-shadow:0 16px 42px rgba(23,63,43,.11);background:#fff}
.game-hud{min-height:58px;padding:10px 14px;gap:8px 18px;background:var(--dg-deep);color:#fff;border:0}
.game-hud span{font-size:.82rem;letter-spacing:.02em}
.game-hud .hud-primary{font-size:1rem}
.game-hud .icon-button{background:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.18)}
.play-layout{grid-template-columns:minmax(0,1fr) minmax(292px,340px);gap:0;padding:0;min-height:min(760px,calc(100vh - 112px))}
.course-wrap{padding:14px;background:#e5ece6;display:flex;flex-direction:column;min-height:0}
.course-stage{flex:1;min-height:520px;border-radius:16px;box-shadow:inset 0 0 0 1px rgba(23,63,43,.12)}
.course-stage>#course{width:100%;height:100%;max-height:none}
.control-deck{padding:18px;background:#fbfcfa;border-left:1px solid var(--dg-line);overflow:auto}
.mode-heading{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--dg-line)}
.mode-heading span{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--dg-muted);font-weight:800}
.mode-heading strong{font-size:1.08rem;color:var(--dg-deep)}
.live-distance{border:0;background:var(--dg-paper);border-radius:14px;padding:12px;margin-bottom:12px}
.club-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.club-grid button{min-height:48px;margin:0;padding:.65rem;font-size:.82rem}
.mobile-view-tools{display:none}
.controls button,.button-link{min-height:48px;border-radius:12px}
.target-inspection{font-size:.86rem}
.golf-scorecard{border-radius:14px;overflow:hidden}

@media (max-width:800px){
  html,body{height:100%;overflow:hidden;background:#dfe7df}
  .site-header{height:46px;padding-inline:14px}
  .site-tagline{display:none}
  .brand-home,.brand-home:link,.brand-home:visited{font-size:.98rem}
  main{height:calc(100dvh - 46px);padding:0;max-width:none}
  .home-screen{height:100%;min-height:0;display:flex;flex-direction:column;gap:18px;padding:20px 16px max(18px,env(safe-area-inset-bottom));overflow:auto}
  .home-hero{text-align:left;width:100%;max-width:560px;margin:0 auto}
  .home-hero h1{font-size:clamp(3rem,17vw,5rem);margin:.25rem 0 .55rem}
  .home-intro{font-size:.95rem;margin:.3rem 0}
  .round-setup{width:100%;max-width:560px;margin:0 auto;padding:16px;border-radius:20px;box-shadow:none}
  .mode-picker{grid-template-columns:1fr;gap:10px;margin-bottom:14px}
  .mode-card-body{padding:14px;grid-template-columns:auto 1fr;column-gap:10px;align-items:center}
  .mode-card-body strong{font-size:1.08rem;grid-row:1}
  .mode-card-body small{grid-row:2}
  .mode-card-body>span{display:none}
  .start-round-button{margin-bottom:0}

  .game-shell{height:100%;border-radius:0;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;box-shadow:none}
  .game-hud{min-height:44px;padding:6px 10px;display:grid;grid-template-columns:repeat(4,auto) 1fr;align-items:center;gap:6px 12px;white-space:nowrap}
  .game-hud span{font-size:.74rem}.game-hud .hud-primary{font-size:.86rem}.hud-desktop-only{display:none!important}
  .game-hud .icon-button{justify-self:end;width:auto;min-height:32px;padding:.3rem .5rem;margin:0;font-size:0}.game-hud .icon-button::after{content:'Sound';font-size:.7rem}
  .completion-banner{display:none}
  .play-layout{display:grid;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;min-height:0;height:100%;gap:0;padding:0}
  .course-wrap{min-height:0;padding:6px;background:#dfe7df;overflow:hidden}
  .course-stage{min-height:0;height:100%;border-radius:12px}
  .course-stage>#course{height:100%;width:100%;max-height:none}
  .course-minimap{top:.4rem;right:.4rem;width:82px;padding:.25rem;border-width:1px}.minimap-label{display:none}
  .camera-status,.elevation-key{display:none}
  .target-inspection{position:absolute;left:10px;right:10px;bottom:4px;z-index:5;margin:0;min-height:0;padding:7px 10px;border-radius:10px;background:rgba(247,250,247,.92);font-size:.72rem;box-shadow:0 3px 12px rgba(0,0,0,.12)}
  .control-deck{position:relative;border:0;border-top:1px solid #cbd6cc;padding:8px 10px max(8px,env(safe-area-inset-bottom));overflow:visible;background:rgba(252,253,251,.98);box-shadow:0 -8px 22px rgba(23,63,43,.08)}
  .mode-heading,.selected-club-line,.hint,.shot-history-card:not(.is-open){display:none}
  .mobile-view-tools{display:flex;position:absolute;right:10px;top:8px;gap:6px}.mobile-view-tools button{width:auto;min-height:30px;padding:.25rem .55rem;margin:0;background:#e7eee8;color:var(--dg-deep);font-size:.7rem}
  .live-distance{display:grid;grid-template-columns:1fr 1fr;width:calc(100% - 120px);padding:6px 8px;margin:0 0 6px;border-radius:10px}
  .live-distance span{display:grid;gap:0}.live-distance small{font-size:.62rem}.live-distance strong{font-size:.9rem}
  .mobile-club-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;margin:0 0 6px}
  .mobile-club-strip button{min-width:0;min-height:38px;padding:4px 2px;font-size:0;line-height:1.1;border-radius:9px}
  .mobile-club-strip button::first-line{font-size:.68rem}
  .mobile-action-zone{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:center}
  .mobile-action-zone>p{display:none}.mobile-action-zone .roll-result{padding:8px;font-size:.83rem}.mobile-action-zone button{margin:0;min-height:40px;padding:.5rem .7rem}
  #roll-button{grid-column:1/-1;margin:0;min-height:44px;font-size:.94rem}
  #tap-in-button{grid-column:1/-1}
  .state-complete{display:block;overflow:auto;background:var(--dg-paper)}
  .state-complete .game-hud{position:sticky;top:0;z-index:10}
  .state-complete .play-layout{display:block;height:auto;min-height:0}
  .state-complete .course-wrap{display:none}
  .state-complete .control-deck{padding:18px 14px;background:var(--dg-paper);box-shadow:none}
  .state-complete .mobile-view-tools,.state-complete .live-distance{display:none}
  .state-complete .round-summary{padding:18px;background:#fff;border:1px solid var(--dg-line)}
  .state-complete .summary-stats{grid-template-columns:repeat(3,1fr)}
  .mobile-completion-scorecard{display:block!important;position:static!important;inset:auto!important;transform:none!important;margin:0 14px 18px!important;max-height:none!important}
  .mobile-completion-scorecard .mobile-panel-close{display:none}
  .mobile-completion-scorecard .scorecard-heading-row{padding:12px;gap:8px}
  .mobile-completion-scorecard .scorecard-summary{font-size:.72rem}
  .mobile-completion-scorecard .scorecard-table{min-width:0;font-size:.68rem}
  .mobile-completion-scorecard .scorecard-table th,.mobile-completion-scorecard .scorecard-table td{height:36px;padding:2px}
  .mobile-completion-scorecard .scorecard-table .row-label{width:62px;padding-left:5px;font-size:.65rem}
  .mobile-completion-scorecard .scorecard-table .total-column{width:52px}
  .mobile-completion-scorecard .scorecard-legend{display:none}
}

@media (max-width:380px){
  .game-hud{gap:4px 7px}.game-hud span{font-size:.68rem}
  .mobile-club-strip{gap:3px}.mobile-club-strip button{min-height:34px}
  .live-distance{width:calc(100% - 104px)}
  .mobile-view-tools{right:7px}.mobile-view-tools button{padding:.2rem .4rem}
}
.club-grid button .club-name,.club-grid button .club-range{display:block}.club-grid button .club-range{font-size:.72em;opacity:.78;margin-top:2px}
@media(max-width:800px){.mobile-club-strip button{font-size:.68rem}.mobile-club-strip button::first-line{font-size:inherit}.mobile-club-strip .club-range{font-size:.58rem}}


/* v0.3.1 viewport, camera, mobile controls and settings fixes */
.site-actions{display:flex;align-items:center;gap:12px}
.settings-button{width:auto;min-height:34px;margin:0;padding:.42rem .7rem;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);color:#fff;font-size:.76rem}
.settings-panel[hidden]{display:none}
.settings-panel{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px;background:rgba(10,25,17,.48);backdrop-filter:blur(5px)}
.settings-card{width:min(360px,100%);padding:18px;border-radius:18px;background:#fff;box-shadow:0 22px 70px rgba(0,0,0,.25)}
.settings-heading-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.settings-heading-row h2{margin:0;color:var(--dg-deep)}
.settings-close{width:38px;min-height:38px;margin:0;padding:0;background:#e7eee8;color:var(--dg-deep);font-size:1.5rem}
.settings-option{margin:0;background:var(--dg-deep)}
.settings-open{overflow:hidden}
.secondary-link{background:#e7eee8;color:var(--dg-deep);border:1px solid #bdccbf}
.dev-roll-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:end;padding:8px;margin-top:7px;border:1px dashed #aebfaf;border-radius:11px;background:#f5f8f5}
.dev-roll-control label{display:grid;gap:3px;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#53675a}
.dev-roll-control input{width:100%;min-height:38px;padding:6px 8px;border:1px solid #b8c8ba;border-radius:8px;font-size:1rem}
.dev-roll-control button{width:auto;min-width:62px;min-height:38px;margin:0;padding:.45rem .7rem}
.has-pending-roll .course-minimap{display:none}
@media(min-width:801px){
  main{padding-top:4px}
  .game-shell.state-playing{min-height:calc(100dvh - 8px)}
  .game-shell.state-playing .play-layout{height:calc(100dvh - 66px);min-height:620px}
  .game-shell.state-playing .course-stage{height:100%;min-height:0}
  .game-shell.state-playing .control-deck{height:100%;overflow-y:auto}
  .game-shell.state-playing+.golf-scorecard{margin-top:12px}
}
@media(max-width:800px){
  .site-actions{gap:6px}.settings-button{min-height:30px;padding:.32rem .55rem;font-size:.7rem}.site-tagline{display:none}
  .game-hud{grid-template-columns:repeat(3,auto) 1fr}
  .play-layout{grid-template-rows:minmax(190px,1fr) minmax(0,auto)}
  .course-wrap{position:relative}
  .target-inspection{display:none!important}
  .mobile-view-tools{top:12px;left:12px;right:auto;z-index:8;transition:opacity .15s}
  .mobile-view-tools button{box-shadow:0 2px 8px rgba(0,0,0,.14);background:rgba(247,250,247,.94)}
  .has-pending-roll .mobile-view-tools{opacity:0;pointer-events:none}
  .control-deck{max-height:46dvh;overflow-y:auto!important;overscroll-behavior:contain;padding-bottom:max(10px,env(safe-area-inset-bottom))}
  .live-distance{width:100%;padding-right:8px}
  .mobile-action-zone{grid-template-columns:minmax(0,1fr);width:100%;padding-bottom:1px}
  .mobile-action-zone .roll-result{width:100%}
  .mobile-action-zone button,#roll-button,#tap-in-button{grid-column:1/-1;width:100%;min-height:44px}
  .dev-roll-control{grid-column:1/-1;margin-top:2px}
  .state-playing .golf-scorecard.mobile-overlay-panel,.state-playing .shot-history-card.mobile-overlay-panel{z-index:60}
}
@media(max-width:420px){
  .control-deck{max-height:49dvh;padding:7px 8px max(8px,env(safe-area-inset-bottom))}
  .live-distance{margin-bottom:5px}.live-distance span{padding:.28rem .4rem}
  .mobile-action-zone button,#roll-button,#tap-in-button{min-height:41px;padding:.45rem .6rem}
  .dev-roll-control{padding:6px}
}

/* v0.3.2 mobile viewport and scorecard fit fixes */
@media (max-width:800px){
  /* Let the control deck claim the space it needs; the course flexes to fit. */
  .play-layout{
    grid-template-rows:minmax(160px,1fr) auto;
  }
  .control-deck{
    max-height:none;
    overflow:visible!important;
    flex-shrink:0;
    padding-bottom:max(12px,env(safe-area-inset-bottom));
  }
  .mobile-action-zone{
    gap:7px;
    padding-bottom:0;
  }
  .mobile-action-zone button,
  #roll-button,
  #tap-in-button{
    min-height:46px;
    flex-shrink:0;
  }
  #tap-in-button{
    order:2;
  }
  .dev-roll-control{
    order:3;
    margin-bottom:0;
  }

  /* Scorecard fits the phone width instead of requiring sideways scrolling. */
  .state-playing .golf-scorecard.mobile-overlay-panel{
    inset:62px 8px auto;
    width:auto;
    max-height:calc(100dvh - 74px);
    overflow-y:auto;
    overflow-x:hidden;
  }
  .state-playing .golf-scorecard .scorecard-heading-row{
    padding:12px 48px 10px 12px;
    gap:8px;
  }
  .state-playing .golf-scorecard .scorecard-heading-row h2{
    font-size:1.05rem;
  }
  .state-playing .golf-scorecard .scorecard-summary{
    gap:5px;
  }
  .state-playing .golf-scorecard .scorecard-summary span{
    padding:4px 6px;
    font-size:.7rem;
  }
  .state-playing .golf-scorecard .scorecard-scroll{
    width:100%;
    overflow-x:hidden;
    border-top:1px solid #aab3aa;
  }
  .state-playing .golf-scorecard .scorecard-table{
    width:100%;
    min-width:0;
    table-layout:fixed;
    font-size:.64rem;
  }
  .state-playing .golf-scorecard .scorecard-table th,
  .state-playing .golf-scorecard .scorecard-table td{
    height:39px;
    padding:2px 1px;
    overflow:hidden;
    text-overflow:clip;
  }
  .state-playing .golf-scorecard .scorecard-table .row-label{
    width:72px;
    padding-left:6px;
    font-size:.61rem;
  }
  .state-playing .golf-scorecard .scorecard-table .total-column{
    width:48px;
  }
  .state-playing .golf-scorecard .scorecard-legend{
    gap:5px 9px;
    padding:7px 9px;
    font-size:.62rem;
  }
}

@media (max-width:380px){
  .play-layout{grid-template-rows:minmax(145px,1fr) auto}
  .control-deck{padding:6px 7px max(9px,env(safe-area-inset-bottom))}
  .mobile-action-zone button,#roll-button,#tap-in-button{min-height:43px}
  .state-playing .golf-scorecard .scorecard-table{font-size:.59rem}
  .state-playing .golf-scorecard .scorecard-table .row-label{width:66px;font-size:.57rem}
  .state-playing .golf-scorecard .scorecard-table .total-column{width:43px}
}


/* v0.3.3 scorecard grouping: desktop keeps the full card; mobile uses groups of nine. */
.scorecard-mobile-view{display:none}
.scorecard-section-title{margin:0;padding:9px 12px;background:#edf3ed;border-top:1px solid #aab3aa;border-bottom:1px solid #aab3aa;color:#173f2b;font-size:.76rem;letter-spacing:.08em;text-transform:uppercase}
@media(max-width:800px){
  .scorecard-desktop-view{display:none}
  .scorecard-mobile-view{display:block}
  .scorecard-mobile-view .scorecard-section+.scorecard-section{margin-top:10px;border-top:2px solid #173f2b}
  .state-playing .golf-scorecard .scorecard-scroll,
  .mobile-completion-scorecard .scorecard-scroll{overflow-x:hidden}
  .state-playing .golf-scorecard .scorecard-table,
  .mobile-completion-scorecard .scorecard-table{min-width:0;width:100%;table-layout:fixed}
}


/* v0.4 environment system */
.environment-card { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; padding:12px; border-radius:18px; background:#eef4ed; border:1px solid #c7d8ca; }
.environment-card span { display:flex; flex-direction:column; gap:3px; }
.environment-card small { text-transform:uppercase; letter-spacing:.08em; color:#5c6b62; font-weight:800; }
.environment-card strong { color:#154b32; }
.dev-environment-control { display:grid; grid-template-columns:1fr auto; gap:8px; padding:10px; border:1px dashed #9db5a4; border-radius:16px; }
.dev-environment-control label { display:grid; grid-template-columns:auto 1fr 84px; gap:8px; align-items:center; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:#5c6b62; }
.dev-environment-control select,.dev-environment-control input { min-width:0; padding:10px; border:1px solid #b9cbbd; border-radius:10px; background:white; }
@media (max-width:800px){ .environment-card{grid-template-columns:1fr 1fr;padding:8px}.dev-environment-control{grid-template-columns:1fr}.dev-environment-control label{grid-template-columns:1fr 1fr}.dev-environment-control label:first-line{grid-column:1/-1} }


/* v0.4.1 course conditions and green elevations */
.course-stage{position:relative}
.course-environment-hud{position:absolute;left:14px;top:14px;z-index:7;display:flex;flex-direction:column;gap:8px;max-width:min(280px,calc(100% - 170px));pointer-events:none}
.course-condition{display:flex;align-items:center;gap:9px;padding:8px 11px;border:2px solid rgba(255,255,255,.92);border-radius:14px;background:rgba(23,63,43,.9);color:#fff;box-shadow:0 5px 16px rgba(18,40,25,.2);backdrop-filter:blur(4px)}
.course-condition.is-ignored{opacity:.78}
.course-condition .condition-icon{display:grid;place-items:center;min-width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.16);font-size:1.55rem;font-weight:900;line-height:1}
.course-condition span:last-child{display:flex;flex-direction:column;line-height:1.12}
.course-condition strong{font-size:.9rem}.course-condition small{font-size:.7rem;opacity:.92;margin-top:3px}
.green-elevation-1{fill:#d9efb2}.green-elevation-2{fill:#d2eaa4}.green-elevation-3{fill:#c9e394}.green-elevation-4{fill:#bfdb84}
.green-elevation-label circle{fill:rgba(23,63,43,.82);stroke:#fff;stroke-width:3}.green-elevation-label text{fill:#fff;font-size:20px;font-weight:850;text-anchor:middle;paint-order:stroke;stroke:#173f2b;stroke-width:3}
.course-minimap .course-environment-hud,.course-minimap .green-elevation-label{display:none}
@media(max-width:800px){
 .course-environment-hud{left:10px;top:10px;max-width:calc(100% - 145px);gap:5px}
 .course-condition{padding:6px 8px;border-radius:11px;gap:7px}
 .course-condition .condition-icon{min-width:28px;height:28px;font-size:1.25rem}
 .course-condition strong{font-size:.78rem}.course-condition small{font-size:.62rem}
}

/* v0.4.1 environmental presentation */
.course-wind{
  position:absolute;
  top:16px;
  left:16px;
  z-index:7;
  display:grid;
  grid-template-columns:auto auto;
  grid-template-areas:"icon reading" "effect effect";
  align-items:center;
  gap:2px 9px;
  min-width:132px;
  padding:9px 12px;
  border:2px solid rgba(255,255,255,.9);
  border-radius:16px;
  background:rgba(20,63,43,.9);
  box-shadow:0 8px 22px rgba(18,45,30,.2);
  color:#fff;
  backdrop-filter:blur(7px);
  pointer-events:none;
}
.wind-direction-icon{grid-area:icon;font-size:2rem;font-weight:900;line-height:1}
.wind-reading{grid-area:reading;display:flex;align-items:baseline;gap:4px}
.wind-reading strong{font-size:1.2rem;line-height:1}
.wind-reading small{font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.wind-effect{grid-area:effect;font-size:.68rem;font-weight:800;letter-spacing:.03em;opacity:.92}
.course-wind.is-disabled{background:rgba(66,83,72,.88)}

.environment-guide{border:1px solid #c7d8ca;border-radius:16px;background:#f4f7f2;overflow:hidden}
.environment-guide summary{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;color:#173f2b;font-weight:850;list-style:none}
.environment-guide summary::-webkit-details-marker{display:none}
.environment-guide summary span::before{content:'ⓘ';margin-right:7px}
.environment-guide summary strong{font-size:.78rem;color:#5c6b62;white-space:nowrap}
.environment-guide-body{display:grid;gap:7px;padding:0 12px 11px;border-top:1px solid #d6e1d7}
.environment-guide-body p{display:grid;grid-template-columns:27px 1fr;gap:7px;align-items:start;margin:9px 0 0;color:#41564a;font-size:.86rem;line-height:1.25}
.effect-icon{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#1d6543;color:#fff;font-weight:900}

.green-elevation-1{filter:brightness(1.01)}
.green-elevation-2{filter:brightness(.98)}
.green-elevation-3{filter:brightness(.95)}
.green-elevation-badge circle{fill:rgba(20,63,43,.9);stroke:#fff;stroke-width:4}
.green-elevation-badge text{fill:#fff;font-size:24px;font-weight:900;text-anchor:middle}

@media(max-width:800px){
  .course-wind{top:10px;left:10px;min-width:112px;padding:7px 9px;border-radius:14px}
  .wind-direction-icon{font-size:1.65rem}
  .wind-reading strong{font-size:1rem}
  .wind-effect{font-size:.6rem}
  .environment-guide summary{padding:8px 10px;font-size:.82rem}
  .environment-guide-body{padding:0 10px 9px}
  .environment-guide-body p{font-size:.76rem}
}

.shot-effect-note{font-size:.76rem;color:#6a756e;font-weight:700}
.has-pending-roll .course-wind{opacity:0;visibility:hidden}
@media(max-width:800px){.course-wind{left:50%;transform:translateX(-50%);top:10px}}

/* v0.4.3 compact, non-blocking course conditions */
.course-environment-hud{
  flex-direction:row;
  flex-wrap:wrap;
  gap:6px;
  max-width:calc(100% - 190px);
}
.course-condition{
  min-width:0;
  padding:6px 9px;
  border-radius:999px;
  gap:7px;
}
.course-condition .condition-icon{
  min-width:28px;
  width:28px;
  height:28px;
  font-size:1.2rem;
}
.course-condition strong{font-size:.78rem;white-space:nowrap}
.course-condition small{font-size:.59rem;white-space:nowrap;margin-top:1px}
.has-pending-roll .course-environment-hud{
  opacity:0;
  visibility:hidden;
}
.settings-help{margin-top:12px;border:1px solid #c7d8ca;border-radius:14px;background:#f4f7f2;overflow:hidden}
.settings-help summary{padding:11px 12px;cursor:pointer;font-weight:850;color:var(--dg-deep)}
.settings-help-body{padding:0 12px 10px;border-top:1px solid #d6e1d7}
.settings-help-body p{margin:9px 0;color:#41564a;font-size:.84rem;line-height:1.35}
@media(max-width:800px){
  .course-environment-hud{max-width:calc(100% - 150px);gap:4px}
  .course-condition{padding:4px 7px;gap:5px}
  .course-condition .condition-icon{min-width:24px;width:24px;height:24px;font-size:1rem}
  .course-condition strong{font-size:.7rem}
  .course-condition small{font-size:.54rem}
}

/* v0.4.4: dice-forward conditions UI */
.course-info-button{position:absolute;right:16px;bottom:16px;z-index:8;width:42px;height:42px;border-radius:50%;padding:0;background:#f8fbf6;color:#17452f;border:3px solid #17452f;font:800 24px/1 Georgia,serif;box-shadow:0 4px 14px rgba(13,48,31,.22)}
.has-pending-roll .course-info-button{display:none}
.conditions-dialog[hidden]{display:none}.conditions-dialog{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:18px;background:rgba(10,25,17,.55);backdrop-filter:blur(4px)}
.conditions-card{position:relative;width:min(520px,100%);background:#fbfaf3;border:2px solid #bacabc;border-radius:24px;padding:28px;color:#183f2d;box-shadow:0 18px 60px rgba(0,0,0,.25)}
.conditions-card h2{margin:0 44px 18px 0}.conditions-card p{font-size:1.05rem;line-height:1.45}.conditions-close{position:absolute;right:14px;top:14px;width:42px;height:42px;border-radius:50%;padding:0}
.dice-visual{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.dice-face{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:9px;background:#fff;color:#163f2c;border:2px solid #163f2c;font-size:34px;line-height:1;box-shadow:0 3px 0 rgba(22,63,44,.22)}
.roll-result{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.dice-visual-large{justify-content:center;gap:14px}.dice-visual-large .dice-face{width:68px;height:68px;font-size:56px;border-radius:14px}
.wind-roll-reveal{position:fixed;inset:0;z-index:130;display:grid;place-items:center;padding:20px;background:rgba(8,28,18,.72);backdrop-filter:blur(7px)}
.wind-roll-card{width:min(460px,100%);text-align:center;background:#fbfaf3;border-radius:26px;padding:30px;color:#173f2b;box-shadow:0 24px 80px rgba(0,0,0,.35)}.wind-roll-card h2{margin:7px 0 22px}.wind-roll-card>small{text-transform:uppercase;letter-spacing:.12em;font-weight:800}.wind-roll-result{display:flex;justify-content:center;align-items:center;gap:16px;margin:24px 0}.wind-result-arrow{font-size:56px;font-weight:900}.wind-roll-result span:last-child{display:flex;flex-direction:column;text-align:left}.wind-roll-result strong{font-size:1.45rem}.wind-roll-result small{font-size:.95rem}
.green-break-condition .condition-icon{font-size:1.4rem}
@media(max-width:800px){.course-info-button{right:10px;bottom:10px;width:38px;height:38px;font-size:21px}.dice-face{width:38px;height:38px;font-size:30px}.dice-visual-large .dice-face{width:60px;height:60px;font-size:49px}.wind-roll-card{padding:24px 18px}.conditions-card{padding:24px 20px}.course-environment-hud{max-width:calc(100% - 118px)}}
.wind-roll-reveal .dice-face{animation:diceReveal .52s cubic-bezier(.2,.8,.2,1) both}.wind-roll-reveal .dice-face:nth-child(2){animation-delay:.08s}.wind-roll-reveal .dice-face:nth-child(3){animation-delay:.16s}@keyframes diceReveal{0%{transform:translateY(-24px) rotate(-35deg) scale(.7);opacity:0}70%{transform:translateY(4px) rotate(8deg) scale(1.06);opacity:1}100%{transform:none;opacity:1}}

/* v0.4.5: transparent wind-roll mapping */
.wind-dice-breakdown{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:8px 0 18px}
.wind-die-step{display:flex;min-width:0;flex-direction:column;align-items:center;gap:5px}
.wind-die-step small{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#5a685f}
.wind-die-step strong{font-size:.88rem;line-height:1.1}
.wind-die-step .dice-face{width:68px;height:68px;font-size:54px}
@media(max-width:520px){.wind-dice-breakdown{gap:7px}.wind-die-step .dice-face{width:56px;height:56px;font-size:45px}.wind-die-step small{font-size:.56rem}.wind-die-step strong{font-size:.74rem}.wind-roll-card{padding-left:14px;padding-right:14px}}


/* v0.4.6 settings, pin placement and minimap refinement */
.gameplay-settings{display:grid;gap:10px;margin-top:14px}.gameplay-settings h3{margin:0;color:#173f2b}
.setting-toggle-row{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:12px;border:1px solid #c7d8ca;border-radius:14px;background:#f4f7f2}
.setting-toggle-row span{display:flex;flex-direction:column;gap:3px}.setting-toggle-row small{color:#526359;line-height:1.35}.setting-toggle-row input{width:24px;height:24px;accent-color:#20633f}
.conditions-roll-card{width:min(600px,100%);max-height:min(92vh,820px);overflow:auto;text-align:left}.conditions-roll-card>small,.conditions-roll-card>h2{text-align:center}
.pre-hole-roll-section{padding:14px 0;border-top:1px solid #cfdbd0}.pre-hole-roll-section h3{text-align:center;margin:0 0 12px}.pin-dice-breakdown{display:grid;grid-template-columns:repeat(2,minmax(0,140px));justify-content:center;gap:20px}.pin-result{text-align:center;margin:12px 0 0;font-size:1.05rem}.disabled-condition-note{text-align:center;padding:12px;border-radius:12px;background:#edf2ed;color:#536158}
.course-minimap .shot-history-path{stroke-width:5!important;stroke-dasharray:10 10!important}
.course-minimap .shot-history-point{r:8px!important;stroke-width:3!important}
.course-minimap .ball{r:15px!important;stroke-width:5!important}
@media(max-width:800px){.setting-toggle-row{padding:10px}.conditions-roll-card{padding:20px 14px}.pin-dice-breakdown{gap:10px}.course-minimap .shot-history-path{stroke-width:4!important}}


/* v0.4.7 mobile overlay placement and condition status clarity */
.condition-help-list{display:grid;gap:10px}
.condition-help-item{padding:12px 14px;border:1px solid #c8d5ca;border-radius:14px;background:#f4f7f3}
.condition-help-item p{margin:6px 0 0;font-size:.92rem;line-height:1.4}
.condition-help-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.condition-status{display:inline-flex;align-items:center;justify-content:center;min-width:58px;padding:4px 9px;border-radius:999px;font-size:.72rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase}
.condition-status.is-active{background:#dcefe1;color:#14502e;border:1px solid #9dc3a7}
.condition-status.is-off{background:#eceeed;color:#5b625d;border:1px solid #c8ceca}
@media(max-width:800px){
  /* Keep scorecard and shot-history controls away from the condition HUD. */
  .mobile-view-tools{top:auto!important;left:12px!important;right:auto!important;bottom:12px!important;z-index:9}
  .mobile-tool-button{background:rgba(247,250,247,.95)!important;color:#173f2b!important;border-color:rgba(23,63,43,.2)!important}
  .course-info-button{z-index:10}
  .conditions-card{max-height:calc(100dvh - 28px);overflow:auto}
  .condition-help-item{padding:10px 12px}
  .condition-help-item p{font-size:.84rem}
}

/* v0.4.8 mobile finishing, strategy settings and minimap clarity */
.settings-section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.settings-section-heading h3{margin:.9rem 0 .45rem}
.strategy-only-badge{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:999px;background:#e7eee8;color:var(--dg-deep);font-size:.65rem;font-weight:850;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
.strategy-settings-note{margin:0 0 8px;color:#5b6b60;font-size:.76rem;line-height:1.35}
.gameplay-settings.is-strategy-only .setting-toggle-row{opacity:.68}
.gameplay-settings.is-strategy-only input{cursor:not-allowed}

/* The minimap is a heavily reduced copy of the main SVG, so use true hairline marks. */
.course-minimap .shot-history-path{stroke-width:1.5!important;stroke-dasharray:5 5!important;vector-effect:none!important}
.course-minimap .shot-history-point{r:4px!important;stroke-width:1.5!important}
.course-minimap .ball{r:7px!important;stroke-width:2!important}
.course-minimap .cup{r:5px!important}

/* A hole-out target reads as a cup/bullseye rather than another ordinary option. */
.legal-target.cup-target{fill:#f7cf45;stroke:#fff;stroke-width:8;filter:drop-shadow(0 0 5px rgba(23,63,43,.8))}
.legal-target.cup-target:hover,.legal-target.cup-target.is-selected{fill:#ffd95b;stroke:#173f2b;stroke-width:10}

@media(max-width:800px){
  /* Give browser chrome and phone safe areas more breathing room. */
  .control-deck{padding-bottom:max(28px,calc(env(safe-area-inset-bottom) + 16px))!important}
  .game-shell.state-playing{scroll-margin-top:0}

  /* Show the final ball in the cup briefly before revealing the summary. */
  .state-complete.completion-preview{height:100dvh;overflow:hidden}
  .state-complete.completion-preview .completion-banner,
  .state-complete.completion-preview .control-deck,
  .state-complete.completion-preview .mobile-completion-scorecard{display:none!important}
  .state-complete.completion-preview .play-layout{display:block;height:calc(100dvh - 58px)}
  .state-complete.completion-preview .course-wrap{display:block!important;height:100%;padding:6px}
  .state-complete.completion-preview .course-stage{height:100%}
  .state-complete.completion-preview .course-stage>#course{height:100%;width:100%}
  .state-complete.completion-preview .mobile-view-tools,
  .state-complete.completion-preview .course-info-button,
  .state-complete.completion-preview .course-environment-hud{display:none!important}
}


/* v0.4.9 settings, minimap and mobile completion fixes */
.settings-gear-button{display:inline-grid;place-items:center;width:42px;min-width:42px;height:42px;padding:0;border-radius:12px;font-size:1.25rem;line-height:1}
.settings-card{max-height:min(86dvh,720px);overflow:auto}
.course-minimap .shot-history-path{stroke-width:.25!important;stroke-dasharray:2 6!important;stroke-linecap:round!important;vector-effect:none!important}
.course-minimap .shot-history-point{r:2.5px!important;stroke-width:.75!important}
.course-minimap .ball{r:4px!important;stroke-width:1!important}
.course-minimap .cup{r:3px!important}
@media(max-width:800px){
  html.mobile-game-active .site-header{display:none}
  html.mobile-game-active main{padding-top:0}
  html.mobile-game-active .game-shell{border-top-left-radius:0;border-top-right-radius:0}
  .settings-gear-button{width:40px;min-width:40px;height:40px}
  .control-deck{padding-bottom:max(42px,calc(env(safe-area-inset-bottom) + 26px))!important}
}

/* v0.4.10 persistent Strategy settings, icon-only settings control and larger mobile course */
.settings-gear-button{
  display:inline-grid;
  place-items:center;
  width:auto;
  min-width:0;
  height:auto;
  min-height:0;
  margin:0;
  padding:4px;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  color:#fff;
  font-size:1.45rem;
  line-height:1;
}
.settings-gear-button:hover,.settings-gear-button:focus-visible{background:transparent;transform:none;color:#fff;outline:2px solid rgba(255,255,255,.7);outline-offset:4px}
.gameplay-settings.is-strategy-only .setting-toggle-row{opacity:1}
.gameplay-settings.is-strategy-only input{cursor:pointer}
@media(max-width:800px){
  html.mobile-game-active main{height:100dvh}
  .settings-gear-button{width:auto;min-width:0;height:auto;padding:3px;font-size:1.35rem}
  .control-deck{padding-bottom:max(16px,calc(env(safe-area-inset-bottom) + 10px))!important}
  .course-wrap{padding:4px}
}


/* v0.4.11: responsive error state */
.error-card{
  width:min(560px,calc(100% - 2rem));
  margin:clamp(1rem,8vh,5rem) auto;
  padding:clamp(1.25rem,4vw,2.25rem);
  border:1px solid #d3ded5;
  border-radius:18px;
  background:#fff;
  box-shadow:0 18px 45px rgba(23,63,43,.12);
}
.error-kicker{margin:0 0 .4rem;color:#5b6b60;font-size:.78rem;font-weight:850;letter-spacing:.14em;text-transform:uppercase}
.error-card h1{margin:0;font-size:clamp(1.8rem,7vw,3rem);line-height:1.02;color:#173f2b;overflow-wrap:anywhere}
.error-message{margin:1rem 0 1.4rem;font-size:clamp(1rem,3.8vw,1.2rem);color:#425649}
.error-home-link{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.75rem 1rem;border-radius:12px;background:#205c3b;color:#fff;text-decoration:none;font-weight:800}
.error-home-link:hover{background:#173f2b}
@media(max-width:800px){
  body:not(.game-page) main{padding:.75rem}
  .error-card{margin:1rem auto;width:100%;min-height:calc(100dvh - 7rem);display:flex;flex-direction:column;justify-content:center;align-items:flex-start}
  .error-home-link{width:100%}
}

/* v0.4.12 pre-hole round controls */
.pre-hole-actions{display:grid;gap:12px;margin-top:22px}
.pre-hole-actions button{width:100%;margin:0}
.secondary-button.abandon-round-button{background:transparent;color:#183f2d;border:2px solid #9db3a4;box-shadow:none}
.secondary-button.abandon-round-button:hover{background:#edf2ed;border-color:#6f8e79}
@media(max-width:800px){.pre-hole-actions{gap:10px;margin-top:18px}.secondary-button.abandon-round-button{min-height:52px}}


/* v0.4.13 custom abandon confirmation and tee club rules */
.abandon-dialog[hidden]{display:none}
.abandon-dialog{position:fixed;inset:0;z-index:145;display:grid;place-items:center;padding:18px;background:rgba(8,28,18,.68);backdrop-filter:blur(7px)}
.abandon-card{position:relative;width:min(460px,100%);padding:28px;border:2px solid #b9cabb;border-radius:24px;background:#fbfaf3;color:#173f2b;box-shadow:0 24px 80px rgba(0,0,0,.36)}
.abandon-card h2{margin:.25rem 42px .75rem 0;font-size:clamp(1.55rem,5vw,2.1rem);line-height:1.05}
.abandon-card>p:not(.dialog-kicker){margin:0;color:#4c6155;font-size:1rem;line-height:1.5}
.dialog-kicker{margin:0;color:#637369;font-size:.72rem;font-weight:900;letter-spacing:.13em;text-transform:uppercase}
.abandon-close{position:absolute;top:14px;right:14px;width:42px;height:42px;min-height:0;padding:0;border-radius:50%;background:#e5ede6;color:#173f2b;font-size:1.5rem;line-height:1}
.abandon-dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:24px}
.abandon-dialog-actions button{width:100%;min-height:50px;margin:0}
.danger-button{background:#8c2f2f;color:#fff;border:2px solid #8c2f2f;box-shadow:none}
.danger-button:hover{background:#6f2424;border-color:#6f2424}
html.dialog-open{overflow:hidden}
@media(max-width:520px){.abandon-card{padding:24px 18px}.abandon-dialog-actions{grid-template-columns:1fr}.abandon-dialog-actions .danger-button{order:2}}

/* v0.5.0 player history */
.home-stats-link { text-align:center; margin-top:1rem; }
.stats-page { width:min(1100px, calc(100% - 32px)); margin:2rem auto; }
.stats-heading { display:flex; justify-content:space-between; gap:1rem; align-items:flex-start; margin-bottom:1.5rem; }
.stats-summary { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:18px; }
.stats-summary article,.stats-card { background:var(--panel, #fffdf5); border:1px solid rgba(23,70,49,.16); border-radius:18px; padding:18px; }
.stats-summary strong { display:block; font-size:1.8rem; }
.stats-summary span { font-size:.85rem; opacity:.7; }
.stats-card { margin-bottom:16px; }
.stats-table-wrap { overflow:auto; }
.stats-card table { width:100%; border-collapse:collapse; min-width:620px; }
.stats-card th,.stats-card td { text-align:left; padding:10px; border-bottom:1px solid rgba(23,70,49,.12); }
@media (max-width:700px){.stats-summary{grid-template-columns:repeat(2,1fr)}.stats-heading{display:block}.stats-heading .secondary{display:inline-block;margin-top:12px}}
.home-secondary-links{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap}.profile-form{display:flex;gap:1rem;align-items:end;flex-wrap:wrap}.profile-form label{display:grid;gap:.4rem;min-width:min(100%,20rem)}.profile-form input{padding:.8rem;border:1px solid rgba(0,0,0,.18);border-radius:.7rem;font:inherit}.achievement-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.8rem}.achievement-grid article,.replay-list article{display:grid;gap:.25rem;padding:1rem;border:1px solid rgba(0,0,0,.1);border-radius:.8rem}.achievement-grid span,.replay-list span,.replay-list small{opacity:.72}.replay-list{display:grid;gap:.7rem}.form-error{font-weight:700}

/* v0.6.1 dynamic course legend and diagnostics */
.course-legend{display:flex;flex-wrap:wrap;gap:.45rem .85rem;padding:.65rem .85rem;margin-top:.55rem;border-radius:12px;background:rgba(255,255,255,.68);color:#244534;font-size:.76rem}
.course-legend-item{display:inline-flex;align-items:center;gap:.35rem;white-space:nowrap}
.course-legend-item i{display:inline-grid;place-items:center;min-width:22px;height:18px;font-style:normal;font-weight:900}
.course-legend-item strong{font-weight:650}
.legend-fairway i,.legend-green i,.legend-sand i,.legend-water i{width:20px;border-radius:4px;border:1px solid rgba(23,63,43,.25)}
.legend-fairway i{background:#eff8d9}.legend-green i{background:#cce99a}.legend-sand i{background:#ecd99d}.legend-water i{background:#50a6d5}
.legend-legal-target i{border:2px solid #173f2b;border-radius:50%}.legend-blocked-target i{border:2px solid #8d302c;border-radius:50%;color:#8d302c}
.diagnostics-page{max-width:1100px;margin:2rem auto}.diagnostics-list{display:grid;grid-template-columns:max-content 1fr;gap:.5rem 1rem}
.diagnostics-list dt{font-weight:800}.diagnostics-list dd{margin:0;overflow-wrap:anywhere}
.diagnostics-table{display:grid;gap:.45rem}.diagnostics-table>div{display:flex;justify-content:space-between;gap:1rem;padding:.65rem .8rem;border-radius:10px;background:#f3f7f1}
.validation-result{display:grid;gap:.25rem;padding:.75rem;margin:.5rem 0;border-left:5px solid #2d7650;background:#f3f7f1}.validation-result.is-invalid{border-left-color:#a43d36;background:#fff1ef}
@media(max-width:700px){.course-legend{overflow-x:auto;flex-wrap:nowrap}.diagnostics-table>div{align-items:flex-start;flex-direction:column}}

/* v0.6.3 mobile course tools, legend panel and round exit */
.mobile-exit-round{display:none}
.mobile-legend-panel{display:none}
@media(max-width:800px){
  .game-hud{grid-template-columns:repeat(3,auto) 1fr auto}
  .mobile-exit-round{display:inline-flex;align-items:center;justify-content:center;justify-self:end;width:auto;min-height:30px;margin:0;padding:.28rem .58rem;border:1px solid rgba(255,255,255,.45);border-radius:9px;background:rgba(255,255,255,.1);color:#fff;font-size:.7rem;font-weight:850}
  .mobile-view-tools{position:absolute;left:10px;right:auto;top:10px;z-index:12;display:flex;gap:6px;max-width:calc(100% - 110px);flex-wrap:wrap}
  .mobile-view-tools button{min-height:32px;padding:.3rem .58rem;border-radius:999px;box-shadow:0 2px 8px rgba(0,0,0,.16);background:rgba(247,250,247,.96)}
  .course-wrap>.course-legend{display:none}
  .mobile-legend-panel{position:fixed;inset:62px 10px auto;z-index:60;max-height:calc(100dvh - 76px);overflow:auto;padding:18px 14px 14px;border:1px solid #b9c8bb;border-radius:16px;background:#fff;box-shadow:0 18px 60px rgba(0,0,0,.28)}
  .mobile-legend-panel.is-open{display:block}
  .mobile-legend-panel h3{margin:0 38px 14px 0;color:var(--dg-deep)}
  .mobile-legend-list{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .mobile-legend-list .course-legend-item{display:flex;align-items:center;gap:8px;min-width:0;padding:9px;border:1px solid #d5dfd6;border-radius:10px;background:#f7faf7}
  .mobile-legend-list .course-legend-item i{display:inline-grid;place-items:center;min-width:28px;min-height:28px;font-style:normal;font-weight:900}
  .mobile-legend-list .course-legend-item strong{font-size:.75rem;line-height:1.2}
  .state-complete .mobile-exit-round{display:none}
}
@media(max-width:420px){
  .game-hud{gap:5px 8px}
  .mobile-view-tools{left:8px;top:8px;gap:4px;max-width:calc(100% - 94px)}
  .mobile-view-tools button{min-height:29px;padding:.22rem .45rem;font-size:.66rem}
  .mobile-legend-list{grid-template-columns:1fr}
}


/* v0.8.0-alpha.4: game-feel foundation */
:root{--dg-motion-fast:180ms;--dg-motion-normal:360ms;--dg-motion-shot:920ms;--dg-ease:cubic-bezier(.22,.8,.24,1)}
html.fast-play{--dg-motion-fast:90ms;--dg-motion-normal:180ms;--dg-motion-shot:440ms}
.global-setting-row{margin:.65rem 0 1rem;padding:.75rem;border-radius:12px;background:#f3f7f3;border:1px solid #d8e3da}
button,.mode-card-body,.settings-card,.course-legend-item,.distance-card,.legal-target{transition:transform var(--dg-motion-fast) var(--dg-ease),opacity var(--dg-motion-fast) ease,box-shadow var(--dg-motion-fast) ease,background-color var(--dg-motion-fast) ease,border-color var(--dg-motion-fast) ease}
button:active:not(:disabled){transform:scale(.975)}
.club-grid button.selected{transform:translateY(-1px);box-shadow:0 5px 14px rgba(23,63,43,.16)}
.panel-enter{animation:dgPanelEnter var(--dg-motion-normal) var(--dg-ease) both}
.result-enter{animation:dgResultEnter var(--dg-motion-normal) var(--dg-ease) both}
.dice-face.dice-enter{animation:dgDiceRoll 620ms cubic-bezier(.18,.85,.3,1.1) var(--dice-delay,0ms) both;transform-origin:center}
.ball.ball-shot-enter{animation:dgBallShot var(--shot-duration,var(--dg-motion-shot)) var(--dg-ease) both;transform-box:fill-box;transform-origin:center}
html.game-animating .legal-target,html.game-animating .club-grid button{pointer-events:none}
@keyframes dgPanelEnter{from{opacity:.72;transform:translateY(5px)}to{opacity:1;transform:none}}
@keyframes dgResultEnter{0%{opacity:0;transform:translateY(8px) scale(.985)}100%{opacity:1;transform:none}}
@keyframes dgDiceRoll{0%{opacity:0;transform:translateY(-18px) rotate(-28deg) scale(.72)}55%{opacity:1;transform:translateY(4px) rotate(9deg) scale(1.08)}78%{transform:translateY(-2px) rotate(-3deg) scale(.98)}100%{opacity:1;transform:none}}
@keyframes dgBallShot{0%{transform:translate(var(--ball-from-x),var(--ball-from-y)) scale(.94)}72%{transform:translate(0,0) scale(1.10)}86%{transform:translate(0,0) scale(.92)}92%{transform:translate(0,-4px) scale(1.04)}100%{transform:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}.ball.ball-shot-enter{animation:none!important}}

/* v0.8.0-alpha.4: calmer desktop feedback */
@media(min-width:801px){html.game-animating #game-panel{cursor:default}}
