.mini-page main{max-width:1180px;margin:auto;padding:24px}.mini-header{max-width:1180px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 24px;border-bottom:1px solid var(--line)}.mini-header a{text-decoration:none}.mini-page h1{font-size:clamp(30px,5vw,54px);line-height:1.08;margin:12px 0}.mini-lede{color:var(--muted);font-size:18px}.mini-difficulty{display:flex;align-items:center;gap:16px;margin:24px 0}.mini-difficulty select{width:160px}.mini-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:24px 0}.mini-tile{text-align:left;padding:26px;display:flex;flex-direction:column;gap:16px;background:#153b30;border:1px solid #496555;border-radius:18px;color:var(--ink);min-height:250px}.mini-tile:nth-child(2){background:#1d343b}.mini-tile:nth-child(3){background:#303927}.mini-tile strong{font:700 29px/1.1 Georgia,serif}.mini-tile span:not(.eyebrow){font-size:16px;line-height:1.5}.mini-tile b{margin-top:auto;color:var(--lime);font-size:16px}.mini-tile:hover,.mini-tile:focus-visible{border-color:var(--lime)}.mini-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.mini-heading h1{font-size:32px}.mini-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:20px;align-items:start}.mini-course,.mini-controls{min-width:0;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--card,#102c25)}.mini-controls{padding:20px}.mini-scorebar{display:flex;gap:12px;justify-content:space-between;flex-wrap:wrap;padding:16px}.mini-course canvas{display:block;width:100%;height:clamp(280px,60vh,650px);touch-action:manipulation}.mini-read{margin:0;padding:14px 18px;min-height:54px;background:#193c2c;font-size:15px;line-height:1.5}.mini-controls select,.mini-controls input{width:100%}.mini-controls label{display:block;font-size:14px;margin-top:14px}.mini-controls output{float:right;color:var(--lime)}.mini-aim{display:flex;gap:8px;margin:14px 0}.mini-aim button{flex:1;padding:10px 4px;font-size:14px;min-height:44px}.mini-controls .primary{width:100%;min-height:48px}.mini-controls .swing-dial{margin:16px 0 10px}.mini-controls .swing-dial svg{height:220px}.mini-controls #mini-status{font-size:16px;min-height:24px;line-height:1.4}.mini-controls #mini-result{border-top:1px solid var(--line);padding-top:12px}.mini-controls #mini-result h2{font-size:26px}.mini-page [hidden]{display:none!important}
.mini-page .small{font-size:14px}.mini-page select{min-height:44px;padding:8px;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:8px}.mini-page input[type=range]{min-height:44px}.mini-page #mini-result-detail{margin:10px 0 16px}.mini-controls .dial-caption{font-size:22px}
@media(max-width:760px){.mini-page main{padding:16px}.mini-header{padding:14px 16px}.mini-header strong{font-size:13px}.mini-tiles{grid-template-columns:1fr;gap:12px}.mini-tile{min-height:0;padding:20px;gap:10px}.mini-tile strong{font-size:25px}.mini-layout{grid-template-columns:1fr;gap:12px}.mini-heading h1{font-size:25px}.mini-course canvas{height:34vh;min-height:240px;max-height:380px}.mini-controls{padding:14px}.mini-controls .swing-dial svg{height:205px}.mini-controls .swing-dial{padding:6px 10px}.mini-scorebar{padding:12px;font-size:14px}.mini-read{padding:10px 12px;font-size:14px}}
@media(orientation:landscape) and (max-height:550px){.mini-layout{grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr)}.mini-course canvas{height:65vh;min-height:220px}.mini-controls .swing-dial svg{height:170px}.mini-heading h1{font-size:24px}}

.mini-tile:nth-child(4){background:#34302c}

.mini-scorebar{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:12px;background:#0b241e;border-bottom:1px solid #66865b}
.mini-scorebar>div{min-width:0}.mini-scorebar span{display:block;font-size:13px;color:var(--muted)}.mini-scorebar strong{display:block;font-size:20px;line-height:1.3;color:var(--lime);font-variant-numeric:tabular-nums}
@media(max-width:540px){.mini-scorebar{padding:10px;gap:8px}.mini-scorebar strong{font-size:16px}.mini-scorebar span{font-size:12px}}

.mini-pro-tile{grid-column:1/-1;min-height:180px;background:#304b2a}.mini-pro-target{padding:12px;border:1px solid var(--lime);border-radius:10px;color:var(--lime);font-weight:700;margin-bottom:12px}

#island-finish-dialog{width:min(440px,calc(100% - 32px));padding:28px;border:1px solid var(--lime);border-radius:20px;background:#102c25;color:var(--ink);text-align:center}#island-finish-dialog::backdrop{background:#04110dde}#island-finish-dialog h2{font-size:2rem;margin:8px 0}#island-final-score{font-size:1.6rem;color:var(--lime);font-weight:700}#island-final-detail{color:var(--muted)}#island-finish-dialog button{display:block;width:100%;min-height:48px;margin-top:12px}

.mini-shot-feedback{padding:12px 14px;border-left:3px solid var(--lime);background:#203e32;border-radius:6px;font-size:16px;line-height:1.5}.mini-pro-target{font-size:17px;line-height:1.5}.mini-read{line-height:1.6}#mini-result button+button{margin-top:10px}#island-finish-dialog{box-sizing:border-box;max-height:calc(100dvh - 32px);overflow:auto}#island-final-detail{font-size:16px;line-height:1.6}#island-finish-dialog button:focus-visible{outline:3px solid #fff;outline-offset:3px}

.mini-course .mini-pro-target{margin:12px 12px 0;padding:10px 12px;font-size:16px}

.mini-best{font-size:14px;line-height:1.5;color:var(--lime)}.mini-tile .mini-best{font-size:14px}.mini-skip-pro{display:block;margin:10px 12px;min-height:44px}.mini-last-life{margin:12px 12px 0;padding:12px 14px;background:#512c16;border:2px solid #ffc477;border-radius:10px;color:#ffdda8;font-size:16px;line-height:1.5}#mini-playing[data-last-life="true"] .mini-scorebar{background:#452816;border-bottom:2px solid #ffc477}#mini-playing[data-last-life="true"] #mini-score{color:#ffdda8}#mini-final-best{padding:10px;border:1px solid var(--lime);border-radius:8px}

/* Mobile mini games: course first, a stable timing surface within thumb reach. */
.mini-page{overflow-wrap:break-word}
.mini-page main{padding-bottom:max(24px,env(safe-area-inset-bottom))}
.mini-page button:active:not(:disabled){filter:brightness(1.15);transform:translateY(1px)}
.mini-course canvas{touch-action:none;user-select:none;-webkit-user-select:none}
.mini-course canvas[data-aiming=true]{box-shadow:inset 0 0 0 2px var(--lime)}
#mini-settings{min-width:0;border-bottom:1px solid var(--line);padding-bottom:8px}
#mini-settings summary{min-height:44px;padding:10px 2px;color:var(--lime);font-size:14px;cursor:pointer;touch-action:manipulation}
#mini-settings summary:focus-visible{outline:3px solid var(--lime);outline-offset:2px}
#mini-settings[open] summary{margin-bottom:6px}
.mini-timing{min-width:0}
#mini-shoot{touch-action:none;user-select:none;-webkit-user-select:none}
.mini-scorebar strong{overflow-wrap:anywhere}
.mini-heading>div{min-width:0}.mini-heading button{flex-shrink:0}
#mini-playing[data-phase=flight] #mini-settings,#mini-playing[data-phase=result] #mini-settings{display:none}
#mini-playing[data-phase=power] #mini-settings,#mini-playing[data-phase=impact] #mini-settings{pointer-events:none;opacity:.6}
#mini-playing[data-phase=result] .mini-timing{display:none}
@media(max-width:950px){
 .mini-page:has(#mini-playing:not([hidden])) .mini-header{display:none}
 .mini-page:has(#mini-playing:not([hidden])) main{padding:env(safe-area-inset-top) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}
 .mini-layout{grid-template-columns:minmax(0,1fr);gap:6px}
 .mini-heading{min-height:54px;gap:8px}.mini-heading h1{font-size:22px;margin:0 0 5px}.mini-heading .eyebrow{font-size:12px;letter-spacing:0;margin:4px 0 0}
 #mini-best{display:none}
 .mini-course canvas{height:32vh;height:32dvh;min-height:180px;max-height:350px}
 .mini-scorebar{padding:7px 10px;gap:8px;grid-template-columns:1.2fr 1fr 1fr}
 .mini-scorebar strong{font-size:16px}.mini-scorebar span{font-size:12px}
 .mini-controls{padding:8px 10px;overflow:visible}
 .mini-controls select{font-size:16px}
 .mini-controls .mini-timing{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(92px,1fr);gap:10px;align-items:center}
 .mini-controls .swing-dial{margin:6px 0;padding:2px 5px}
 .mini-controls .swing-dial svg{height:176px}
 .mini-controls .dial-label,.mini-controls .dial-target-value{font-size:30px}.mini-controls .dial-caption{font-size:28px}
 .mini-controls .dial-heading{min-height:44px}.mini-controls .dial-heading strong{font-size:14px}
 .mini-controls #dial-instruction{font-size:14px;line-height:1.3;margin:2px 0}
 .mini-controls #mini-shoot{min-height:64px;padding:12px 6px;font-size:17px}
 .mini-controls #mini-status{font-size:14px;min-height:0;margin:4px 0;line-height:1.35}
 .mini-controls .first-play-guide{margin:0 0 6px;padding:6px 8px;font-size:14px}
 .mini-controls .first-play-guide p{font-size:14px}
 .mini-read{font-size:14px;line-height:1.35;min-height:0;padding:8px 10px}
 .mini-course .mini-pro-target{font-size:14px;line-height:1.35;margin:6px 8px;padding:6px 8px}
 .mini-last-life{font-size:14px;line-height:1.3;margin:6px 8px;padding:6px 8px}
 .mini-skip-pro{margin:4px 8px}
 #mini-playing[data-phase=flight] .mini-timing{display:none}
 #mini-playing[data-phase=flight] .mini-course canvas{height:44dvh}
 .mini-controls #mini-result{padding-top:6px}.mini-controls #mini-result h2{font-size:24px}
 #mini-result-detail{font-size:14px}
}

@media(orientation:landscape) and (max-height:550px) and (min-width:600px){
 .mini-layout{grid-template-columns:minmax(0,1.4fr) minmax(240px,1fr);align-items:start}
 .mini-course{position:sticky;top:env(safe-area-inset-top)}
 .mini-course canvas,#mini-playing[data-phase=flight] .mini-course canvas{height:calc(100dvh - 185px);min-height:130px;max-height:none}
 .mini-heading{min-height:48px}.mini-heading h1{font-size:19px}
 .mini-controls .mini-timing{display:block}
 .mini-controls .swing-dial{margin:4px 0;position:relative}
 .mini-controls .swing-dial svg{height:144px}
 .mini-controls .dial-heading{min-height:44px}
 .mini-controls #mini-shoot{min-height:48px}
 .mini-controls .first-play-guide{font-size:14px}
}
@media(prefers-reduced-motion:no-preference){#mini-result:not([hidden]){animation:mini-result-in .2s ease-out}@keyframes mini-result-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}}

.mini-controls input[type=range]{touch-action:pan-x}

.mini-header{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}

/* The HUD belongs to the whole play area, so it stays readable at the controls. */
#mini-playing>.mini-scorebar{position:sticky;top:env(safe-area-inset-top);z-index:5;border:1px solid #66865b;border-radius:10px;margin-bottom:6px}
#mini-resume{display:none}
.mini-remote-hint{color:var(--lime);font-size:18px;margin:0 0 8px}
.mini-tv .mini-header{display:none}.mini-tv .mini-page main{max-width:none;padding:3vh 4vw}
.mini-tv .mini-heading h1{font-size:30px}.mini-tv .mini-heading{min-height:48px}
.mini-tv #mini-best{display:none}
.mini-tv .mini-layout{grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:16px}
.mini-tv .mini-course canvas,.mini-tv #mini-playing[data-phase=flight] .mini-course canvas{height:calc(100vh - 270px);min-height:180px;max-height:none}
.mini-tv .mini-scorebar strong{font-size:24px}.mini-tv .mini-scorebar span{font-size:17px}
.mini-tv .mini-controls{padding:12px}.mini-tv .mini-controls .mini-timing{display:block}
.mini-tv .mini-controls .swing-dial svg{height:clamp(150px,30vh,280px)}
.mini-tv .mini-controls #mini-shoot{min-height:54px;font-size:22px}
.mini-tv .mini-controls #mini-status,.mini-tv .mini-read,.mini-tv .mini-pro-target,.mini-tv #mini-settings summary{font-size:18px}
.mini-tv .mini-controls .first-play-guide{display:none}
.mini-tv #mini-resume{display:block;width:100%;margin-top:8px}
.mini-tv button:focus,.mini-tv select:focus,.mini-tv input:focus,.mini-tv summary:focus,.mini-tv a:focus{outline:4px solid #fff;outline-offset:3px;box-shadow:0 0 0 7px #83b544}
.mini-tv #mini-exit-dialog button{display:block;width:100%;min-height:52px;margin-top:12px;font-size:20px}
.mini-tv #island-finish-dialog{width:min(600px,90vw);font-size:20px}
.mini-tv #mini-playing[data-phase=flight] .mini-timing{display:none}
.mini-tv #mini-settings[open]{max-height:45vh;overflow:auto;padding:8px}
.mini-tv .mini-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}.mini-tv .mini-pro-tile{grid-column:auto}.mini-tv .mini-tile{min-height:200px;padding:20px}
@media(max-height:600px){.mini-tv .mini-page main{padding:12px 28px}.mini-tv .mini-heading h1{font-size:24px}.mini-tv .mini-scorebar strong{font-size:20px}.mini-tv .mini-remote-hint{font-size:16px;margin-bottom:4px}.mini-tv .mini-course canvas{height:calc(100vh - 235px)}.mini-tv .mini-controls .swing-dial svg{height:150px}.mini-tv .mini-controls .dial-heading{min-height:32px}.mini-tv .mini-controls #dial-instruction{font-size:16px}}
.mini-dialog-fallback{position:fixed;z-index:100;top:50%;left:50%;transform:translate(-50%,-50%);margin:0;box-shadow:0 0 0 200vmax #04110ddd}
.mini-tv .mini-controls .dial-label,.mini-tv .mini-controls .dial-target-value{font-size:26px}
/* Avoid depending on :has, dvh or clamp support in older native TV WebViews. */
.mini-tv .mini-page main{padding-bottom:24px}.mini-tv .mini-course{position:static}
/* Keep the entire TV play surface inside the overscan inset, including pro playback. */
.mini-tv .mini-page main{padding:4vh 4vw}
.mini-tv #mini-playing{height:92vh;display:flex;flex-direction:column;min-height:0}
.mini-tv .mini-heading,.mini-tv .mini-remote-hint,.mini-tv .mini-scorebar{flex:none}
.mini-tv .mini-heading h1{margin:4px 0}.mini-tv .mini-heading .eyebrow{margin-bottom:4px}
.mini-tv .mini-layout{flex:1;min-height:0;align-items:stretch}
.mini-tv .mini-course{display:flex;flex-direction:column;min-height:0}
.mini-tv .mini-course canvas,.mini-tv #mini-playing[data-phase=flight] .mini-course canvas{flex:1 1 0;height:0;min-height:0}
.mini-tv .mini-controls{max-height:100%;overflow:auto}
.mini-tv .mini-controls .swing-dial{margin:6px 0;padding:4px 8px}
.mini-tv .mini-controls .swing-dial svg{height:clamp(110px,22vh,220px)}
.mini-tv .mini-controls .dial-heading{min-height:32px}
.mini-tv .mini-controls #mini-status{margin:4px 0}
@media(orientation:portrait) and (max-width:950px) and (max-height:700px){
 .mini-course canvas{height:22vh;height:22dvh;min-height:120px}
 .mini-controls .swing-dial svg{height:112px}
 .mini-controls .dial-heading{min-height:44px}
 .mini-heading{min-height:48px}.mini-layout{gap:4px}
 .mini-controls .swing-dial{margin:2px 0}
 #mini-settings{padding-bottom:0}
 .mini-scorebar strong{font-size:14px}
}

@media(max-width:950px){html:not(.mini-tv) #mini-playing[data-phase=aim] #mini-status{display:none}}
@media(orientation:landscape) and (max-height:550px) and (min-width:600px){
 html:not(.mini-tv) .mini-controls .mini-timing{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(88px,1fr)}
 html:not(.mini-tv) .mini-controls .swing-dial svg{height:128px}
 html:not(.mini-tv) .mini-controls .swing-dial{margin:2px 0}
 html:not(.mini-tv) #mini-settings{padding-bottom:4px}
}

/* A putting result has one explanation, beside its next/replay action. */
#mini-playing[data-phase=result][data-putting=true] #mini-status,
#mini-playing[data-phase=result][data-putting=true] #mini-read{display:none}

/* TV uses the course as the full-screen background with readable overlays. */
.mini-tv .mini-page main{padding:0}
.mini-tv #mini-playing{position:relative;height:100vh;min-height:0;display:block;overflow:hidden}
.mini-tv .mini-heading{position:absolute;z-index:12;left:4vw;right:4vw;top:3vh;min-height:0;align-items:center}
.mini-tv .mini-heading>div{display:flex;align-items:baseline;gap:16px;padding:4px 10px;background:#0b241eed;border-radius:8px}
.mini-tv .mini-heading h1{font-size:24px;margin:0}
.mini-tv .mini-heading .eyebrow{font-size:14px;margin:0}
.mini-tv .mini-heading button{min-height:40px;padding:6px 14px;background:#0b241eed}
.mini-tv #mini-playing>.mini-scorebar{position:absolute;z-index:12;top:calc(3vh + 50px);left:4vw;right:4vw;margin:0;padding:8px 14px;background:#0b241eef}
.mini-tv .mini-scorebar span{font-size:14px}.mini-tv .mini-scorebar strong{font-size:22px}
.mini-tv .mini-layout{position:absolute;top:0;right:0;bottom:0;left:0;display:block}
.mini-tv .mini-course{position:absolute;top:0;right:0;bottom:0;left:0;display:block;border:0;border-radius:0}
.mini-tv .mini-course canvas,.mini-tv #mini-playing[data-phase=flight] .mini-course canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;min-height:0;max-height:none}
.mini-tv .mini-controls{position:absolute;z-index:10;right:4vw;bottom:4vh;width:30vw;max-width:380px;min-width:260px;max-height:calc(94vh - 140px);padding:10px;background:#0b241eef;overflow:auto}
.mini-tv #mini-playing[data-phase=flight] .mini-controls{display:none}
.mini-tv .mini-remote-hint{position:absolute;z-index:12;left:4vw;bottom:3vh;max-width:56vw;margin:0;padding:6px 10px;background:#0b241eed;border-radius:8px;font-size:16px}
.mini-tv .mini-course .mini-pro-target,.mini-tv .mini-read,.mini-tv .mini-last-life{position:absolute;z-index:11;left:4vw;bottom:calc(3vh + 42px);max-width:54vw;margin:0;padding:8px 12px;min-height:0;background:#0b241eef;border:1px solid #66865b;border-radius:8px;font-size:16px;line-height:1.4}
.mini-tv .mini-read{display:none}
.mini-tv #mini-playing[data-putting=true][data-phase=aim] .mini-read{display:block}
.mini-tv #mini-playing[data-putting=true][data-phase=aim] .mini-pro-target:not([hidden])~.mini-read{display:none}
.mini-tv .mini-skip-pro{position:absolute;z-index:12;right:4vw;bottom:4vh;margin:0;min-height:44px;padding:8px 20px;background:#0b241eef}
.mini-tv #mini-playing[data-phase=flight][data-watching-pro=false] .mini-pro-target,.mini-tv #mini-playing[data-phase=flight] .mini-last-life{display:none}
.mini-tv .mini-controls .swing-dial svg{height:180px}
.mini-tv .mini-controls #mini-status{display:none}
@media(max-height:600px){
 .mini-tv .mini-heading h1{font-size:20px}.mini-tv .mini-heading>div{gap:10px}
 .mini-tv .mini-heading .eyebrow{font-size:12px}
 .mini-tv #mini-playing>.mini-scorebar{top:calc(3vh + 44px);padding:5px 10px}
 .mini-tv .mini-scorebar span{font-size:12px}.mini-tv .mini-scorebar strong{font-size:18px}
 .mini-tv .mini-remote-hint,.mini-tv .mini-course .mini-pro-target,.mini-tv .mini-read{font-size:14px}
 .mini-tv .mini-controls{min-width:240px;padding:6px;max-height:calc(94vh - 116px)}
 .mini-tv .mini-controls .swing-dial svg{height:112px}
 .mini-tv .mini-controls .swing-dial{margin:2px 0;padding:2px}
 .mini-tv .mini-controls #mini-shoot{min-height:44px;font-size:18px}
 .mini-tv #mini-settings summary{font-size:15px;min-height:36px;padding:6px 2px}
}

.mini-tv #mini-menu{padding:4vh 4vw}.mini-tv .mini-heading h1{margin-left:10px}

/* Fit the visible phone viewport, including expanded Safari/Chrome toolbars. */
@media(max-width:950px){
 html.mini-active:not(.mini-tv){overflow:hidden}
 html.mini-active:not(.mini-tv) .mini-header{display:none}
 html.mini-active:not(.mini-tv) main{position:fixed;top:0;left:0;right:0;height:var(--mini-vh,100dvh);box-sizing:border-box;padding:max(4px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));overflow:hidden}
 html:not(.mini-tv) #mini-playing{height:100%;display:flex;flex-direction:column;gap:4px;min-height:0}
 html:not(.mini-tv) .mini-heading{flex:none;min-height:44px}
 html:not(.mini-tv) .mini-heading h1{font-size:20px;margin:0}
 html:not(.mini-tv) .mini-heading .eyebrow{font-size:11px;margin:0}
 html:not(.mini-tv) .mini-heading button{min-height:44px;padding:6px 10px;font-size:14px}
 html:not(.mini-tv) #mini-playing>.mini-scorebar{position:static;flex:none;margin:0;padding:5px 8px;grid-template-columns:1.2fr 1fr 1fr;gap:5px}
 html:not(.mini-tv) .mini-scorebar strong{font-size:15px;white-space:nowrap;overflow-wrap:normal}
 html:not(.mini-tv) .mini-scorebar span{font-size:11px}
 html:not(.mini-tv) .mini-layout{display:flex;flex-direction:column;align-items:stretch;flex:1;min-height:0;gap:4px}
 html:not(.mini-tv) .mini-course{display:flex;flex-direction:column;position:relative;flex:1;min-height:90px;border-radius:12px}
 html:not(.mini-tv) .mini-course canvas,html:not(.mini-tv) #mini-playing[data-phase=flight] .mini-course canvas{flex:1;height:0;min-height:0;max-height:none}
 html:not(.mini-tv) .mini-read{display:none}
 html:not(.mini-tv) #mini-playing[data-putting=true][data-phase=aim] .mini-read{display:block;font-size:12px;line-height:1.25;padding:4px 8px}
 html:not(.mini-tv) .mini-course .mini-pro-target,html:not(.mini-tv) .mini-last-life{font-size:12px;line-height:1.25;padding:4px 8px;margin:4px 6px;flex:none}
 html:not(.mini-tv) .mini-controls{flex:none;max-height:55%;overflow:auto;padding:4px 6px;border-radius:12px}
 html:not(.mini-tv) #mini-playing[data-phase=flight] .mini-controls{display:none}
 html:not(.mini-tv) #mini-settings{padding-bottom:0}
 html:not(.mini-tv) #mini-settings summary{font-size:13px;padding:10px 2px;min-height:44px;box-sizing:border-box}
 html:not(.mini-tv) .mini-controls .mini-timing{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(96px,1fr);gap:6px}
 html:not(.mini-tv) .mini-controls .swing-dial{position:relative;margin:2px 0;padding:2px 4px}
 html:not(.mini-tv) .mini-controls .swing-dial svg{height:128px}
 html:not(.mini-tv) .mini-controls .dial-heading{position:absolute;top:0;right:0;min-height:0}
 html:not(.mini-tv) .mini-controls .dial-heading strong{display:none}
 html:not(.mini-tv) .mini-controls .dial-heading button{font-size:12px;min-height:44px;padding:4px}
 html:not(.mini-tv) .mini-controls #dial-instruction{font-size:12px;line-height:1.2;margin:2px 0}
 html:not(.mini-tv) .mini-controls #mini-status{display:none}
 html:not(.mini-tv) .mini-controls #mini-result h2{font-size:20px;margin:4px 0}
 html:not(.mini-tv) #mini-result-detail{margin:4px 0 8px}
}
@media(max-width:950px) and (max-height:600px){html:not(.mini-tv) .mini-controls .swing-dial svg{height:104px}html:not(.mini-tv) .mini-scorebar strong{font-size:14px}}
@media(max-width:950px) and (orientation:landscape){
 html:not(.mini-tv) .mini-layout{flex-direction:row;align-items:stretch}
 html:not(.mini-tv) .mini-controls{width:38%;max-height:100%;box-sizing:border-box}
 html:not(.mini-tv) .mini-course{min-width:0}
 html:not(.mini-tv) .mini-heading>div{display:flex;align-items:baseline;gap:10px}
 html:not(.mini-tv) .mini-heading h1{font-size:18px}
}

/* Browser mini games share the main game's course-first control arrangement.
   Leave native TV overlay geometry and remote focus targets unchanged. */
html:not(.mini-tv) .mini-controls>.mini-scorebar{margin:0 0 6px;padding:6px 8px;border-radius:8px;gap:6px}
html:not(.mini-tv) .mini-controls>.mini-scorebar strong{font-size:15px;white-space:normal}
html:not(.mini-tv) .mini-controls>.mini-pro-target{font-size:12px;line-height:1.3;padding:5px 7px;margin:3px 0}
html:not(.mini-tv) .mini-controls>.mini-read{font-size:12px;line-height:1.3;padding:4px;margin:0;min-height:0}
html:not(.mini-tv) .mini-controls>.mini-last-life{font-size:12px;padding:5px;margin:3px 0}
@media(max-width:950px){
 html:not(.mini-tv) .mini-controls,html:not(.mini-tv) #mini-playing[data-phase=flight] .mini-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr) 44px auto;gap:3px 6px;height:clamp(230px,43dvh,310px);max-height:60%;padding:5px;overflow:hidden}
 html:not(.mini-tv) .mini-controls>.mini-scorebar{grid-area:1/1/2/3;margin:0;min-height:43px;padding:3px 5px;grid-template-columns:1.3fr 1fr .9fr}
 html:not(.mini-tv) .mini-controls>.mini-scorebar span{font-size:10px}
 html:not(.mini-tv) .mini-controls>.mini-scorebar strong{font-size:13px;line-height:17px;white-space:nowrap}
 html:not(.mini-tv) .mini-controls>.mini-pro-target{grid-area:2/1/3/3;margin:0;padding:3px 5px;font-size:11px;line-height:14px;border:0;background:#203e32}
 html:not(.mini-tv) .mini-controls .mini-timing{display:contents}
 html:not(.mini-tv) .mini-controls .swing-dial{grid-area:3/1/4/3;display:flex;flex-direction:column;min-height:0;margin:0;padding:0 4px;border:0;background:transparent}
 html:not(.mini-tv) .mini-controls .swing-dial svg{flex:1;width:100%;height:0;min-height:0}
 html:not(.mini-tv) .mini-controls #dial-instruction{text-align:center;flex:none;font-size:11px;line-height:14px;margin:0}
 html:not(.mini-tv) .mini-controls #mini-shoot{grid-area:4/2/5/3;min-height:44px;height:44px;margin:0;padding:4px;font-size:16px}
 html:not(.mini-tv) .mini-controls #mini-settings{grid-area:4/1/5/2;min-width:0;margin:0;border:0;padding:0}
 html:not(.mini-tv) #mini-settings summary{height:44px;min-height:44px;font-size:12px;padding:5px 3px;display:flex;align-items:center;border:1px solid #496555;border-radius:8px;line-height:16px}
 html:not(.mini-tv) .mini-controls>.mini-read,html:not(.mini-tv) .mini-controls>.mini-last-life{grid-area:5/1/6/3;font-size:11px;line-height:14px;max-height:30px;overflow:auto;margin:0;padding:0 4px}
 html:not(.mini-tv) .mini-controls>.mini-read{display:none}
 html:not(.mini-tv) #mini-playing[data-putting=true][data-phase=aim] .mini-controls>.mini-read{display:block}
 html:not(.mini-tv) .mini-controls #mini-result{grid-area:2/1/6/3;overflow:auto;padding:5px;min-height:0;border:0}
 html:not(.mini-tv) .mini-controls .mini-skip-pro{grid-area:4/1/5/3;min-height:44px;margin:0}
 html:not(.mini-tv) #mini-playing[data-phase=flight] .mini-timing,html:not(.mini-tv) #mini-playing[data-phase=flight] #mini-settings,html:not(.mini-tv) #mini-playing[data-phase=flight] .mini-read,html:not(.mini-tv) #mini-playing[data-phase=flight] .mini-last-life{display:none}
 html:not(.mini-tv) #mini-playing[data-phase=flight] #mini-status{grid-area:3/1/4/3;display:block;align-self:center;text-align:center;font-size:14px;line-height:1.4}
 html:not(.mini-tv) .mini-controls:has(#mini-settings[open]){display:block;overflow:auto}
 html:not(.mini-tv) .mini-controls:has(#mini-settings[open]) .mini-timing{display:none}
 html:not(.mini-tv) #mini-settings[open] summary{height:auto}
}
@media(max-width:950px) and (orientation:landscape){
 html:not(.mini-tv) .mini-controls,html:not(.mini-tv) #mini-playing[data-phase=flight] .mini-controls{height:100%;max-height:100%;width:38%}
}
@media(max-width:950px){
 html:not(.mini-tv) #mini-settings[open] #mini-resume{display:block;width:100%;min-height:44px;margin-top:8px}
 html:not(.mini-tv) #mini-playing[data-watching-pro=true] .mini-controls>.mini-pro-target{display:none}
}

/* Island results stay below the green, leaving the cup and ball path visible. */
#mini-result[data-ace=true]{background:#273e1c;border:2px solid #f8df79;border-radius:12px;padding:12px;color:#fff6c8;text-align:center}
.mini-controls #mini-result[data-ace=true] #mini-result-title{font-size:clamp(24px,4vw,38px);line-height:1.15;font-weight:800;color:#ffe581;margin:4px 0 8px}
#mini-result[data-ace=true] #mini-result-detail{font-size:16px;line-height:1.4}
@media(max-width:950px){
 /* Reserve the Island tip row while timing: removing it moves the swing target. */
 html:not(.mini-tv) #mini-playing[data-kind=island]:is([data-phase=aim],[data-phase=power],[data-phase=impact])[data-last-life=false] .mini-controls>.mini-read{display:block;font-size:14px;line-height:17px;max-height:none}
 html:not(.mini-tv) #mini-playing[data-kind=island]:is([data-phase=power],[data-phase=impact])[data-last-life=false] .mini-controls>.mini-read{visibility:hidden;pointer-events:none}
 html:not(.mini-tv) .mini-controls #mini-result[data-ace=true]{padding:8px}
}

/* Challenge context stays visible and changeable throughout every quick game. */
.mini-heading-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.mini-heading-actions .mini-level{display:grid;grid-template-columns:auto auto;column-gap:6px;align-items:center;border-color:var(--lime);color:var(--lime);padding:5px 10px;line-height:1.1}.mini-level span{grid-column:1;font-size:10px;letter-spacing:.12em}.mini-level strong{grid-column:2;font:700 16px/1.1 Arial,sans-serif}.mini-level small{grid-column:1/-1;color:var(--ink);font-size:11px}.mini-level-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.mini-level-choices button{min-height:72px;font-size:18px;font-weight:700}.mini-level-choices button span{display:block;margin-top:5px;color:var(--muted);font-size:12px;font-weight:400}.mini-level-choices button[aria-pressed=true]{border-color:var(--lime);background:#294334;box-shadow:inset 0 0 0 1px var(--lime)}#mini-level-cancel{width:100%}.mini-home-link{display:flex;align-items:center;justify-content:center;margin-top:12px;text-decoration:none}.mini-tv #mini-level-dialog button{width:100%;min-height:52px;font-size:20px}.mini-tv .mini-level-choices{grid-template-columns:1fr 1fr 1fr}.mini-tv .mini-level small{display:none}
.mini-fullscreen{display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}.mini-fullscreen[aria-pressed=true]{border-color:var(--lime);color:var(--lime)}
@media(max-width:600px){.mini-heading-actions{gap:5px}.mini-heading-actions>#mini-exit{padding:6px 8px}.mini-heading-actions .mini-level{padding:4px 7px}.mini-level span{font-size:9px}.mini-level strong{font-size:14px}.mini-fullscreen{padding:6px 8px}.mini-fullscreen span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.mini-heading>div{max-width:34%}.mini-level-choices{grid-template-columns:1fr}.mini-level-choices button{min-height:58px}}

/* Laptop play should use the available screen instead of looking like a scaled-down tablet. */
@media(min-width:951px){
 .mini-page main,.mini-header{max-width:1440px}
 .mini-page main{padding-left:32px;padding-right:32px}
 .mini-heading h1{font-size:36px}
 .mini-layout{grid-template-columns:minmax(0,1.9fr) minmax(360px,.9fr);gap:24px}
 .mini-course canvas{height:clamp(400px,66vh,720px)}
 .mini-scorebar{padding:14px 18px}.mini-scorebar span{font-size:14px}.mini-scorebar strong{font-size:22px}
 .mini-controls{padding:22px}.mini-controls .swing-dial svg{height:250px}
 .mini-controls #mini-status{font-size:16px}.mini-read{font-size:16px}
}
/* Firestick Test 1: reserve footer, fit all challenges, enlarge the dial. */
.mini-tv #mini-menu{padding:3vh 4vw 10vh}.mini-tv #mini-menu h1{font-size:30px;margin:6px 0}.mini-tv #mini-menu .mini-lede{display:none}.mini-tv #mini-menu .mini-difficulty{display:inline-flex;margin:12px 20px 16px 0}.mini-tv .mini-tiles{grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin:12px 0}.mini-tv .mini-tile{min-height:220px;padding:18px;gap:12px}.mini-tv .mini-tile strong{font-size:24px}.mini-tv .mini-tile span:not(.eyebrow){font-size:16px}.mini-tv .mini-tile .mini-best{display:none}.mini-tv .mini-remote-hint{position:fixed;left:4vw;right:4vw;bottom:2vh;max-width:none;min-height:30px;text-align:center}.mini-tv .mini-controls{right:4vw;bottom:9vh;width:32vw;max-width:none;min-width:0;padding:16px;max-height:68vh}.mini-tv .mini-controls .swing-dial svg{height:30vh;max-height:none}.mini-tv .mini-controls #mini-shoot{font-size:24px}.mini-tv .mini-course .mini-read{top:calc(3vh + 108px);bottom:auto;left:4vw;max-width:55vw;font-size:19px}.mini-tv #mini-settings summary{font-size:20px}.mini-tv dialog{max-height:74vh;overflow:auto}.mini-tv dialog button{padding-left:38px}.mini-tv #mini-playing[data-phase=aim] .mini-controls:has(#mini-power){font-size:18px}
.mini-tv button,.mini-tv select{padding-left:38px}.mini-tv .mini-tile{padding-left:38px}.mini-tv .mini-difficulty select{padding-left:38px;width:200px}

/* TV polish: native fullscreen, clear controls and more readable dial. */
.mini-tv #mini-fullscreen{display:none!important}
.mini-tv .mini-controls .swing-dial svg{height:34vh;max-height:300px}
.mini-tv .mini-level span{letter-spacing:0;font-size:14px;text-transform:none}
@media(max-height:500px){.mini-tv .mini-controls .swing-dial svg{height:24vh}}

/* Keep laptop course and swing controls inside the same visible play area. */
@media(min-width:951px){
 html.mini-active:not(.mini-tv){overflow:hidden}
 html.mini-active:not(.mini-tv) .mini-header{display:none}
 html.mini-active:not(.mini-tv) main{position:fixed;inset:0;height:var(--mini-vh,100dvh);box-sizing:border-box;padding:12px 24px;overflow:hidden}
 html.mini-active:not(.mini-tv) #mini-playing{height:100%;min-height:0;display:flex;flex-direction:column;gap:8px}
 html.mini-active:not(.mini-tv) .mini-heading{flex:none;min-height:54px}
 html.mini-active:not(.mini-tv) .mini-heading h1{font-size:28px;margin:4px 0}
 html.mini-active:not(.mini-tv) .mini-heading .eyebrow{margin:0}
 html.mini-active:not(.mini-tv) #mini-best{margin:0;font-size:13px}
 html.mini-active:not(.mini-tv) .mini-layout{flex:1;min-height:0;grid-template-columns:minmax(0,1.9fr) minmax(320px,.9fr);gap:16px;align-items:stretch}
 html.mini-active:not(.mini-tv) .mini-course{display:flex;flex-direction:column;min-height:0}
 html.mini-active:not(.mini-tv) .mini-course canvas,html.mini-active:not(.mini-tv) #mini-playing[data-phase=flight] .mini-course canvas{flex:1;height:0;min-height:0;max-height:none}
 html.mini-active:not(.mini-tv) .mini-controls{min-height:0;overflow:auto;padding:12px 14px;box-sizing:border-box}
 html.mini-active:not(.mini-tv) .mini-controls .swing-dial{margin:6px 0;padding:4px 8px}
 html.mini-active:not(.mini-tv) .mini-controls .swing-dial svg{height:clamp(150px,28dvh,240px)}
 html.mini-active:not(.mini-tv) .mini-controls .dial-heading{min-height:32px}
 /* Keep the exact Reset footprint even before it becomes available. */
 html.mini-active:not(.mini-tv) #mini-playing[data-kind=island] #dial-reset[hidden]{display:block!important;visibility:hidden;pointer-events:none}
 html.mini-active:not(.mini-tv) .mini-controls #mini-status{margin:4px 0;font-size:14px}
 html.mini-active:not(.mini-tv) .mini-controls .mini-home-link{margin-top:6px}
 html.mini-active:not(.mini-tv) .mini-controls #mini-settings summary{min-height:44px;box-sizing:border-box}
}

/* TV layout contract: common safe edges, stable card position and full dial. */
html.mini-tv{font-size:1.4vw}
.mini-tv .mini-heading{left:6.5vw;right:6.5vw;top:5vh}
.mini-tv .mini-heading h1{font-size:1.4rem}
.mini-tv .mini-heading .eyebrow{font-size:.85rem}
.mini-tv #mini-playing>.mini-scorebar{left:6.5vw;right:6.5vw;top:calc(5vh + 2.8rem);padding:.45rem .7rem;line-height:1.2}
.mini-tv .mini-scorebar span{font-size:.85rem}
.mini-tv .mini-scorebar strong{display:block;font-size:1.25rem}
.mini-tv .mini-controls{box-sizing:border-box;top:calc(5vh + 6.75rem);right:6.5vw;bottom:auto;width:32vw;max-height:calc(85vh - 6.75rem);padding:.65rem .8rem;overflow:auto}
.mini-tv .mini-controls .swing-dial{margin:.15rem 0;padding:.15rem .3rem}
.mini-tv .mini-controls .swing-dial svg{display:block;width:100%;height:34vh;max-height:24rem}
.mini-tv .mini-controls .dial-heading{min-height:1.8rem}
.mini-tv .mini-controls #dial-instruction{font-size:.9rem;line-height:1.2;margin:.2rem 0}
.mini-tv .mini-controls #mini-shoot{min-height:2.6rem;font-size:1.05rem}
.mini-tv #mini-settings summary{font-size:.9rem;min-height:2.3rem}
.mini-tv .mini-remote-hint{left:6.5vw;right:6.5vw;bottom:2vh;font-size:.9rem}
.mini-tv #mini-result h2{font-size:1.4rem;margin:.2rem 0}
.mini-tv #mini-result-detail{font-size:.95rem;margin:.3rem 0 .6rem}
.mini-tv #mini-result button{font-size:1rem;min-height:2.6rem}
.mini-tv .mini-course .mini-read{left:6.5vw;top:calc(5vh + 102px);font-size:.95rem}
@media(max-height:650px){
 .mini-tv .mini-controls .swing-dial svg{height:31vh;max-height:18rem}
}

/* The action group must keep its intrinsic width: a percentage cap clipped Home
   against the fixed phone viewport. Only the title may shrink or ellipsize.
   Keep the existing safe-area padding and leave native TV geometry untouched. */
@media(max-width:950px){
 html:not(.mini-tv) .mini-heading{display:grid;grid-template-columns:minmax(0,1fr) max-content;gap:8px;min-width:0}
 html:not(.mini-tv) .mini-heading>div{max-width:none;min-width:0}
 html:not(.mini-tv) .mini-heading>.mini-heading-actions{justify-content:flex-end}
 html:not(.mini-tv) .mini-heading>div:not(.mini-heading-actions){display:block}
 html:not(.mini-tv) .mini-heading h1,html:not(.mini-tv) .mini-heading .eyebrow{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}

/* Daily 9 desktop arrangement. These slots reuse the live controls; the
   responsive helper returns them to their original phone/TV locations. */
#mini-daily-options,#mini-daily-read,#mini-daily-aim,#mini-daily-footer{display:none}
.mini-page #mini-playing[data-putting=true] #mini-read{display:block!important;position:static;transform:none;max-width:none;max-height:none;min-height:0;margin:0;padding:6px 10px;background:#0b241e;color:#e5ffb8;line-height:1.3}
.mini-tv #mini-playing[data-putting=true] #mini-read{position:absolute;top:calc(5vh + 6.75rem);bottom:auto;left:4vw;right:38vw;max-width:58vw;font-size:1rem}
.mini-page dialog{overflow-y:auto;overscroll-behavior:contain;scroll-padding:16px}
.mini-tv #mini-playing .mini-controls{width:28vw}
.mini-page .mini-dial-visual{display:contents}
.mini-page .mini-dial-visual>svg{position:static;inset:auto;overflow:visible}
@media(min-width:951px){
 html.mini-active:not(.mini-tv) main{max-width:none;padding:0 8px 6px}
 html.mini-active:not(.mini-tv) #mini-playing{gap:4px}
 html.mini-active:not(.mini-tv) .mini-heading{min-height:44px;gap:8px}
 html.mini-active:not(.mini-tv) .mini-heading h1{font-size:18px;line-height:20px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 html.mini-active:not(.mini-tv) .mini-heading .eyebrow{font-size:10px;line-height:13px;letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 html.mini-active:not(.mini-tv) .mini-heading>div:not(.mini-heading-actions){flex:1;min-width:0}
 html.mini-active:not(.mini-tv) .mini-heading-actions{gap:6px}
 html.mini-active:not(.mini-tv) .mini-heading-actions>button{min-height:44px;padding:4px 8px;font-size:12px}
 html.mini-active:not(.mini-tv) #mini-best{display:none}
 /* Same full-height course / control balance as Daily 9 focus mode. */
 html.mini-active:not(.mini-tv) .mini-layout{grid-template-columns:minmax(0,2.25fr) minmax(280px,1fr);grid-template-rows:minmax(0,1fr);gap:6px;align-items:stretch}
 html.mini-active:not(.mini-tv) .mini-course{border-radius:10px;height:100%;min-height:0}
 html.mini-active:not(.mini-tv) .mini-course canvas,html.mini-active:not(.mini-tv) #mini-playing[data-phase=flight] .mini-course canvas{flex:1 1 0;height:0;min-height:0;max-height:none}
 html.mini-active:not(.mini-tv) #mini-daily-read{display:flex;align-items:center;justify-content:center;flex:0 0 40px;min-height:40px;max-height:40px;overflow:auto;padding:4px 10px;background:#102c25;border-top:1px solid #355647}
 html.mini-active:not(.mini-tv) #mini-daily-read .mini-read{display:block;min-height:0;margin:0;padding:0;background:transparent;font-size:14px;line-height:18px;text-align:center}
 html.mini-active:not(.mini-tv) #mini-daily-aim{display:block;flex:0 0 44px;min-height:44px;border-top:1px solid var(--line)}
 html.mini-active:not(.mini-tv) #mini-daily-aim .mini-aim{display:flex;gap:6px;margin:0;padding:0 6px;min-height:44px}
 html.mini-active:not(.mini-tv) #mini-daily-aim button{flex:1;min-width:44px;min-height:44px;padding:4px 8px;font-size:13px}
 html.mini-active:not(.mini-tv) #mini-daily-aim #mini-pin{flex:0 0 auto;order:2}
 /* Explicit Daily 9 rows: HUD, growing dial, club/swing, stable feedback. */
 html.mini-active:not(.mini-tv) .mini-controls{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:64px minmax(0,1fr) 44px 32px;gap:3px 6px;min-height:0;height:100%;padding:5px;overflow:hidden;border-radius:10px}
 html.mini-active:not(.mini-tv) .mini-controls>.mini-scorebar{grid-area:1/1/2/3;align-items:center;min-width:0;margin:0;padding:3px 5px;gap:8px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;grid-template-columns:1.25fr 1fr 1fr}
 html.mini-active:not(.mini-tv) .mini-scorebar span{font-size:11px;line-height:15px}
 html.mini-active:not(.mini-tv) .mini-controls>.mini-scorebar strong{font-size:16px;line-height:22px;white-space:normal}
 html.mini-active:not(.mini-tv) #mini-playing[data-last-life=true] .mini-controls>.mini-scorebar{background:#452816;border-bottom-color:#ffc477}
 html.mini-active:not(.mini-tv) .mini-controls .mini-timing{display:contents}
 html.mini-active:not(.mini-tv) .mini-controls .swing-dial{grid-area:2/1/3/3;position:relative;display:flex;flex-direction:column;min-height:0;margin:0;padding:2px 5px;border:1px solid #68814a;border-radius:8px;background:#0d2a21}
 html.mini-active:not(.mini-tv) .mini-controls .dial-heading{position:absolute;inset:4px 5px auto;min-height:0;z-index:2;pointer-events:none;justify-content:flex-end}
 html.mini-active:not(.mini-tv) .mini-controls .dial-heading strong{display:none}
 html.mini-active:not(.mini-tv) .mini-controls .dial-heading button{pointer-events:auto;min-height:28px;padding:3px 6px;font-size:11px}
 html.mini-active:not(.mini-tv) .mini-controls #dial-instruction{position:absolute;top:5px;left:7px;width:26%;max-height:calc(100% - 10px);overflow:hidden;z-index:1;margin:0;font-size:11px;line-height:14px;font-weight:700;text-align:left;pointer-events:none}
 /* Shared .dial-visual sizing prevents SVG intrinsic size from shrinking or
    stretching the dial. Its 320-square viewBox keeps the full arc visible. */
 html.mini-active:not(.mini-tv) .mini-controls .mini-dial-visual{position:relative;display:block;flex:1 1 0;width:100%;height:0;min-width:0;min-height:0}
 html.mini-active:not(.mini-tv) .mini-controls .mini-dial-visual svg{position:absolute;inset:0;display:block;flex:none;width:100%;height:100%;min-height:0;max-height:none;overflow:hidden}
 /* Match the Daily 9 text positions without changing compact phone/TV dials. */
 html.mini-active:not(.mini-tv) .mini-controls #dial-value{transform:translateY(24px)}
 html.mini-active:not(.mini-tv) .mini-controls #dial-label{transform:translateY(24px)}
 html.mini-active:not(.mini-tv) .mini-controls #dial-target-value{transform:translateY(31px)}
 html.mini-active:not(.mini-tv) .mini-controls #dial-bottom-caption{transform:translateY(-6px)}
 html.mini-active:not(.mini-tv) .mini-controls .dial-caption{font-size:24px}
 html.mini-active:not(.mini-tv) #mini-daily-footer{display:grid;grid-area:3/1/4/3;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;min-width:0;min-height:44px}
 html.mini-active:not(.mini-tv) #mini-daily-footer #mini-club{width:100%;min-width:0;height:44px;min-height:44px;padding:4px 6px;font-size:16px}
 html.mini-active:not(.mini-tv) #mini-daily-footer #mini-shoot{width:100%;min-width:0;height:44px;min-height:44px;margin:0;padding:4px 8px;font-size:17px;line-height:20px;box-shadow:none}
 html.mini-active:not(.mini-tv) .mini-controls #mini-status{display:block;grid-area:4/1/5/3;min-width:0;min-height:0;max-height:32px;overflow:auto;margin:0;padding:0 3px;font-size:12px;line-height:16px}
 /* Challenge overlays never add implicit rows or move the timing target. */
 html.mini-active:not(.mini-tv) .mini-controls>.mini-pro-target,html.mini-active:not(.mini-tv) .mini-controls>.mini-last-life{position:absolute;z-index:3;top:calc(64px + 40px);right:10px;max-width:30%;max-height:35%;overflow:auto;margin:4px 0;padding:5px;font-size:11px;line-height:14px;background:#102c25;border-radius:6px;pointer-events:none}
 html.mini-active:not(.mini-tv) .mini-controls>.mini-skip-pro{grid-area:3/1/4/3;z-index:3;margin:0;min-height:44px;background:#102c25}
 html.mini-active:not(.mini-tv) .mini-controls #mini-result{grid-area:2/1/5/3;z-index:4;min-height:0;max-height:100%;overflow:auto;margin:0;padding:10px;background:#102c25;border:0}
 html.mini-active:not(.mini-tv) #mini-playing[data-phase=result] #mini-daily-footer{visibility:hidden;pointer-events:none}
 /* Daily 9's header-level Options, with the existing guide and distance input. */
 html.mini-active:not(.mini-tv) #mini-daily-options{display:block;position:relative;flex:0 0 96px;width:96px}
 html.mini-active:not(.mini-tv) #mini-daily-options #mini-settings{min-width:0;margin:0;padding:0;border:0}
 html.mini-active:not(.mini-tv) #mini-daily-options #mini-settings>summary{display:flex;align-items:center;justify-content:center;min-height:44px;margin:0;padding:4px 10px;border:1px solid var(--line);border-radius:7px;font-size:0;line-height:20px;list-style:none;white-space:nowrap}
 html.mini-active:not(.mini-tv) #mini-daily-options #mini-settings>summary::-webkit-details-marker{display:none}
 html.mini-active:not(.mini-tv) #mini-daily-options #mini-settings>summary::after{content:'Shot options';font-size:12px}
 html.mini-active:not(.mini-tv) #mini-daily-options #mini-settings[open]{position:absolute;top:0;right:0;z-index:20;width:320px;max-width:calc(100vw - 24px);max-height:calc(var(--mini-vh,100dvh) - 12px);overflow:auto;padding:8px;background:#102c25;border:1px solid #68814a;border-radius:8px;box-shadow:0 8px 24px #0008}
 html.mini-active:not(.mini-tv) #mini-daily-options #mini-settings[open]>summary{margin-bottom:8px;justify-content:space-between}
 html.mini-active:not(.mini-tv) #mini-daily-options #mini-settings[open]>summary::after{content:'Close shot options'}
 html.mini-active:not(.mini-tv) #mini-daily-options #mini-settings label[for=mini-club]{display:none}
 html.mini-active:not(.mini-tv) #mini-daily-options #mini-settings label{display:block;font-size:14px;margin-top:12px}
 html.mini-active:not(.mini-tv) #mini-daily-options #mini-power{width:100%;min-height:44px}
 html.mini-active:not(.mini-tv) #mini-daily-options #mini-power-value{float:right;color:var(--lime)}
 html.mini-active:not(.mini-tv) #mini-daily-options #mini-resume{display:block;width:100%;min-height:44px;margin-top:8px}
}

/* Keep the preceding shot's result readable during the next setup, without
   introducing another grid row or shifting any of the three swing presses. */
@media(max-width:950px){
 html:not(.mini-tv) .mini-layout{position:relative}
 html:not(.mini-tv) #mini-playing .mini-controls #mini-status[data-shot-outcome=true]{display:block;position:absolute;z-index:6;top:8px;left:10px;right:10px;max-width:calc(100% - 20px);max-height:54px;min-height:0;margin:0;padding:6px 9px;overflow:auto;border:1px solid #68814a;border-radius:7px;background:#102c25ed;color:var(--ink);font-size:13px;line-height:18px;pointer-events:none}
}
@media(max-width:950px) and (orientation:landscape){
 html:not(.mini-tv) #mini-playing .mini-controls #mini-status[data-shot-outcome=true]{right:calc(38% + 10px);max-width:none}
}
.mini-tv .mini-controls #mini-status[data-shot-outcome=true]{display:block;position:fixed;z-index:12;left:6.5vw;right:44vw;bottom:7vh;max-height:4.5rem;min-height:0;margin:0;padding:.45rem .6rem;overflow:auto;border:1px solid #68814a;border-radius:7px;background:#102c25ed;font-size:.95rem;line-height:1.3;pointer-events:none}

/* Mini chooser: six remote-friendly tiles, plus direct access to Daily 9. */
.mini-menu-heading{display:flex;align-items:center;justify-content:space-between;gap:18px}.mini-menu-heading a{text-decoration:none;flex-shrink:0}.mini-menu-heading .eyebrow{margin:0}
.mini-bowling-tile{background:#294940}.mini-practice-feedback{margin:8px 0;padding:10px 12px;border:1px solid #92ac73;border-radius:8px;background:#173c2e}.mini-practice-feedback p{margin:0 0 8px;font-size:14px;line-height:1.45}.mini-practice-feedback button{min-height:44px;width:100%}
.mini-tv #mini-menu{box-sizing:border-box;padding:5vh 6.5vw;min-height:100vh}.mini-tv .mini-menu-heading h1{font-size:2rem}.mini-tv .mini-menu-heading a{font-size:1rem;min-height:2.6rem;padding:.6rem 1.5rem}.mini-tv #mini-menu .mini-difficulty{margin:.7rem 1.2rem .5rem 0;font-size:1rem}.mini-tv #mini-menu .mini-tiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;margin:.6rem 0}.mini-tv #mini-menu .mini-tile{min-height:0;box-sizing:border-box;padding:.8rem 1rem;gap:.45rem;border-radius:12px}.mini-tv #mini-menu .mini-tile strong{font-size:1.25rem}.mini-tv #mini-menu .mini-tile span:not(.eyebrow){font-size:.85rem;line-height:1.3}.mini-tv #mini-menu .mini-tile .eyebrow{font-size:.65rem;line-height:1.2}.mini-tv #mini-menu .mini-tile b{font-size:.85rem}.mini-tv #mini-menu .mini-tile .menu-icon,.mini-tv #mini-menu .mini-tile svg{width:1.4rem;height:1.4rem}.mini-tv #mini-menu>.small{font-size:.8rem;margin:.5rem 0}.mini-tv #mini-menu .mini-pro-tile{grid-column:auto}
/* Results and remote help have their own rows, above the overscan safe edge. */
.mini-tv .mini-remote-hint{box-sizing:border-box;bottom:4vh;min-height:2.4rem;padding:.55rem .7rem;font-size:.9rem;line-height:1.3}
.mini-tv .mini-practice-feedback{padding:.5rem .6rem;margin:.4rem 0}.mini-tv .mini-practice-feedback p{font-size:.85rem;line-height:1.4}.mini-tv .mini-practice-feedback button{font-size:.9rem;min-height:2.6rem}
html:not(.mini-tv) #mini-playing[data-kind=practice] .mini-controls:has(.mini-practice-feedback:not([hidden])){overflow:auto}
@media(min-width:951px){html.mini-active:not(.mini-tv) #mini-playing[data-kind=practice] .mini-controls{grid-template-rows:64px minmax(0,1fr) 44px auto auto}html.mini-active:not(.mini-tv) #mini-playing[data-kind=practice] .mini-practice-feedback{grid-area:5/1/6/3;max-height:160px;overflow:auto;margin:0;padding:6px 8px}.mini-practice-feedback button{min-height:44px}}
/* Bowling is a self-contained, low-cost lane. No full-golf HUD is reused. */
.mini-bowling{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:25;box-sizing:border-box;background:#0a251e;color:#fff9e8;padding:24px;display:flex;flex-direction:column;gap:14px;overflow:hidden}.bowling-heading{display:flex;align-items:center;gap:20px;flex:none}.bowling-heading h1{font-size:30px;margin:3px 0}.bowling-heading .eyebrow{margin:0}.bowling-total{margin-left:auto;text-align:right}.bowling-total span{display:block;font-size:12px;color:#b9cda7}.bowling-total strong{font-size:28px;color:#e3ee9d}.bowling-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.8fr);gap:18px;min-height:0;flex:1}.bowling-lane{display:flex;flex-direction:column;min-height:0;border:1px solid #658261;border-radius:14px;overflow:hidden;background:#123e30}.bowling-lane canvas{display:block;width:100%;flex:1;min-height:0;height:0;touch-action:manipulation}.bowling-lane p{flex:none;text-align:center;margin:0;padding:10px 6px;background:#153628;font-size:14px;min-height:20px}.bowling-controls{overflow:auto;min-height:0;box-sizing:border-box;padding:18px;background:#17362b;border:1px solid #658261;border-radius:14px;font-size:16px;line-height:1.4}.bowling-controls>.eyebrow{font-size:11px}.bowling-readout{display:flex;justify-content:space-between;gap:8px}.bowling-readout strong{display:block;font-size:20px;color:#e3ee9d}.bowling-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.bowling-buttons button{min-height:44px;padding:6px 12px}.bowling-meter{position:relative;height:40px;border-radius:12px;background:linear-gradient(90deg,#673b2e 0%,#3b6143 40%,#3b6143 60%,#673b2e 100%);border:1px solid #8fac70;margin:16px 0 22px}.bowling-centre{position:absolute;left:calc(50% - 3px);top:-4px;bottom:-4px;width:6px;background:#ffe799;border:1px solid #5b4e24;border-radius:2px}.bowling-marker{position:absolute;left:50%;top:6px;width:18px;height:26px;box-sizing:border-box;border:3px solid white;border-radius:9px;transform:translateX(-50%);background:#163b2c;box-shadow:0 0 5px #000}.bowling-controls .primary,.bowling-controls #bowling-menu{display:block;width:100%;min-height:48px;margin:10px 0}.bowling-controls #bowling-status{font-size:14px;min-height:42px}.bowling-controls h2{font-size:28px;color:#e3ee9d}.bowling-help{flex:none;text-align:center;margin:0;padding:10px 6px;font-size:16px;line-height:1.3;background:#17362b;border-radius:8px}.mini-bowling dialog{background:#12372b;color:#fff9e8;border:1px solid #e3ee9d;border-radius:18px;width:min(440px,80vw);padding:24px}.mini-bowling dialog::backdrop{background:#001c}.mini-bowling dialog button{display:block;width:100%;min-height:48px;margin:12px 0}
.mini-tv .mini-bowling{padding:5vh 6.5vw;gap:1rem}.mini-tv .bowling-heading h1{font-size:1.6rem}.mini-tv .bowling-heading .eyebrow{font-size:.85rem}.mini-tv .bowling-total strong{font-size:1.6rem}.mini-tv .bowling-total span{font-size:.75rem}.mini-tv .bowling-layout{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:1rem}.mini-tv .bowling-controls{font-size:1rem;padding:1rem}.mini-tv .bowling-controls>.eyebrow{font-size:.75rem}.mini-tv .bowling-readout strong{font-size:1.1rem}.mini-tv .bowling-buttons{display:none}.mini-tv .bowling-controls button,.mini-tv .bowling-heading button{font-size:1rem;min-height:2.6rem}.mini-tv .bowling-controls #bowling-status{font-size:.85rem;min-height:0}.mini-tv .bowling-help{font-size:.9rem;min-height:1.4rem;padding:.5rem}.mini-tv .bowling-lane p{font-size:.85rem}.mini-tv .bowling-controls h2{font-size:1.5rem}
@media(max-width:650px){html:not(.mini-tv) .mini-bowling{padding:12px;gap:8px}html:not(.mini-tv) .bowling-heading h1{font-size:22px}html:not(.mini-tv) .bowling-layout{grid-template-columns:1fr;grid-template-rows:minmax(160px,1fr) minmax(180px,.9fr);gap:8px}html:not(.mini-tv) .bowling-controls{padding:10px 12px}html:not(.mini-tv) .bowling-controls>p{display:none}html:not(.mini-tv) .bowling-buttons{margin:6px 0}html:not(.mini-tv) .bowling-timing p{margin:4px 0}html:not(.mini-tv) .bowling-help{font-size:12px;padding:6px}html:not(.mini-tv) .bowling-total strong{font-size:22px}}

/* Bowling keeps the same aim, timing and action slots through every phase. */
.bowling-marker{left:4%}
.bowling-lane{position:relative}
#bowling-result{position:absolute;top:12px;right:12px;bottom:auto;left:12px;inset:12px 12px auto;padding:14px;background:#12372bf5;border:1px solid #e3ee9d;border-radius:12px;max-height:calc(100% - 24px);overflow:auto;box-sizing:border-box}
#bowling-result h2{margin:0 0 6px;color:#e3ee9d;font-size:24px}
#bowling-result p{padding:0;margin:0 0 8px;background:none}
#bowling-result button{min-height:44px;margin:4px 0;max-width:100%;box-sizing:border-box}
@media(max-width:650px),(max-height:600px){
 html:not(.mini-tv) .mini-bowling{height:100%;height:100dvh;padding:8px 10px max(8px,env(safe-area-inset-bottom));gap:6px}
 html:not(.mini-tv) .bowling-heading{gap:10px}
 html:not(.mini-tv) .bowling-heading .eyebrow{font-size:10px;margin:0}
 html:not(.mini-tv) .bowling-heading h1{font-size:20px;margin:0}
 html:not(.mini-tv) .bowling-heading button{min-height:44px;padding:6px 12px}
 html:not(.mini-tv) .bowling-layout{grid-template-rows:minmax(70px,1fr) 220px;gap:6px}
 html:not(.mini-tv) .bowling-controls{padding:8px 10px;overflow:hidden;display:flex;flex-direction:column;gap:6px}
 html:not(.mini-tv) .bowling-controls>p{display:none}
 html:not(.mini-tv) .bowling-readout{font-size:12px;line-height:16px}
 html:not(.mini-tv) .bowling-readout strong{font-size:16px;line-height:20px}
 html:not(.mini-tv) .bowling-buttons{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin:4px 0 0}
 html:not(.mini-tv) .bowling-buttons button{min-height:44px;padding:4px 2px;font-size:12px}
 html:not(.mini-tv) .bowling-timing p{font-size:12px;line-height:16px;margin:0 0 6px}
 html:not(.mini-tv) .bowling-meter{height:32px;margin:0 0 4px}
 html:not(.mini-tv) .bowling-marker{top:3px}
 html:not(.mini-tv) .bowling-controls #bowling-roll{min-height:44px;margin:0;flex:none;font-size:16px;padding:6px}
 html:not(.mini-tv) .bowling-help{font-size:11px;line-height:14px;padding:4px 6px;min-height:28px;box-sizing:border-box}
 html:not(.mini-tv) .bowling-lane>p{font-size:11px;padding:4px;min-height:16px}
}

@media(min-width:651px) and (max-height:600px){
 html:not(.mini-tv) .bowling-layout{grid-template-columns:minmax(0,1.3fr) minmax(300px,1fr);grid-template-rows:minmax(0,1fr)}
}

/* Keep Survivor feedback in the existing timing row, without moving the marker. */
#bowling-timing-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bowling-heading>div:first-child{min-width:0}
@media(max-width:650px){html:not(.mini-tv) .bowling-heading h1{font-size:18px}html:not(.mini-tv) .bowling-heading .eyebrow{white-space:nowrap;font-size:9px}}

/* Difficulty stays in the top ribbon; narrow phones get two tidy rows. */
#bowling-level{white-space:nowrap;min-height:44px}
#bowling-level-dialog{max-height:calc(100dvh - 32px);overflow:auto;box-sizing:border-box}
#bowling-level-dialog button{min-height:44px;margin:6px 0}
#bowling-level-dialog button[aria-pressed=true]{border-color:#e3ee9d;background:#38563a}
@media(max-width:650px){html:not(.mini-tv) .bowling-heading{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:4px 8px}html:not(.mini-tv) .bowling-heading>div:first-child{grid-area:1/1/2/4}html:not(.mini-tv) .bowling-total{grid-area:2/1/3/2;margin-left:0;text-align:left;display:flex;gap:6px;align-items:center}html:not(.mini-tv) #bowling-level{grid-area:2/2/3/3}html:not(.mini-tv) #bowling-options{grid-area:2/3/3/4}html:not(.mini-tv) .bowling-heading>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:8px}html:not(.mini-tv) .bowling-heading h1{font-size:17px}}
