body[data-screen=campaign]{background:#152f32}.campaign-world{max-width:660px;min-height:100dvh;margin:auto;padding:calc(18px + env(safe-area-inset-top)) 18px calc(24px + env(safe-area-inset-bottom));color:#f8ecd1;background:radial-gradient(ellipse at 80% 27%,#7e9d6470,transparent 55%),linear-gradient(#294b49,#16383a 65%,#172e35);isolation:isolate}.campaign-header{display:flex;align-items:center;gap:12px}.campaign-header div{flex:1}.campaign-header small{font:9px Georgia,serif;letter-spacing:.17em;color:#e9d7a1}.campaign-header h1{font:700 27px Georgia,'Noto Serif TC',serif;margin:7px 0 0;letter-spacing:.12em}.campaign-header button{width:39px;height:43px;border:1px solid #e3d6a355;border-radius:12px;background:#ffffff08;color:#e9dcb6}.campaign-header svg{width:19px;height:22px}.campaign-meta{display:flex;justify-content:space-between;border-block:1px solid #d2c48d38;margin-top:20px;padding:12px 1px;font-size:11px;color:#b7ccbb}.campaign-meta>span:last-child{text-align:right}.campaign-meta b{display:block;margin-top:5px;font-size:12px;color:#f1dfb2}.campaign-preview{font-size:10px;background:#dacb9340;padding:8px;border-radius:7px;margin:8px 0;color:#f5e4b4}.campaign-map{aspect-ratio:360/410;position:relative;overflow:hidden;margin:0 -10px;background:radial-gradient(ellipse at 50% 65%,#79967c40,transparent 65%)}.campaign-route{position:absolute;inset:0;width:100%;height:100%}.campaign-route path{fill:none;stroke:#dfc88eaa;stroke-width:3;stroke-dasharray:3 7;stroke-linecap:round}.map-tree{position:absolute;pointer-events:none;opacity:.4;filter:saturate(.55)}.map-tree.t1{height:51%;left:-21%;top:11%}.map-tree.t2{height:59%;right:-14%;top:39%;opacity:.35}.map-tree.t3{height:40%;left:23%;top:-22%;opacity:.23}.map-arch{position:absolute;width:43%;right:3%;top:-7%;opacity:.45}.campaign-node{position:absolute;left:var(--node-x);top:var(--node-y);transform:translate(-50%,-50%);width:50px;height:50px;border:1px solid #c6b885;border-radius:50%;color:#f5e5b8;background:radial-gradient(at 30% 20%,#53715e,#173c3f);box-shadow:0 5px 13px #122d35a8,inset 0 0 0 4px #cbbb7733;padding:0;z-index:1}.campaign-node span{font:22px Georgia,serif}.campaign-node b{position:absolute;white-space:nowrap;top:54px;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;text-shadow:0 1px 3px #102a2b,0 0 7px #102a2b}.campaign-node.locked{color:#9bad99;border-color:#859880;background:#284346}.campaign-node.locked b{color:#a5b9a7}.campaign-node.cleared{color:#d4e7b6;background:#426856}.campaign-node.selected{border:2px solid #ffe8a2;box-shadow:0 0 0 5px #e1bf6630,0 0 27px #e1bf6650}.campaign-node.selected span{color:#ffe8ad}.campaign-node:focus-visible{outline:3px solid #fff4ba;outline-offset:4px}.campaign-map-caption{position:absolute;bottom:6px;right:12px;font:10px Georgia,serif;letter-spacing:.12em;color:#b5c8a7}.campaign-detail{padding:18px;border:1px solid #d0bc7866;border-radius:17px;background:linear-gradient(125deg,#385852e8,#213f42f5);box-shadow:0 12px 26px #0822284d}.campaign-stage-title{display:flex;align-items:center;justify-content:space-between}.campaign-stage-title small{font-size:10px;letter-spacing:.08em;color:#dec893}.campaign-stage-title h2{font:700 24px Georgia,'Noto Serif TC',serif;margin:7px 0 0}.campaign-stage-title>span{font-size:9px;color:#bed0b7;text-align:right;line-height:1.6}.campaign-stage-title b{font:18px Georgia,serif;color:#f4dc9d}.campaign-detail p{font-size:12px;line-height:1.8;color:#d4ddc9;margin:13px 0}.campaign-rewards{display:grid;grid-template-columns:1fr 1fr 1.2fr;border-block:1px solid #ddcc8833;padding:11px 0;font-size:10px;color:#b4c8b3;gap:6px}.campaign-rewards b{display:block;font-size:12px;color:#f3d9a1;margin-top:4px}.campaign-detail .campaign-tip{font-size:11px;color:#e9dcad;padding-left:9px;border-left:2px solid #bbad74}.campaign-record{display:block;font-size:10px;color:#bbd2b9;margin:10px 0}.campaign-enter{width:100%;display:flex;justify-content:center;gap:14px;align-items:center;min-height:47px;margin-top:12px}.campaign-enter svg{height:19px;width:19px}.campaign-detail .campaign-mode{font-size:9px;color:#b6c8b0;margin-bottom:0;text-align:center}.campaign-next{display:flex;align-items:center;gap:10px;padding:19px 3px 4px;color:#bac8b6}.campaign-next>span{font:30px Georgia,serif;color:#bbad78}.campaign-next div{flex:1}.campaign-next b{font-size:11px}.campaign-next small{display:block;font-size:10px;line-height:1.7;margin-top:4px;color:#90ad9f}.campaign-next button{padding:8px 9px;background:#ffffff08;border:1px solid #d4c79755;color:#e5d9ac;border-radius:8px;font-size:11px}.campaign-loading{display:grid;place-items:center;min-height:70vh;color:#e8dcb7}@media(min-width:760px){.campaign-world{display:grid;grid-template-columns:1fr 1fr;max-width:1000px;gap:0 25px;align-content:start;padding:30px}.campaign-header,.campaign-meta,.campaign-next,.campaign-preview{grid-column:1/-1}.campaign-map{min-height:460px;align-self:center}.campaign-detail{align-self:center;margin:24px 0}}@media(prefers-reduced-motion:reduce){.campaign-node{transition:none}}

.campaign-node.node-1{--node-x:18%;--node-y:85%;}.campaign-node.node-2{--node-x:53%;--node-y:73%;}.campaign-node.node-3{--node-x:33%;--node-y:58%;}.campaign-node.node-4{--node-x:69%;--node-y:43%;}.campaign-node.node-5{--node-x:44%;--node-y:26%;}.campaign-node.node-6{--node-x:74%;--node-y:11%;}
.campaign-regions{display:flex;gap:8px;grid-column:1/-1;margin-top:18px}.campaign-regions button{flex:1;border:1px solid #a4c3b866;background:#173e46;color:#c4d9d0;padding:12px 4px;border-radius:12px;font-size:12px}.campaign-regions [aria-current=page]{background:linear-gradient(#f3e2b4,#ceb881);color:#344f53;border-color:#f0db9b;box-shadow:inset 0 0 0 3px #fff3cf55}.campaign-world[data-region=glasswater]{background:radial-gradient(ellipse at 70% 28%,#6dd4d35c,transparent 55%),linear-gradient(#245c70,#173f55 65%,#172e45)}.campaign-world[data-region=glasswater] .campaign-detail{background:linear-gradient(135deg,#35677be8,#244657f5)}.campaign-world[data-region=glasswater] .campaign-map{background:radial-gradient(ellipse,#65c9d82b,transparent 75%)}.campaign-preview-play{width:100%;margin-top:8px;font-size:12px}
