*{box-sizing:border-box}body{margin:0;background:#05060d;color:#eee;font-family:Arial,'Malgun Gothic',sans-serif;overflow:hidden}button,.fileBtn{background:#202433;color:#fff;border:1px solid #5f6b88;border-radius:6px;padding:8px 10px;cursor:pointer}button:hover,.fileBtn:hover{background:#30384f}.fileBtn input{display:none}#topbar{height:48px;display:flex;gap:8px;align-items:center;padding:7px 10px;background:#111522;border-bottom:1px solid #30384f}#status{margin-left:auto;color:#9ff}#layout{display:flex;height:calc(100vh - 48px)}.panel{width:320px;background:rgba(25,29,41,.96);border-right:1px solid #3b445d;padding:14px;overflow:auto}.hidden{display:none}.panel h2{margin:0 0 12px;color:#81f7ff}.panel h3{margin:12px 0 8px}.panel label{display:block;margin-top:8px;font-size:13px;color:#b8c5df}.panel input,.panel textarea,.panel select{width:100%;background:#0c1020;color:#fff;border:1px solid #526078;border-radius:5px;padding:7px}.panel textarea{height:80px;resize:vertical}.panel select{margin-top:8px}.toolGrid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.tool.active{outline:2px solid #ffe85c;background:#45425f}.hint{font-size:12px;color:#aeb8cc;line-height:1.45}hr{border:0;border-top:1px solid #3b445d;margin:12px 0}#stageWrap{position:relative;flex:1;overflow:hidden;background:radial-gradient(circle at 50% 20%,#151848,#05060d 55%,#000)}#game{position:absolute;left:0;top:0;transform-origin:0 0}#minimap{position:absolute;left:12px;top:12px;background:rgba(0,0,0,.45);border:2px solid #17ff66;border-radius:4px}#scoreBoard{position:absolute;right:20px;top:15px;font-size:24px;font-weight:bold;text-align:right;text-shadow:0 0 8px currentColor;line-height:1.35;pointer-events:none;min-width:260px}#scoreBoard .title{font-size:18px;color:#aef;margin-bottom:6px}#scoreBoard .wait{color:#aaa;font-size:18px}

.rowBtns{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}.rowBtns button{width:100%}.disabledHint{opacity:.55;pointer-events:none}
.randomBox{margin:8px 0 10px;padding:8px;border:1px solid #3b445d;border-radius:8px;background:rgba(0,0,0,.18)}
.randomBox button{width:100%;margin-top:6px}

.rotateBtns{margin-top:6px}.rotateBtns button{font-weight:bold}
.speedBtn.active,.editorTabBtn.active{outline:2px solid #ffe85c;background:#45425f}
.editorTabs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-bottom:10px}.editorSection button{width:100%;margin-top:6px}.checkLabel{display:flex!important;align-items:center;gap:8px}.checkLabel input{width:auto!important}#propAngleSlider{margin-top:6px}#winnerOverlay{position:absolute;left:50%;top:70px;transform:translateX(-50%);min-width:360px;padding:22px 34px;border:2px solid #ffe85c;border-radius:18px;background:rgba(0,0,0,.78);box-shadow:0 0 35px #ffe85c;text-align:center;font-weight:bold;font-size:28px;color:#fff;pointer-events:none;text-shadow:0 0 12px currentColor}#winnerOverlay strong{display:block;font-size:44px;margin:6px 0}#winnerOverlay small{display:block;font-size:17px;color:#dfe7ff}#scoreBoard{max-height:calc(100vh - 90px);overflow:hidden}
#editorPanel{width:420px}.editorTabs{display:none}.editorSection{display:block!important;margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid #3b445d}.historyList{display:flex;flex-direction:column;gap:6px}.historyItem{padding:8px;border:1px solid #526078;border-radius:6px;background:#0c1020;cursor:pointer}.historyItem:hover{background:#1b2340}.historyItem.active{outline:2px solid #ffe85c}.modal{position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;z-index:9999}.modal.hidden{display:none}.modalBox{width:520px;max-width:92vw;background:#151b2d;border:2px solid #5fffff;border-radius:14px;padding:20px;box-shadow:0 0 28px #00f5ff;color:#fff}.shortcutGrid{display:grid;grid-template-columns:170px 1fr;gap:8px 12px;margin:12px 0}.shortcutGrid b{color:#ffe85c}.shortcutGrid span{color:#dfe7ff}.transformHint{position:absolute;pointer-events:none;color:#ffe85c}

/* v18 advanced UI */
#topbar{flex-wrap:nowrap;overflow-x:auto;white-space:nowrap}
#btnAdvanced.advancedOn{background:#234b34;border-color:#54ff6b;color:#dfffe6}
#ballCount[readonly]{opacity:.9;background:#101728;color:#81f7ff;font-weight:bold}
.advancedOnly.advancedHidden{display:none!important}
.gameAdvancedBox{margin-top:12px;padding:10px;border:1px solid #3b445d;border-radius:8px;background:rgba(0,0,0,.18)}
#stageWrap{display:flex;align-items:flex-start;justify-content:center}
#game{will-change:transform}
body.advancedOff #editorPanel,body.advancedOff #historyPanel{display:none!important}
body.advancedOff .advancedOnly{display:none!important}
body.advancedOn .advancedOnly{display:inline-flex}
.panel .advancedOnly{display:block}


/* v19 UI correction */
#btnFollow{display:inline-flex}
.gameAdvancedBox{display:block!important}
.gameAdvancedBox label,.gameAdvancedBox input,.gameAdvancedBox select{display:block!important;width:100%!important;writing-mode:horizontal-tb!important;text-orientation:mixed!important}
.gameAdvancedBox .checkLabel{display:flex!important;width:100%!important}
.gameAdvancedBox .checkLabel input{width:auto!important}
#gameMapList{height:96px}
body.advancedOff #btnFollow{display:inline-flex!important}
body.advancedOn #btnFollow{display:inline-flex!important}
