body{

    font-family: "Microsoft YaHei";

    margin:40px;

}

button{

    padding:10px 20px;

    font-size:16px;

}
.button-link{display:inline-flex;align-items:center;padding:10px 20px;border:1px solid #888;border-radius:4px;background:#f4f4f4;color:#222;text-decoration:none;font-size:16px}

.toolbar, .cards { display:flex; gap:10px; flex-wrap:wrap; margin:12px 0; }
.announcement-overlay{position:fixed;z-index:1000;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:#17130da8}.announcement-overlay.hidden{display:none}.announcement{width:min(680px,100%);max-height:calc(100vh - 48px);overflow:auto;padding:22px 24px;border:1px solid #bba36d;border-radius:12px;background:#fff9e9;color:#332d22;box-shadow:0 14px 45px #0007}.announcement>div{display:flex;align-items:center;justify-content:space-between;gap:15px}.announcement h2{margin:0;color:#704b08}.announcement p{margin:13px 0 0;line-height:1.75}.announcement-close{padding:7px 14px;font-size:14px}
.status-bar .restart-run{margin-left:auto;background:#fff4f1;border-color:#b86a5b;color:#762f24}
.card { border:1px solid #bbb; border-radius:6px; padding:12px; min-width:160px; }
.card button { display:block; margin-top:8px; padding:6px 10px; font-size:14px; }
.success { color:#173f6b; }
.error { color:#b42318; }
small { color:#666; }
.floor { margin:14px 0; }
.map-nodes { display:flex; gap:5px; flex-wrap:wrap; margin-top:6px; }
.map-node { min-width:42px; padding:7px; font-size:13px; }
.map-node.boss { border:2px solid #8b1e1e; color:#8b1e1e; }
.map-node.available { background:#d9f6df; }
.map-node.current { background:#fff0b3; }
.map-node.completed { background:#ddd; text-decoration:line-through; }
.map-node[title*="elite"] { border-color:#7b4ab5; }
.rarity-common { border-color:#777; }
.rarity-rare { border-color:#2474c6; }
.rarity-legendary { border-color:#d08a00; box-shadow:0 0 4px #d08a00; }
.map-node[title*="event"] { border-color:#2b7a78; background:#e0f4f3; }
.event-panel { border:1px solid #2b7a78; background:#f2fbfa; padding:16px; border-radius:8px; margin:16px 0; }
.event-panel .card.selected{outline:4px solid #e0a51c;outline-offset:2px;background:#fff1b8;box-shadow:0 0 0 2px #fff inset}
.event-result{margin:12px 0;padding:12px 15px;border:1px solid #7191b3;border-radius:8px;background:#edf4fb;color:#173f6b}.event-result p{margin:5px 0 0}
.status-bar { display:flex; gap:18px; flex-wrap:wrap; padding:12px 16px; background:#20252b; color:#fff; border-radius:8px; margin:16px 0; }
.assembly-editor { max-width:1320px; margin:0 auto; }
.assembly-head { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; }
.assembly-layout{display:grid;grid-template-columns:minmax(620px,auto) minmax(360px,1fr);gap:16px;align-items:start}.assembly-layout>main{min-width:0;overflow:auto}.assembly-sidebar{max-height:calc(100vh - 145px);overflow:auto;padding:10px 12px;border:1px solid #aaa;border-radius:9px;background:#fafafa}.assembly-sidebar h3{margin:5px 0}.assembly-sidebar p{margin:5px 0 9px}.assembly-sidebar .module-tray{grid-template-columns:repeat(auto-fill,minmax(135px,1fr));margin:8px 0 12px}.assembly-sidebar .module-tray .module-tile{min-height:92px}.assembly-module-details{margin-top:10px;padding:8px;border:1px solid #aaa;border-radius:7px;background:#fff}.assembly-module-details>summary{cursor:pointer;font-weight:700}
.body-grid { display:grid; grid-template-columns:repeat(7,88px); grid-template-rows:repeat(7,88px); gap:5px; width:max-content; padding:14px; background:#242a30; border-radius:10px; overflow:auto; }
.grid-cell { position:relative; border:1px dashed #65707a; border-radius:6px; background:#343c44; display:flex; align-items:stretch; justify-content:stretch; }
.grid-cell:hover { background:#46515c; border-color:#b9c7d4; }
.host-cell { background:#4b3c23; border:2px solid #e1b85b; }
.module-tile { position:relative; box-sizing:border-box; width:100%; min-height:78px; padding:17px 6px 6px; background:#f6f3e8; color:#222; border:2px solid #777; border-radius:5px; cursor:grab; display:flex; flex-direction:column; justify-content:center; text-align:center; overflow:hidden; }
.module-tile small { display:block; font-size:11px; }
.module-tile.selected { outline:3px solid #f3c44e; outline-offset:2px; }
.host-tile { cursor:not-allowed; background:#f0d99a; }
.module-tray { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; margin:10px 0 18px; }
.module-tray .module-tile { min-height:105px; }
.storage-check { margin-top:6px; font-size:12px; }
.port { position:absolute; display:block; z-index:2; }
.port-up,.port-down { width:28px; height:6px; left:50%; transform:translateX(-50%); }
.port-left,.port-right { width:6px; height:28px; top:50%; transform:translateY(-50%); }
.port-up { top:0; }.port-down { bottom:0; }.port-left { left:0; }.port-right { right:0; }
.port-red { background:#d64545; }.port-blue { background:#3b78d8; }.port-green { background:#3b9b58; }.port-white { background:#fff; box-shadow:0 0 0 1px #777; }
.module-detail { border:1px solid #ccd2d8; border-radius:6px; padding:9px 12px; margin:7px 0; background:#fff; }
.module-detail summary { cursor:pointer; font-weight:600; }
.module-detail ul{margin:8px 0;padding:0}.module-detail li { margin:5px 0; }
.tags { margin:9px 0; }.tag { display:inline-block; padding:3px 7px; margin:2px 4px 2px 0; border-radius:12px; background:#e8edf2; font-size:12px; }
.muted { color:#777; }
@media(max-width:1050px){.assembly-layout{grid-template-columns:1fr}.assembly-sidebar{max-height:none}.assembly-layout>main{overflow:auto}}@media(max-width:760px){ body{margin:18px}.body-grid{grid-template-columns:repeat(7,72px);grid-template-rows:repeat(7,72px)}.module-tile{font-size:12px}.assembly-head{display:block} }
.selected-reward { outline:3px solid #e0a51c; }
.upgrade-picker { margin:18px 0; padding:16px; border:2px solid #d69a18; background:#fff9e8; border-radius:10px; }
.upgrade-picker-head { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
.upgrade-picker-head h3 { margin-top:0; }
.upgrade-targets { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:10px; }
.upgrade-card { display:flex; flex-direction:column; gap:5px; text-align:left; padding:12px; border:1px solid #b78213; background:#fff; border-radius:7px; cursor:pointer; }
.upgrade-card:hover { background:#fff2c8; transform:translateY(-1px); }
.upgrade-module { color:#72520d; font-size:12px; }
.maze-floor { margin:16px 0; padding:12px; border:1px solid #c7c0ad; border-radius:9px; background:#f7f4eb; }
.maze-scroll { overflow-x:auto; padding-bottom:8px; }
.maze-map { position:relative; display:flex; align-items:center; gap:24px; width:max-content; min-height:210px; padding:4px 8px; }
.maze-connections { position:absolute; inset:0; z-index:1; pointer-events:none; }
.maze-depth { width:105px; text-align:center; }
.depth-label { font-size:11px; color:#746d60; }
.maze-lanes { display:flex; flex-direction:column; justify-content:center; gap:8px; min-height:175px; }
.maze-arrow { color:#817761; font-size:22px; width:24px; text-align:center; }
.maze-node { position:relative; z-index:2; width:96px; min-height:48px; display:flex; align-items:center; gap:7px; justify-content:center; padding:7px; border:1px solid #8f897c; border-radius:7px; background:#fff; font-size:12px; }
.maze-node strong { font-size:18px; }.maze-node.available { background:#dff5df; border-color:#38864a; }.maze-node.completed { background:#dedbd2; }.maze-node.current { background:#fff0b5; }.maze-node.skipped { opacity:.28; }
.maze-node.shop { border-color:#a07016; }.maze-node.adventure { border-color:#8050a5; }.maze-node.event { border-color:#2b7a78; }.maze-node.boss { border:2px solid #8b1e1e; }
.shop-panel { margin:18px 0; padding:16px; border:2px solid #a07016; background:#fff9e9; border-radius:9px; }.shop-head{display:flex;justify-content:space-between;gap:15px;}.shop-head-actions{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}.shop-body-view{margin:12px 0;padding:12px;border:1px solid #c7ab70;border-radius:8px;background:#fffdf7}.shop-body-view>h3{margin-top:0}.shop-body-modules{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;max-height:430px;overflow:auto}.shop-body-modules .module-detail{margin:0}
.shop-relic-move{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0;padding:10px;border:1px solid #c7ab70;border-radius:8px;background:#fffdf7}.shop-relic-move label{display:flex;align-items:center;gap:5px}.shop-relic-move select{max-width:240px}
#message{white-space:pre-line}.success,#message.success{color:#173f6b}
.map-legend { display:flex; gap:16px; flex-wrap:wrap; margin:8px 0; font-size:12px; color:#5d5a52; }.map-legend span{display:flex;align-items:center;gap:6px}.map-legend i{display:inline-block;width:28px;border-top:2px solid #9ba1a6}.map-legend .line-available{border-color:#338b91}.map-legend .line-chosen{border-color:#2f7d45;border-width:3px}
.run-result { padding:22px; margin:18px 0; border-radius:10px; text-align:center; }.run-result h2{margin-top:0}.victory-result{background:#eef8e8;border:2px solid #4e8b3b}.defeat-result{background:#fff0ed;border:2px solid #a53b30}
.defeat-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.rewind-button{background:#eee8ff;border-color:#7160a8;color:#3e2e78}.defeat-log{max-width:850px;margin:16px auto 0;text-align:left}.defeat-log .battle-log>div{max-height:360px;overflow:auto}
.enemy-intent { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:12px 0; padding:11px 14px; border:1px solid #b55c4a; border-radius:8px; background:#fff2ee; }.intent-label{padding:3px 7px;border-radius:10px;background:#9f3e32;color:#fff;font-size:12px}.enemy-intent strong{color:#7d2d25}
.enemy-opening{margin:5px 0 9px;padding:7px 10px;border-left:3px solid #8d6a3b;background:#f7f0e3;color:#59452e;font-style:italic}
.relic-install-panel { margin:18px 0;padding:17px;border:2px solid #9b6b17;background:#fff8df;border-radius:10px }.relic-targets{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.relic-target{display:flex;flex-direction:column;gap:7px;padding:12px;background:#fff;border:1px solid #caa95f;border-radius:7px}.relic-target button{text-align:left;font-size:13px;padding:8px}.relic-target small{color:#796b4c}
.battle-body-panel{margin:14px 0;padding:12px;border:1px solid #727b84;border-radius:9px;background:#293038;color:#fff;overflow:auto}.battle-body-panel h4{margin:0 0 10px}.battle-body-grid{display:grid;gap:8px;width:max-content}.battle-body-cell{position:relative;width:130px;min-height:132px;display:flex;flex-direction:column;gap:5px;align-items:stretch}.battle-body-cell.empty{border:1px dashed #505a63;border-radius:6px}.battle-body-cell .module-tile{min-height:82px}.battle-body-cell>button{font-size:12px;padding:6px}.battle-module-tooltip{display:none;position:absolute;z-index:20;left:100%;top:0;width:240px;padding:11px;background:#fff;color:#222;border:1px solid #777;border-radius:7px;box-shadow:0 4px 14px #0005;text-align:left}.battle-body-cell:hover .battle-module-tooltip{display:block}.battle-module-tooltip p{margin:6px 0}.mobilize-prompt{display:flex;gap:10px;flex-wrap:wrap;padding:11px 14px;margin:10px 0;background:#e9f2ff;border:1px solid #5a87bd;border-radius:8px}
.battle-body-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.battle-body-heading h4{margin:0}.battle-layout>aside>.battle-body-panel+p{display:none}
.body-balance{grid-column:1/-1;display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:9px 11px;border:1px solid #b89b4d;border-radius:7px;background:#3b382b;color:#fff}.body-balance span{font-size:13px;color:#f1e8c8}.balance-role{position:absolute;z-index:3;right:4px;top:4px;padding:2px 6px;border-radius:9px;background:#242a30;color:#fff;font-size:11px}.battle-body-cell.balance-heavy .module-tile{outline:2px solid #d66a5e}.battle-body-cell.balance-light .module-tile{outline:2px solid #65b7cf}.battle-body-cell.balance-balanced .module-tile{outline:2px solid #dbbc52}
.reward-card,.battle-card{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left}.effect-text{display:block;font-size:12px;line-height:1.35;color:#4b463b;white-space:normal}.card:disabled .effect-text{color:#777}
.maze-node.rest{border-color:#4b9658;background:#eef9ee}.relic-install-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.relic-install-head h3{margin-top:0}.relic-target .module-detail{width:100%;box-sizing:border-box}.battle-card{position:relative;min-width:135px;max-width:190px;padding:25px 9px 9px}.battle-body-panel{max-height:310px}.status-bar{position:sticky;top:0;z-index:50;margin:6px 0 12px;padding:9px 13px}body{margin:18px}.enemy-intent{margin:8px 0}.battle-body-panel{margin:8px 0;padding:9px}
.energy-keyword{display:inline-block;padding:2px 6px;border-radius:10px;background:#375f9b;color:#fff;font-size:11px;font-weight:700}.battle-card:disabled .energy-keyword{background:#777}
.battle-log{margin:10px 0;padding:9px 12px;border:1px solid #777;border-radius:7px;background:#f5f5f2}.battle-log summary{cursor:pointer;font-weight:700}.battle-log>div{max-height:180px;overflow:auto;margin-top:7px}.battle-log p{margin:3px 0;padding:3px 6px;border-bottom:1px solid #ddd;font-size:12px}.gold-reward{display:inline-block;padding:7px 12px;border-radius:14px;background:#fff0b5;color:#755300;font-weight:700}
.hand-card{display:flex;flex-direction:column;align-items:stretch}.hand-card .battle-card{flex:1}.retain-button{padding:5px 8px;font-size:12px}.retain-button.selected{background:#f1c75b;border-color:#9b7212}
.map-layout,.battle-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);gap:14px;align-items:start}.map-layout>main,.map-layout>aside,.battle-layout>main,.battle-layout>aside{min-width:0}.map-layout>aside{position:sticky;top:62px;max-height:calc(100vh - 75px);overflow:auto;padding:10px;border:1px solid #ccc;border-radius:8px;background:#fafafa}.battle-layout{grid-template-columns:minmax(360px,.8fr) minmax(520px,1.2fr)}.battle-layout .battle-body-panel{max-height:calc(100vh - 150px)}.battle-layout .battle-log>div{max-height:120px}.battle-hand{max-height:300px;overflow:auto}.deck-viewer{margin:7px 0;padding:7px;border:1px solid #999;border-radius:6px}.deck-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;max-height:260px;overflow:auto;margin-top:7px}.deck-grid article{display:flex;flex-direction:column;gap:3px;padding:7px;border:1px solid #ccc;background:#fff;border-radius:5px;font-size:12px}.reward-options{align-items:stretch}.reward-module{display:flex;flex-direction:column;gap:6px;width:230px;padding:9px;border:2px solid #aaa;border-radius:8px;background:#fff}.reward-module>.module-tile{min-height:90px}.reward-module .module-detail{font-size:12px}.toolbar select{padding:7px;font-size:14px}@media(max-width:950px){.map-layout,.battle-layout{grid-template-columns:1fr}.map-layout>aside{position:static;max-height:none}.battle-layout .battle-body-panel{max-height:360px}}
.reward-layout{display:grid;grid-template-columns:minmax(360px,.8fr) minmax(520px,1.2fr);gap:14px;align-items:start}.reward-layout>aside{position:sticky;top:62px;max-height:calc(100vh - 75px);overflow:auto}.reward-layout>main{min-width:0}@media(max-width:950px){.reward-layout{grid-template-columns:1fr}.reward-layout>aside{position:static;max-height:none}}
.reward-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.reward-heading h3{margin:0}
.condition-feedback{display:block;margin-top:3px;padding:3px 5px;border-radius:4px;font-size:11px}.condition-feedback.active{background:#e2f5e5;color:#23652d}.condition-feedback.inactive{background:#f0eee8;color:#746d60}.unavailable-reason{display:block;margin-top:4px;font-weight:700}.battle-card:disabled{opacity:.78}
.status-list{display:grid;gap:5px;margin:6px 0}.status-item{display:flex;flex-direction:column;gap:2px;padding:6px 8px;border:1px solid #8aa0b5;border-radius:6px;background:#eef5fb;font-size:12px}.status-item.negative{border-color:#b86b62;background:#fff0ee}.status-item small{font-size:11px}.enemy-phases,.enemy-passives,.intent-feedback{margin:7px 0;padding:7px 9px;border:1px solid #aaa;border-radius:6px;background:#faf8f1}.enemy-phases summary{cursor:pointer;font-weight:700}.enemy-phases p{margin:4px 0;font-size:12px}.enemy-phases p.activated{color:#777;text-decoration:line-through}.enemy-passives,.intent-feedback{display:flex;flex-direction:column;gap:4px;font-size:12px}.intent-anomaly{color:#9b3027;font-weight:700}
.battle-mechanics{display:flex;flex-direction:column;gap:4px;margin-top:8px;padding:8px;border:1px solid #999;border-radius:6px;background:#f6f4ee;font-size:12px}.battle-mechanics strong{margin-bottom:2px}
.card-preview{display:block;margin-top:4px;padding:4px 6px;border-radius:4px;background:#e8f1ff;color:#234f82;font-size:11px;font-weight:700}.detach-button{margin-top:4px;padding:4px 6px!important;font-size:11px!important}
.module-detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:12px;align-items:start}
.interface-diagram{position:relative;width:76px;height:76px;margin:10px auto;background:#28313b;border:2px solid #6d7782;border-radius:8px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:10px;padding:6px;box-sizing:border-box}
.diagram-port{position:absolute;width:16px;height:16px;border:2px solid #111;border-radius:3px;box-sizing:border-box}.diagram-up{top:-10px;left:28px}.diagram-down{bottom:-10px;left:28px}.diagram-left{left:-10px;top:28px}.diagram-right{right:-10px;top:28px}
.relic-chip{position:relative;display:inline-block;padding:2px 6px;border:1px solid #b99a50;border-radius:10px;color:#ffe19a;cursor:help}.relic-tooltip{display:none;position:absolute;z-index:30;left:0;top:calc(100% + 6px);width:240px;padding:10px;background:#171b21;border:1px solid #b99a50;border-radius:6px;color:#eee;box-shadow:0 6px 18px #0008}.relic-tooltip>*{display:block;margin:3px 0}.relic-chip:hover .relic-tooltip{display:block}
.shop-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px}.shop-item{padding:12px;border:1px solid #c6ae78;border-radius:8px;background:#fffdf7;color:#29261f}.shop-item small{color:#655d50}.shop-item header{display:grid;grid-template-columns:1fr auto;gap:4px 10px;align-items:center}.shop-item header button{grid-row:1/3;grid-column:2}.shop-item .module-tile{margin:10px auto}
.character-select{max-width:1120px;margin:14px auto;padding:16px;border:1px solid #b8ad94;border-radius:10px;background:#f7f2e6;color:#2d2922}.character-select.hidden{display:none}.character-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}.character-card{display:flex;flex-direction:column;gap:7px;text-align:left;padding:14px;min-height:265px;background:#fffdf7;border:2px solid #c8bea8;border-radius:9px;color:#29261f}.character-card:hover,.character-card.selected{border-color:#b78213;background:#fff3cf}.character-card strong{font-size:22px;color:#704b08}.character-card small{color:#514a3d}.character-card p{line-height:1.55;margin:5px 0}.character-host{font-weight:bold}.character-ports{display:flex;align-items:center;gap:3px;flex-wrap:wrap}.port-dot{width:10px;height:10px;border-radius:3px;display:inline-block;border:1px solid #111}.start-character{display:block;margin:16px auto 0;padding:10px 34px;font-size:18px}
.module-detail-layout.without-diagram{grid-template-columns:1fr}
.module-card-entry{box-sizing:border-box;width:100%;list-style:none;margin:7px 0!important;padding:8px;border:1px solid #d8d0c0;border-radius:6px;background:#fff}.module-card-meta{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;margin-bottom:5px;text-align:center}.module-card-meta>span{font-size:11px}.module-card-description{width:100%;line-height:1.5;overflow-wrap:anywhere;text-align:left}.relic-targets{grid-template-columns:repeat(auto-fill,minmax(310px,1fr))}.relic-target .module-detail-layout{display:block}
.card-upgrade-mark{display:inline-block;padding:1px 5px;border:1px solid #b57b13;border-radius:9px;background:#fff0bc;color:#704b08;font-size:11px;font-weight:700}.deck-help{margin:6px 0;color:#696158;font-size:12px}.deck-grid article{position:relative;padding-top:25px}.deck-source{position:absolute;right:7px;top:6px;max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#72520d;font-size:11px}.deck-pile{position:absolute;left:7px;top:6px;font-size:11px;font-weight:700;color:#506170}.deck-grid article.discarded-card{order:10;filter:grayscale(1);opacity:.52;background:#e3e3e3}.deck-grid article.exhausted-card{order:11;filter:grayscale(1);opacity:.62;background:#eadada;border-color:#a66}.deck-grid article.exhausted-card .deck-pile{color:#8b2525}
.hand-card{position:relative}.hand-card.unplayable .battle-card{filter:grayscale(1);opacity:.55}.unavailable-tooltip{display:none;position:absolute;z-index:40;left:50%;bottom:calc(100% + 7px);transform:translateX(-50%);width:190px;padding:8px;background:#171b21;border:1px solid #c66;border-radius:6px;color:#ffd7d7;pointer-events:none}.hand-card.unplayable:hover .unavailable-tooltip{display:block}
