:root{--gold:#ffd21a;--green:#20a80e;--red:#e21b18;--blue:#1646d8;--orange:#f36b0b;--line:#575757;--cream:#fff}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#050505;color:#fff;font-family:Arial,Helvetica,sans-serif}body{padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}button,select,input{font:inherit}button{touch-action:manipulation}.hidden{display:none!important}.app-shell{max-width:1100px;margin:auto;padding:12px}.setup-board{border:2px solid #555;border-radius:28px;background:#030303;padding:14px;box-shadow:0 20px 60px #000;overflow:hidden}.setup-header{display:grid;grid-template-columns:240px 1fr 165px 58px;grid-template-rows:auto auto;gap:10px 12px;align-items:center}.setup-logo{width:100%;max-height:150px;object-fit:contain;grid-row:1/3}.golf-title{font-size:clamp(4rem,10vw,7.5rem);font-weight:1000;letter-spacing:.02em;line-height:.85;background:linear-gradient(#eaffdf,#60d72a 45%,#0b7900);-webkit-background-clip:text;color:transparent;text-shadow:0 2px 0 #baff9e}.ball-o,.mini-ball,.golf-ball{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:transparent;background:radial-gradient(circle at 35% 30%,#fff,#ddd 62%,#aaa);box-shadow:inset -8px -8px 14px #999,0 2px 5px #000}.ball-o{width:.72em;height:.72em;vertical-align:.05em}.header-btn{border:1px solid #777;background:#090909;color:#fff;border-radius:12px;padding:15px 12px;font-weight:800}.sound-btn{font-size:1.4rem;padding:12px}.setup-turn{grid-column:3/5;background:linear-gradient(#ef302b,#b70d0b);border:1px solid #ff554f;border-radius:12px;padding:16px;text-align:center;font-weight:900;font-size:1.55rem}.section-label{text-align:center;font-size:1.25rem;margin:2px 0 8px;border-bottom:2px solid #555;line-height:.1}.section-label::before{content:""}.section-label{background:#030303}.rule-grid,.score-buttons{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.score-demo,.score{border:0;border-radius:11px;color:#fff;font-weight:900;min-height:112px;box-shadow:inset 0 -7px 12px rgba(0,0,0,.35)}.score-demo b{display:block;font-size:3.8rem;line-height:1}.score-demo span{font-size:1rem}.score-1{background:linear-gradient(#35a725,#087400)}.score-2{background:linear-gradient(#225fea,#0d2f9e)}.score-3{background:linear-gradient(#f6c82d,#b48600)}.score-4{background:linear-gradient(#ff8021,#b74000)}.score-5{background:linear-gradient(#ef302b,#a90c0a)}.setup-options{display:grid;grid-template-columns:1.25fr 140px 1fr;gap:12px;align-items:center;margin:14px 0}.mode-picker{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mode{border:1px solid #777;background:#090909;color:#fff;padding:15px;border-radius:10px;font-weight:900}.mode.active{background:linear-gradient(#ffe25a,#f0b800);color:#111;border-color:#ffd21a}.players-label{font-weight:900;text-align:right}select,input{width:100%;background:#050505;color:#fff;border:2px solid #666;border-radius:10px;padding:14px;font-weight:800}.player-inputs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:10px 0}.player-field label{display:block;font-size:.85rem;font-weight:900;margin:0 0 7px}.player-field:nth-child(odd) input{border-color:#e6d400}.player-field:nth-child(even) input{border-color:#16a400}.player-field input{font-size:2rem;text-transform:none}.primary{width:100%;border:0;border-radius:10px;padding:16px;background:linear-gradient(#ffe45b,#f0b600);color:#080808;font-size:2.7rem;font-weight:1000;display:flex;justify-content:space-around;align-items:center;box-shadow:inset 0 -5px 8px #c38b00}.preview-scoreboard{margin-top:12px;border:1px solid #777;border-radius:10px;overflow:hidden}.preview-scoreboard table{width:100%;border-collapse:collapse;table-layout:fixed}.preview-scoreboard th,.preview-scoreboard td{border-right:1px solid #666;border-bottom:1px solid #555;text-align:center;padding:6px;font-weight:900}.preview-scoreboard thead th{font-size:1.25rem}.preview-scoreboard thead th:first-child{color:#27b910;width:14%}.preview-scoreboard thead th:nth-child(2){color:#ffd21a}.preview-scoreboard thead th:nth-child(3){color:#20a80e}.preview-scoreboard tbody th{font-size:1.35rem}.preview-scoreboard tbody td{font-size:1.1rem}.preview-scoreboard tfoot th{text-align:left;font-size:1.15rem}.preview-scoreboard tfoot td{font-size:2.8rem;color:#ffd21a}.preview-scoreboard tfoot td:last-child{color:#20a80e}.setup-footer{display:grid;grid-template-columns:1.05fr 1.55fr;gap:10px;align-items:center;margin-top:10px;padding:8px;border:1px solid #555;border-radius:10px}.footer-brand{display:flex;align-items:center;gap:8px}.footer-brand img{width:76px}.footer-brand strong{font-size:1rem}.footer-brand em{color:#e31b17;font-style:normal;font-size:1.4rem}.footer-brand>span{font-size:2.3rem;font-weight:1000;color:#24a712}.mini-ball{width:.8em;height:.8em}.legend{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;font-weight:900;font-size:.86rem}.l1{color:#21b10f}.l2{color:#2a67ff}.l3{color:#ffd21a}.l4{color:#ff7618}.l5{color:#ff2a27}
/* game */.game-header{display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px}.game-logo{display:flex;align-items:center;gap:8px}.game-logo img{width:110px}.game-logo-words strong,.game-logo-words>span{display:block;font-weight:1000}.game-logo-words em{color:#e21b18;font-style:normal}.game-logo-words>span{font-size:2rem;color:#20a80e}.golf-ball{width:.82em;height:.82em}.topbar{display:flex;gap:8px;align-items:center}.ghost{border:1px solid #666;background:#090909;color:#fff;border-radius:10px;padding:10px}.hole-card,.scoreboard-panel,.panel{border:1px solid #666;border-radius:14px;background:#050505;margin-top:10px}.hole-card{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:12px;padding:10px}.hole-number{font-size:3.3rem;font-weight:1000}.hole-label{color:#ffd21a;font-weight:900}.current-player{justify-self:end;background:#d8201c;padding:12px 20px;border-radius:10px;font-size:1.4rem;font-weight:1000}.score-buttons{margin:10px 0}.score{min-height:92px}.score span{display:block;font-size:3rem}.score small{font-weight:900}.scoreboard-panel{padding:10px}.scoreboard-title{display:flex;justify-content:space-between;align-items:center}.scoreboard{overflow:auto}.score-table{width:100%;border-collapse:collapse;min-width:520px}.score-table th,.score-table td{border:1px solid #555;text-align:center;padding:8px}.player-heading{font-size:1.25rem}.hole-cell{font-size:1.2rem}.total{font-size:2rem;font-weight:1000}.current-player-column{color:#ffd21a}.current-score-cell,.current-hole-row{background:#151300}.celebration{position:fixed;inset:0;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:20}.celebration-card{background:#090909;border:3px solid #ffd21a;border-radius:20px;padding:30px;text-align:center}.flag{font-size:5rem}.celebration-title{font-size:2.5rem;font-weight:1000}.toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);background:#222;padding:12px 18px;border-radius:999px}.trophy{text-align:center;font-size:5rem}.winner-text{font-size:2rem;text-align:center;margin:20px}.final-line{display:flex;justify-content:space-between;padding:12px;border-bottom:1px solid #555}
@media(max-width:700px){.app-shell{padding:5px}.setup-board{padding:8px;border-radius:18px}.setup-header{grid-template-columns:125px 1fr 108px 46px;gap:6px}.setup-logo{max-height:100px}.golf-title{font-size:3.8rem}.header-btn{padding:9px 5px;font-size:.75rem}.setup-turn{font-size:1rem;padding:10px}.rule-grid,.score-buttons{gap:5px}.score-demo{min-height:80px}.score-demo b{font-size:2.6rem}.score-demo span{font-size:.63rem}.setup-options{grid-template-columns:1fr 66px 1fr;gap:6px}.players-label{font-size:.7rem}.mode,select{font-size:.75rem;padding:10px 5px}.player-inputs{gap:6px}.player-field input{font-size:1.2rem;padding:10px}.primary{font-size:1.75rem;padding:12px}.preview-scoreboard th,.preview-scoreboard td{padding:4px}.preview-scoreboard thead th{font-size:.92rem}.preview-scoreboard tbody th{font-size:1rem}.preview-scoreboard tfoot th{font-size:.8rem}.preview-scoreboard tfoot td{font-size:2rem}.setup-footer{grid-template-columns:1fr;padding:5px}.footer-brand{display:none}.legend{font-size:.66rem}.game-header{grid-template-columns:1fr}.game-logo img{width:70px}.score{min-height:72px}.score span{font-size:2.2rem}.score small{font-size:.55rem}.current-player{font-size:1rem}.hole-number{font-size:2.4rem}}

/* V10 ARCADE EDITION */
.brand{position:relative;display:flex;align-items:center;gap:18px;padding:10px 74px 10px 10px;border:1px solid #555;border-radius:18px;background:radial-gradient(circle at 30% 0,#222 0,#080808 48%,#020202 100%);box-shadow:0 12px 38px #000}.brand-logo{width:150px;max-height:150px;object-fit:contain}.brand .eyebrow{font-weight:1000;letter-spacing:.18em;color:#eee}.brand h1{margin:0;font-size:clamp(2.6rem,7vw,5.6rem);line-height:.9;color:#28b815;text-shadow:0 3px 0 #0b4e02,0 0 18px rgba(40,184,21,.3)}.brand .tagline{margin:.55rem 0 0;font-weight:800;color:#ddd}.header-sound{position:absolute;right:12px;top:12px;width:54px;height:54px;border:1px solid #777;border-radius:13px;background:#090909;color:#fff;font-size:1.45rem}.panel{padding:18px}.panel>h2,.scoreboard-title h2{font-size:clamp(2rem,4vw,3rem);margin:.2rem 0 1rem}.setup-row{display:grid;grid-template-columns:auto minmax(130px,220px);gap:12px;align-items:center;margin:16px 0;font-size:1.25rem;font-weight:1000}.rules h3{text-align:center;font-size:1.5rem}.rule-grid>div{border-radius:10px;padding:10px;text-align:center;font-weight:900}.rule-grid>div:nth-child(1){background:#087400}.rule-grid>div:nth-child(2){background:#0d2f9e}.rule-grid>div:nth-child(3){background:#b48600}.rule-grid>div:nth-child(4){background:#b74000}.rule-grid>div:nth-child(5){background:#a90c0a}.rule-grid b{display:block;font-size:2.4rem}.rule-grid span{font-size:.82rem}.player-heading{font-size:clamp(1.55rem,3vw,2.65rem)!important;font-weight:1000;text-transform:uppercase;letter-spacing:.02em}.hole-cell{font-size:clamp(1.35rem,2.5vw,2rem)!important;font-weight:1000}.total{font-size:clamp(3rem,6vw,5.4rem)!important;font-weight:1000;line-height:1;color:#fff;text-shadow:0 0 16px rgba(255,255,255,.18)}.totals-row th{font-size:clamp(1.35rem,3vw,2.2rem)!important;text-transform:uppercase}.current-player-column{color:#ffe01b!important;text-shadow:0 0 15px rgba(255,224,27,.65)}.current-score-cell{position:relative;box-shadow:inset 0 0 0 4px #ffe01b,0 0 18px rgba(255,224,27,.35);animation:currentPulse 1.2s ease-in-out infinite alternate}.current-player{font-size:clamp(1.4rem,3vw,2.15rem)!important;box-shadow:0 0 20px rgba(226,27,24,.55);animation:turnGlow 1.1s ease-in-out infinite alternate}.score{transition:transform .12s ease,filter .12s ease,box-shadow .12s ease}.score:active{transform:scale(.92);filter:brightness(1.35)}.score-pop{animation:scorePop .5s cubic-bezier(.2,.9,.2,1.35)}.score-mark b{font-size:clamp(1.7rem,3vw,2.8rem)}
@keyframes currentPulse{to{box-shadow:inset 0 0 0 4px #ffe01b,0 0 32px rgba(255,224,27,.65)}}@keyframes turnGlow{to{transform:scale(1.025);box-shadow:0 0 32px rgba(226,27,24,.85)}}@keyframes scorePop{0%{transform:scale(.4);opacity:.2}65%{transform:scale(1.35)}100%{transform:scale(1);opacity:1}}
.intro{position:fixed;inset:0;z-index:100;background:radial-gradient(circle at center,#262626 0,#060606 56%,#000 100%);display:grid;place-items:center;overflow:hidden}.intro.hidden{display:none!important}.intro-stage{text-align:center;position:relative}.intro-logo{width:min(72vw,520px);opacity:0;transform:scale(.6) rotate(-5deg);animation:introLogo 1s .15s cubic-bezier(.2,.8,.2,1) forwards}.intro-golf{font-size:clamp(4rem,16vw,9rem);font-weight:1000;line-height:.82;background:linear-gradient(#efffe9,#58d829 46%,#0a6d00);-webkit-background-clip:text;color:transparent;filter:drop-shadow(0 4px 0 #083f02);opacity:0;transform:translateY(70px);animation:introGolf .75s 1.25s forwards}.intro-ball{display:inline-flex;width:.72em;height:.72em;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#ddd 64%,#999);color:transparent;box-shadow:inset -8px -8px 12px #999}.intro-darts{position:absolute;top:30%;left:50%;font-size:3rem}.intro-darts span{position:absolute;opacity:0;transform:translate(55vw,-35vh) rotate(-35deg)}.intro-darts span:nth-child(1){animation:dartFly .35s .65s forwards}.intro-darts span:nth-child(2){animation:dartFly .35s .88s forwards}.intro-darts span:nth-child(3){animation:dartFly .35s 1.11s forwards}.intro-skip{margin-top:28px;color:#aaa;font-weight:800;opacity:0;animation:fadeIn .4s 1.8s forwards}@keyframes introLogo{to{opacity:1;transform:scale(1) rotate(0)}}@keyframes introGolf{to{opacity:1;transform:translateY(0)}}@keyframes dartFly{70%{opacity:1}100%{opacity:1;transform:translate(-10px,-4px) rotate(-35deg)}}@keyframes fadeIn{to{opacity:1}}
.confetti-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:90}.celebration{backdrop-filter:blur(5px)}.celebration-card{min-width:min(88vw,620px);padding:42px 24px;transform:scale(.6);animation:celebrateIn .55s cubic-bezier(.15,.9,.2,1.35) forwards;box-shadow:0 0 75px rgba(255,210,26,.45)}.celebration.miss{background:rgba(70,0,0,.75);animation:screenShake .55s linear}.celebration.miss .celebration-card{border-color:#ff251e;box-shadow:0 0 90px rgba(255,20,10,.75);background:radial-gradient(circle,#5a0503,#0c0000)}.celebration.hole-in-one .celebration-card{background:radial-gradient(circle,#4b3a00,#080600)}.celebration-title{font-size:clamp(3.1rem,9vw,6.8rem)!important;line-height:.9;text-shadow:0 4px 0 #000}.celebration-message{font-size:clamp(1.2rem,3vw,2rem);font-weight:900;margin-top:14px}.celebration-player{font-size:clamp(1.6rem,4vw,2.8rem);font-weight:1000;color:#ffe01b;margin-top:8px}.flag{font-size:clamp(5rem,14vw,9rem)!important;animation:iconBounce .6s ease-in-out infinite alternate}@keyframes celebrateIn{to{transform:scale(1)}}@keyframes iconBounce{to{transform:translateY(-12px) rotate(4deg)}}@keyframes screenShake{0%,100%{transform:translate(0)}15%{transform:translate(-14px,8px)}30%{transform:translate(12px,-8px)}45%{transform:translate(-9px,-5px)}60%{transform:translate(8px,7px)}75%{transform:translate(-5px,3px)}}
.finish-screen{text-align:center}.finish-screen.show-finish{animation:finishIn .65s ease-out}.winner-text{font-size:clamp(2.3rem,6vw,5rem)!important;font-weight:1000;color:#ffe01b;text-shadow:0 3px 0 #5b4200,0 0 30px rgba(255,224,27,.4)}.winner-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:20px 0}.stat-card{border:1px solid #666;border-radius:14px;background:#0d0d0d;padding:14px}.stat-card b{display:block;font-size:clamp(2rem,5vw,3.5rem);color:#ffe01b}.stat-card span{font-weight:900}.final-line{font-size:clamp(1.25rem,3vw,2rem);font-weight:900}@keyframes finishIn{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@media(max-width:700px){.brand{padding:8px 58px 8px 6px;gap:8px}.brand-logo{width:92px}.brand .eyebrow{font-size:.67rem}.brand h1{font-size:2.4rem}.brand .tagline{font-size:.7rem}.header-sound{right:6px;top:6px;width:46px;height:46px}.player-heading{font-size:1.45rem!important}.total{font-size:3.25rem!important}.score-table th,.score-table td{padding:7px 5px}.winner-stats{grid-template-columns:1fr}.celebration-card{padding:28px 12px}}

.club-record{display:flex;flex-direction:column;gap:2px;margin-top:5px;text-transform:uppercase;letter-spacing:.08em}
.club-record span{font-size:clamp(.72rem,2vw,.95rem);font-weight:900;color:#ffd21a}
.club-record strong{font-size:clamp(1rem,3vw,1.35rem);color:#fff}

/* Version 12 header balance */
.brand{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;align-items:center!important;padding:10px 12px!important;gap:18px!important}
.brand-main{display:flex;align-items:center;gap:18px;min-width:0}
.brand-right{display:flex;align-items:center;justify-content:flex-end;gap:14px}
.header-sound{position:static!important;flex:0 0 auto}
.club-record{margin:0!important;text-align:right;align-items:flex-end;padding:10px 14px;border-left:2px solid #555;min-width:155px}
.club-record span{white-space:nowrap}
.club-record strong{white-space:nowrap}
@media(max-width:700px){.brand{grid-template-columns:minmax(0,1fr) auto!important;gap:5px!important;padding:6px!important}.brand-main{gap:7px}.brand-right{gap:5px}.club-record{min-width:105px;padding:6px 7px;border-left:1px solid #555}.club-record span{font-size:.54rem!important;letter-spacing:.04em}.club-record strong{font-size:.82rem!important}.header-sound{width:42px!important;height:42px!important}.brand-logo{width:82px!important}.brand h1{font-size:2rem!important}}

/* Version 16 – keep player totals visible while the holes scroll */
.scoreboard{
  max-height:48vh;
  overflow:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.score-table thead th{
  position:sticky;
  top:0;
  z-index:6;
  background:#0b0b0b;
}
.score-table tfoot th,
.score-table tfoot td{
  position:sticky;
  bottom:0;
  z-index:7;
  background:#080808;
  box-shadow:0 -4px 0 #ffd21a,0 -10px 18px rgba(0,0,0,.8);
}
.score-table tfoot th{z-index:8}

@media(max-width:700px){
  .scoreboard{max-height:44vh}
}


/* Version 17 – highlight the player or players with the lowest running total */
.total{position:relative}
.leader-total{
  color:#ffd21a!important;
  background:radial-gradient(circle at center,#3c3100 0,#151100 58%,#080808 100%)!important;
  box-shadow:inset 0 0 0 4px #ffd21a,0 -4px 0 #ffd21a,0 0 24px rgba(255,210,26,.55)!important;
  text-shadow:0 0 14px rgba(255,210,26,.8)!important;
}
.leader-total>span:last-child{display:block}
.leader-badge{
  display:block;
  margin:0 auto 4px;
  font-size:clamp(.65rem,1.6vw,1rem);
  line-height:1;
  letter-spacing:.06em;
  color:#ffd21a;
  white-space:nowrap;
}
@media(max-width:700px){
  .leader-badge{font-size:.62rem;margin-bottom:3px}
}


/* Version 18 – lift the 9-hole scoreboard on portrait iPads and strengthen leader display */
.leader-total{
  color:#050505!important;
  background:linear-gradient(#ffe76a,#eeb700)!important;
  box-shadow:inset 0 0 0 4px #fff0a0,0 -4px 0 #ffd21a,0 0 26px rgba(255,210,26,.7)!important;
  text-shadow:none!important;
}
.leader-total .leader-badge{color:#050505!important;font-weight:1000}

@media (orientation:portrait) and (min-width:700px) and (max-width:1100px){
  #gameScreen[data-holes="9"] .hole-card{margin-top:6px;padding-top:8px;padding-bottom:8px}
  #gameScreen[data-holes="9"] .score-buttons{margin:6px 0 4px}
  #gameScreen[data-holes="9"] .scoreboard-panel{margin-top:0;transform:translateY(-10px)}
  #gameScreen[data-holes="9"] .scoreboard{max-height:40vh}
}

@media (orientation:portrait) and (max-width:699px){
  #gameScreen[data-holes="9"] .score-buttons{margin:5px 0 3px}
  #gameScreen[data-holes="9"] .scoreboard-panel{margin-top:0;transform:translateY(-7px)}
  #gameScreen[data-holes="9"] .scoreboard{max-height:41vh}
}


/* Version 20 – automatically keep the current hole visible as play advances */
.current-hole-row{scroll-margin-top:72px;scroll-margin-bottom:110px}
.scoreboard{scroll-behavior:smooth}


/* Version 21 – keep the Total row permanently visible in both 9- and 18-hole games */
.scoreboard{
  max-height:none!important;
  overflow:hidden!important;
  display:flex;
  flex-direction:column;
}
.scoreboard-scroll{
  max-height:48vh;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scroll-behavior:smooth;
}
.scoreboard-scroll .score-table thead th{
  position:sticky;
  top:0;
  z-index:6;
  background:#0b0b0b;
}
.totals-fixed-table{
  flex:0 0 auto;
  width:100%;
  background:#080808;
  box-shadow:0 -4px 0 #ffd21a,0 -10px 18px rgba(0,0,0,.8);
  position:relative;
  z-index:10;
}
.score-table-main,
.totals-fixed-table{
  width:100%;
  table-layout:fixed;
}
@media(max-width:700px){
  .scoreboard-scroll{max-height:44vh}
}
@media (orientation:portrait) and (min-width:700px) and (max-width:1100px){
  #gameScreen[data-holes="9"] .scoreboard-scroll{max-height:40vh}
  #gameScreen[data-holes="18"] .scoreboard-scroll{max-height:40vh}
}
@media (orientation:portrait) and (max-width:699px){
  #gameScreen[data-holes="9"] .scoreboard-scroll{max-height:41vh}
  #gameScreen[data-holes="18"] .scoreboard-scroll{max-height:41vh}
}


/* Version 22 – lock the running totals safely above the iPad bottom edge */
@media (orientation:portrait) and (max-width:1100px){
  body.game-active{
    height:100dvh;
    overflow:hidden;
  }
  body.game-active .app-shell{
    height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    padding-bottom:14px;
    overflow:hidden;
  }
  #gameScreen:not(.hidden){
    height:100%;
    min-height:0;
    display:flex;
    flex-direction:column;
    overflow:hidden;
  }
  #gameScreen .game-header,
  #gameScreen .hole-card,
  #gameScreen .score-buttons{
    flex:0 0 auto;
  }
  #gameScreen .scoreboard-panel{
    flex:1 1 auto;
    min-height:0;
    display:flex;
    flex-direction:column;
    margin-top:2px;
    transform:translateY(-8px);
    padding-bottom:8px;
    overflow:hidden;
  }
  #gameScreen .scoreboard-title{
    flex:0 0 auto;
  }
  #gameScreen .scoreboard{
    flex:1 1 auto;
    min-height:0;
    overflow:hidden!important;
  }
  #gameScreen .scoreboard-scroll{
    flex:1 1 auto;
    min-height:0;
    max-height:none!important;
  }
  #gameScreen .totals-fixed-table{
    flex:0 0 auto;
    margin-bottom:8px;
  }
}

@media (orientation:portrait) and (max-height:850px){
  #gameScreen .game-logo img{width:58px}
  #gameScreen .game-logo-words>span{font-size:1.55rem}
  #gameScreen .hole-card{padding-top:6px;padding-bottom:6px}
  #gameScreen .score-buttons{margin:4px 0}
  #gameScreen .score{min-height:62px}
  #gameScreen .scoreboard-panel{transform:translateY(-12px)}
}


/* Version 23 – permanently reserve the total row and enlarge hole/score text */
.scoreboard{
  display:grid!important;
  grid-template-rows:minmax(0,1fr) auto;
  min-height:0;
}
.scoreboard-scroll{
  min-height:0;
}
.totals-fixed-table{
  margin:0!important;
  align-self:end;
}
.hole-cell{
  font-size:clamp(1.65rem,3.2vw,2.45rem)!important;
  line-height:1.05;
}
.score-mark b{
  font-size:clamp(2rem,3.8vw,3.2rem)!important;
  line-height:1;
}
.empty-score{
  font-size:clamp(1.9rem,3.5vw,2.8rem);
  font-weight:900;
}
.score-table th,.score-table td{
  padding:10px 7px;
}

@media (orientation:portrait) and (max-width:1100px){
  body.game-active{
    height:100svh;
    min-height:100svh;
  }
  body.game-active .app-shell{
    height:calc(100svh - env(safe-area-inset-top));
    padding-bottom:max(4px,env(safe-area-inset-bottom));
  }
  #gameScreen .scoreboard-panel{
    padding-bottom:4px;
  }
  #gameScreen .scoreboard{
    display:grid!important;
    grid-template-rows:minmax(0,1fr) auto;
  }
  #gameScreen .totals-fixed-table{
    margin:0!important;
  }
}

@media(max-width:700px){
  .hole-cell{font-size:1.65rem!important}
  .score-mark b{font-size:2.15rem!important}
  .empty-score{font-size:2rem}
  .score-table th,.score-table td{padding:8px 5px}
}

/* Version 24 – original Kelly Gang logo, softer audio and full round stats */
.brand-logo,.game-logo img,.intro-logo{object-fit:contain}
.finish-screen{max-width:980px;margin-inline:auto;overflow:auto;max-height:calc(100dvh - 28px)}
.final-scores{display:grid;gap:10px;margin:16px 0}
.final-line{display:grid;grid-template-columns:1fr auto;gap:4px 16px;align-items:center;border:1px solid #555;border-radius:12px;background:#0b0b0b;text-align:left}
.final-line small{grid-column:1/-1;color:#ccc;font-size:.9rem}
.final-line.round-winner{border:2px solid #d7ad35;box-shadow:0 0 14px rgba(215,173,53,.35),inset 0 0 14px rgba(215,173,53,.08);animation:winnerGlow 2.2s ease-in-out infinite alternate}
@keyframes winnerGlow{to{box-shadow:0 0 24px rgba(215,173,53,.55),inset 0 0 18px rgba(215,173,53,.12)}}
.stats-heading{margin:24px 0 8px;text-transform:uppercase;letter-spacing:.08em}
.round-stats{grid-template-columns:repeat(4,1fr)}
.record-banner{border:2px solid #d7ad35;border-radius:14px;background:linear-gradient(135deg,#2f2300,#080808);padding:14px;margin:14px 0;box-shadow:0 0 22px rgba(215,173,53,.3)}
.record-banner strong,.record-banner span{display:block}.record-banner strong{font-size:1.25rem;color:#ffd85b;margin-bottom:5px}
.hall-of-fame{margin:20px 0;padding:16px;border:1px solid #555;border-radius:14px;background:#080808;text-align:left}
.hall-of-fame h3{text-align:center;color:#ffd21a;margin-top:0}.hof-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.hof-grid div{padding:11px;border:1px solid #444;border-radius:10px}.hof-grid span,.hof-grid b{display:block}.hof-grid span{color:#bbb;font-size:.85rem}.hof-grid b{margin-top:4px}
.play-again-prompt{position:fixed;inset:0;z-index:120;background:rgba(0,0,0,.88);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}.play-again-prompt>div{display:grid;gap:12px;width:min(92vw,520px)}.play-again-prompt .primary,.play-again-prompt .ghost{width:100%;font-size:1.05rem;padding:16px}
@media(max-width:700px){.round-stats,.hof-grid{grid-template-columns:1fr 1fr}.finish-screen{max-height:calc(100dvh - 10px);padding:12px}.final-line{font-size:1.08rem}.stat-card b{font-size:1.7rem!important}}

/* Version 28 – large scoreboard icons placed inline after the score */
.score-mark{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.16em;
  min-width:3.35rem;
  min-height:3.35rem;
  white-space:nowrap;
}
.score-mark.hole-in-one > span,
.score-mark.explosion > span{
  position:static;
  z-index:auto;
  font-size:clamp(2rem,4vw,3.35rem);
  line-height:1;
  filter:drop-shadow(0 2px 2px #000);
  pointer-events:none;
  transform:none;
}
.score-mark.hole-in-one b,
.score-mark.explosion b{
  position:static;
  z-index:auto;
}
@media(max-width:700px){
  .score-mark{min-width:3rem;min-height:3rem;gap:.12em}
  .score-mark.hole-in-one > span,
  .score-mark.explosion > span{font-size:2.55rem}
}
\n\n/* Version 29 – always-visible running totals and soft ding */
body.game-active #gameScreen .scoreboard-panel{
  padding-bottom:clamp(92px,12vh,132px)!important;
}
body.game-active #gameScreen .totals-fixed-table{
  position:fixed!important;
  left:50%!important;
  right:auto!important;
  bottom:max(8px,env(safe-area-inset-bottom))!important;
  transform:translateX(-50%)!important;
  width:min(calc(100vw - 24px),1076px)!important;
  max-width:1076px!important;
  margin:0!important;
  z-index:100!important;
  background:#080808!important;
  border:2px solid #ffd21a!important;
  border-radius:12px!important;
  overflow:hidden!important;
  box-shadow:0 -8px 28px rgba(0,0,0,.95),0 0 18px rgba(255,210,26,.28)!important;
}
body.game-active #gameScreen .totals-fixed-table .totals-row th,
body.game-active #gameScreen .totals-fixed-table .totals-row td{
  background:#080808!important;
}
@media(max-width:700px){
  body.game-active #gameScreen .scoreboard-panel{padding-bottom:96px!important}
  body.game-active #gameScreen .totals-fixed-table{width:calc(100vw - 12px)!important;bottom:max(4px,env(safe-area-inset-bottom))!important}
  body.game-active #gameScreen .totals-fixed-table .total{font-size:2.75rem!important}
}


/* Version 30 – soft button tone and raised 18-hole running total */
body.game-active #gameScreen[data-holes="18"] .scoreboard-panel{
  padding-bottom:clamp(150px,18vh,190px)!important;
}
body.game-active #gameScreen[data-holes="18"] .totals-fixed-table{
  bottom:max(64px,calc(env(safe-area-inset-bottom) + 56px))!important;
}
@media(max-width:700px){
  body.game-active #gameScreen[data-holes="18"] .scoreboard-panel{padding-bottom:150px!important}
  body.game-active #gameScreen[data-holes="18"] .totals-fixed-table{
    bottom:max(58px,calc(env(safe-area-inset-bottom) + 50px))!important;
  }
}


/* Version 31 – readable player totals with leader clearly identified */
body.game-active #gameScreen .totals-fixed-table{
  table-layout:fixed!important;
}
body.game-active #gameScreen .totals-fixed-table .totals-row th{
  width:12%!important;
  font-size:clamp(1rem,2.2vw,1.55rem)!important;
  color:#fff!important;
}
body.game-active #gameScreen .totals-fixed-table .total{
  padding:7px 4px!important;
  vertical-align:middle!important;
  line-height:1!important;
}
.total-player-name{
  display:block;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:clamp(.82rem,2vw,1.25rem);
  line-height:1.1;
  font-weight:1000;
  color:#fff;
  margin-bottom:3px;
}
.total-number{
  display:block;
  font-size:clamp(2.45rem,6vw,4.25rem);
  line-height:.95;
  font-weight:1000;
  color:#fff;
}
.leader-total .total-player-name,
.leader-total .total-number{
  color:#050505!important;
}
.leader-total .leader-badge{
  font-size:clamp(.58rem,1.35vw,.88rem)!important;
  margin:1px 0 3px!important;
}
@media(max-width:700px){
  body.game-active #gameScreen .totals-fixed-table .totals-row th{width:14%!important;font-size:.9rem!important}
  body.game-active #gameScreen .totals-fixed-table .total{padding:6px 2px!important}
  .total-player-name{font-size:clamp(.68rem,2.8vw,.95rem)}
  .total-number{font-size:clamp(2rem,8vw,3.15rem)}
  .leader-total .leader-badge{font-size:.52rem!important}
}


/* Version 32 – totals aligned exactly under players and returned to bottom edge */
body.game-active #gameScreen .score-table-main .hole-heading,
body.game-active #gameScreen .totals-fixed-table .totals-row th{width:14%!important;}
body.game-active #gameScreen .scoreboard-panel,
body.game-active #gameScreen[data-holes="18"] .scoreboard-panel{padding-bottom:104px!important;}
body.game-active #gameScreen .totals-fixed-table,
body.game-active #gameScreen[data-holes="18"] .totals-fixed-table{bottom:max(8px,env(safe-area-inset-bottom))!important;}
@media(max-width:700px){
 body.game-active #gameScreen .scoreboard-panel,
 body.game-active #gameScreen[data-holes="18"] .scoreboard-panel{padding-bottom:94px!important;}
 body.game-active #gameScreen .totals-fixed-table,
 body.game-active #gameScreen[data-holes="18"] .totals-fixed-table{bottom:max(4px,env(safe-area-inset-bottom))!important;}
}

/* Version 34 – permanent totals bar: each player total always remains visible */
body.game-active #gameScreen .scoreboard-panel{
  padding-bottom:104px!important;
}
.persistent-totals{
  display:none;
}
body.game-active #gameScreen .persistent-totals{
  position:fixed;
  display:grid;
  grid-template-columns:14% repeat(var(--player-count),minmax(0,1fr));
  left:50%;
  bottom:max(4px,env(safe-area-inset-bottom));
  transform:translateX(-50%);
  width:min(calc(100vw - 12px),1076px);
  z-index:120;
  background:#080808;
  border:2px solid #ffd21a;
  border-radius:12px;
  overflow:hidden;
  box-shadow:0 -8px 28px rgba(0,0,0,.95),0 0 18px rgba(255,210,26,.28);
}
.persistent-total-label,
.persistent-total{
  min-width:0;
  min-height:84px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  border-right:1px solid #555;
  padding:5px 2px;
  background:#080808;
}
.persistent-total:last-child{border-right:0}
.persistent-total-label{
  font-size:clamp(.9rem,2.2vw,1.45rem);
  font-weight:1000;
  color:#fff;
}
.persistent-total .total-player-name{font-size:clamp(.68rem,2.5vw,1.05rem)}
.persistent-total .total-number{font-size:clamp(2rem,7vw,3.6rem)}
.persistent-total.leader-total{background:linear-gradient(#ffe76a,#eeb700)!important}
/* Old rebuilt totals table is disabled completely. */
body.game-active #gameScreen .totals-fixed-table{display:none!important}
@media(min-width:700px){
  body.game-active #gameScreen .persistent-totals{bottom:max(8px,env(safe-area-inset-bottom))}
  .persistent-total-label,.persistent-total{min-height:94px}
}

/* Version 35 – lower the permanent total bar slightly and add breathing room */
body.game-active #gameScreen .scoreboard-panel{
  padding-bottom:114px!important;
}
body.game-active #gameScreen .persistent-totals{
  bottom:max(1px,env(safe-area-inset-bottom))!important;
}
@media(min-width:700px){
  body.game-active #gameScreen .persistent-totals{
    bottom:max(2px,env(safe-area-inset-bottom))!important;
  }
}


/* Version 36 – lower totals and keep the next scoring lines visible */
body.game-active #gameScreen .scoreboard-panel{
  padding-bottom:92px!important;
}
body.game-active #gameScreen .persistent-totals{
  bottom:max(-18px,calc(env(safe-area-inset-bottom) - 18px))!important;
}
body.game-active #gameScreen .scoreboard-scroll{
  scroll-padding-top:8px;
  scroll-padding-bottom:132px;
}
body.game-active #gameScreen .current-hole-row{
  scroll-margin-top:8px!important;
  scroll-margin-bottom:132px!important;
}
@media(min-width:700px){
  body.game-active #gameScreen .persistent-totals{
    bottom:max(-14px,calc(env(safe-area-inset-bottom) - 14px))!important;
  }
}
