:root{--ink:#172f2a;--muted:#67736a;--paper:#f4f3ec;--line:#dce0d5;--green:#204b3e;--gold:#efd080}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.6 system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}header{padding:23px max(5vw,20px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.brand{color:var(--ink);text-decoration:none;font-size:15px;font-weight:800;letter-spacing:2px;display:flex;gap:12px;align-items:center}.eight{display:inline-flex;align-items:center;justify-content:center;background:var(--ink);color:white;width:33px;height:33px;border-radius:50%;font-size:22px;letter-spacing:0}.tag{font-size:13px;color:var(--muted)}main{max-width:1400px;margin:auto;padding:0 5vw}.intro{display:flex;justify-content:space-between;align-items:center;padding:45px 0 30px}.eyebrow{letter-spacing:1.8px;font-size:11px;font-weight:800;color:var(--muted);margin:0 0 9px}h1{font-family:Georgia,serif;font-weight:400;line-height:1.13;font-size:clamp(34px,4.3vw,58px);letter-spacing:-1.7px;margin:0}h2{font-family:Georgia,serif;font-size:27px;line-height:1.25;font-weight:400;margin:0 0 12px}h3{font-size:19px;line-height:1.4}p{margin:10px 0 16px}.intro p:last-child{color:var(--muted)}.local-badge{font-size:13px;line-height:1.8;border:1px solid var(--line);border-radius:12px;padding:13px 20px;background:#ffffff66}.local-badge span{color:#589269}.local-badge small{color:var(--muted)}nav{display:flex;gap:8px;border-bottom:1px solid #ccd4c6;margin-bottom:28px;overflow:auto}button,input,select,textarea{font:inherit}button,.file-button{cursor:pointer;border:1px solid var(--green);background:var(--green);color:white;border-radius:8px;padding:10px 17px;min-height:45px;font-weight:600;font-size:14px;transition:background .15s}button:hover{background:#32664f}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #d39b27;outline-offset:3px}nav button{color:var(--muted);background:none;border:0;border-bottom:3px solid transparent;border-radius:0;padding:13px 20px;white-space:nowrap}nav button.active{border-bottom-color:var(--green);color:var(--green)}nav button:hover{background:#e6eadd}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px}.panel{padding:25px;background:#fffef9;border:1px solid var(--line);border-radius:14px;margin-bottom:22px}.section-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.subtle{color:var(--green);background:transparent;border-color:#cdd8ca}.subtle:hover{background:#e8eee3}.help{color:var(--muted);font-size:13px}.table-wrap{background:#e8e7dc;padding:18px 10px;border-radius:12px;margin:20px 0 10px}svg{display:block;width:100%;overflow:visible;touch-action:none;user-select:none}svg .ball,svg .pocket{cursor:pointer}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:10px;color:var(--muted);margin-bottom:22px}.line{display:inline-block;width:18px;height:0;border-top:2px solid;margin-right:3px;vertical-align:middle}.gold{color:#ba8e31}.white{color:#6b8278;border-top-style:dashed}.controls{display:flex;gap:12px;flex-wrap:wrap;align-items:end;margin:15px 0}label{font-size:12px;font-weight:600;color:var(--muted)}select,input[type=text],input:not([type]),textarea{display:block;width:100%;border:1px solid #ced7ca;background:white;padding:10px 12px;border-radius:7px;color:var(--ink);min-height:45px}select{max-width:100%;min-height:45px;padding:8px;border-radius:7px;border:1px solid #ced7ca;background:white;color:var(--ink)}.controls label{flex:1;min-width:130px}.controls button{flex-shrink:0}summary{font-size:12px;color:var(--muted);cursor:pointer;padding:10px 0}.save-row{display:flex;gap:8px;margin-top:16px}.save-row input{min-width:0}.save-row button{white-space:nowrap}.saved-layouts{margin-top:12px}.layout-row{display:flex;align-items:center;gap:8px;padding-top:8px}.layout-row button:first-child{flex:1;text-align:left;overflow-wrap:anywhere}.layout-row button{font-size:12px;padding:7px 12px}.coach-card{background:#153d32;color:#eff4e7;border:0}.coach-card .eyebrow{color:#a5bca7}.coach-card h2{color:white}.metric{display:flex;align-items:baseline;gap:12px;border-bottom:1px solid #496252;padding:4px 0 18px;margin-bottom:20px}.metric strong{font:46px Georgia,serif;color:var(--gold)}.metric span{font-size:11px;color:#c5d2be}.coach-card p,.coach-card li{font-size:14px}.coach-card ol{padding-left:20px}.coach-card li{padding:0 0 12px 4px}.toggle{color:#e2e9d8;display:block;margin:10px 0 20px;font-size:13px}.note{font-size:11px;line-height:1.7;color:#b8c9b8;background:#ffffff08;border-radius:8px;padding:14px;margin:14px 0}a{color:#326b50;text-underline-offset:3px}.coach-card a{color:#e8cc87;font-size:12px}.warning{background:#fcdf9e;color:#4e3613;border-radius:7px;padding:10px;margin:10px 0;font-size:12px}.mini-tip{padding:2px 18px}.mini-tip p{font-size:14px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.cards .panel{display:flex;flex-direction:column;align-items:start}.cards .panel button{margin-top:auto}.cards .panel a{font-size:12px}.drill-meta{font-size:11px;letter-spacing:1px;color:#7d805a;text-transform:uppercase}.notes-label{display:block;margin:20px 0}.notes-label textarea{margin-top:8px;min-height:90px;resize:vertical}.stats .panel strong{font:40px Georgia,serif}.stats .panel{gap:5px}.history-row{padding:20px 0;border-top:1px solid var(--line)}.history-row p{white-space:pre-wrap;overflow-wrap:anywhere}.history-row small{color:var(--muted)}.tip-number{color:#8e9b73;font:32px Georgia,serif}.source-note{margin-top:10px}.file-button{display:inline-block;color:var(--green);background:transparent}.file-button input{display:none}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#142f28;color:white;padding:12px 22px;border-radius:10px;box-shadow:0 4px 25px #0002;z-index:5;display:none;max-width:90vw}footer{padding:30px 0;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:10px;letter-spacing:.5px}[hidden]{display:none!important}input[type=range]{width:100%;min-height:40px}button:disabled{opacity:.45;cursor:default}@media(max-width:1050px){.workspace{grid-template-columns:minmax(0,1fr)}aside{display:grid;grid-template-columns:2fr 1fr;gap:20px}.cards{grid-template-columns:1fr 1fr}}@media(max-width:650px){main{padding:0 18px}header{padding:17px 18px}.tag{display:none}.intro{padding:28px 0 20px}.local-badge{display:none}h1{font-size:36px}.intro p:last-child{font-size:14px}nav{margin-bottom:20px;gap:0}nav button{padding:11px 13px;font-size:13px}.panel{padding:18px;border-radius:11px}.section-top{align-items:start}.section-top button{font-size:11px;padding:7px 10px;min-height:36px}h2{font-size:24px}.table-wrap{margin:16px -8px 12px;padding:12px 6px}.legend{font-size:9px;gap:7px}.controls{gap:8px}.controls label{min-width:110px}.controls button{font-size:12px}aside{display:block}.cards{grid-template-columns:1fr}.cards.stats{grid-template-columns:repeat(3,1fr);gap:8px}.stats .panel{padding:12px;font-size:10px}.stats .panel strong{font-size:29px}.save-row button{padding:8px;font-size:12px}footer{flex-direction:column;gap:3px}.mini-tip{padding:0 10px 20px}}
/* Charcoal theme */
:root{--ink:#eef0ed;--muted:#a9afaa;--paper:#292b2d;--line:#434649;--green:#101112;--gold:#efd080}
header{background:#242628}.eight{background:#080909;color:#f4f5f1}.local-badge{background:#202224;border-color:#45494b}.local-badge span{color:#8ecba4}nav{border-bottom-color:#484c4e}nav button{color:#b7bdb8}nav button.active{color:#fff;border-bottom-color:#080909;background:#1b1d1e}nav button:hover{background:#202224}.panel{background:#323537;border-color:#484d4f}button,.file-button{border-color:#070808;background:#0b0c0d;color:#f0f2ee}button:hover{background:#191c1d}.subtle{background:#242729;color:#edf1ec;border-color:#535a5b}.subtle:hover{background:#151819}.table-wrap{background:#202325}select,input[type=text],input:not([type]),textarea{background:#222527;border-color:#555d5e;color:#eef2ed}input::placeholder,textarea::placeholder{color:#9ea7a3}.white{color:#d3ded7}.gold{color:#efd080}.coach-card{background:#171a1c;border:1px solid #454b4c;color:#e9efea}.coach-card .eyebrow{color:#a8b7ac}.coach-card h2{color:#f4f6f1}.metric{border-bottom-color:#454d49}.metric span{color:#b8c4ba}.toggle{color:#e2e9df}.note{background:#ffffff06;color:#b7c4bb}.coach-card a{color:#e8cc87}.drill-meta{color:#c8bf95}a{color:#a9d3bb}.file-button{background:#242729;border-color:#535a5b;color:#edf1ec}.tip-number{color:#c2b98d}#toast{background:#090b0c;border:1px solid #56615b;color:#fff}input[type=checkbox],input[type=range]{accent-color:#a5bfac}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline-color:#efd080}
/* Royal purple typography on charcoal */
:root{--ink:#9861d8;--muted:#a16edc}
.eight{color:#9861d8}nav button{color:#a16edc}nav button.active{color:#9861d8}.local-badge span{color:#9861d8}button,.file-button{color:#9861d8}.subtle,.file-button{color:#9861d8}select,input[type=text],input:not([type]),textarea{color:#9861d8}input::placeholder,textarea::placeholder{color:#a16edc}.coach-card,.coach-card h2{color:#9861d8}.coach-card .eyebrow{color:#a16edc}.metric span,.toggle,.note{color:#a16edc}#toast{color:#9861d8}
/* Royal purple typography */
:root{--ink:#9861d8;--muted:#a16edc}
.eight,nav button.active,.local-badge span,button,.file-button,.subtle,select,input[type=text],input:not([type]),textarea,.coach-card,.coach-card h2,#toast{color:#9861d8}
nav button,input::placeholder,textarea::placeholder,.coach-card .eyebrow,.metric span,.toggle,.note{color:#a16edc}
/* Centered, balanced typography and controls */
body{text-align:center}header{justify-content:center;position:relative}.tag{position:absolute;right:max(5vw,20px)}.intro{justify-content:center;position:relative}.intro>div:first-child{max-width:760px}.local-badge{position:absolute;right:0}.intro h1{margin-inline:auto}nav{justify-content:center}.section-top{justify-content:center;flex-wrap:wrap}.section-top>div{flex:1;min-width:180px}.section-top>button{margin-inline:auto}.help{margin-inline:auto}.legend,.controls,.save-row{justify-content:center}label,select,input,textarea,summary{text-align:center}.controls label{align-self:stretch}.cards .panel{align-items:center}.cards .panel h3,.cards .panel p{width:100%}.coach-card ol{list-style-position:inside;padding:0}.coach-card li{padding-left:0}.layout-row button:first-child{text-align:center}.mini-tip{text-align:center}footer{justify-content:center}.save-row input{max-width:420px}.source-note{max-width:1000px;margin-inline:auto}.notes-label textarea{max-width:800px;margin-inline:auto}.history-row{max-width:900px;margin-inline:auto}.note{margin-inline:auto}.stats .panel{align-items:center}
@media(min-width:651px) and (max-width:1150px){.intro{flex-direction:column;gap:14px}.local-badge{position:static}.tag{position:static}header{justify-content:space-between}}
@media(max-width:650px){.intro{display:block}.section-top>div{flex-basis:100%}.section-top>button{margin-top:0}.section-top{gap:4px}.table-panel .section-top h2{margin-bottom:6px}nav{justify-content:flex-start}nav button{flex:1}footer{align-items:center}.legend{gap:9px}.controls label{min-width:110px}}
.intro{flex-direction:column;gap:14px}.local-badge{position:static}.section-top{flex-direction:column}.section-top>div{flex:none;width:100%}.metric{justify-content:center}
@media(max-width:650px){nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible;gap:4px}nav button{width:100%;text-align:center}}
/* Black decorative outlines; keyboard focus retains its gold indicator. */
:root{--line:#080909}
header,nav,.panel,.local-badge,.coach-card,.metric,.history-row,button,.subtle,.file-button,select,input[type=text],input:not([type]),textarea,#toast{border-color:#080909}
nav button{border-bottom-color:transparent}nav button.active{border-bottom-color:#080909}
.shot-closeups{display:grid;grid-template-columns:minmax(135px,1fr) minmax(180px,1.2fr) minmax(135px,1fr);align-items:center;gap:12px}.ball-closeup{margin:0;min-width:0}.ball-closeup figcaption{font-size:13px;font-weight:700}.ball-closeup svg{width:150px;max-width:100%;margin:0 auto;touch-action:auto}.ball-closeup p{font-size:10px;line-height:1.5;margin:3px auto;max-width:190px}.table-heading h2{margin-bottom:14px}.table-heading #closeup-status{font-size:10px;line-height:1.5;margin:12px 0 0}.closeup-explanation{font-size:11px;line-height:1.6;color:var(--muted);max-width:680px;margin:18px auto}.table-heading #closeup-status.invalid{color:#efd080}
@media(max-width:650px){.shot-closeups{grid-template-columns:1fr 1fr;gap:16px 12px}.table-heading{grid-column:1 / -1;grid-row:1}.ball-closeup{grid-row:2}.ball-closeup svg{width:135px}.ball-closeup p{font-size:10px}.closeup-explanation{font-size:11px}}
.shot-mode{max-width:560px;margin:0 auto 14px}.tip-picker{display:block;max-width:180px;margin:10px auto}.tip-picker select{width:100%;font-size:10px;min-height:36px;padding:4px}.ball-closeup #tip-reset{font-size:10px;min-height:32px;padding:5px 10px}.ball-closeup #tip-view{cursor:crosshair;touch-action:none}.ball-closeup{align-self:center}#bank-contact-info{color:#efd080}
.ball-closeup{align-self:start}.table-heading{align-self:center}
.stroke-station{border-top:1px solid #080909;margin-top:28px;padding-top:26px}.stroke-station h3{margin:6px 0 10px}.stroke-station #cue-stage{background:radial-gradient(ellipse at 60% 50%,#223c48 0%,#191d20 65%);border:1px solid #080909;border-radius:12px;touch-action:none;cursor:ew-resize;margin:18px auto 12px;overflow:hidden}.stroke-controls{gap:24px}.stroke-controls label{min-width:180px}.stroke-controls output{display:block;color:#62c9ff;font-size:15px}#strike-preview{border-color:#17719f;box-shadow:0 0 16px #087eff25}#strike-preview:hover{background:#122d3b}#stroke-status{min-height:42px;color:#62c9ff}.stroke-station .help{max-width:640px}.stroke-station input[type=range]{accent-color:#238fca}.stroke-station .controls{margin-block:10px}#flame-stick{will-change:transform}#stroke-route{pointer-events:none}@media(max-width:650px){.stroke-controls{gap:8px}.stroke-controls label{min-width:120px}.stroke-station #cue-stage{width:calc(100% + 16px);max-width:none;margin-left:-8px}.stroke-station .controls button{flex:1}#cue-stage text{font-size:18px}}
.finder-options{display:grid;grid-template-columns:1fr 1fr;gap:22px;max-width:940px;margin:24px auto}.finder-intro{max-width:700px;margin-inline:auto}.finder-options .panel{margin-bottom:0}.finder-options h3{margin:8px 0 16px}.finder-options form{display:flex;flex-direction:column;align-items:center;gap:12px}.finder-options input{max-width:370px}.finder-options .help{max-width:360px;margin:18px auto 0}#finder-status{max-width:780px;margin:24px auto;overflow-wrap:anywhere;color:#62c9ff}#finder-results .panel h3{margin-top:0}#finder-results .panel p{flex:1}.map-search-link{display:inline-block;border:1px solid #080909;border-radius:8px;padding:10px 15px;background:#171a1c;min-height:45px}.map-search-link:hover{background:#101719}#clear-table-search{margin:0 auto 24px}#find .source-note{margin-top:28px}#cue-stage{cursor:move!important}@media(max-width:650px){.finder-options{grid-template-columns:1fr;gap:16px}nav button:last-child:nth-child(odd){grid-column:1 / -1}}
.table-play-area{display:grid;grid-template-columns:90px minmax(0,1fr);gap:12px;align-items:stretch;margin:18px 0 10px}.table-play-area .table-wrap{margin:0;align-self:center}.cue-side{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:280px;background:#191e22;border:1px solid #080909;border-radius:12px;padding:8px 4px;overflow:hidden}.cue-side #cue-stage{display:block;width:100%;height:360px;flex:1;min-height:190px;max-height:520px;touch-action:none;cursor:ns-resize!important;user-select:none;-webkit-user-select:none}.cue-side-label{color:#62c9ff;font-size:10px;letter-spacing:1px;font-weight:700}.cue-side output{color:#62c9ff;font-size:19px;font-weight:700}.cue-side small{font-size:9px;color:#62c9ff;line-height:1.4}.stroke-station{margin-top:16px;padding-top:16px}.stroke-station h3{margin:2px 0 8px}.stroke-station .controls{gap:8px}.stroke-station .help{margin:8px auto}#stroke-status{margin:8px auto;min-height:25px}.cue-side #cue-stage:focus-visible{outline:2px solid #efd080;outline-offset:-2px}#balls .ball{will-change:transform}#table[data-playing="true"]{pointer-events:none}#table[data-playing="true"] #guides,#table[data-shot-pose="true"] #guides,#table[data-playing="true"] [data-contact-guide],#table[data-shot-pose="true"] [data-contact-guide]{opacity:.15}
@media(max-width:650px){.table-play-area{grid-template-columns:54px minmax(0,1fr);gap:6px;margin-inline:-8px}.cue-side{min-height:235px;padding:5px 2px;border-radius:8px}.cue-side #cue-stage{height:190px;min-height:190px;max-height:240px}.cue-side-label{font-size:8px}.cue-side output{font-size:14px}.cue-side small{font-size:8px}.table-play-area .table-wrap{padding:8px 4px}.stroke-controls label{min-width:110px}.stroke-station .controls button{flex:1 1 43%}}

/* Automatic shot coach */
.table-play-area{display:block;margin:18px 0}.table-play-area .table-wrap{width:100%;min-width:0}.coach-player{margin:22px 0;padding:22px 0;border-top:2px solid #080909;border-bottom:2px solid #080909}.coach-player h3{font-size:1.45rem}.shot-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0}.route-choice{display:flex;flex-direction:column;gap:7px;white-space:normal;padding:15px;min-width:0}.route-choice span{font-size:.8rem;color:#a16edc;font-weight:400}.route-choice[aria-pressed="true"]{outline:2px solid #9861d8;outline-offset:1px}#coach-summary{font-weight:600}#play-status{min-height:2.8em;color:#a16edc}@media(max-width:640px){.shot-options{grid-template-columns:1fr}.table-play-area{display:block}.coach-player .controls button{width:100%}}

/* Live contact instruction */
.contact-plan{padding:16px 20px;margin:16px 0;border:2px solid #080909;border-radius:12px;background:#292b2d}.contact-plan label{display:block;max-width:390px;margin:auto}.contact-plan select{width:100%;margin-top:7px}.contact-plan p{margin:13px 0}.tip-advice{font-weight:600}#shot-phase{color:#efd080;font-weight:600}.contact-plan details{font-size:.85rem}.contact-plan details p{line-height:1.6}.shot-closeups[data-phase="cue"] .ball-closeup:last-child,.shot-closeups[data-phase="return"] .ball-closeup:first-child,.shot-closeups[data-phase="object"] .ball-closeup:first-child{outline:2px solid #efd080;border-radius:12px}.shot-closeups .ball-closeup{transition:outline-color .2s}.contact-halo{opacity:.7}#tip-view{cursor:default}
/* Expanded practice studio */
.lab-panel,.lab-playback{margin:20px 0;padding:20px 0;border-top:2px solid #080909;border-bottom:2px solid #080909}.lab-panel h3{font-size:1.5rem}.lab-sliders label{flex:1;min-width:160px}.lab-sliders output{display:block;color:#c6a6ed;font-size:.8rem}.lab-playback input[type=range]{width:100%}.lab-playback textarea{width:100%;margin-top:15px;resize:vertical}.lesson-library{margin:20px 0}.lesson-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.lesson-links a{padding:10px}.position-practice{margin-top:25px;border-top:2px solid #080909;padding-top:20px}#position-table{display:block;width:100%;max-width:650px;margin:16px auto;touch-action:none}.skill-row{display:grid;grid-template-columns:90px minmax(70px,1fr) 130px;align-items:center;gap:14px;margin:15px 0;font-size:.85rem}.skill-row progress{width:100%;accent-color:#9861d8}#photo-canvas{display:block;max-width:100%;height:auto;margin:20px auto;border:2px solid #080909;touch-action:none}#photo-canvas[hidden]{display:none}#photo-controls{margin:20px 0}#target-place[aria-pressed=true]{outline:2px solid #efd080}.position-practice input[type=checkbox]{width:auto}.lab-panel details{padding:12px 0}.lab-panel details p{font-size:.85rem}#lab-result{color:#c6a6ed;min-height:2.6em}#next-plan{color:#d2b9f5}#personal-practice{margin-bottom:20px}.page .cards>[hidden]{display:none}nav{flex-wrap:wrap}@media(max-width:640px){.lesson-links{grid-template-columns:1fr}.skill-row{grid-template-columns:70px minmax(50px,1fr) 100px;gap:7px}.lab-panel .controls>*{width:100%}.lab-playback .controls{gap:8px}.lab-playback button{font-size:.8rem}.lab-panel,.lab-playback{padding:16px 0}}

#video-preview{display:block;width:100%;max-width:700px;margin:18px auto;border:2px solid #080909;border-radius:10px}#video-preview[hidden]{display:none}.lab-playback a{padding:10px;border:2px solid #080909;border-radius:8px}
.special-panel{border:2px solid #080909;border-radius:12px;background:#292b2d;padding:20px;margin:0 0 24px}.special-panel h3{font-size:1.45rem;margin:5px 0 12px}.special-panel li{padding:5px 0;font-size:.85rem}.special-panel ol{padding:0;list-style-position:inside}.special-panel a{display:inline-block;padding:12px}.special-panel input[type=checkbox]{width:auto}.instruction-badge{padding:12px;background:#161819;border:1px solid #080909;border-radius:8px;color:#efd080;font-weight:700}#special-step-text{min-height:75px;color:#d4b7f5}#special-rail-order select{min-width:110px}@media(max-width:650px){.special-panel{padding:15px}.special-panel .controls>*{width:100%}.special-panel li{text-align:left}}

/* Phone/tablet app shell and personal library. */
html{-webkit-text-size-adjust:100%;scroll-padding-top:20px}body{padding-bottom:env(safe-area-inset-bottom)}input,textarea,select{font-size:16px}button,.file-button,nav button{min-height:44px}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #efd080;outline-offset:3px}.personal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.personal-grid .panel{min-width:0}.personal-shot label{display:block;text-align:left;margin:12px 0}.personal-shot input,.personal-shot select,.personal-shot textarea{display:block;width:100%;margin-top:6px}.personal-shot textarea{resize:vertical}.saved-shot-diagram{width:100%;height:auto;display:block;margin:14px 0}.favorite-drill{margin:12px 6px}.favorite-drill[aria-pressed=true]{color:#efd080}.account-form{max-width:470px;margin:auto}.account-form label{display:block;text-align:left;margin:14px 0}.account-form input{display:block;width:100%;margin-top:6px}.account-notice{color:#efd080}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}#admin label{display:block;margin:12px 0}#admin input,#admin textarea,#admin select{max-width:100%;width:100%}#install li{text-align:left;line-height:1.7}#install article{max-width:850px;margin:auto}#library-scope,#account-status{overflow-wrap:anywhere}.personal-grid button{margin:5px}.cloud-actions{margin:18px 0}#admin-users article,#admin-audit article{border-bottom:1px solid #080909;padding:12px;overflow-wrap:anywhere}@media(max-width:700px){.personal-grid,.admin-grid{grid-template-columns:1fr}#library .controls>*{width:100%}nav{gap:6px}nav button{flex:1 1 105px}header{padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.personal-grid h3,.personal-grid p{overflow-wrap:anywhere}fieldset{min-width:0}#account-forget{margin:10px 0}

.situation-panel{border:1px solid #6e806f;border-radius:16px;padding:20px;margin:18px 0;background:#233d33}.situation-panel .check{display:flex;align-items:center;gap:12px}.situation-panel input[type=checkbox]{width:24px;height:24px;min-height:24px}.situation-panel select{max-width:100%}.situation-panel details{margin-top:14px}

dialog.confirmation{max-width:min(90vw,520px);padding:24px;border:1px solid #859481;border-radius:16px;background:#292b2d;color:#fff8e9}dialog::backdrop{background:#000a}

.coach-explanation{margin:18px 0;padding:18px;border:1px solid #6e806f;border-radius:12px;text-align:left}.coach-explanation summary{font-size:1.1rem;font-weight:700;cursor:pointer}.coach-explanation li{margin:10px 0;line-height:1.6}.training-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.training-grid .panel{min-width:0}.training-grid label{display:block;margin:14px 0;text-align:left}.training-grid input,.training-grid select{width:100%;max-width:100%;margin-top:5px}.measurement-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:15px 0;border:1px solid #6e806f;border-radius:10px;padding:12px}.measurement-row label{margin:0}.measurement-row legend{padding:0 6px}.assessment-score{border-top:1px solid #6e806f;margin-top:18px;padding-top:12px}#assessment-diagram{display:block;width:100%;max-height:280px;margin:16px 0}.miss-entry{margin:15px 0;padding:15px;border:1px solid #6e806f;border-radius:10px}.miss-entry select{max-width:100%}.table-tools{padding:12px 0}.table-tools label{min-width:130px}.table-tools input[type=range]{width:150px}.table-viewport{overflow:auto;max-width:100%;min-width:0;overscroll-behavior:contain}.table-viewport .table-wrap{max-width:none;flex-shrink:0}.table-viewport.panning{touch-action:none;cursor:grab}.table-viewport.panning #table{pointer-events:none}.expanded-table{position:fixed!important;inset:0!important;z-index:10000;background:#292b2d;padding:max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));margin:0!important;display:flex!important;flex-direction:column;width:100%;height:100dvh;box-sizing:border-box}.expanded-table .table-tools{flex:none;padding:0 0 8px}.expanded-table .table-tools .help{margin:5px 0;font-size:.75rem}.expanded-table .table-viewport{flex:1;min-height:0;width:100%}.expanded-table .table-wrap{margin:0!important}.expanded-table:fullscreen{background:#292b2d}.expanded-table #wide-controls[hidden]{display:none}body:has(.expanded-table) .confirmation{z-index:11000}@media(max-width:700px){.training-grid{grid-template-columns:1fr}.table-tools .controls{gap:6px}.table-tools button{padding:9px 10px}.table-tools label{font-size:.8rem}.expanded-table #wide-controls label{flex:1;min-width:100px}.expanded-table .table-tools input[type=range]{width:110px}.coach-explanation{padding:12px}.measurement-row{gap:8px}.training-grid .panel{padding:18px}}
/* A single, touch-friendly navigation menu and account-first opening. */
header{justify-content:space-between;position:relative;z-index:20;gap:18px;padding-block:16px}
.header-start{display:flex;align-items:center;gap:18px;min-width:0}.header-start .brand{font-size:18px;white-space:nowrap}.tag{position:static}
#menu-toggle{display:flex;align-items:center;gap:9px;flex-shrink:0;padding:10px 14px;color:#e5d7f8}#menu-toggle span{font-size:20px;line-height:1}
#menu-panel{position:absolute;top:calc(100% - 6px);left:max(18px,5vw);width:min(300px,calc(100vw - 36px));padding:8px;border:1px solid #646067;border-radius:14px;background:#242628;box-shadow:0 18px 50px #0008;max-height:calc(100dvh - 95px);overflow-y:auto}
header #main-menu{display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:3px;margin:0;border:0;overflow:visible;text-align:left}
header #main-menu button{flex:none;min-height:46px;width:100%;padding:11px 14px;text-align:left;white-space:normal;border:0;border-radius:8px;color:#e2d9ed;background:transparent}
header #main-menu button:hover,header #main-menu button.active{background:#42334f;color:#fff}header #main-menu button.active::after{content:' •';color:#c9a3ef}
main{padding-top:28px}#account-loading{margin:15vh auto;color:#cdb9e3}body:not(.auth-pending) #account-loading{display:none}
body.auth-required .page:not(#account):not(#access):not(#install),body.auth-required footer,body.auth-required #launch-announcement{display:none!important}
#account{max-width:540px;margin:24px auto 50px;text-align:center}#account .eyebrow{font-size:11px;letter-spacing:2px}#account h1{font-size:36px;line-height:1.15;margin:12px 0}#account .account-intro{color:#c5c6c7;max-width:410px;margin:0 auto 24px;font-size:15px}
.account-card{padding:26px;background:#323537;border:1px solid #4e5054;border-radius:18px;text-align:left;box-shadow:0 10px 35px #0002}.account-card fieldset{padding:0;border:0;margin:0;min-width:0}.account-form{max-width:none}.account-form label{font-size:14px;color:#e0d7e9;text-align:left;margin:15px 0}.account-form input{box-sizing:border-box;min-height:49px;padding:12px;border-radius:8px;background:#222527;color:#fff;border:1px solid #656169;text-align:left;font-size:16px}.account-form input::placeholder{color:#a9a3ae}.account-form .account-primary{width:100%;margin-top:8px;background:#9861d8;color:#fff;border-color:#9861d8;min-height:49px;font-size:16px}.account-form .account-primary:hover{background:#8149c2}.account-form .password-hint{font-size:12px;color:#bbb3c3;margin-top:-7px;text-align:left}.account-links{text-align:center;margin:18px 0 0;color:#c7c0cf;font-size:14px}.account-links button{min-height:44px;background:none;border:0;color:#d3b1f8;padding:8px;text-decoration:underline;text-underline-offset:4px}.account-privacy{font-size:12px;color:#b7b0bf;text-align:center;margin:20px auto 0;max-width:400px}#account-status{font-size:14px;text-align:center;color:#dec8f7;line-height:1.5;min-height:1.5em}#account-notice{font-size:13px;line-height:1.5;color:#f3dbab;background:#423b2c;border:1px solid #75664a;border-radius:9px;padding:12px;text-align:left}#account-signed-in{text-align:center}#account-email-label{overflow-wrap:anywhere}#account .cloud-actions button{width:100%}
@media(max-width:650px){header{padding-inline:18px}.header-start{gap:12px}.header-start .brand{font-size:16px;letter-spacing:1px}#menu-toggle{font-size:13px;padding:8px 10px}#menu-panel{left:18px}main{padding-top:18px}#account{margin:18px auto 36px}#account h1{font-size:30px}.account-card{padding:20px}#account .account-intro{font-size:14px;margin-bottom:20px}}

#account-status:empty{display:none}#account h1{color:#d9b8ff}

/* Space Grotesk: local open-source type, available with the offline app shell. */
@font-face{font-family:'Space Grotesk';src:url('fonts/space-grotesk.ttf') format('truetype');font-style:normal;font-weight:300 700;font-display:swap}
:root{--font-ui:'Space Grotesk',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
body{font-family:var(--font-ui);font-weight:400}h1,h2,h3,h4,.brand,.metric strong,.stats .panel strong,.tip-number{font-family:var(--font-ui)}h1,h2{font-weight:700;letter-spacing:-.045em}h3,h4{font-weight:600;letter-spacing:-.025em}.header-start .brand{font-weight:700;letter-spacing:.065em}.metric strong,.stats .panel strong{font-weight:600;font-variant-numeric:tabular-nums}.tip-number{font-weight:500}.eyebrow{letter-spacing:.15em}button,input,select,textarea{font-family:var(--font-ui)}

/* Keep the brand at the center of the screen, independent of the side controls. */
header{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);column-gap:12px}.header-start{display:contents}#menu-toggle{grid-column:1;grid-row:1;justify-self:start}.header-start .brand{grid-column:2;grid-row:1;justify-self:center}header>.tag{grid-column:3;grid-row:1;justify-self:end}
@media(max-width:380px){#menu-toggle .menu-label{display:none}#menu-toggle{width:44px;justify-content:center;padding:8px}#menu-toggle span{font-size:20px}}

#menu-toggle .menu-label{font-size:inherit;line-height:inherit}

/* Updates are visible from every screen, including sign-in. */
#app-update-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#3b2b4e;border-bottom:1px solid #8561ac;padding:12px max(18px,5vw);text-align:left}#app-update-banner p{margin:0;font-size:14px;color:#f1e5ff}#app-update-banner strong,#app-update-banner span{display:block}#app-update-banner span{font-size:12px;color:#d7c5ea}#app-update-banner button{flex-shrink:0;background:#9861d8;color:#fff;border-color:#b58be7}
#app-update-dialog{width:min(500px,calc(100vw - 32px));max-height:calc(100dvh - 40px);overflow:auto;border:1px solid #8f6cb1;border-radius:20px;background:#2c2d31;color:#eee5f6;padding:28px;box-shadow:0 24px 100px #0008;text-align:center}#app-update-dialog::backdrop{background:#0d091bd9}#app-update-dialog h2{color:#e0c4ff;font-size:30px}#app-update-dialog .eyebrow{color:#c49be9}#app-update-dialog p{font-size:15px;line-height:1.6}.update-keeps{color:#c5c0cd}.update-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px;justify-content:center}#confirm-app-update{background:#9861d8;color:white;min-height:49px;font-size:16px;flex:1;border-color:#b48ae5}#update-detail{color:#e9d8ff;font-size:13px!important;min-height:2em}#update-backup-tools{padding:14px;border:1px solid #c3a16e;border-radius:10px}#update-backup-tools label{display:flex;gap:10px;align-items:center;text-align:left;margin-top:12px;color:#f1dfbd}#update-backup-tools input{width:22px;height:22px;flex-shrink:0}#finish-before-update{flex:1}@media(max-width:500px){#app-update-dialog{padding:22px}#app-update-dialog h2{font-size:26px}.update-actions{flex-direction:column}.update-actions button{width:100%}#app-update-banner{gap:10px}}

/* Owner workspace and player support. */
.admin-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;text-align:left;margin-bottom:18px}.admin-heading h2{font-size:32px}.admin-badge{background:#493359;color:#ead5ff;padding:8px 14px;border-radius:999px;white-space:nowrap;font-size:13px}#admin-tabs{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-start;margin:22px 0;border:0}#admin-tabs button{flex:0 1 auto;background:#242628;border:1px solid #55505e;border-radius:9px;color:#d9c7ed;padding:10px 14px}#admin-tabs button.active{background:#7144a0;color:white;border-color:#ba8eec}#admin-fields{padding:0;border:0}#admin-status{min-height:24px;color:#d9c4f1;overflow-wrap:anywhere}#admin input,#admin select,#admin textarea,#support input,#support select,#support textarea{box-sizing:border-box;min-height:46px;border:1px solid #655c6e;border-radius:8px;background:#222527;color:#eee5f7;padding:10px 12px;text-align:left;font-size:16px;width:100%;margin-top:6px}#admin label,#support label{display:block;text-align:left;color:#d3c5e1;font-size:13px;margin:14px 0}#admin textarea,#support textarea{resize:vertical}#admin .panel,#support .panel{text-align:left}#admin .panel h3,#support .panel h3{margin-top:0;color:#dfc1ff}#admin .panel p,#support .panel p{line-height:1.6}.admin-grid,.support-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.admin-grid>.panel,.support-grid>.panel{min-width:0}.admin-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:20px 0 28px}.admin-metric{padding:20px;background:#323537;border:1px solid #58505f;border-radius:14px;text-align:left}.admin-metric strong,.admin-metric span{display:block}.admin-metric strong{font-size:34px;line-height:1.3;color:#dfbaff}.admin-metric span{font-size:12px;color:#c5b7d2;margin-top:7px}.admin-player-row{padding:22px;margin:14px 0;background:#303234;border:1px solid #57505e;border-radius:14px;text-align:left}.admin-player-row h3{margin:0 0 4px;color:#e0c4ff}.admin-player-row>p{margin:4px 0;overflow-wrap:anywhere}.admin-player-facts{display:grid;grid-template-columns:160px minmax(0,1fr);gap:7px 18px;font-size:13px;line-height:1.6}.admin-player-facts dt{color:#a99bb7}.admin-player-facts dd{margin:0;color:#ded1e9;overflow-wrap:anywhere}.admin-check{display:flex!important;align-items:center;gap:10px}#admin .admin-check input{width:22px;height:22px;min-height:22px;flex-shrink:0;margin:0}.admin-preview{padding:18px;margin-top:20px;background:#27222e;border:1px solid #9774bc;border-radius:12px}.admin-preview p,.support-message p,#admin-report-body,#support-thread-body,.release-entry p{white-space:pre-wrap;overflow-wrap:anywhere}.admin-bar-row{display:grid;grid-template-columns:85px minmax(0,1fr) 24px;gap:12px;align-items:center;margin:12px 0;font-size:12px}.admin-bar{height:10px;background:#a875df;border-radius:999px}.admin-version-row,.admin-staff-row,.admin-audit-row{padding:14px 0;border-bottom:1px solid #59505f;overflow-wrap:anywhere}.admin-version-row strong{font-size:13px;color:#dbc2ef}.admin-audit-row p{margin:0 0 5px}.admin-audit-row small,.admin-staff-row p{font-size:12px;color:#bcaec9}.admin-release-boundary{border-color:#9b79bd!important}.support-report-link{display:block;width:100%;text-align:left;white-space:normal;margin:10px 0;padding:14px}.support-message{padding:14px;margin:14px 0;border-radius:10px;background:#25262a;border:1px solid #57515e}.support-message small{color:#bc9bdc}.release-entry{padding:10px 0;border-bottom:1px solid #53485e}.release-entry h4{margin:0}#admin .controls label{margin-bottom:0}#admin .controls{justify-content:flex-start}#admin-player-search{max-width:none}#support>p{max-width:760px;margin-inline:auto}@media(max-width:850px){.admin-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-grid,.support-grid{grid-template-columns:1fr}.admin-heading h2{font-size:27px}}@media(max-width:500px){#admin-tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:8px;justify-content:flex-start}#admin-tabs button{flex:0 0 auto;white-space:nowrap}.admin-heading{align-items:flex-start}.admin-heading h2{font-size:25px}.admin-badge{font-size:11px;padding:7px 10px}.admin-metric{padding:15px}.admin-metric strong{font-size:29px}.admin-player-facts{grid-template-columns:1fr;gap:2px}.admin-player-facts dd{margin-bottom:10px}#admin .panel,#support .panel{padding:18px}#admin .controls>*{max-width:100%}}

#admin-tabs button{width:auto;grid-column:auto}#admin-section-picker{display:none}#admin-status{text-align:left}#admin .section-top{justify-content:space-between;align-items:center;flex-wrap:nowrap;text-align:left}#admin .section-top>button{margin:0}#admin .section-top h3{margin:0}@media(max-width:650px){#admin-tabs{display:none}#admin-section-picker{display:block;text-align:left;margin:20px 0}#admin-section-picker select{width:100%;min-height:48px}#admin .section-top{gap:14px}#admin .section-top button{font-size:12px;padding:9px 12px}}
#admin #admin-section-picker{display:none}#admin .section-top{flex-direction:row}@media(max-width:650px){#admin #admin-section-picker{display:block}}

/* Account shortcut stays within reach; brand stays centered. */
#account-top{grid-column:3;grid-row:1;justify-self:end;display:inline-flex;align-items:center;gap:7px;min-width:44px;min-height:44px}#account-top svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;touch-action:auto}header>.tag{position:static;grid-column:1/-1;grid-row:2;justify-self:center;font-size:11px;margin-top:-4px}#account .account-settings{text-align:left}#account .account-settings section{border-top:1px solid #57505f;padding:22px 0 6px}#account .account-settings h2{font-size:21px;letter-spacing:-.025em;margin-bottom:12px;color:#dfc1ff}#account .account-settings summary{font-size:15px;color:#dfc1ff;min-height:44px}#profile-status,#password-status{font-size:13px;overflow-wrap:anywhere;color:#e1caf8}#profile-status:empty,#password-status:empty{display:none}#account-verification{margin-top:-8px;font-size:12px}#account .account-settings .help{text-align:left;font-size:12px}#account .account-settings .cloud-actions{gap:9px}#account .account-settings .cloud-actions button{font-size:13px}#account-top:focus-visible{outline:3px solid #efd080;outline-offset:3px}@media(max-width:650px){#account-top{font-size:13px;padding:8px 10px}header>.tag{display:none}}@media(max-width:380px){#account-top .account-top-label{display:none}#account-top{width:44px;padding:8px;justify-content:center}header{column-gap:8px}}

/* Password eyes retain a 44px touch target and never submit the form. */
.password-entry{display:block;position:relative}.account-form .password-entry input{padding-right:56px}.password-entry .password-eye{position:absolute;right:3px;top:3px;width:44px;height:44px;min-height:44px;padding:11px;margin:0;display:grid;place-items:center;background:transparent;color:#d4b6f0;border:0;border-radius:7px}.password-entry .password-eye:hover{background:#b78ce41a}.password-eye svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;touch-action:auto;pointer-events:none}.password-eye .password-eye-slash{display:none}.password-eye[aria-pressed=true] .password-eye-slash{display:block}.password-eye:focus-visible{outline:3px solid #efd080;outline-offset:1px}

/* One focused tool page at a time, with a compact starting point. */
main>.page[hidden]{display:none!important}.tool-page{max-width:1100px;margin:10px auto 35px}.tool-page>h2{color:#dfc1ff}.tool-page>.help{max-width:660px;margin-bottom:24px}#home{max-width:900px;padding:22px 0 32px}#home>h2{font-size:clamp(28px,4vw,42px)}.home-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:28px auto 0}.home-card{display:flex;flex-direction:column;justify-content:center;gap:10px;min-height:150px;padding:24px;border:1px solid #70617f;background:#323137;text-align:left;white-space:normal}.home-card strong{font-size:22px;color:#e5cbff}.home-card span{font-size:14px;line-height:1.5;color:#c4b8d0}.home-card:hover{background:#3d3348;border-color:#c29ae9}#page-navigation{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:0 auto 22px;max-width:1100px;color:#cbb2e3;font-size:14px}#page-navigation button{background:transparent;border-color:#776883;color:#e3ccfb}body.auth-required #page-navigation{display:none!important}.menu-group{display:grid;gap:4px;width:100%;padding:9px 0}.menu-group+ .menu-group{border-top:1px solid #61536d}.menu-group>p{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#bca0d4;margin:0 12px 6px;text-align:left}#menu-panel{max-height:calc(100dvh - 90px);overflow-y:auto;overscroll-behavior:contain}#main-menu .menu-group button{width:100%;text-align:left;border-radius:8px}#main-menu .menu-group button.active{background:#493558;color:#f0dcff}.page-shortcuts{margin-top:18px}.page-shortcuts button{background:#372d42;border-color:#816198;color:#e2c4ff}#position .lab-panel,#playback .lab-playback{border:1px solid #62556f;padding:22px;border-radius:14px;background:#303035}#position>button,#playback>button{margin:8px}#position .table-play-area,#playback .table-play-area{display:block}#position-table-slot,#playback-table-slot{max-width:1000px;margin:20px auto}#lessons .lesson-library{border:1px solid #62556f;border-radius:14px;padding:24px}#position .table-wrap,#playback .table-wrap{margin:0}#position .table-tools,#playback .table-tools{padding-bottom:12px}@media(max-width:650px){#home{padding-top:8px}.home-grid{gap:12px;margin-top:20px}.home-card{min-height:146px;padding:18px 14px}.home-card strong{font-size:18px}.home-card span{font-size:12px}#position .lab-panel,#playback .lab-playback{padding:16px}#page-navigation{margin-bottom:18px}.tool-page>h2{font-size:28px}.page-shortcuts button{flex:1}}

/* Lower the header row and keep it below phone notches/status bars. */
header{--header-top-gap:39px;padding-top:calc(var(--header-top-gap) + env(safe-area-inset-top,0px))}
@media(max-width:650px){header{--header-top-gap:33px}}
#menu-panel{max-height:calc(100dvh - env(safe-area-inset-top,0px) - 145px)}

/* Keep legal-shot search, the table, and both live contact targets together. */
.coach-shot-station{padding:18px;border:1px solid #695676;border-radius:16px;background:#2a282f;text-align:center}.coach-shot-station>.table-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:10px}.coach-shot-station>.table-heading .eyebrow{display:none}.coach-shot-station>.table-heading h2{font-size:24px;margin:0}.coach-shot-station>.table-heading #closeup-status{flex-basis:100%;margin:0}.coach-shot-station>.table-heading #closeup-status:empty{display:none}.coach-shot-station .situation-panel{padding:12px 0 0;margin:0 0 12px;background:transparent;border:0;border-top:1px solid #57475f;border-radius:0}.coach-shot-station .situation-panel>.eyebrow{margin-bottom:8px}.coach-shot-station .situation-panel .check{justify-content:center;min-height:44px;margin:0}.situation-search{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:10px;margin:10px 0;align-items:end}.situation-search label{min-width:0}.situation-search button{width:100%;min-height:46px;padding:10px 12px;white-space:normal;background:#9861d8;color:white}.coach-shot-station #situation-status{font-size:13px;line-height:1.45;margin:8px 0 0}.situation-featured:empty{display:none}.situation-featured .route-choice{width:100%;padding:11px 14px;margin:0 0 8px;font-size:13px;color:#ead7ff;background:#42304e;border-color:#9873b0}#coach-shot-stage{scroll-margin-top:16px}.coach-shot-station #coach-table-slot .table-play-area{margin:0}.table-view-options{margin:0 0 8px;text-align:left}.table-view-options>summary{min-height:36px;padding:7px 0;font-size:12px}.expanded-table .table-view-options{flex:none}.expanded-table .table-view-options>summary{display:none}.coach-shot-station .shot-closeups{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0 0;padding-top:12px;border-top:1px solid #57475f}.coach-shot-station .shot-closeups .ball-closeup{grid-row:auto;padding:10px 8px;background:#34303c;border:1px solid #57475f;border-radius:12px}.coach-shot-station .ball-closeup figcaption{font-size:12px;color:#e4c9ff}.coach-shot-station .ball-closeup svg{width:96px}.coach-shot-station .ball-closeup p:first-of-type{display:none}.coach-shot-station .ball-closeup p{font-size:11px;max-width:260px}.shot-setup,.shot-contact-details{margin:14px 0;padding:0 14px;border:1px solid #5c5068;border-radius:12px;background:#2b292f}.shot-setup>summary,.shot-contact-details>summary,#situation-results>summary{min-height:48px;display:list-item;padding:13px 0;font-size:14px;color:#d6bbea;text-align:left}.shot-setup .controls{margin:12px 0}.shot-setup #situation-rule{font-size:13px}.shot-setup #focus-ball{margin:12px 0}.shot-contact-details .contact-plan{margin-top:0;border:0;padding:8px 0;background:transparent}#situation-results{margin-top:12px;border-top:1px solid #57475f}#situation-results .shot-options{margin-top:0}.coach-shot-station .coach-player{padding-top:14px;margin:14px 0 0;border-bottom:0}.coach-shot-station .coach-player>.eyebrow,.coach-shot-station .coach-player>h3{display:none}.coach-shot-station .coach-player .controls{margin-top:0}.coach-shot-station #play-status:empty{display:none}@media(max-width:650px){.coach-shot-station{padding:12px;margin:0 -6px}.coach-shot-station>.table-heading h2{font-size:21px}.coach-shot-station .ball-closeup svg{width:84px}.coach-shot-station .shot-closeups{gap:8px}.coach-shot-station .ball-closeup figcaption{font-size:11px}.situation-search{gap:8px}.situation-search button{font-size:12px}.coach-shot-station .table-wrap{padding:9px 4px}.coach-shot-station .ball-closeup p{font-size:10px}}
.coach-shot-station>.table-heading #closeup-status:not(.invalid){display:none}

/* Spin learning stays on its own page; current-shot guidance remains compact. */
.spin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-width:660px;margin:20px auto}.spin-grid button{min-height:54px;padding:10px 6px;white-space:normal}.spin-grid [aria-pressed=true]{background:#9861d8;border-color:#dbbdff;color:white}.spin-lesson{display:grid;grid-template-columns:112px minmax(0,1fr);gap:16px;align-items:center;max-width:760px;margin:0 auto 20px}.spin-lesson>button,.spin-lesson>p{grid-column:1/-1}.spin-ball{position:relative;width:104px;height:104px;border-radius:50%;background:radial-gradient(circle at 32% 24%,white 0%,#fffef5 28%,#e5e8df 65%,#8d9e9b 100%);box-shadow:4px 6px 12px #0005}.spin-ball::before,.spin-ball::after{content:'';position:absolute;background:#4c5a5850}.spin-ball::before{width:1px;height:84px;left:52px;top:10px}.spin-ball::after{height:1px;width:84px;top:52px;left:10px}#spin-guide-dot{position:absolute;left:46px;top:46px;width:12px;height:12px;border-radius:50%;background:#a751e7;border:2px solid #50276a;z-index:1}.spin-situation{text-align:left;margin:12px 0 0;border-top:1px solid #695676}.spin-situation summary{padding:13px 0;min-height:44px;color:#e3c8ff;font-size:13px}.spin-situation p{font-size:13px;line-height:1.5}.spin-situation button{font-size:12px}.spin-concepts p,.spin-page article p{line-height:1.6}.spin-sources{display:flex;gap:14px;flex-wrap:wrap;padding:12px 0}.spin-page details{margin:18px 0}.spin-page details summary{min-height:44px;padding:12px 0}@media(max-width:650px){.spin-lesson{grid-template-columns:88px minmax(0,1fr);padding:16px;gap:12px}.spin-ball{transform:scale(.78);transform-origin:left center}.spin-grid button{font-size:12px}.spin-lesson h3{font-size:19px}}

/* Reserve the whole table on first display, including Safari after a hidden-page resize. */
.table-viewport #table{width:100%;height:auto;aspect-ratio:43 / 23}

/* Two clear actions: compare a recommendation or play the player's exact setup. */
.shot-action-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0 8px}.shot-action-row button{min-height:48px;padding:10px 9px;white-space:normal;font-size:13px}.shot-action-row #recommend-situation{background:#9861d8;border-color:#bc8be8;color:white}.shot-action-row #test-current-shot{background:#51405e;border-color:#bb98d3;color:#fff}.shot-action-row:has(#recommend-situation[hidden]){grid-template-columns:1fr}#test-shot-status{font-size:11px;line-height:1.45;margin:8px 0}.situation-search{display:block;margin:10px 0}.situation-search>label{display:flex;align-items:center;gap:10px;font-size:12px}.situation-search select{flex:1;min-width:0}.shot-stroke-settings{margin-top:8px;text-align:left;border-top:1px solid #695676}.shot-stroke-settings>summary{font-size:12px;min-height:42px;padding:11px 0;color:#e5c8ff}.shot-stroke-settings .controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.shot-stroke-settings .controls>label{min-width:0}.shot-stroke-settings .controls>label:last-child{grid-column:1/-1}.shot-stroke-settings select{width:100%;font-size:14px}.table-touch-help{font-size:11px;line-height:1.45;color:#d8c2e9;margin:8px 0}.ball,.pocket,#tip-view{touch-action:none}.ball:focus-visible,.pocket:focus-visible{outline:none;filter:drop-shadow(0 0 4px #ead6ff)}#tip-view{cursor:crosshair;border-radius:50%}#tip-view:focus-visible{outline:2px solid #d9b5ff;outline-offset:3px}.coach-shot-station #spin-at-contact{font-size:10px;color:#ead8ff}#guides{pointer-events:none}

/* Power is always available beside the two shot actions. */
.shot-power{--power-fill:42%;padding:12px;margin:12px 0 10px;border:1px solid #786289;border-radius:12px;background:#332b3c;text-align:left}.power-heading{display:flex;justify-content:space-between;gap:12px;align-items:center}.power-heading label{font-size:13px;color:#ebd7ff;font-weight:700}.power-heading output{font-size:12px;color:#ebd7ff;font-weight:700}.shot-power input[type=range]{-webkit-appearance:none;appearance:none;display:block;width:100%;height:44px;min-height:44px;margin:0;background:transparent;cursor:ew-resize}.shot-power input[type=range]::-webkit-slider-runnable-track{height:8px;border-radius:999px;background:linear-gradient(to right,#bc8aef 0%,#bc8aef var(--power-fill),#201c27 var(--power-fill),#201c27 100%)}.shot-power input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:28px;height:28px;margin-top:-10px;border-radius:50%;border:2px solid #edd5ff;background:#aa70de;box-shadow:0 2px 6px #0005}.shot-power input[type=range]::-moz-range-track{height:8px;border-radius:999px;background:#201c27}.shot-power input[type=range]::-moz-range-progress{height:8px;border-radius:999px;background:#bc8aef}.shot-power input[type=range]::-moz-range-thumb{width:25px;height:25px;border-radius:50%;border:2px solid #edd5ff;background:#aa70de}.power-scale{display:flex;justify-content:space-between;color:#c6afd7;font-size:10px;line-height:1.2;margin-top:-3px}#power-help{font-size:10px;line-height:1.4;margin:8px 0 0;color:#cbb7da}.shot-stroke-settings .controls>label:last-child{grid-column:auto}#test-shot-status[data-outcome]{padding:10px;border:1px solid #9c7ab5;border-radius:9px;background:#3b3045;font-size:12px;line-height:1.5;color:#f1ddff}#test-shot-status[data-outcome=scratch]{border-color:#df8594;background:#4b2c38;color:#ffe1e6}

.home-film-card{grid-column:1/-1;justify-self:center;width:calc((100% - 16px)/2);background:linear-gradient(140deg,#44314e,#302e37);border-color:#9d73bc}.film-tools{display:flex;gap:14px;align-items:end;flex-wrap:wrap;margin:24px 0 18px}.film-tools label:first-child{flex:2;min-width:190px}.film-tools label:nth-child(2){flex:1;min-width:150px}.film-tools input,.film-tools select{width:100%}.film-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.film-card{display:flex;flex-direction:column;align-items:start;overflow-wrap:anywhere}.film-card h3{margin:8px 0}.film-card>p:not(.eyebrow){white-space:pre-wrap}.film-watch{display:inline-block;margin-top:auto;padding:12px 0;font-weight:700;color:#e1c3ff}.film-card .eyebrow{font-size:11px;color:#bca0d4}#admin-film-pane form{max-width:740px}#admin-film-preview-panel{max-width:740px}@media(max-width:650px){.home-film-card{width:calc((100% - 12px)/2)}.film-grid{grid-template-columns:1fr}.film-tools{gap:12px}.film-tools button{width:100%}}

.finder-combined{max-width:940px;margin:0 auto 20px}.finder-combined h3{margin-top:0}.finder-map-buttons{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.finder-map-buttons .map-search-link{flex:1;max-width:300px;text-align:center;font-weight:600}#find .source-note{max-width:940px;margin-inline:auto}@media(max-width:500px){.finder-map-buttons{flex-direction:column;align-items:stretch}.finder-map-buttons .map-search-link{max-width:none}}

.position-shot-feedback{max-width:900px;margin:16px auto 24px;padding:0 12px}.position-shot-feedback #lab-result{margin:8px 0;min-height:0}.position-shot-feedback #next-plan:empty{display:none}.position-shot-feedback #continue-next{margin:8px 0}#position-play,#playback-play{min-height:48px}

#situation-results[open]>summary{font-weight:700;color:#ead7ff}#situation-results .route-choice{text-align:left;align-items:flex-start;font-size:13px;padding:12px;gap:6px}#situation-results .route-choice strong{color:#ecd9ff;font-size:13px}#situation-results .route-choice span{font-size:11px;line-height:1.45}#situation-featured .route-choice[aria-pressed=true],#situation-results .route-choice[aria-pressed=true]{outline:2px solid #dbb7ff;background:#4b375b}#situation-options>.help{grid-column:1/-1}
/* Invite-first opening and compact lesson cards. */
body.access-required header,body.access-required #account,body.access-required #page-navigation,body.access-required #install,body.auth-pending header{display:none!important}
body.access-required main{padding-top:0}.access-page{max-width:480px;margin:clamp(28px,7vh,70px) auto 40px;text-align:center}.access-logo{display:block;width:112px;height:112px;object-fit:contain;margin:0 auto 24px;border-radius:28px;box-shadow:0 12px 36px #0003}.access-page h1{font-size:clamp(27px,5.8vw,35px);line-height:1.2;letter-spacing:-.04em;color:#dfc1ff}.access-intro{margin:16px 0 24px;color:#cbb9dd;font-size:16px}.access-page .account-card{padding:22px}.access-page .account-form label{margin-top:0}.access-page .account-form input{text-transform:uppercase;letter-spacing:.04em;font-family:inherit}.access-page .account-form input::placeholder{text-transform:none;letter-spacing:0}#access-status{font-size:13px;color:#e2c7fb;text-align:center;margin:14px 0 0}#access-status:empty{display:none}#access-help{font-size:12px;line-height:1.6;color:#bbb0c7;text-align:center;margin:16px 0 0}.access-returning{font-size:13px;color:#bdb0cb;margin-top:20px}.access-returning button{background:none;border:0;color:#e2c7fb;text-decoration:underline;text-underline-offset:4px;padding:8px;min-height:44px}
#film-room>.help{margin-bottom:14px;font-size:13px}.film-tools{gap:10px;margin:16px 0 10px}.film-tools label{font-size:12px}.film-tools input,.film-tools select{min-height:44px}.film-grid{gap:10px}.film-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:14px;row-gap:6px;padding:14px 16px;margin:0;border-radius:12px}.film-summary{min-width:0;text-align:left}.film-card .eyebrow{font-size:10px;line-height:1.4;letter-spacing:.06em;margin:0 0 5px}.film-card h3{font-size:16px;line-height:1.35;margin:0;color:#e3c9fb}.film-watch{display:inline-flex;align-items:center;justify-content:center;min-height:44px;margin:0;padding:8px 12px;border:1px solid #806197;border-radius:8px;background:#44334f;color:#eddaff;white-space:nowrap;font-size:12px;text-decoration:none}.film-watch:hover{background:#574065}.film-description{grid-column:1/-1;text-align:left;color:#bfb0cf;font-size:12px}.film-description summary{min-height:36px;display:flex;align-items:center;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.film-description summary::before{content:'+';margin-right:7px}.film-description[open] summary::before{content:'−'}.film-description p{white-space:pre-wrap;margin:5px 0;font-size:13px;line-height:1.6;color:#d6c8e1}.film-tools button{min-height:44px}.admin-code-row{border:1px solid #5e506b;border-radius:12px;padding:16px;margin:10px 0;background:#303035;text-align:left;overflow-wrap:anywhere}.admin-code-row h4{margin:0 0 5px;color:#dfc1ff}.admin-code-row p{margin:5px 0;font-size:13px}#admin-code-result input{font-size:14px;letter-spacing:.015em}#admin-code-status{font-size:13px;color:#e2c7fb}
@media(max-width:650px){.film-card{padding:12px 14px;gap:6px 10px}.film-card h3{font-size:15px}.film-tools{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.film-tools label:first-child{grid-column:1/-1;min-width:0}.film-tools label:nth-child(2){min-width:0}.film-tools button{width:auto;font-size:12px}.access-page{margin-top:max(30px,env(safe-area-inset-top));padding-top:12px}.access-logo{width:96px;height:96px;margin-bottom:20px}.access-page .account-card{padding:20px}}
.film-tools input[type=search]{background:#222527;border:1px solid #655c6e;border-radius:8px;color:#eee5f7;padding:9px 12px;text-align:left}
