@charset "UTF-8";
:root{--paper:#f5f4ee;--card:#fffefa;--ink:#203c34;--muted:#78857c;--line:#dce2d9;--green:#1f5746;--lime:#cde587;font-family:"Segoe UI","Malgun Gothic",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,select,.file-button{cursor:pointer}button{border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);padding:11px 15px;font-size:13px;font-weight:600;transition:background .16s,transform .16s}button:hover:not(:disabled){background:#e9eedf}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.38;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible,.file-button:focus-within{outline:3px solid #91b955;outline-offset:3px}[hidden]{display:none!important}.masthead{height:90px;background:#153f36;display:flex;align-items:center;justify-content:space-between;padding:0 max(32px,calc((100vw - 1440px)/2));color:#fff}.brand{text-decoration:none;color:inherit;display:flex;gap:17px;align-items:center;font-size:23px;font-weight:750;letter-spacing:-.8px}.brand small{display:block;font-size:8px;letter-spacing:2.2px;margin-top:5px;color:#b6cbbd}.brand-mark{position:relative;display:inline-block;width:38px;height:43px;font-size:22px;font-style:normal;color:#f7f3d9}.brand-mark i,.brand-mark b{position:absolute;font-style:normal;font-weight:400;top:15px;left:0;color:#e3be5c}.brand-mark b{left:18px;color:#de7968}.header-actions{display:flex;align-items:center;gap:20px}.local-badge{font-size:12px;color:#d0e0cf}.local-badge i,.live-dot{display:inline-block;width:6px;height:6px;background:var(--lime);border-radius:50%;margin-right:8px}.on-dark{color:#e5f2d4;background:transparent;border-color:#56796d}.app-shell{max-width:1504px;margin:auto;padding:42px 32px 20px}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.eyebrow{font-size:9px;font-weight:750;letter-spacing:2px;color:#788975;margin:0 0 12px}h1{font-size:34px;letter-spacing:-1.6px;font-weight:650;margin:0 0 10px}.intro p:not(.eyebrow){font-size:13px;color:#748074;margin:0}.edition{text-align:right;font-size:10px;letter-spacing:2px;line-height:2.1;color:#8d9788}.edition b{font-size:12px;font-weight:400;letter-spacing:0}.studio{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:24px;align-items:start}.table-panel,.settings-panel{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}.table-panel{padding:20px 22px}.table-toolbar{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:22px}.segmented{display:flex;padding:4px;gap:2px;background:#eef0e9;border-radius:9px}.segmented button{border:0;background:transparent;padding:9px 17px;font-size:12px;color:#778272}.segmented button.active{background:#fffef9;color:var(--ink);box-shadow:0 1px 5px #163b2915}.undo-tools{display:flex;gap:6px}.undo-tools button{font-size:23px;line-height:1;padding:6px 12px}.table-heading{display:flex;justify-content:space-between;color:#869b8e;background:#193d33;padding:19px 25px 0;border-radius:12px 12px 0 0;font-size:10px;letter-spacing:1.3px}.table-heading>span:last-child{letter-spacing:0;color:#c8d6c8;font-size:10px}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;vertical-align:middle;margin:0 2px}.white{background:#f9f7e9}.yellow{background:#eec757}.red{background:#e37565}.canvas-wrap{background:#193d33;padding:0 8px 8px;border-radius:0 0 12px 12px;line-height:0}canvas{display:block;width:100%;height:auto;touch-action:none}.table-options{display:flex;align-items:center;gap:19px;padding:13px 1px;color:#657968;font-size:11px}.table-options label{display:flex;gap:5px;align-items:center}input[type=checkbox]{accent-color:var(--green);width:14px;height:14px}.table-options .text-button{margin-left:auto}.text-button{border:0;background:transparent;padding:5px 0;font-size:11px;font-weight:500;color:#71806b}.status-row{display:flex;justify-content:space-between;gap:12px;padding:11px 0 16px;font-size:11px;color:#7e8a7a;border-bottom:1px solid var(--line);min-height:43px}.status-row strong{color:var(--green);font-weight:500;text-align:right}.metrics{display:grid;grid-template-columns:1fr 1.5fr 1fr;padding:23px 0;gap:10px}.metrics>div{border-right:1px solid var(--line);padding-left:15px}.metrics>div:first-child{padding-left:0}.metrics>div:last-child{border:0}.metrics span{display:block;font-size:10px;color:#84907e;margin-bottom:10px}.metrics strong{display:block;font-size:18px;font-weight:600;letter-spacing:-.5px}.metrics [data-ok="1"]{color:#3e7c39}.shot-bar{display:grid;grid-template-columns:1.4fr 1fr 1fr .6fr;gap:8px}.shot-bar button{padding:13px 8px;font-size:12px}.primary{background:var(--green);border-color:var(--green);color:white}.primary:hover:not(:disabled){background:#2b7058}.primary span{margin-left:25px;color:var(--lime)}.quiet{background:transparent}.playback-row{display:flex;align-items:center;gap:15px;padding-top:13px;font-size:10px;color:#8b9585;flex-wrap:wrap}.playback-row>span{margin-left:auto;font-size:10px}.playback-row select{border:0;border-radius:5px;background:#edf0e5;color:#496249;font-size:10px;padding:4px}.settings-panel{padding:24px}.panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.panel-title .eyebrow{font-size:8px;letter-spacing:1.5px}h2{font-size:20px;margin:0;font-weight:650;letter-spacing:-.8px}.step-number{color:#d8dfcf;font-size:32px;font-weight:300}fieldset{padding:0;border:0;margin:0;min-width:0}.control-block{padding-bottom:22px}.control-block label{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:600;margin-bottom:12px}.control-block output{font-variant-numeric:tabular-nums;background:#edf0e5;border-radius:5px;padding:3px 7px;font-size:11px;font-weight:600;color:#527047}input[type=range]{display:block;width:100%;height:5px;accent-color:var(--green);margin:16px 0;cursor:pointer;touch-action:pan-y}.range-labels{display:flex;justify-content:space-between;font-size:9px;color:#9aa28f;margin-top:9px}.control-note{font-size:10px;line-height:1.6;color:#8b9682;margin:10px 0 0}.spin-heading{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:18px}h3{font-size:12px;font-weight:600;margin:0}.tip-area{display:flex;align-items:center;gap:17px;padding:20px 0 23px}.tip-ball{flex:0 0 102px;width:102px;height:102px;border-radius:50%;position:relative;background:radial-gradient(circle at 33% 25%,#fff 0,#f7f6ee 45%,#d4d8ca 100%);border:1px solid #d4dacb;box-shadow:0 6px 12px #1d402214;touch-action:none;padding:0}.tip-ball:hover:not(:disabled){background:radial-gradient(circle at 33% 25%,#fff 0,#f7f6ee 45%,#d4d8ca 100%)}.cross{position:absolute;background:#b7c2ac70;pointer-events:none}.cross.horizontal{left:10px;right:10px;height:1px;top:50%}.cross.vertical{top:10px;bottom:10px;width:1px;left:50%}.tip-ring{position:absolute;inset:16px;border-radius:50%;border:1px dashed #b7c2ac}#tipDot{position:absolute;left:calc(50% - 6px);top:calc(50% - 6px);width:12px;height:12px;background:#285b45;border:2px solid white;box-shadow:0 0 0 1px #285b45;border-radius:50%;z-index:1;pointer-events:none}.tip-center{position:absolute;width:3px;height:3px;background:#8e9f83;border-radius:50%;top:calc(50% - 1px);left:calc(50% - 1px)}.tip-legend{display:flex;flex-direction:column;gap:11px;font-size:9px;color:#9aa58e}.tip-legend b{font-weight:400;font-size:10px;color:#708161;white-space:nowrap}.power-block{border-top:1px solid var(--line);padding-top:20px;padding-bottom:10px}.side-picker{display:flex;gap:9px}.side-picker label{font-size:10px;font-weight:400;margin:0;display:flex;gap:3px}.side-picker input{accent-color:var(--green)}.coach-note{background:#f0f2e8;border-radius:8px;padding:14px 15px;margin-top:16px}.coach-note>span{font-size:10px;font-weight:650;color:#658156}.coach-note p{font-size:11px;color:#859079;line-height:1.8;margin:8px 0 0}.notebook{margin-top:36px}.notebook-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.notebook-head .eyebrow{font-size:8px;margin-bottom:7px}.notebook-head h2{font-size:22px}.backup-tools{display:flex;gap:22px;align-items:center}.file-button{font-size:11px;color:#71806b;padding:8px 0;border-radius:4px}.notebook-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.notebook-grid>div{border-top:1px solid #cdd7c8;padding-top:18px}.list-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.list-heading span{font-size:10px;color:#899581}.shot-list{display:grid;gap:8px;max-height:300px;overflow:auto;padding:2px}.empty{font-size:12px;color:#9ba590;text-align:center;padding:26px 8px;border:1px dashed #d4ddca;border-radius:8px;margin:0;line-height:1.7}.shot-card{display:flex;align-items:center;gap:10px;padding:12px;background:#fffef9;border:1px solid var(--line);border-radius:8px}.mini-balls{display:flex;gap:3px}.mini-balls i{width:7px;height:7px;border-radius:50%;background:#e2ddca}.mini-balls i:nth-child(2){background:#e3bf62}.mini-balls i:nth-child(3){background:#d6806b}.shot-info{flex:1;min-width:0}.shot-info b{font-size:12px;font-weight:600;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shot-info small{font-size:10px;color:#87947b;display:block;margin-top:4px}.shot-card button{padding:7px 10px;font-size:10px}.shot-card .delete-shot{border:0;color:#9b9f92;background:transparent;font-size:15px;padding:5px}.save-form{display:flex;gap:7px;margin-bottom:10px}.save-form input{min-width:0;flex:1;border:1px solid var(--line);border-radius:7px;background:#fffef9;color:var(--ink);padding:10px 12px;font-size:11px}.save-form button{font-size:10px;padding:9px 11px}footer{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;border-top:1px solid var(--line);margin-top:40px;padding-top:20px;color:#939d88;font-size:10px;line-height:1.6}footer b{font-weight:500;color:#677d61}.notice{padding:12px 16px;background:#e8eedb;border:1px solid #cbd8b6;color:#426039;border-radius:8px;margin-bottom:16px;font-size:12px}.notice.error{background:#f7e9dd;color:#945334;border-color:#e8cbb4}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1400px){.table-panel{padding:24px 28px}.settings-panel{padding:28px}.studio{grid-template-columns:minmax(0,1fr) 320px}}
@media(max-width:1050px){.studio{grid-template-columns:minmax(0,1fr) 260px;gap:16px}.settings-panel{padding:18px}.app-shell{padding:30px 20px 20px}.table-panel{padding:16px}.playback-row>span{display:none}.tip-area{gap:10px}.tip-ball{width:88px;height:88px;flex-basis:88px}.table-heading{padding:16px 15px 0;letter-spacing:.6px}.segmented button{padding:9px 11px}.metrics strong{font-size:16px}}
@media(max-width:800px){.masthead{height:76px;padding:0 20px}.studio{grid-template-columns:1fr}.settings-panel{padding:20px}.settings-panel fieldset{display:grid;grid-template-columns:1fr 1fr;column-gap:24px}.panel-title{margin-bottom:12px}.settings-panel .spin-heading,.tip-area,.power-block{grid-column:1/-1}.spin-heading{grid-row:2}.tip-area{grid-row:3;justify-content:center}.coach-note{display:none}.settings-panel .control-block{padding-bottom:12px}.power-block{padding-top:15px}.notebook-grid{gap:20px}.intro h1{font-size:29px}.edition{display:none}.notebook-head{align-items:end}.backup-tools{gap:14px}}
@media(max-width:520px){.app-shell{padding:27px 12px 20px}.brand{font-size:20px;gap:12px}.brand small{font-size:7px}.masthead{padding:0 17px}.local-badge{font-size:10px}.header-actions{gap:8px}.on-dark{padding:7px;font-size:10px}.intro{padding:0 5px;margin-bottom:23px}.intro h1{font-size:27px}.intro p:not(.eyebrow){font-size:11px;line-height:1.7;max-width:300px}.eyebrow{font-size:8px}.table-panel{padding:12px;border-radius:12px}.table-toolbar{margin-bottom:15px}.segmented button{font-size:11px;padding:8px 11px}.undo-tools button{font-size:21px;padding:5px 9px}.table-heading{font-size:8px;padding:14px 11px 3px;letter-spacing:.5px}.table-heading>span:last-child{font-size:8px}.canvas-wrap{padding:0 1px 6px}.table-options{gap:10px;font-size:10px;padding:9px 0}.table-options .text-button{font-size:10px}.status-row{font-size:10px;padding:10px 0 13px;gap:8px}.status-row>span{max-width:52%;line-height:1.6}.status-row strong{max-width:48%;line-height:1.6}.metrics{padding:19px 0;grid-template-columns:.9fr 1.25fr 1fr}.metrics>div{padding-left:10px}.metrics strong{font-size:15px}.metrics span{font-size:9px}.shot-bar{grid-template-columns:1.2fr 1fr 1fr .55fr;gap:5px}.shot-bar button{font-size:10px;padding:12px 3px}.primary span{margin-left:8px}.playback-row{padding:9px 0 0}.settings-panel{padding:20px}.notebook{margin-top:28px}.notebook-head{padding:0 4px}.notebook-head h2{font-size:20px}.backup-tools{gap:10px}.backup-tools .text-button,.file-button{font-size:9px}.notebook-grid{grid-template-columns:1fr;gap:25px;padding:0 4px}.save-form input{font-size:12px}footer{margin-top:28px;padding:15px 4px 0;gap:6px;font-size:9px}footer>span{width:100%}.settings-panel fieldset{column-gap:18px}.notice{font-size:11px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.table-options{flex-wrap:wrap}.table-options #exampleShot{margin-left:auto}.table-options #resetLayout{margin-left:0}
@media(max-width:800px){.settings-panel #aimControls,.settings-panel #thicknessControls{grid-column:1/-1}}
.example-picker{background:#f0f2e8;border-radius:8px;padding:13px 15px;margin:3px 0 8px}.example-picker label{display:block;font-size:11px;font-weight:600;margin-bottom:8px}.example-picker select{width:100%;min-width:0;border:1px solid #ccd8c2;border-radius:6px;padding:9px;color:#254b39;background:#fffefa;font:inherit;font-size:12px}.example-picker p{margin:8px 0 0;color:#627756;font-size:11px;line-height:1.7}
/* Phone and short landscape layouts: prioritize the table and thumb controls. */
.mobile-only{display:none}.example-picker summary{display:none}
@media(max-width:800px), (max-width:1000px) and (max-height:500px) and (orientation:landscape){
  .mobile-only{display:block}.masthead{height:62px;padding:0 max(14px,env(safe-area-inset-left))}.brand{font-size:18px}.brand small{font-size:7px}.brand-mark{height:38px}.local-badge{display:none}.on-dark{min-height:44px;font-size:12px}
  .app-shell{padding:14px max(10px,env(safe-area-inset-right)) calc(100px + env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}.intro{margin-bottom:14px}.intro .eyebrow,.intro .edition,.intro p:not(.eyebrow){display:none}.intro h1{font-size:22px;margin:0}.studio{grid-template-columns:1fr;gap:14px}.table-panel{padding:10px}.table-toolbar{gap:5px;margin-bottom:8px}.segmented{padding:2px;flex:1}.segmented button{flex:1;min-height:44px;padding:6px;font-size:12px}.undo-tools{gap:2px}.undo-tools button{min-width:40px;min-height:44px;padding:6px}.quick-settings{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:44px;background:#edf1e4;border:0;margin-bottom:10px;font-size:13px}.quick-settings span{font-size:11px;color:#697d60}
  .table-heading{padding:12px 10px 4px}.table-heading>span:last-child{font-size:10px}.canvas-wrap{padding:0 0 6px}.table-options{display:grid;grid-template-columns:1fr 1fr;gap:0 8px;padding:4px 0}.table-options label,.table-options .text-button{min-height:44px;font-size:12px;margin:0!important;display:flex;align-items:center;justify-content:flex-start}.table-options input{width:20px;height:20px}.example-picker{padding:0 12px}.example-picker summary{display:flex;align-items:center;justify-content:space-between;cursor:pointer;min-height:48px;font-size:13px;font-weight:600}.example-picker summary span{font-size:11px;font-weight:400}.example-picker summary::after{content:'＋';margin-left:8px}.example-picker[open] summary::after{content:'−'}.example-picker[open]{padding-bottom:12px}.example-picker select{font-size:16px;min-height:44px}.example-picker p{font-size:12px}
  .status-row{font-size:12px;gap:8px;padding:10px 0}.status-row>span,.status-row strong{max-width:50%}.metrics{padding:15px 0}.metrics span{font-size:11px}.metrics strong{font-size:15px}.shot-bar{position:fixed;bottom:0;left:0;right:0;z-index:30;background:#fffef9;box-shadow:0 -3px 20px #16392d20;border-top:1px solid #d4ddcc;padding:10px max(8px,env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));grid-template-columns:1.2fr 1fr 1fr .7fr;gap:5px}.shot-bar button{min-height:48px;padding:10px 3px;font-size:12px}.shot-bar .primary span{display:none}.playback-row{font-size:12px;padding-top:0}.playback-row button,.playback-row select{min-height:44px;font-size:13px}.playback-row>span{display:none}
  .settings-panel{padding:16px;scroll-margin-top:12px}.settings-panel .step-number,.settings-panel .eyebrow,.coach-note{display:none}.settings-panel .panel-title{margin:0;min-height:44px;gap:10px}.settings-panel h2{font-size:18px}.settings-panel #settingsToggle{min-height:44px;font-size:13px}.settings-panel:not(.expanded) #shotControls{display:none}.settings-panel.expanded #shotControls{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;margin-top:18px}.settings-panel #aimControls,.settings-panel #thicknessControls,.settings-panel .spin-heading,.settings-panel .tip-area,.settings-panel .power-block{grid-column:1/-1}.settings-panel .spin-heading{grid-row:auto}.settings-panel .tip-area{grid-row:auto;justify-content:center}.control-block label{font-size:14px}.control-block output{font-size:13px}.control-note,.range-labels{font-size:12px}.control-block input[type=range]{height:36px;margin:4px 0;accent-color:#1f5746}.side-picker{gap:16px;flex-wrap:wrap}.side-picker label{min-height:44px;font-size:13px}.side-picker input{width:20px;height:20px}.tip-ball{flex-basis:112px;width:112px;height:112px}.tip-legend,.tip-legend b{font-size:12px}.spin-heading h3,.spin-heading button{font-size:13px}.spin-heading button{min-height:44px}.notebook-head{align-items:start;gap:10px;flex-wrap:wrap}.notebook-grid{grid-template-columns:1fr}.backup-tools{gap:14px;flex-wrap:wrap}.backup-tools .text-button,.file-button{min-height:44px;font-size:12px;display:flex;align-items:center}.save-form{flex-wrap:wrap}.save-form input{font-size:16px;min-height:44px;flex-basis:140px}.save-form button{min-height:44px;font-size:12px}.shot-card{flex-wrap:wrap}.shot-card button{min-height:44px;font-size:12px}.shot-card .delete-shot{min-width:40px}.shot-info b{font-size:14px}.shot-info small,.empty{font-size:12px}.notice{font-size:13px}footer{font-size:11px}
}
@media(max-width:360px){.segmented button{font-size:11px}.undo-tools button{min-width:34px}.shot-bar button{font-size:11px}.table-heading>span:first-child{font-size:7px}.table-heading>span:last-child{font-size:9px}.settings-panel.expanded #shotControls{gap:0 10px}}
@media(max-width:1000px) and (max-height:500px) and (orientation:landscape){.masthead,.intro{display:none}.app-shell{padding-top:8px}.table-panel{display:grid;grid-template-columns:minmax(0,1fr) 230px;column-gap:14px}.table-toolbar,.quick-settings,.table-heading,.canvas-wrap{grid-column:1}.table-toolbar{grid-row:1}.quick-settings{grid-row:2}.table-heading{grid-row:3}.canvas-wrap{grid-row:4}.table-options,.example-picker,.status-row,.metrics,.playback-row{grid-column:2}.table-options{grid-row:1/3}.example-picker{grid-row:3}.status-row{grid-row:4;align-self:start}.metrics{grid-row:5;grid-column:1/-1}.playback-row{grid-row:6;grid-column:1/-1}.table-heading>span:last-child{font-size:9px}}
@media(max-width:1000px) and (max-height:500px) and (orientation:landscape){
 .table-panel{display:block}.table-toolbar{float:left;width:60%;margin-bottom:6px}.quick-settings{float:right;width:38%;margin-bottom:6px}.table-heading{clear:both;padding-top:6px;min-height:24px}.canvas-wrap{max-width:calc((100dvh - 180px)*1.83333);width:100%;margin:0 auto}.table-options{grid-template-columns:repeat(4,1fr)}.example-picker,.status-row,.metrics,.playback-row{clear:both}
}

/* Fractional aiming and the shared-physics WebGL view. */
[hidden]{display:none!important}.view-tools{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 0}.view-tools>span{font-size:11px;color:#647b6b}.camera-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:10px 0}.camera-controls label{font-size:11px;min-width:0}.camera-controls input,.camera-controls select{display:block;width:100%;min-width:0;accent-color:#24573e}.camera-controls select{padding:6px;font:inherit}#table3dCanvas{display:block;width:100%;height:auto;aspect-ratio:11/6;touch-action:none;border-radius:10px}.fraction-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin:10px 0}.fraction-buttons button{font-size:12px;min-height:38px;padding:6px 2px}.fraction-buttons button[aria-pressed=true]{background:#24573e;color:white;border-color:#24573e}.aim-explainer{padding:8px;background:#eef0e4;border-radius:8px}.aim-explainer svg{width:100%;max-height:105px;display:block}.aim-explainer p{font-size:11px;line-height:1.6;margin:0;color:#536e60}#exampleSource{display:inline-block;font-size:12px;margin-top:8px;color:#24644c}
@media(max-width:800px){.view-tools>span{font-size:10px}.view-tools button,.fraction-buttons button{min-height:44px}.camera-controls{grid-template-columns:1fr 1fr;gap:8px}.camera-controls input{height:30px}.camera-controls select{font-size:16px;min-height:38px}.aim-explainer p{font-size:12px}.table-options{display:flex;flex-wrap:wrap}.camera-controls label{font-size:12px}}

.view-tools{flex-wrap:wrap}.rotation-tools{display:flex;gap:6px;flex-wrap:wrap}.rotation-tools button{padding:8px 10px;font-size:12px;min-height:40px}.rotation-tools button[aria-pressed=true]{background:#24573e;color:white}.view-tools>span{flex-basis:100%;padding:2px 4px}.canvas-wrap.portrait{width:100%;max-width:420px;margin-inline:auto}.orbit-enabled{cursor:grab}.orbit-enabled:active{cursor:grabbing}@media(max-width:800px){.rotation-tools button{min-height:44px}}

/* Keep view tools together above the cloth instead of splitting the table frame. */
.view-deck{background:#f0f2eb;border:1px solid #dce3d8;border-radius:11px;padding:10px 12px;margin:0 0 12px}.view-deck .view-tools{margin:0;gap:8px 14px}.view-deck .segmented{background:#dfe7dc;padding:3px}.view-deck .rotation-tools{margin-left:auto}.view-deck .rotation-tools button{background:transparent;border-color:#cbd8c7;font-weight:500}.view-deck .rotation-tools button[aria-pressed=true]{background:#24573e;color:white}.view-deck #viewStatus{font-size:11px;color:#61745e;padding:0 2px}.camera-settings{border-top:1px solid #d4dfd0;margin-top:9px;padding-top:3px}.camera-settings summary{font-size:12px;cursor:pointer;padding:9px 2px;font-weight:600}.camera-settings summary span{float:right;font-weight:400;font-size:10px;color:#7d8b75}.camera-controls{padding:6px 2px 2px;gap:16px;align-items:end}.camera-controls label{font-size:11px;display:grid;gap:7px;color:#586f56}.camera-controls input[type=range]{appearance:none;height:5px;border-radius:10px;background:#ccdac6;margin:13px 0;cursor:pointer}.camera-controls input[type=range]::-webkit-slider-thumb{appearance:none;width:16px;height:16px;border-radius:50%;background:#245b43;border:3px solid #f5f7ed;box-shadow:0 0 0 1px #245b43}.camera-controls select{border:1px solid #c9d7c3;border-radius:7px;background:#fffef9;color:#294e3a;padding:8px}.table-heading{padding:13px 18px 8px}.canvas-wrap.portrait{border-radius:0 0 10px 10px}.learning-panel{margin:12px 0 6px;border:1px solid #ccd9c1;border-radius:10px;padding:16px;background:#f4f6eb}.learning-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.learning-head>div{flex:1;min-width:170px}.learning-head .eyebrow{font-size:8px;margin:0 0 5px}.learning-head h3{font-size:16px;margin:0;font-weight:650}.find-shot{background:#245b43;color:#fff;font-size:12px;border-color:#245b43}.find-shot:hover:not(:disabled){background:#317655}.learning-status{font-size:12px;color:#66795d;line-height:1.7;margin:10px 0}.learning-panel details summary{font-size:12px;cursor:pointer;padding:8px 0}.learning-panel details[open] summary{border-bottom:1px solid #d7e0cc}.model-note{font-size:11px;line-height:1.7;color:#74816b;margin:10px 0 0}.lesson-settings{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.lesson-settings span{border-radius:5px;background:#e5ecd8;font-size:11px;padding:6px 8px;color:#315139}.lesson-route{font-size:13px;line-height:1.8;color:#254c39;margin:8px 0}.lesson-steps{font-size:12px;line-height:1.9;margin:8px 0;padding-left:21px;color:#4e6548}.solver-results{display:grid;gap:7px}.solution-card{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #d9e2ce;border-radius:7px;background:#fffef8}.solution-card>div{flex:1}.solution-card strong,.solution-card small{display:block}.solution-card strong{font-size:12px}.solution-card small{font-size:11px;color:#7a876d;margin-top:5px;line-height:1.6}.solution-card button{font-size:12px;padding:9px 12px;white-space:nowrap}
@media(max-width:800px){.view-deck{padding:8px;margin-bottom:8px}.view-deck .view-tools{gap:7px}.view-deck .rotation-tools{margin-left:0;gap:5px}.view-deck .rotation-tools button{font-size:11px;padding:7px 8px}.view-deck #viewStatus{font-size:11px}.camera-settings summary{min-height:40px}.camera-controls{gap:10px 15px}.camera-controls label{font-size:12px}.camera-controls select{font-size:14px}.learning-panel{padding:12px}.learning-head h3{font-size:15px}.learning-head>div{min-width:150px}.learning-head button{min-height:44px;padding:9px 10px}.learning-panel details summary{min-height:44px;padding:12px 0}.solution-card{flex-wrap:wrap}.solution-card button{min-height:44px}}

.table-heading.portrait{width:100%;max-width:420px;margin-inline:auto}

.table-options{flex-wrap:wrap;gap:10px 16px}.spot-note{font-size:11px;line-height:1.7;color:#718167;margin:0 0 12px}@media(max-width:800px){.spot-note{font-size:12px}}

.table-spec{font-size:12px;color:#66785e;margin:0 0 10px}.table-spec summary{cursor:pointer;padding:8px 0}.table-spec p{line-height:1.8;margin:6px 0}#tableSizeLabel{letter-spacing:0;white-space:nowrap}@media(max-width:800px){.table-spec summary{min-height:44px}.table-heading>span:first-child{letter-spacing:0;font-size:10px}}

/* Desktop: keep the table in sight and group practice controls in the right column. */
.studio{grid-template-columns:minmax(0,1fr) 350px;gap:20px}.practice-sidebar{display:grid;grid-auto-rows:max-content;gap:14px;min-width:0}.session-panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;min-width:0}.session-panel h2{font-size:18px;margin:0 0 8px}.session-panel .status-row{font-size:11px;padding:7px 0}.session-panel .status-row #modeHelp{display:none}.session-panel .status-row strong{max-width:100%;text-align:left}.session-panel .metrics{padding:12px 0;grid-template-columns:.8fr 1.5fr .8fr;gap:5px}.session-panel .metrics>div{padding-left:7px}.session-panel .metrics>div:first-child{padding-left:0}.session-panel .metrics span{font-size:10px;white-space:nowrap}.session-panel .metrics strong{font-size:13px}.session-panel .shot-bar{grid-template-columns:1fr 1fr;gap:7px}.session-panel .shot-bar button{min-height:44px}.session-panel .shot-bar .primary span{display:none}.session-panel .playback-row{justify-content:space-between;font-size:11px;gap:6px;padding:8px 0 12px}.session-panel .playback-row>span{display:none}.session-panel .example-picker{margin-top:4px;padding:12px}.layout-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:8px}.layout-actions .text-button{margin:0;padding:8px 2px;min-height:40px;border:1px solid #d4ddcc;border-radius:6px;font-size:11px;text-align:center;background:#f5f6ee}.display-options{justify-content:flex-start;gap:12px 18px}.practice-sidebar .learning-panel{margin:0}.practice-sidebar .settings-panel{padding:18px}.target-picker{margin-bottom:16px}.target-picker>span{display:block;font-size:12px;font-weight:600;margin-bottom:8px}.target-picker>div{display:flex;gap:8px}.target-picker label{display:flex;align-items:center;gap:4px;font-size:12px;cursor:pointer;min-height:42px;border:1px solid #d2ddca;border-radius:7px;padding:7px 10px;flex:1;white-space:nowrap}.target-picker label:has(input:checked){background:#e8eedf;border-color:#719167}.target-picker input{accent-color:#245b43}.search-target-label{display:block;font-size:11px;margin-top:12px;color:#526c48}.search-target-label select{display:block;width:100%;padding:9px;border:1px solid #ccd8bf;border-radius:6px;background:#fffef8;margin-top:6px;font-size:12px}.practice-sidebar .solution-card{flex-wrap:wrap}.practice-sidebar .solution-card button{margin-left:auto}
@media(min-width:1001px){.table-panel{position:sticky;top:12px;align-self:start}.practice-sidebar .example-picker summary{display:none}}
@media(max-width:800px), (max-width:1000px) and (max-height:500px) and (orientation:landscape){.studio{grid-template-columns:1fr}.table-panel{position:static}.practice-sidebar{gap:14px}.session-panel{padding:12px}.session-panel .shot-bar{grid-template-columns:1.2fr 1fr 1fr .7fr}.session-panel .metrics{padding:12px 0}.session-panel .metrics strong{font-size:14px}.session-panel .playback-row{justify-content:flex-start;gap:16px}.session-panel .example-picker{margin:0;padding:0 12px}.layout-actions .text-button{min-height:44px;font-size:12px}.settings-panel .target-picker{grid-column:1/-1}.target-picker label{font-size:14px;min-height:44px}.search-target-label select{font-size:16px}.session-panel .status-row strong{max-width:100%}}

.view-tools>.segmented,.view-tools>.rotation-tools{flex-shrink:0}

@media(min-width:801px) and (min-height:501px){.practice-sidebar{height:var(--table-panel-height,700px);max-height:var(--table-panel-height,700px);min-height:0;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable;align-content:start;padding-right:5px;position:sticky;top:16px}.table-panel{position:sticky;top:16px;align-self:start}}
#notebookDialog{width:min(960px,calc(100vw - 32px));max-height:calc(100dvh - 40px);box-sizing:border-box;overflow:auto;overscroll-behavior:contain;border:1px solid var(--line);border-radius:16px;padding:24px;background:var(--card);color:var(--ink);box-shadow:0 24px 80px #102e3450}#notebookDialog::backdrop{background:#102e3480}body:has(#notebookDialog[open]){overflow:hidden}#notebookDialog .notebook{margin:0}#notebookDialog .notebook-head{padding-right:75px;align-items:start}#notebookDialog .backup-tools{flex-wrap:wrap;gap:8px 16px}.notebook-close{position:absolute;right:16px;top:16px;min-height:40px}footer a{color:inherit;text-underline-offset:3px}
@media(max-width:800px){#notebookDialog{padding:18px 14px;max-height:calc(100dvh - 24px)}#notebookDialog .notebook-head{padding-right:65px}.header-actions .local-badge{display:none}#openNotebook{white-space:nowrap;min-height:40px}}
@media(min-width:801px) and (min-height:501px){
 html,body{height:100%;overflow:hidden}body{display:flex;flex-direction:column}.masthead{height:60px;flex-shrink:0}.app-shell{width:100%;max-width:1440px;margin-inline:auto;flex:1;min-height:0;display:flex;flex-direction:column;padding:12px 20px 8px;box-sizing:border-box}.intro{flex-shrink:0;margin:0 0 10px;padding:0}.intro h1{font-size:22px;margin:0}.intro .eyebrow,.intro p:not(.eyebrow),.intro .edition{display:none}.notice{flex-shrink:0;margin-bottom:8px;padding:7px 12px}.studio{flex:1;min-height:0;align-items:stretch}.table-panel{position:relative;top:auto;align-self:stretch;min-height:0;display:flex;flex-direction:column;padding:12px 16px;overflow:hidden}.table-panel>*{flex-shrink:0}.table-toolbar{margin-bottom:8px}.view-deck{padding:6px 10px;margin-bottom:8px}.table-heading{padding:8px 14px}.canvas-wrap,.canvas-wrap.portrait{flex:1;min-height:0;max-width:none;width:auto;aspect-ratio:auto;display:flex;align-items:center;justify-content:center;padding:0 6px 6px;margin:0}.canvas-wrap canvas{flex:none;max-width:100%;max-height:100%;width:auto;height:auto}.table-options{padding:8px 0}.spot-note{margin:4px 0;font-size:10px}.table-spec{margin:0}.table-spec[open]{position:absolute;left:16px;bottom:35px;z-index:5;max-width:calc(100% - 32px);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 12px}.practice-sidebar{position:static;top:auto;align-self:stretch;height:auto;max-height:100%;min-height:0;overflow-y:auto}.app-shell>footer{flex-shrink:0;margin-top:8px;padding-top:7px;font-size:10px;gap:4px 12px}
}

@media(max-width:800px), (max-width:1000px) and (max-height:500px) and (orientation:landscape){
 .intro,.quick-settings,.spot-note,.table-spec,.table-heading>span:last-child{display:none}.studio{gap:8px}.mobile-practice-tabs{display:flex;gap:6px}.mobile-practice-tabs button{flex:1;min-height:44px;font-size:14px;background:var(--card)}.mobile-practice-tabs button[aria-expanded=true]{background:var(--green);color:white}.practice-sidebar{gap:8px}.practice-sidebar>.session-panel:not(.execution-panel),.practice-sidebar>.settings-panel,.practice-sidebar>.learning-panel{display:none}.practice-sidebar[data-mobile-panel=layout]>.session-panel:not(.execution-panel),.practice-sidebar[data-mobile-panel=settings]>.settings-panel,.practice-sidebar[data-mobile-panel=learn]>.learning-panel{display:block}.practice-sidebar .execution-panel{padding:8px 12px;order:-1}.execution-panel h2,.execution-panel .status-row,.execution-panel .playback-row{display:none}.execution-panel .metrics{padding:4px 0}.table-options{display:flex;flex-wrap:wrap;gap:4px 12px}.table-options label{min-height:34px;font-size:11px}.table-options label:has(#showDiamonds),.table-options label:has(#showSpots){display:none}.view-deck #viewStatus,.camera-settings summary span{display:none}.view-deck .rotation-tools button{min-height:40px}.table-heading{padding:6px 10px}.settings-panel #settingsToggle,.settings-panel .aim-explainer,.settings-panel .control-note,.settings-panel .tip-legend,.learning-panel>.model-note{display:none}.settings-panel .panel-title{min-height:28px}.settings-panel.expanded #shotControls{margin-top:10px}.settings-panel .target-picker{margin-bottom:8px}.settings-panel .control-block{padding-bottom:8px}.settings-panel .tip-ball{width:88px;height:88px;flex-basis:88px}.settings-panel .tip-area{margin:8px 0}.settings-panel .spin-heading{margin:8px 0}.practice-sidebar .example-picker summary{display:none}.session-panel .example-picker{padding:0}.session-panel .example-picker p{font-size:11px;line-height:1.5}.table-panel{display:block}.app-shell{padding-top:8px}.masthead{height:54px}.brand{font-size:16px}.brand small{font-size:6px}.table-toolbar .segmented button{font-size:11px}footer{margin-top:12px}footer>span:not(:first-child){display:none}
}

.recommend-entry{display:flex;flex-direction:column;align-items:center;gap:4px;width:100%;min-height:54px;margin-top:8px;padding:9px 12px;background:#e5efcc;border:1px solid #98b36d;color:#254930;border-radius:9px}.recommend-entry strong{font-size:14px}.recommend-entry small{font-size:11px;font-weight:400}.recommend-entry:hover:not(:disabled){background:#d5e8ac}.layer-close{margin-left:auto;min-height:40px}
@media(max-width:800px), (max-width:1000px) and (max-height:500px) and (orientation:landscape){.recommend-entry{min-height:58px}.recommend-entry strong{font-size:13px}.recommend-entry small{font-size:10px}.practice-sidebar[data-mobile-panel=learn]>.learning-panel,.practice-sidebar[data-mobile-panel=settings]>.settings-panel{position:fixed;left:8px;right:8px;bottom:calc(82px + env(safe-area-inset-bottom));z-index:40;max-height:52dvh;overflow-y:auto;overscroll-behavior:contain;box-shadow:0 -6px 35px #173e3540;border:1px solid #92ac89;border-radius:16px;background:var(--card);padding:12px 14px}.layer-close{display:block;float:right;margin:0 0 8px 8px}.learning-head{clear:both}.settings-panel .panel-title{clear:both}.mobile-practice-tabs{position:relative}.practice-sidebar[data-mobile-panel=settings] #shotControls{clear:both}}

.recommend-entry{min-height:44px;justify-content:center;padding:9px 12px;gap:0}.recommend-info{font-size:11px;color:#66795d;margin-top:8px}.recommend-info summary{cursor:pointer;padding:6px 0}.recommend-info .model-note{margin:4px 0 8px}

.recommend-entry strong,#learningTitle{white-space:nowrap}
