:root{--paper:#efe5ce;--ink:#143d32;--gold:#e7bb63;--muted:#59685c;--edge:#b9b49a;--red:#a84b32;color-scheme:light;font-family:Arial,sans-serif}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--paper);color:var(--ink)}body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}button,select{font:inherit;color:inherit}button{min-width:44px;min-height:44px;padding:9px 13px;border:1px solid var(--edge);border-radius:3px;background:#e6dcc3;font-weight:700;cursor:pointer;touch-action:manipulation}button:hover{background:#d9cba8}button:active{transform:translateY(1px);background:#d2b980}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,canvas:focus-visible,select:focus-visible{outline:3px solid #b64b27;outline-offset:2px}a{color:inherit;text-underline-offset:3px}header{height:58px;display:flex;align-items:center;gap:8px;padding:0 22px;border-bottom:1px solid var(--edge)}.brand{font-family:Georgia,serif;font-weight:bold;font-size:23px;letter-spacing:-1px;text-decoration:none;margin-right:auto}.brand span{font:9px Arial;letter-spacing:1.5px;margin-left:12px}#help{font-family:Georgia;font-size:20px}#game{height:calc(100dvh - 58px);max-width:1300px;margin:auto;padding:12px 24px 16px;display:flex;flex-direction:column}#game[hidden],#title[hidden],[hidden]{display:none!important}.course-head{display:flex;justify-content:space-between;align-items:center;min-height:60px;flex-shrink:0}.course-head small,.scene-label,.spec,.title-copy>small{font-size:10px;font-weight:bold;letter-spacing:1.5px}h1{margin:4px 0 10px;font-family:Georgia,serif}.course-head h1{font-size:28px;margin:5px 0 9px}.course-head #score{text-align:right;font-size:13px;font-weight:bold;line-height:1.5;white-space:nowrap}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:24px;flex:1;min-height:0}.field{display:flex;flex-direction:column;min-height:0;min-width:0}.scene-label{display:flex;justify-content:space-between;margin:0 0 8px;font-size:9px;gap:6px}.canvas-area{flex:1;min-height:0;display:flex;justify-content:center;align-items:center;background:#122f28;border:1px solid #876835;box-shadow:0 4px 0 #b4a17c;overflow:hidden}canvas{display:block;width:100%;height:100%;touch-action:none;object-fit:contain;user-select:none}#feedback{font-size:12px;min-height:38px;line-height:1.35;margin:11px 0 0}.controls{display:flex;flex-direction:column;gap:12px;justify-content:center;min-width:0}.aimzone{height:142px;border:1px solid #a6a58d;background:repeating-linear-gradient(0deg,#ffffff00,#ffffff00 19px,#193e3211 20px),#e5dbc1;touch-action:none;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;user-select:none;position:relative}.aimzone span{font-size:10px;letter-spacing:1px;font-weight:bold}.aimzone b{font-family:Georgia;font-size:24px;font-variant-numeric:tabular-nums}.aimzone small{font-size:10px}#powerbar{width:80%;height:7px;background:#c7b995}#powerbar i{display:block;width:50%;height:100%;background:#1b4d3e}.adjust,.actions,.tools{display:flex;gap:6px}.adjust button{flex:1;min-height:52px;font-size:22px}.actions button{flex:1;min-height:54px}.actions #putt{flex:1.4}.primary{background:var(--ink);color:#fff0ce;border-color:var(--ink)}.primary:hover{background:#265c47}.tools{flex-wrap:wrap}.tools button{flex:1;font-size:11px}.equipment{font-size:12px;line-height:1.6;color:var(--muted);margin:0}.credit{font-size:11px;line-height:1.4}.credit a{display:inline-flex;align-items:center;min-height:44px}#title{height:calc(100dvh - 58px);position:relative;max-width:1600px;margin:auto;background:#d5bd8e;overflow:auto}.title-art{position:absolute;inset:0;background:url('/assets/workshop-hero.webp') center/cover}.title-copy{position:relative;padding:5.5vh 6vw;width:48%;min-height:100%;background:linear-gradient(90deg,#f2e7cfee 65%,#f2e7cf00)}.title-copy h1{font-family:Georgia;font-size:clamp(45px,6.5vw,98px);line-height:.94;letter-spacing:-4px;margin:25px 0 23px}.title-copy em{font-size:.73em;font-weight:normal}.title-copy>p:not(.credit){font-family:Georgia;font-size:23px;line-height:1.35}.title-copy .spec{font-size:9px;margin:25px 0 20px}.title-copy button{display:block;margin:8px 0;min-height:52px;font-size:15px;width:min(300px,100%)}.title-copy .credit{max-width:350px;margin-top:25px}dialog{color:var(--ink);background:var(--paper);border:1px solid #8b8e74;border-radius:5px;padding:20px;max-width:720px;width:calc(100% - 24px);max-height:90dvh;overflow:auto;box-shadow:0 20px 80px #0006}dialog::backdrop{background:#09281cbb}.panel-top{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--edge);padding-bottom:10px;gap:10px}.panel-top strong{font:26px Georgia}.panel-top button{font-size:24px}.panel-top+#panelBody{padding-top:14px}#panelBody p{font-size:14px;line-height:1.6}#panelBody h2{font-family:Georgia;font-size:27px}#panelBody button{margin:5px 5px 5px 0}.hole-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:15px}.hole-grid button{padding:6px;min-height:56px;font-size:14px}.hole-grid button small{display:block;font-size:9px;margin:4px 0}.lore-card{padding:14px 0;border-bottom:1px solid var(--edge)}.lore-card small{font-size:10px;color:var(--muted)}.lore-card a{display:inline-flex;min-height:44px;align-items:center}.lore-card h3{font-family:Georgia}.award{color:#7b441e;font-weight:bold}.settings{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.settings select{min-height:44px;background:#f8efd8;border:1px solid var(--edge);padding:7px}#toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:#163c32;color:#fff1c9;padding:10px 16px;border:1px solid #d5b563;font-size:12px;max-width:90%;display:none;z-index:5}#toast.show{display:block}
@media(max-width:760px) and (orientation:portrait){header{height:48px;padding:0 10px}.brand{font-size:20px}.brand span{display:none}header button{padding:7px 10px;font-size:12px}#game{height:calc(100dvh - 48px);padding:6px 10px 8px}.course-head{min-height:55px}.course-head h1{font-size:21px;margin:3px 0 8px}.course-head small{font-size:8px;letter-spacing:1px}.course-head #score{font-size:11px}.play-layout{display:flex;flex-direction:column;gap:5px}.field{flex:1;min-height:0}.scene-label{font-size:7px;letter-spacing:.6px;margin-bottom:5px}.canvas-area{flex:1;min-height:0}#feedback{font-size:10px;min-height:29px;margin:7px 0 0}.controls{flex-shrink:0;gap:5px}.aimzone{height:65px;gap:3px}.aimzone span{font-size:8px}.aimzone b{font-size:19px}.aimzone small{font-size:8px}.aimzone #powerbar{position:absolute;right:8px;bottom:7px;width:45px;height:5px}.adjust button{min-height:44px;padding:5px;font-size:20px}.actions button{min-height:48px}.tools button{min-height:44px;font-size:10px;padding:7px}.equipment{display:none}#title{height:calc(100dvh - 48px)}.title-art{background-image:url('/assets/portrait-hero.webp');background-position:50% 35%}.title-copy{padding:22px 24px;width:100%;display:flex;flex-direction:column;background:linear-gradient(0deg,#efe5ceed 0,#efe5ceee 35%,#efe5ce00 65%)}.title-copy>small{font-size:8px}.title-copy h1{font-size:52px;letter-spacing:-2px;margin:14px 0 auto}.title-copy>p:not(.credit){font-size:19px;margin:10px 0}.title-copy .spec{margin:10px 0;font-size:8px}.title-copy button{width:100%;margin:3px 0;min-height:48px}.title-copy .credit{font-size:10px;margin:7px 0 0}.title-copy .credit a{min-height:44px}}
@media(orientation:landscape) and (max-height:600px){header{height:46px;padding:0 10px}.brand{font-size:19px}.brand span{font-size:7px;margin-left:8px}header button{font-size:11px}#game{height:calc(100dvh - 46px);padding:3px 10px 5px;position:relative}.course-head{min-height:42px;padding-right:205px}.course-head h1{font-size:18px;margin:3px 0 4px}.course-head small{font-size:7px;letter-spacing:.7px}.course-head #score{font-size:10px}.play-layout{grid-template-columns:minmax(0,1fr) 195px;gap:10px}.scene-label{font-size:7px;letter-spacing:.4px;margin-bottom:4px}.controls{gap:4px;position:relative;margin-top:-40px;justify-content:center}.aimzone{height:65px;gap:3px}.aimzone span{font-size:8px}.aimzone b{font-size:18px}.aimzone small{font-size:7px}.aimzone #powerbar{height:4px;width:70%}.adjust button{min-height:44px;padding:4px}.actions{gap:3px}.actions button{min-height:48px;font-size:12px;padding:5px}.tools{gap:3px}.tools button{font-size:9px;padding:5px;min-height:44px}.equipment{display:none}#feedback{font-size:9px;min-height:25px;margin:6px 0 0}#title{height:calc(100dvh - 46px)}.title-copy{padding:16px 24px;width:50%}.title-copy>small{font-size:7px}.title-copy h1{font-size:47px;letter-spacing:-2px;margin:12px 0}.title-copy>p:not(.credit){display:none}.title-copy .spec{font-size:7px;margin:10px 0}.title-copy button{min-height:44px;font-size:12px;display:inline-block;width:auto;margin:3px 2px 3px 0}.title-copy .credit{font-size:8px;margin:6px 0}.title-copy .credit a{min-height:44px}dialog{max-height:94dvh;padding:12px}.panel-top{padding-bottom:5px}.panel-top strong{font-size:22px}}
@media(max-width:350px) and (orientation:portrait){.controls{gap:4px}.aimzone{height:60px}.course-head{min-height:48px}.course-head h1{font-size:19px}.course-head #score{font-size:10px}.title-copy{padding:16px 20px}.title-copy h1{font-size:45px}.title-copy>p:not(.credit){font-size:16px}.title-copy .spec{font-size:7px}.title-copy .credit{font-size:9px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

@media(max-width:760px) and (orientation:portrait){.adjust button{min-height:52px}.actions button{min-height:52px}}
@media(orientation:landscape) and (max-height:600px){.controls .adjust{display:grid;grid-template-columns:1fr 1fr;gap:4px}.controls .adjust button{min-height:52px}.controls .aimzone{height:60px;gap:2px}.actions #putt{min-height:52px}}
@media(orientation:landscape) and (max-height:340px){.controls{gap:3px}.controls .aimzone{height:48px;gap:1px}.controls .aimzone span{font-size:7px}.controls .aimzone small{font-size:6px}.controls .aimzone b{font-size:17px}.controls .aimzone #powerbar{height:3px}.controls .adjust button{min-height:52px}.tools button{min-height:44px}}

#dragOverlay{position:fixed;inset:0;width:100vw;height:100dvh;pointer-events:none;z-index:3;overflow:visible}#dragLine{fill:none;stroke:#fff0b4;stroke-width:3;filter:drop-shadow(0 1px 2px #102c24)}#dragLabel{fill:#fff0b4;stroke:#143d32;stroke-width:4;paint-order:stroke;font:bold 12px Arial}
