/* RO-inspired window placement; existing local scenes and gameplay are retained. */
.ro-client{font-family:Arial,"Noto Sans TC",sans-serif}
.ro-client .scanlines{display:none}
.ro-client .game-topbar{height:26px;min-height:26px;padding:0 10px;background:linear-gradient(#fefefe,#dadfe6);border:1px solid #858b95;box-shadow:inset 0 0 0 1px #fff;backdrop-filter:none}
.ro-client .game-topbar .brand-mark,.ro-client .game-topbar .brand small{display:none}
.ro-client .game-topbar .brand strong{font:12px Arial,sans-serif;color:#283340;letter-spacing:0}
.ro-client .game-topbar nav{gap:14px}.ro-client .game-topbar nav a{font-size:10px;color:#354454}
.ro-client #motionToggle{padding:2px 7px;font-size:10px;color:#354454;background:#f7f8fa;border:1px solid #a4adb7}
.ro-client .game-main-v3{position:relative;height:calc(100svh - 26px);min-height:560px;overflow:hidden;background:#102018}
.ro-client #game{height:100%;min-height:0;border:0}.ro-client #battleStage{height:100%}
.ro-client #battlefield{display:block;inset:80px 20px 180px 20px}
.ro-client .battle-backdrop:after{background:none}.ro-client .terrain-shade{background:rgba(0,0,0,.04)}
.ro-client .game-lower{position:absolute;z-index:12;inset:0;display:block;max-width:none;margin:0;padding:0;background:none;pointer-events:none}
.ro-client .game-lower>.panel{border:0;background:none;pointer-events:none}
.ro-client .game-lower>.character-panel{position:absolute;inset:0;display:block!important;padding:0;margin:0}
.ro-client .character-panel>:not(.character-log){position:absolute;z-index:2;pointer-events:auto}
.ro-client .character-panel>.portrait-wrap{display:none}
.ro-client .character-panel>.identity{top:8px;left:8px;width:238px;height:48px;padding:5px 8px;background:linear-gradient(#fff,#e9edf2);border:1px solid #8b97a7;border-radius:5px 5px 0 0;color:#273441;text-align:left}
.ro-client .identity #jobLabel{color:#47556a;font:10px Arial;margin:0}.ro-client .identity #characterName{font:700 13px Arial;margin:3px 0;color:#1f3045}
.ro-client .identity #changeClassBtn{position:absolute;right:6px;bottom:5px;color:#526b8c;font-size:9px}.ro-client .identity #saveState{display:none}
.ro-client .character-panel>.resource{left:8px;width:238px;height:23px;margin:0;padding:2px 8px;background:rgba(248,250,253,.96);border-inline:1px solid #8b97a7;color:#24313e}
.ro-client .character-panel>.resource:nth-child(3){top:56px}.ro-client .character-panel>.resource:nth-child(4){top:79px}.ro-client .character-panel>.resource:nth-child(5){top:102px}.ro-client .character-panel>.resource:nth-child(6){top:125px;border-bottom:1px solid #8b97a7;border-radius:0 0 5px 5px}
.ro-client .character-panel .resource-label{font-size:9px}.ro-client .character-panel .resource .bar{height:4px;margin-top:2px;background:#c4ccd7}.ro-client .character-panel .resource .bar.hp i{background:#60a787}.ro-client .character-panel .resource .bar.sp i{background:#729ed6}
.ro-client .character-panel>.currency-row{top:151px;left:8px;width:238px;height:24px;margin:0;padding:3px 8px;background:rgba(243,246,251,.94);border:1px solid #929cab;color:#42516a;font-size:10px}.ro-client .currency-row strong{font-size:12px;color:#556a8a}
.ro-client .character-panel>.route-card{display:none}
.ro-client .character-panel>.panel-actions{top:179px;left:8px;width:238px;margin:0;gap:4px}.ro-client .panel-actions button{padding:4px;min-height:24px;color:#34435a;background:linear-gradient(#fff,#dce2ec);border:1px solid #929cab;font-size:10px}
.ro-client .stats-panel{position:absolute;inset:0;padding:0!important;margin:0}
.ro-client .stats-panel>.tabs{position:absolute;z-index:8;top:209px;left:8px;right:auto;bottom:auto;width:238px;height:54px;display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #929cab;background:rgba(235,240,248,.94);box-shadow:0 2px 6px #0003;pointer-events:auto}
.ro-client .stats-panel>.tabs button{position:relative;padding:27px 2px 5px;border:0;border-right:1px solid #b3bece;color:#34435a;font-size:10px;background:transparent}.ro-client .stats-panel>.tabs button:before{position:absolute;top:4px;left:0;right:0;font-size:20px;color:#647a9d}.ro-client .stats-panel>.tabs button[aria-selected=true]{background:#ccddf4}
.ro-client .stats-panel>.tab-content{position:absolute;z-index:9;top:274px;left:8px;right:auto;bottom:auto;width:340px;max-height:calc(100% - 290px);overflow:auto;padding:14px;background:rgba(20,30,44,.96);border:1px solid #a2b1c9;box-shadow:0 4px 18px #0006;pointer-events:auto;display:none}.ro-client .stats-panel>.tab-content.active{display:block}
.ro-client .ro-shortcuts{position:absolute;z-index:15;top:8px;left:260px;width:292px;color:#34435a;border:1px solid #929cab;border-radius:4px;background:rgba(240,244,250,.94);box-shadow:0 2px 7px #0003}
.ro-window-title{padding:4px 7px;font-size:11px;border-bottom:1px solid #aeb8c6;background:linear-gradient(#fff,#d9e1ed)}.ro-window-title span{float:right;font-size:9px;color:#6a7890}
.ro-slot-grid{display:grid;grid-template-columns:repeat(9,1fr);gap:2px;padding:4px}
.ro-client .ro-slot-grid .skill-card,.ro-empty-slot{position:relative;min-width:0;width:29px;height:29px;min-height:29px;padding:0;border:1px solid #a8b1bf;border-radius:4px;display:grid;place-items:center;background:linear-gradient(#fafcff,#d8e0eb);box-shadow:inset 0 0 0 1px #fff9;color:#b2bdcd;font:18px Arial}
.ro-client .ro-slot-grid .skill-card{background:#c7d5eb;color:#475e82;cursor:pointer}.ro-client .ro-slot-grid .skill-card .skill-icon{width:auto;height:auto;font-size:21px;background:none;border:0;color:inherit}.ro-client .ro-slot-grid .skill-card>span:not(.skill-icon){display:none}.ro-client .ro-slot-grid #skillCooldown{position:absolute;right:0;bottom:0;font-size:5px;color:#394c69}.ro-client .ro-slot-grid .skill-card:disabled{opacity:.55;cursor:default}
.ro-client #battleStage>.quick-combat{top:162px;left:260px;right:auto;bottom:auto;width:292px;min-width:0;margin:0;transform:none;background:rgba(30,40,52,.65);border:1px solid #a2b1c980;box-shadow:none}.ro-client .quick-combat .combat-cards{display:grid;grid-template-columns:repeat(4,1fr)}.ro-client .quick-combat .combat-stat{display:grid!important;min-height:34px;padding:3px;gap:0}.ro-client .quick-combat .combat-stat span{font-size:8px}.ro-client .quick-combat .combat-stat strong{font-size:13px}
.ro-client .battle-topline{inset:8px 10px auto auto;padding:0;display:flex;flex-direction:column-reverse;gap:8px;align-items:end;pointer-events:none}.ro-client .battle-topline .eyebrow{display:none}.ro-client .battle-topline h1{font:700 13px Arial;max-width:185px;margin:0;text-shadow:0 1px 3px #000}.ro-client .battle-topline .map-code{font-size:10px;margin:3px 0;text-align:right}.ro-client .battle-top-actions{display:block;pointer-events:auto}
.ro-client .mini-map-button{display:flex;flex-direction:column;width:142px;padding:5px;gap:4px;min-height:0;background:rgba(240,244,250,.92);border:1px solid #929cab;color:#273e5d}.ro-client .mini-map-button img{width:130px;height:110px;object-fit:cover;filter:none;border:1px solid #a4afbf}.ro-client .mini-map-button span{width:100%;display:flex;justify-content:space-between;gap:3px}.ro-client .mini-map-button small{font:9px Arial;letter-spacing:0;color:#34465f}.ro-client .mini-map-button strong{font:9px Arial;margin:0}
.ro-client .encounter-status{margin:6px 0 0;padding:4px 7px;min-width:0;background:rgba(22,31,40,.6);border:1px solid #a2b1c960;display:flex;justify-content:space-between;gap:12px}.ro-client .encounter-status strong{font-size:13px}.ro-client .encounter-status span{font-size:9px}
.ro-client .move-hint{left:50%;top:auto;bottom:169px;max-width:none;font-size:10px;letter-spacing:0;background:#0005;border:0;padding:3px 9px}
.ro-client .character-panel>.character-log{position:absolute;z-index:3;left:50%;right:auto;bottom:10px;transform:translateX(-50%);width:min(620px,calc(100% - 28px));height:144px;min-height:0;margin:0;padding:0;background:rgba(15,22,22,.5);border:1px solid #d3dce57a;box-shadow:none;pointer-events:auto;backdrop-filter:none}
.ro-client .character-log .log-title{height:23px;padding:3px 8px;margin:0;background:rgba(20,26,30,.55);border-bottom:1px solid #ffffff40;color:#eef0ef;font-size:10px}.ro-client .character-log #battleLog{display:block;height:112px;min-height:0;overflow:auto;padding:5px 9px;margin:0}.ro-client .character-log #battleLog li{font:11px/1.6 Arial,"Noto Sans TC",sans-serif;white-space:normal;overflow:visible;color:#e3e6cf}
.ro-client #battleStage>.battle-controls{z-index:15;top:auto;left:auto;right:10px;bottom:10px;width:210px;min-width:0;min-height:0;padding:6px;transform:none;display:grid;grid-template-columns:1fr 1fr;gap:4px;background:rgba(239,243,250,.93);border:1px solid #929cab;box-shadow:0 2px 8px #0003}.ro-client .battle-controls label{display:none}.ro-client .battle-controls select{grid-column:1/-1;width:100%;min-width:0;color:#30435c;background:#fff;border:1px solid #9daabe;font-size:10px;height:28px}.ro-client .battle-controls button{min-height:27px;height:auto;padding:4px;font-size:10px;border:1px solid #9daabe;color:#344b6b;background:linear-gradient(#fff,#d4deed)}.ro-client #battleToggle{color:#fff;background:#547da6}.ro-client #bossChallengeBtn{grid-column:1/-1}.ro-client #bossChallengeBtn:disabled{color:#97a2b1;background:#e4e9f0}
.ro-client>footer{display:none}.ro-client .character-source-frame--battle{width:76px;height:116px}.ro-client .battle-player{position:absolute;left:var(--player-x,24%);top:var(--player-y,76%);bottom:auto;width:100px;height:140px;transform:translate(-50%,-78%);display:flex;align-items:flex-end}.ro-client .battle-player-card{background:none;border:0;padding:0;backdrop-filter:none}
@media(min-width:1100px){.ro-client .character-panel>.character-log{left:260px;width:min(620px,calc(100% - 500px));transform:none}}
@media(max-width:700px){.ro-client .game-topbar nav a{display:none}.ro-client .ro-shortcuts{top:208px;left:8px;width:238px}.ro-client .ro-slot-grid{grid-template-columns:repeat(9,1fr);gap:1px;padding:3px}.ro-client .ro-slot-grid .skill-card,.ro-client .ro-empty-slot{width:24px;height:24px;min-height:24px;font-size:15px}.ro-client .stats-panel>.tabs{top:177px;height:28px}.ro-client .stats-panel>.tabs button{padding:5px;font-size:10px}.ro-client .stats-panel>.tabs button:before{display:none}.ro-client .character-panel>.panel-actions{display:none}.ro-client #battleStage>.quick-combat{display:none}.ro-client .ro-window-title{font-size:10px;padding:2px 5px}.ro-client .mini-map-button{width:100px}.ro-client .mini-map-button img{width:88px;height:80px}.ro-client .mini-map-button span{display:block}.ro-client .stats-panel>.tab-content{top:335px;width:min(340px,calc(100% - 16px));max-height:calc(100% - 500px)}.ro-client .character-panel>.character-log{height:115px;bottom:9px;width:calc(100% - 156px);left:8px;transform:none}.ro-client .character-log #battleLog{height:83px}.ro-client #battleStage>.battle-controls{width:132px;right:8px}.ro-client .move-hint{bottom:132px;white-space:nowrap;font-size:8px}.ro-client #battlefield{inset:90px 8px 140px}.ro-client .game-main-v3{min-height:650px}}
/* Readable chat window, proportioned like the reference HUD. */
.ro-client .character-panel>.character-log{height:174px}
.ro-client .character-log .log-title{height:28px;font-size:12px;padding:5px 9px}
.ro-client .character-log #battleLog{height:138px;padding:6px 10px}
.ro-client .character-log #battleLog li{font-size:14px;line-height:1.65}
.ro-client .move-hint{bottom:199px}
@media(max-width:700px){.ro-client .character-panel>.character-log{height:146px}.ro-client .character-log #battleLog{height:111px}.ro-client .character-log #battleLog li{font-size:14px}.ro-client .move-hint{bottom:164px}}
.ro-client .character-panel>.character-log #battleLog{display:block;min-height:0}
.ro-client .character-panel>.character-log #battleLog li{overflow:visible;white-space:normal;text-overflow:clip;font:14px/1.65 Arial,"Noto Sans TC",sans-serif;color:#f1f2de}
.ro-client .character-panel>.character-log #battleLog time{color:#c0ccda}
.ro-client .character-panel .resource .resource-label{font-size:10px;color:#36475d}
.ro-client .character-panel .resource .resource-label b{color:#36475d}
.ro-client .character-panel .resource .resource-label span{color:#36475d}

.ro-client .panel-actions{grid-template-columns:1fr}
.ro-client .game-topbar nav .character-return{display:inline}

.ro-client .panel-window-header{position:sticky;z-index:10;top:-14px;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:38px;margin:-14px -14px 12px;padding:3px 7px 3px 12px;color:#30435e;background:linear-gradient(#fff,#d5deec);border-bottom:1px solid #91a0b6}
.ro-client .panel-window-header strong{font-size:13px}
.ro-client .panel-close{display:grid;place-items:center;width:32px;height:32px;padding:0;color:#344965;background:#f5f7fb;border:1px solid #94a5be;border-radius:3px;font:24px/1 Arial;cursor:pointer}
.ro-client .panel-close:hover{color:#fff;background:#9e4d51;border-color:#9e4d51}
.ro-client .panel-close:focus-visible{outline:2px solid #5689ca;outline-offset:2px}

.ro-client #attrTab>.quick-combat{position:static;display:block;width:auto;min-width:0;margin:0 0 14px;padding:0;transform:none;background:#111d2b;border:1px solid #61758e;box-shadow:none}
.ro-client #attrTab .combat-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
.ro-client #attrTab .combat-stat{min-height:52px;padding:8px;gap:3px}
.ro-client #attrTab .combat-stat span{font-size:11px}
.ro-client #attrTab .combat-stat strong{font-size:18px}
@media(max-width:700px){.ro-client .stats-panel>.tab-content{top:269px;max-height:calc(100% - 430px)}}
/* Character status above an equipment window, following the supplied reference. */
.ro-client #attrTab{width:374px;color:#273d64;background:#f7f9fc;padding-bottom:10px}
.ro-client #attrTab .panel-window-header{margin-bottom:0}
.ro-client .stat-columns{display:grid;grid-template-columns:144px minmax(0,1fr);gap:8px;margin:0 -7px;padding:6px 0}
.ro-client #attributeList{display:block;margin:0;padding:0;border:0}
.ro-client #attributeList .attribute-row{display:grid;grid-template-columns:42px 27px 1fr;align-items:center;gap:3px;min-height:26px;padding:0 2px;border:0;border-bottom:1px solid #d4dce8;background:none}
.ro-client #attributeList .attribute-row>div{display:block}.ro-client #attributeList .abbr{font:bold 12px Arial;color:#2c4774}.ro-client #attributeList small{display:none}.ro-client #attributeList .attribute-row strong{font:12px Arial;color:#243653;text-align:right}.ro-client #attributeList button{width:52px;height:22px;min-height:22px;padding:0;color:#365782;background:linear-gradient(#fff,#dce5f3);border:1px solid #a4b4cd;font-size:15px}.ro-client #attributeList button small{display:inline;font-size:9px}.ro-client #attributeList button:disabled{opacity:.45}
.ro-client #attrTab .quick-combat{position:static;min-width:0;width:auto;margin:0;padding:0;background:none;border:0;box-shadow:none;transform:none}
.ro-client #attrTab .combat-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;background:none;border:0}
.ro-client #attrTab .combat-stat{display:flex!important;justify-content:space-between;align-items:center;min-height:27px;padding:2px 3px;gap:3px;border:0;border-bottom:1px solid #d4dce8;background:none}
.ro-client #attrTab .combat-stat span{font:bold 10px Arial;color:#304c7b}.ro-client #attrTab .combat-stat strong{font:12px Arial;color:#203452}
.ro-client #attrTab .point-banner{display:flex;justify-content:space-between;gap:6px;margin:5px 0 0;padding:4px;background:#e5ecf8;border:1px solid #bac8dd;font-size:11px;color:#2e4870}.ro-client #attrTab .point-banner strong{font:700 12px Arial;color:#2e4870}
.ro-client .equipment-window{margin:5px -14px 12px;border-top:1px solid #8c9fbf;border-bottom:1px solid #8c9fbf;background:#fff}
.ro-client .equipment-window h3{margin:0;padding:4px 9px;font-size:12px;color:#2c4264;background:linear-gradient(#f9fcff,#cfdaee);border-bottom:1px solid #99accb}
.ro-client .equipment-heading{padding:4px 9px;font-size:11px;color:#30486e;background:#edf2f9;border-bottom:1px solid #becadd}
.ro-client .equipment-layout{display:grid;grid-template-columns:minmax(0,1fr) 86px minmax(0,1fr);gap:3px;padding:6px}
.ro-client .equipment-slot{display:flex;align-items:center;gap:4px;min-height:44px;border-bottom:1px solid #e1e7ef;padding:3px 0}.ro-client .equipment-slot-icon{display:grid;place-items:center;width:25px;height:29px;flex-shrink:0;background:#edf2f9;border:1px solid #c3cfe0;border-radius:3px;color:#8b9cb7;font-size:20px}.ro-client .equipment-slot>div{min-width:0}.ro-client .equipment-slot span:not(.equipment-slot-icon){display:block;color:#3f5473;font-size:10px}.ro-client .equipment-slot strong{display:block;color:#8b98aa;font-size:10px;font-weight:400}
.ro-client .equipment-preview{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-width:0;background:radial-gradient(ellipse,#edf2f9,transparent 65%)}
.ro-client .equipment-preview img{width:auto;height:auto;max-width:82px;max-height:170px;object-fit:contain;image-rendering:pixelated}.ro-client .equipment-preview span{font-size:10px;color:#73829a}
.ro-client .equipment-note{margin:0;padding:5px 8px;border-top:1px solid #e1e7ef;color:#6d7e97;font-size:10px;line-height:1.5}
.ro-client #attrTab .rules-note{font-size:10px;line-height:1.6;color:#647591}.ro-client #attrTab #noviceSkillCard{margin-top:10px}
@media(max-width:700px){.ro-client #attrTab{width:min(374px,calc(100% - 16px));max-height:calc(100% - 285px)}.ro-client .stat-columns{grid-template-columns:136px minmax(0,1fr);gap:4px}.ro-client #attrTab .combat-stat span{font-size:9px}}
