:root{--ink:#112442;--red:#ef402e;--paper:#fffbed;--yellow:#ffdb38;--cyan:#1bb4d5;--purple:#8553d9}*{box-sizing:border-box}body{margin:0;background:var(--ink);color:var(--ink);font-family:'Hiragino Kaku Gothic ProN','Noto Sans JP',Meiryo,system-ui,sans-serif;font-size:16px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.5}button:focus-visible,a:focus-visible{outline:4px solid #168fec;outline-offset:3px}.cabinet{max-width:680px;margin:22px auto;background:var(--red);padding:14px;border:4px solid #071a32;border-radius:24px;box-shadow:0 16px 0 #06172c,0 25px 50px #0004}header{display:flex;align-items:center;justify-content:space-between;color:var(--paper);padding:2px 7px 13px}.brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:16px}.brand-mark{width:30px;height:30px;display:grid;place-items:center;background:var(--yellow);color:var(--ink);border-radius:6px;transform:rotate(-6deg);font-weight:900;font-size:22px}.plain{border:0;background:none;color:inherit;font-size:14px;text-decoration:underline;text-underline-offset:4px}nav{display:flex;gap:7px;margin-bottom:12px}.tab{flex:1;background:#c82a1c;border:2px solid var(--ink);border-radius:10px;padding:13px 3px;color:var(--paper);font-weight:800;font-size:17px;box-shadow:0 3px 0 var(--ink)}.tab.active{color:var(--ink);background:var(--yellow)}.game-body{background:var(--paper);border:3px solid var(--ink);border-radius:13px;overflow:hidden}.title-row{padding:17px 18px 12px;display:flex;align-items:center;justify-content:space-between}h1{margin:0;font-size:clamp(26px,5.2vw,36px);letter-spacing:-.025em;font-weight:900}.score{display:flex;align-items:baseline;gap:5px}.score>span{font-size:13px;font-weight:700}.score b{font-variant-numeric:tabular-nums;font-size:32px;line-height:1}.selectors{display:flex;gap:10px;padding:0 16px 12px}.selection{min-width:0;display:flex;align-items:center;flex:1;background:white;border:2px solid var(--ink);border-radius:10px;border-bottom-width:4px}.selection.left{box-shadow:inset 5px 0 var(--cyan)}.selection.right{box-shadow:inset 5px 0 var(--red)}.selection.purple{box-shadow:inset 5px 0 var(--purple);flex:1.4}.pick{display:flex;align-items:center;gap:5px;padding:4px 3px 4px 8px;border:0;background:none;flex:1;min-width:0;text-align:left}.pick svg{width:49px;height:52px;flex:none;overflow:visible}.pick small{font-size:11px;display:block;white-space:nowrap;font-weight:700;color:#536079}.pick b{font-size:16px;white-space:nowrap}.rotate{background:none;border:0;border-left:1px solid #dedfdf;min-width:37px;align-self:stretch;font-weight:800;font-size:25px;line-height:1}.spin{display:flex;align-items:center;gap:7px;flex:1;font-size:14px;font-weight:700}.spin button{padding:9px 10px;border:2px solid var(--ink);background:#e8defa;border-radius:8px;font-size:14px;font-weight:800}.arena-wrap{position:relative;margin:0 14px;border:2px solid var(--ink);border-radius:8px;overflow:hidden;background:#f5f3e5;touch-action:none}canvas{display:block;width:100%;height:auto;touch-action:none}.status{position:absolute;top:8px;left:8px;right:8px;text-align:center;font-size:14px;font-weight:800;background:#fffbeddd;border-radius:6px;padding:7px 3px;pointer-events:none}.dragHint{position:absolute;bottom:9px;right:12px;font-size:12px;color:#4f5c72;pointer-events:none}.controls{display:grid;grid-template-columns:1fr 2.1fr 1fr;gap:12px;background:var(--yellow);padding:16px 17px 14px;margin-top:13px;border-top:3px solid var(--ink)}.controls button{border:3px solid var(--ink);border-radius:18px;box-shadow:0 5px 0 var(--ink);min-height:60px;font-weight:900;font-size:23px;touch-action:none;user-select:none}.controls button:active{transform:translateY(3px);box-shadow:0 2px 0 var(--ink)}.move{background:var(--paper);font-size:25px!important}.action{background:var(--red);color:var(--paper);white-space:nowrap}.under{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 15px 12px;background:var(--yellow);font-size:13px;line-height:1.5}.under button{flex:none;border:0;background:none;text-decoration:underline;font-size:13px}.under>span{font-weight:700}footer{display:flex;justify-content:space-between;gap:6px;color:#fffbed;padding:13px 7px 2px;font-size:12px}footer button{border:0;background:none;color:inherit;text-decoration:underline;font-size:12px}.hidden{display:none!important}.result{position:absolute;inset:0;display:grid;place-items:center;background:#fffbed18;pointer-events:none}.result span{font-size:clamp(34px,7vw,48px);font-weight:900;color:var(--ink);background:var(--yellow);padding:14px 24px;border:3px solid var(--ink);border-radius:10px;box-shadow:5px 5px 0 var(--ink);transform:rotate(-4deg)}dialog{border:3px solid var(--ink);border-radius:18px;background:var(--paper);color:var(--ink);width:calc(100% - 28px);max-width:560px;padding:20px;max-height:86dvh;box-shadow:0 10px 0 #11244288}dialog::backdrop{background:#06142bc9}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.dialog-head h2{margin:0;font-size:22px}.dialog-close{border:2px solid var(--ink);border-radius:50%;width:36px;height:36px;background:white;font-size:25px;line-height:1}dialog p{font-size:15px;line-height:1.8}dialog h3{margin:20px 0 5px;font-size:18px}.pick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.pref-option{display:flex;flex-direction:column;align-items:center;border:2px solid var(--ink);border-radius:9px;padding:6px 4px;background:#fff;font-weight:800;font-size:14px;gap:4px}.pref-option:hover{background:var(--yellow)}.pref-option svg{width:100%;height:82px}.source-links{display:flex;flex-direction:column;gap:12px}.source-links a{color:#154e93;font-size:14px}.credits{font-size:12px;color:#536079}#loadError{position:fixed;inset:40% 10% auto;background:#fff;padding:30px;text-align:center;border-radius:10px}
@media(max-width:520px){body{background:var(--red)}.cabinet{margin:0;min-height:100dvh;border:0;border-radius:0;padding:12px 8px 13px;box-shadow:none}header{padding-bottom:10px}.tab{padding:11px 2px;font-size:16px}.title-row{padding:13px 13px 10px}.score{gap:4px}.score>span{font-size:11px}.score b{font-size:27px}.selectors{padding:0 10px 10px;gap:7px}.pick{padding-left:7px;gap:2px}.pick svg{width:39px;height:48px}.pick b{font-size:14px}.pick small{font-size:10px}.rotate{min-width:31px;font-size:23px}.arena-wrap{margin:0 9px}.controls{padding:13px 10px 13px;gap:9px;margin-top:10px}.controls button{min-height:56px;font-size:21px;border-radius:14px}.under{padding:9px 10px 10px;font-size:12px}.under button{font-size:12px}footer{padding:12px 5px 0;font-size:11px}.status{font-size:12px;padding:6px 2px;top:6px;left:5px;right:5px}.spin{gap:5px}.spin button{padding:8px 7px;font-size:13px}.pick-grid{grid-template-columns:repeat(4,1fr)}.pref-option{font-size:12px}.pref-option svg{height:65px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
@media(max-width:520px){.status{font-size:14px;line-height:1.45}.pick small{font-size:11px}.score>span{font-size:12px}.under{font-size:13px}.under button{font-size:13px}}
/* Independent crane page: compact, visible orientation controls. */
a.brand{color:inherit;text-decoration:none}.selection{display:block;overflow:hidden}.pick{width:100%;min-height:61px;padding:5px 8px}.pick svg{width:49px;height:51px}.pick b{font-size:16px}.pick small{font-size:12px}.rotation-row{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #d7dce0;background:#f5f6f7}.rotation-row button{width:46px;min-height:42px;background:none;border:0;font-size:27px;line-height:1}.rotation-row output{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums}.rotation-row button:active{background:var(--yellow)}.search-label{display:block;margin-top:16px;font-size:14px;font-weight:700}#prefSearch{width:100%;height:46px;border:2px solid var(--ink);border-radius:8px;background:white;color:var(--ink);font:inherit;padding:8px 12px;margin-top:6px}.picker-count{font-size:14px;margin:10px 0}.pref-option.selected{background:var(--yellow)}.dialog-close{min-width:44px;width:44px;height:44px}.title-row h1{font-size:30px}.pref-option{min-height:108px}.pick-grid{grid-template-columns:repeat(4,1fr)}
@media(max-width:520px){.pick{padding:4px 6px;gap:3px;min-height:59px}.pick svg{width:38px;height:46px}.pick b{font-size:15px}.pick small{font-size:11px}.rotation-row button{width:45px;min-height:44px}.title-row h1{font-size:28px}.pick-grid{grid-template-columns:repeat(3,1fr)}.pref-option{font-size:14px;min-height:101px}.pref-option svg{height:65px}.dialog-head h2{font-size:21px}.dragHint{font-size:12px}.score>span{font-size:12px}}

/* Suppress accidental double-tap zoom and long-press selection only inside play. */
.cabinet{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
button,input[type="range"]{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
canvas{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
dialog p,dialog li,dialog h2,dialog h3,dialog a,input[type="search"]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}

.controls button{touch-action:manipulation}.arena-wrap{touch-action:auto}

/* Phone Safari: scale the scene to the available height, keep every control scrollable. */
:root{--game-vh:100vh;--browser-reserve:80px}html{scroll-padding-bottom:calc(var(--browser-reserve) + env(safe-area-inset-bottom,0px))}
@supports(height:100svh){:root{--game-vh:100svh}}
dialog{max-height:min(84svh,calc(var(--game-vh) - 96px - env(safe-area-inset-bottom,0px)));overflow-y:auto;overscroll-behavior:contain;scroll-padding-bottom:28px;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px))}
@media(max-width:600px){
 body{padding-bottom:calc(var(--browser-reserve) + env(safe-area-inset-bottom,0px));overflow-y:auto}
 .cabinet{min-height:0}.arena-wrap{width:min(calc(100% - 18px),max(240px,calc((var(--game-vh) - 365px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)) * 24 / 23)));margin-inline:auto}
 .arena-wrap canvas{width:100%;height:auto;aspect-ratio:24/23}
 .controls{margin-top:9px;padding-top:11px;padding-bottom:11px}.controls button{min-height:52px}.under{padding-top:8px;padding-bottom:8px}
}

@media(max-width:600px){body{padding-top:env(safe-area-inset-top,0px)}.action-row,.controls,.power-control{scroll-margin-bottom:calc(96px + env(safe-area-inset-bottom,0px))}}

.status:empty{display:none}.under,footer{justify-content:flex-end}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
