:root{font-family:'Microsoft YaHei','PingFang SC',system-ui,sans-serif;color:#173b45;background:#132d36;--ink:#173b45;--sub:#49636a;--line:#b8c9c6;--milk:rgba(245,247,241,.97);--gold:#e5bd64;--common:#e3e9e5;--rare:#ccddeb;--epic:#e2d5ea;--legendary:#ecd9af}*{box-sizing:border-box}body{margin:0;overscroll-behavior:none}button,input,select{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation;min-height:44px;border:1px solid var(--line);border-radius:8px;background:var(--milk);padding:0 12px}button:hover{filter:brightness(1.04)}button:disabled{cursor:default;opacity:.45}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #997420;outline-offset:2px}a{color:inherit}h1,h2,h3,p{margin-top:0}h2{font-size:21px;margin-bottom:10px}h3{font-size:16px;margin-bottom:8px}p{font-size:13px;line-height:1.65;color:var(--sub)}small{font-size:11px;line-height:1.5}.host{max-width:1530px;margin:auto}.host-top{display:flex;align-items:center;gap:16px;padding:12px 24px;color:#edf1eb;font-size:14px}.host-top span{flex:1;font-size:12px;opacity:.8}.host-top button{min-height:36px;background:#edf1eb}#frame{position:relative;width:100%;aspect-ratio:844/390;overflow:hidden;background:#edf1eb}#game{position:absolute;top:0;left:0;width:844px;height:390px;transform-origin:top left;overflow:hidden;background:#edf1eb}#world,#screen{position:absolute;inset:0;width:844px;height:390px}#world{pointer-events:none}#screen{pointer-events:none}#screen>*{pointer-events:auto}#loading{position:absolute;inset:0;background:#edf1eb;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center}#loading h1{font-size:40px;letter-spacing:.1em}.host-bottom{text-align:center;font-size:12px;color:#cadbd5;margin:10px;padding:0 10px}.page{position:absolute;inset:0;background:var(--milk)}.page-header{height:52px;position:absolute;left:44px;right:44px;top:0;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:center}.page-header h2{margin:0;font-size:20px}.page-header small{color:var(--sub)}.page-header .grow{flex:1}.icon-button{width:44px;min-width:44px;padding:0;font-size:21px}.primary{background:var(--gold)!important;border-color:#c49e4c;font-weight:700}.selected{background:#eee0b8!important;border:2px solid #a88736!important}.danger{color:#a43832;border-color:#dba9a1}.row{display:flex;gap:8px;align-items:center}.grow{flex:1}.muted{color:#708781}.note{font-size:11px;line-height:1.6;color:#607876}.panel{background:var(--milk);border:1px solid var(--line);border-radius:10px;padding:14px}.home{background:url('assets/ui/home.png') center/cover}.home-title{position:absolute;top:25px;left:220px;right:220px;text-align:center;color:#fffdf1;text-shadow:0 2px 8px #28546088}.home-title h1{font-size:39px;letter-spacing:.14em;margin:3px 0}.home-title p{font-size:11px;color:inherit;margin:0}.home-title span{font-size:12px}.home-menu{position:absolute;left:126px;right:126px;bottom:8px;display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.home-menu button{font-size:15px;font-weight:700}.scope{position:absolute;right:16px;top:12px;font-size:10px;padding:5px 8px;border-radius:5px;background:#173b4560;color:#fff}.intro{background:#101a1d}.intro video{width:100%;height:100%;object-fit:contain}.intro .intro-play{position:absolute;left:50%;bottom:35px;transform:translateX(-50%);min-width:170px}.intro .skip{position:absolute;right:20px;top:16px}.intro small{position:absolute;bottom:10px;left:0;right:0;text-align:center;color:#edf1eb}.selector{position:absolute;top:63px;left:44px;right:44px;bottom:16px;display:grid;grid-template-columns:270px 1fr;gap:18px}.portrait{position:relative;overflow:hidden;text-align:center;display:flex;align-items:center;justify-content:center}.portrait img{width:276px;height:276px;object-fit:contain;flex-shrink:0}.portrait .label{position:absolute;bottom:8px;left:10px;right:10px;background:#f5f7f1d9;font-size:10px;padding:5px;border-radius:5px}.portrait .badge{position:absolute;top:10px;left:10px;font-size:12px;background:#e5bd6440;padding:6px;border-radius:6px}.selector .right{display:flex;flex-direction:column;gap:10px}.tabs{display:flex;gap:5px}.tabs button{flex:1}.selector input{padding:10px;border:1px solid var(--line);border-radius:8px;min-height:44px;width:100%;background:#fff}.skill-mini{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.skill-mini img{width:32px;height:32px;object-fit:contain}.skill-mini span{display:flex;align-items:center;flex-direction:column;gap:4px;font-size:10px}.camp{background:url('assets/ui/camp.png') center/cover}.camp .camp-title{position:absolute;left:24px;top:20px;background:var(--milk);padding:13px 18px;border-radius:10px;min-width:170px}.camp-title h2{font-size:21px;margin:0 0 5px}.camp .camp-card{position:absolute;right:24px;top:22px;width:280px}.camp-card p{margin-bottom:10px}.camp .camp-menu{position:absolute;bottom:16px;left:24px;right:24px;display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.camp-menu button{height:50px;font-size:13px}.camp .progress-text{position:absolute;left:24px;bottom:78px;padding:10px 15px;background:var(--milk);border-radius:8px;font-size:12px}.camp .camp-hero{position:absolute;left:270px;top:92px;width:205px;height:205px;object-fit:contain}.level-select{display:flex;gap:8px;align-items:center;margin:10px 0}.level-select select{height:40px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 12px}.battle-hud{position:absolute;inset:0;pointer-events:none!important}.battle-hud button{pointer-events:auto}.vitals{position:absolute;left:18px;top:16px;width:188px;padding:10px 12px;border-radius:10px;background:var(--milk)}.vitals header{font-size:12px;font-weight:700;display:flex;justify-content:space-between;margin-bottom:7px}.bar{height:12px;background:#dbe4de;border-radius:4px;position:relative;overflow:hidden;margin-top:4px}.bar i{display:block;height:100%;background:#c87270;transition:width .1s}.bar.mana i{background:#7baabc}.bar.exp{height:7px}.bar.exp i{background:#d9af50}.bar span{position:absolute;inset:0;font-size:9px;color:#173b45;text-align:right;padding-right:5px;line-height:12px;text-shadow:0 1px #ffffff80}.status-icons{position:absolute;left:212px;top:48px;display:flex;flex-direction:column;gap:4px}.status-icons span{display:block;background:#f5f7f1ec;border:1px solid #b8c9c6;padding:3px 5px;border-radius:5px;font-size:10px;min-width:34px;text-align:center}.route-hud{position:absolute;top:16px;left:310px;right:210px;text-align:center;background:var(--milk);padding:8px;border-radius:9px;font-size:13px}.route-hud small{display:block;font-size:10px;margin-top:3px}.top-tools{position:absolute;top:16px;right:18px;display:flex;gap:7px}.top-tools button{height:44px;min-width:44px;font-size:16px;padding:0 10px}.battle-bottom{position:absolute;left:18px;right:18px;bottom:12px;display:flex;justify-content:space-between;align-items:end;gap:12px}.battle-bottom .skills{display:flex;gap:6px}.combat-slot{position:relative;width:51px;height:51px;padding:2px;overflow:hidden;background:var(--milk);border:1px solid #b8c9c6}.combat-slot img{width:36px;height:36px;object-fit:contain;display:block;margin:auto}.combat-slot .key{position:absolute;bottom:1px;left:3px;font-size:8px}.combat-slot .count{position:absolute;bottom:1px;right:3px;font-size:9px;font-weight:700}.combat-slot .cd{position:absolute;inset:0;background:#173b4580;display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px}.battle-bottom .controls{display:flex;gap:7px}.battle-bottom .controls button{height:44px;min-width:60px;font-size:12px}.battle-hint{position:absolute;bottom:72px;left:18px;font-size:11px;background:#f5f7f1e8;padding:5px 9px;border-radius:6px;max-width:400px}.warning{position:absolute;top:114px;left:300px;right:170px;text-align:center;font-size:16px;font-weight:700;background:#f7ead1e8;border:1px solid #d0a658;padding:8px;border-radius:8px;color:#8b4c28}.inventory{position:absolute;left:44px;right:44px;top:56px;height:274px;display:grid;grid-template-columns:274px 458px;gap:24px}.paperdoll{position:relative;border-right:1px solid var(--line)}.equip-column{position:absolute;top:0;display:flex;flex-direction:column;gap:2px}.equip-column.left{left:0}.equip-column.right{right:0}.equip-bottom{position:absolute;bottom:0;left:0;display:flex;gap:2px}.paperdoll>.body-image{position:absolute;left:39px;top:1px;width:196px;height:222px;object-fit:contain}.paperdoll>.paper-label{position:absolute;left:47px;right:47px;bottom:49px;font-size:8px;text-align:center;color:#607876}.cell{position:relative;width:44px;height:44px;min-height:44px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:5px;border:1px solid #b4c6c0;background:#f6f8f3;flex-shrink:0}.cell img{width:32px;height:32px;object-fit:contain}.cell .empty-label{font-size:9px;color:#67817e}.cell b{position:absolute;bottom:1px;right:3px;font-size:9px;color:#173b45}.cell small{position:absolute;top:1px;left:3px;font-size:7px}.common{background:var(--common)}.rare{background:var(--rare);border-color:#95b6ca}.epic{background:var(--epic);border-color:#b79bc4}.legendary{background:var(--legendary);border-color:#c5a159}.bag-grid{display:grid;grid-template-columns:repeat(10,44px);grid-template-rows:repeat(6,44px);gap:2px}.bag-footer{position:absolute;left:44px;right:44px;bottom:6px;height:48px;border-top:1px solid var(--line);display:flex;gap:12px;align-items:center}.stats-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:3px 15px;flex:1;font-size:11px}.stats-strip span{display:flex;justify-content:space-between;gap:9px}.stats-strip b{font-size:13px}.bag-footer button{min-width:88px;font-size:12px}.content-scroll{position:absolute;top:63px;bottom:14px;left:44px;right:44px;overflow:auto;padding:0 2px 8px 0;overscroll-behavior:contain}.skills-page{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.skill-card{padding:12px;min-height:117px;position:relative}.skill-card header{display:flex;align-items:center;gap:10px}.skill-card img{width:40px;height:40px;object-fit:contain}.skill-card p{font-size:11px;margin:8px 0}.skill-card .row{justify-content:space-between}.skill-card .row button{min-height:34px;font-size:11px}.stats-page{display:grid;grid-template-columns:1fr 1fr;gap:14px}.stat-row{display:flex;justify-content:space-between;align-items:center;margin:7px 0;gap:10px}.stat-row button{min-height:36px;width:36px;padding:0}.stat-row b{font-size:17px}.talent-card{display:block;width:100%;text-align:left;margin-top:8px;padding:9px 12px;min-height:60px}.talent-card small{display:block;font-size:10px;margin-top:4px}.catalog-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:7px}.catalog-card{display:flex;align-items:center;flex-direction:column;padding:7px;min-height:85px;font-size:10px}.catalog-card img{width:38px;height:38px;object-fit:contain;margin-bottom:3px}.catalog-card small{font-size:8px;color:#5c7478}.catalog-filters{display:flex;gap:6px;margin-bottom:10px}.catalog-filters button{min-height:36px;font-size:12px}.catalog-filters input{flex:1;min-width:110px;border:1px solid var(--line);border-radius:7px;padding:7px;background:#fff}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:11px 0;font-size:13px}.setting-row input[type=range]{width:170px;accent-color:#b58d36}.setting-row button{min-height:38px}.ledger{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ledger article{padding:12px;border:1px solid var(--line);background:#f5f7f1;border-radius:8px}.ledger article b{font-size:13px}.ledger article p{font-size:11px;margin:6px 0}.tag{font-size:9px;padding:3px 6px;border-radius:4px;background:#d7e6d7;color:#325c43;display:inline-block;margin:4px 0}.tag.pending{background:#f5d7cc;color:#96392f}.tag.temp{background:#f2e1ae;color:#86651d}.result{position:absolute;inset:0;background:#edf1ebe8;display:flex;align-items:center;justify-content:center}.result .panel{width:560px;text-align:center}.result h1{font-size:30px;margin:0 0 12px}.result .loot-line{display:flex;gap:7px;justify-content:center;flex-wrap:wrap;margin:15px 0}.result .actions{display:flex;justify-content:center;gap:10px}.result p{font-size:13px}.modal-shade{position:absolute;inset:0;background:#193c4770;display:flex;align-items:center;justify-content:center;z-index:20;pointer-events:auto}.dialog{width:650px;max-height:354px;background:#f5f7f1;border:1px solid #b8c9c6;border-radius:13px;padding:16px;box-shadow:0 20px 50px #11262e55;overflow:auto}.dialog.narrow{width:470px}.dialog>header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:12px}.dialog>header h3{margin:0;font-size:18px}.dialog .close{width:36px;min-height:36px;padding:0;font-size:24px}.dialog .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.dialog .actions button{min-width:100px;font-size:12px}.compare{display:grid;grid-template-columns:1fr 1fr;gap:12px}.item-box{border:1px solid var(--line);padding:12px;border-radius:9px}.item-box header{display:flex;gap:10px;align-items:center}.item-box .item-art{width:60px;height:60px;flex-shrink:0;border-radius:8px;border:1px solid #b8c9c6;padding:7px}.item-box .item-art img{width:100%;height:100%;object-fit:contain}.item-box h4{font-size:14px;margin:3px 0}.item-box p{font-size:10px;margin:5px 0}.item-box dl{display:grid;grid-template-columns:1fr auto;font-size:12px;gap:5px;margin:10px 0}.item-box dd{margin:0;font-weight:700}.positive{color:#25755d}.negative{color:#ae453c}.locked{color:#ac4135;font-size:11px}.item-box .affix{padding:6px;background:#ecd9af77;border-radius:5px;font-size:10px;line-height:1.6}.toast{position:absolute;bottom:75px;left:50%;transform:translateX(-50%);max-width:650px;background:#173b45ee;color:#fff;padding:10px 18px;z-index:50;border-radius:9px;font-size:13px;pointer-events:none;white-space:nowrap}.tooltip{font-size:11px}.footer-actions{display:flex;justify-content:space-between;gap:8px;margin-top:12px}.skill-lock{color:#899b98}.rotate-note{color:#d8dfd5;font-size:12px}[hidden]{display:none!important}#frame:fullscreen{width:100vw;height:100vh;aspect-ratio:auto;background:#132d36}#frame:fullscreen #game{left:50%;top:50%;transform-origin:center;translate:-50% -50%}@media(max-width:700px){.host-top{padding:8px 12px;gap:8px}.host-top b{font-size:13px}.host-top span{font-size:10px}.host-bottom{font-size:10px}.host-top button{font-size:11px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* v14 actual supplied model test entries. */
.test-map-links{position:absolute;left:18px;top:16px;display:flex;gap:6px;z-index:2}.test-map-links a{display:block;padding:8px 10px;min-height:34px;border:1px solid #bccdc6;border-radius:7px;background:#f5f7f1ef;color:#173b45;text-decoration:none;font-size:11px;font-weight:600}.camp-test-links{top:105px;left:24px;flex-direction:column}.camp-test-links a{min-width:162px}.model-switch{position:absolute;left:18px;top:118px;min-height:28px;font-size:9px;padding:4px 8px;background:#f5f7f1ef;max-width:225px;pointer-events:auto}.model-switch:disabled{opacity:.9}

.camp-reference-label{position:absolute;left:316px;top:290px;background:#f5f7f1ec;border-radius:4px;padding:3px 7px;font-size:9px;color:#607876}
.actor-disclaimer{position:absolute;left:18px;top:151px;font-size:9px;line-height:14px;color:#385b62;background:#f5f7f1ed;padding:3px 6px;border-radius:5px;pointer-events:none}.model-switch{max-width:248px}.battle-hint{max-width:440px}.warning{font-size:13px;top:104px;padding:5px 8px}

/* v18: keep asset notes away from the hero and the road. */
.actor-disclaimer{top:78px;left:310px;max-width:325px;font-size:9px}.model-switch{max-width:190px}

/* v28: two equal stage cards, each fully contained in the 844 x 390 viewport. */
.camp-two-stages .camp-title{width:260px;min-width:0;top:20px;left:24px;padding:12px 14px}.camp-two-stages .camp-title h2{font-size:20px}.camp-stats{display:block;margin-top:4px;color:var(--sub)}
.camp.camp-two-stages .camp-hero{left:85px;top:108px;width:150px;height:160px}.camp-two-stages .camp-reference-label{left:24px;top:255px;font-size:8px}
.stage-selection{position:absolute;left:310px;right:24px;top:20px;bottom:94px;display:flex;flex-direction:column;gap:8px}.stage-selection>header{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.stage-selection>header h3{margin:0;font-size:18px}.stage-selection>header small{font-size:10px;background:var(--milk);padding:3px 6px;border-radius:4px}.stage-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stage-choice{padding:0;min-height:156px;overflow:hidden;text-align:left;background:var(--milk);display:flex;flex-direction:column;border-width:2px}.stage-choice:disabled{opacity:1;cursor:default}.stage-choice>img{width:100%;height:88px;object-fit:cover;display:block}.stage-name{display:flex;gap:4px;justify-content:space-between;align-items:center;padding:8px 9px 3px}.stage-name b{font-size:14px}.stage-name small{font-size:9px;color:var(--sub);white-space:nowrap}.stage-description{padding:0 9px 8px;font-size:10px;color:var(--sub);line-height:1.45}.stage-depart-row{display:flex;gap:8px;align-items:center;background:var(--milk);border-radius:8px;padding:5px 7px}.stage-depart-row label{font-size:11px;white-space:nowrap}.stage-depart-row select{height:36px;border:1px solid var(--line);border-radius:6px;background:#fff;padding:0 5px;font-size:12px}.stage-depart-row button{flex:1;min-height:38px;font-size:13px;padding:0 6px}.stage-note{margin:0;font-size:10px;padding:0 4px;background:var(--milk);border-radius:4px}.camp-two-stages .progress-text{width:260px;font-size:10px;line-height:1.55;bottom:76px;padding:6px 10px}
.result-two-stages .panel{width:690px;max-height:366px;overflow:auto;padding:16px}.result-two-stages .actions{gap:7px}.result-two-stages .actions button{min-height:44px;font-size:12px;padding:0 12px}.result-two-stages h1{font-size:28px;margin-bottom:8px}.result-two-stages p{margin-bottom:7px}.result-two-stages .loot-line{margin:10px 0}.result-two-stages .note{font-size:10px}
