/* 施工图 V2 · 主城。All selectors belong to this mounted game scene. */
.iw-host{position:relative;flex:1;min-height:0;height:100%;width:100%;padding:0;overflow:hidden;background:#07151b}
.iw-world{--iw-gold:#d7b676;--iw-paper:#eee0bf;--iw-dark:#101a1bcc;position:relative;isolation:isolate;width:100%;height:100%;min-height:280px;overflow:hidden;color:var(--iw-paper);font-family:"Noto Serif SC","Songti SC","STSong","SimSun",serif;background:#09161b;overscroll-behavior:none}
.iw-world *{box-sizing:border-box}
.iw-world button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.iw-world button:focus-visible,.iw-viewport:focus-visible{outline:2px solid #ffe5aa;outline-offset:4px}
.iw-world button:disabled{cursor:wait}
.iw-world [hidden]{display:none!important}
.iw-atmosphere{position:absolute;inset:-30px;background-position:center;background-size:cover;filter:blur(18px) brightness(.52);transform:scale(1.03);z-index:-1}
.iw-viewport{position:absolute;inset:0;overflow:hidden;touch-action:pan-y;outline:none}
.iw-viewport.can-pan{cursor:grab;touch-action:none}
.iw-viewport.can-pan:active{cursor:grabbing}
.iw-stage{position:absolute;left:0;top:0;width:100%;height:100%;will-change:transform;transform-origin:top left;contain:layout}
.iw-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;max-width:none;user-select:none;-webkit-user-drag:none}
.iw-destinations{position:absolute;inset:0}
.iw-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#020c173d 0%,transparent 25%,transparent 73%,#020a1480 100%)}
.iw-header{position:absolute;inset:0 0 auto;display:flex;justify-content:space-between;align-items:flex-start;padding:calc(17px + env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) 0 max(16px,env(safe-area-inset-left,0px));pointer-events:none;z-index:4}
.iw-header button{pointer-events:auto}
.iw-round,.iw-tool{appearance:none;border:0;color:#e8d2a1;background:transparent;flex:none;display:flex;align-items:center;justify-content:center;position:relative;padding:0;box-shadow:none;min-width:44px;min-height:44px}
.iw-round{width:48px;height:48px;border:1px solid #d1b87a52;border-radius:50%;background:radial-gradient(circle at 35% 20%,#716b4b5c,#141a1de8 72%);box-shadow:0 3px 14px #0005}
.iw-round svg{width:30px;height:30px}
.iw-tools{display:flex;gap:12px;align-items:flex-start}
.iw-tool{flex-direction:column;gap:5px;width:46px;filter:drop-shadow(0 2px 4px #0009)}
.iw-tool svg{width:44px;height:44px;padding:10px;border:1px solid #d1b87a65;border-radius:50%;background:#141d20c9;box-shadow:inset 0 0 20px #e2cb7b0a}
.iw-tool span{font-size:13px;line-height:1.1;letter-spacing:1px;text-shadow:0 2px 4px #000}
.iw-tool:hover svg,.iw-round:hover{border-color:#e4c886;background-color:#283235e6}
.iw-tool[data-unread]:not([data-unread="0"]):after{content:"";position:absolute;right:2px;top:1px;width:9px;height:9px;border-radius:50%;background:#bf4e36;box-shadow:0 0 0 2px #17202a}
.iw-case-tag{position:absolute;right:max(17px,env(safe-area-inset-right,0px));top:calc(82px + env(safe-area-inset-top,0px));display:flex;align-items:center;gap:7px;min-height:34px;max-width:min(76%,350px);padding:6px 13px;appearance:none;border:0;color:#302d25;background:linear-gradient(90deg,#e0cda3,#f2e4c9 30%,#e7d6b4);box-shadow:0 3px 10px #0004;clip-path:polygon(2% 0,97% 3%,100% 18%,98% 35%,100% 58%,98% 81%,99% 98%,4% 100%,1% 86%,2% 67%,0 45%,2% 24%,0 9%);z-index:3;text-align:left}
.iw-case-tag:after{content:"卷";font-size:13px;border:1px solid #934832bd;color:#934832;line-height:1.1;padding:2px;transform:rotate(-5deg);margin-left:3px}
.iw-case-label{font-size:12px;letter-spacing:1px;white-space:nowrap}
.iw-case-tag strong{font-size:15px;font-weight:600;letter-spacing:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.iw-stop{position:absolute;transform:translate(-50%,-50%);width:48px;display:grid;place-items:center;z-index:2}
.iw-sign{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;width:44px;min-width:44px;max-width:44px;min-height:88px;padding:10px 5px 11px;border:0;background:linear-gradient(130deg,#f0d395,#8c6536 48%,#d6ae61);color:#f1ddba;filter:drop-shadow(0 4px 5px #0008);clip-path:polygon(50% 0,70% 4%,79% 4%,86% 9%,96% 14%,100% 24%,100% 77%,96% 88%,87% 93%,72% 94%,50% 100%,29% 95%,14% 94%,3% 87%,0 76%,0 24%,4% 14%,13% 9%,22% 5%,32% 4%);transition:filter .18s ease}
.iw-sign:before{content:"";position:absolute;inset:1px;background:linear-gradient(110deg,#191f1ceF,#121c20f5 70%);clip-path:inherit;pointer-events:none}
.iw-sign svg{position:relative;width:18px;height:18px;flex:none;z-index:1}
.iw-sign-name{position:relative;writing-mode:vertical-rl;text-orientation:upright;font-size:14px;line-height:1.12;letter-spacing:1px;white-space:nowrap;text-shadow:0 1px 2px #000;z-index:1}
.iw-stop:after{content:"";position:absolute;width:9px;height:9px;background:#f6d188;transform:rotate(45deg);bottom:-14px;box-shadow:0 0 10px #f5b23ba8,0 0 19px #ffaf392e;pointer-events:none}
.iw-sign:hover,.iw-sign:focus-visible{filter:drop-shadow(0 0 7px #ffd486b3);color:#fff1d0}
.iw-sign:focus-visible{outline:none}
.iw-stop.is-current .iw-sign{background:linear-gradient(110deg,#fff1c7,#b77b3c);color:#fff2d4;filter:drop-shadow(0 0 8px #ffc56a66)}
.iw-stop.is-current:after{background:#fff2bf;box-shadow:0 0 10px #ffc970}
.iw-sign[aria-busy=true]{filter:drop-shadow(0 0 9px #ffdd9a)}
.iw-sign[disabled]:not([aria-busy=true]){opacity:.72}
.iw-hint{position:absolute;left:max(20px,env(safe-area-inset-left,0px));right:max(20px,env(safe-area-inset-right,0px));bottom:calc(21px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;justify-content:center;gap:9px;margin:0;font-size:12px;line-height:1.7;letter-spacing:.5px;color:#f0ddba;text-align:center;text-shadow:0 2px 4px #000,0 0 9px #000;pointer-events:none;z-index:2}
.iw-hint:before,.iw-hint:after{content:"";height:1px;flex:1;max-width:38px;min-width:7px;background:linear-gradient(90deg,transparent,#c4a46d)}
.iw-hint:after{transform:rotate(180deg)}
.iw-hint svg{width:20px;height:20px;flex:none;color:#d7b676}
.iw-status{position:absolute;left:50%;bottom:calc(69px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);max-width:calc(100% - 36px);width:max-content;background:#0e1b20ed;border:1px solid #c1a06d80;border-radius:3px;padding:10px 15px;font-family:system-ui,sans-serif;font-size:12px;line-height:1.6;text-align:center;color:#f3dfba;box-shadow:0 4px 24px #0006;z-index:5}
.iw-status.is-error{color:#ffe0c8;border-color:#b77b5d;background:#2d201bed}
.iw-retry{display:block;margin:7px auto 0;min-width:88px;min-height:44px;color:#eed7ac;border:1px solid #bda478;border-radius:3px;background:#182428;padding:7px 12px}
.iw-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:760px){.iw-header{padding:24px 30px 0}.iw-tools{gap:18px}.iw-tool{width:52px}.iw-tool svg{width:50px;height:50px;padding:12px}.iw-tool span{font-size:14px}.iw-round{width:52px;height:52px}.iw-case-tag{right:30px;top:112px}.iw-hint{font-size:13px;bottom:25px}.iw-sign-name{font-size:15px}.iw-sign{width:47px;max-width:47px;padding-top:10px;padding-bottom:12px}.iw-stop{width:52px}}
@media(max-width:359px){.iw-header{padding-left:11px;padding-right:11px}.iw-tools{gap:7px}.iw-round{width:44px;height:44px}.iw-tool{width:44px}.iw-case-tag{right:12px;gap:5px;padding:7px 10px}.iw-case-label{font-size:11px}.iw-case-tag strong{font-size:13px}.iw-hint{font-size:11px;gap:6px;left:15px;right:15px}}
@media(max-height:600px){.iw-header{padding-top:max(10px,env(safe-area-inset-top,0px))}.iw-round{width:44px;height:44px}.iw-tool svg{width:40px;height:40px;padding:9px}.iw-case-tag{left:14px;right:auto;top:78px;min-height:32px;max-width:60%;padding-top:5px;padding-bottom:5px}.iw-sign{min-height:82px;gap:4px;padding-top:10px;padding-bottom:10px}.iw-sign svg{width:18px;height:18px}.iw-sign-name{font-size:14px;letter-spacing:1px}.iw-hint{bottom:max(12px,env(safe-area-inset-bottom,0px));font-size:11px}.iw-status{bottom:53px}}
@media(prefers-reduced-motion:reduce){.iw-sign{transition:none}}
/* m28: panorama where the viewport needs it; reachable public places on every screen. */
.iw-world{--iw-paper:#ead7b0}
.iw-atmosphere{filter:blur(15px) brightness(.56)}
.iw-vignette{background:linear-gradient(180deg,#0311194d,transparent 26%,transparent 72%,#03101896),radial-gradient(ellipse at 50% 50%,transparent 45%,#03101844)}
.iw-header{padding-top:calc(20px + env(safe-area-inset-top,0px))}
.iw-case-tag{background-image:url('/assets/m28/paper-texture.webp');background-size:cover;background-color:#e9d8b8}
.iw-wayfinder{position:absolute;z-index:3;left:max(18px,env(safe-area-inset-left));bottom:calc(70px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:8px;padding:9px 13px;min-height:44px;color:#e4c798;background:#142022d9;border:1px solid #af8e525e;border-radius:2px;box-shadow:0 3px 15px #0005;font-size:14px;letter-spacing:.08em}
.iw-wayfinder svg{width:20px;height:20px}.iw-wayfinder[aria-expanded=true]{background:#3d3b2c;color:#f0dbac;border-color:#d3ae66}
.iw-routes{position:absolute;z-index:6;left:max(18px,env(safe-area-inset-left));bottom:calc(123px + env(safe-area-inset-bottom));width:min(320px,calc(100% - 36px));max-height:calc(100% - 205px);display:flex;flex-direction:column;background:linear-gradient(120deg,#1e2a27f7,#0c1b1ef7);border:1px solid #ae8c53;box-shadow:0 12px 38px #0009,inset 0 0 0 3px #b59a5e1f;color:#e4cda7}
.iw-routes-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 13px 9px 19px;border-bottom:1px solid #a1854c55}.iw-routes-head h2{margin:0;font-family:'STKaiti','KaiTi','SimSun',serif;font-size:23px;font-weight:400;letter-spacing:.14em}.iw-routes-close{width:44px;height:44px;background:none;border:0;color:#e4cda7;font-size:27px}.iw-route-list{overflow:auto;min-height:0;padding:6px 14px 10px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#aa8b54 transparent}.iw-route{display:flex;align-items:center;gap:13px;width:100%;min-height:62px;padding:11px 4px;color:#e4cda7;background:none;border:0;border-bottom:1px solid #a58a5438;text-align:left;line-height:1.5}.iw-route:last-child{border:0}.iw-route>svg{width:22px;height:22px;color:#bb9c64;flex:none}.iw-route-copy{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.iw-route-copy strong{font-weight:400;font-size:17px;letter-spacing:.1em}.iw-route-copy small{font-size:12px;color:#b8aa8b;white-space:normal;overflow-wrap:anywhere}.iw-route-arrow{font-size:24px;color:#bba16c}.iw-route:hover,.iw-route[aria-current]{color:#ffe5b4;background:#ba975711}
.iw-hint{font-size:13px;letter-spacing:.05em;bottom:calc(24px + env(safe-area-inset-bottom));color:#e5d1ac}
@media(min-aspect-ratio:6/5){.iw-world[data-map=panorama] .iw-art{object-fit:fill}.iw-header{padding-left:32px;padding-right:32px}.iw-case-tag{right:32px}.iw-wayfinder{left:32px;bottom:33px}.iw-routes{left:32px;bottom:91px;max-height:calc(100% - 180px)}.iw-hint{left:160px;right:160px}.iw-stop{width:54px}.iw-sign{width:48px;max-width:48px;min-height:93px}.iw-sign-name{font-size:15px}}
@media(max-width:380px){.iw-tools{gap:7px}.iw-world .iw-case-tag{max-width:76%}.iw-hint{font-size:11px;left:16px;right:16px}.iw-wayfinder{font-size:13px;padding:8px 11px}.iw-routes{width:calc(100% - 36px)}}
@media(max-height:550px){.iw-routes{bottom:76px;max-height:calc(100% - 135px)}.iw-routes-head{padding-top:0;padding-bottom:0}.iw-wayfinder{bottom:20px}.iw-route{min-height:52px}.iw-hint{bottom:20px;left:140px;right:140px}.iw-route-copy small{font-size:11px}}
