/* 星汉世界(3D 宫殿)的界面叠加层; 舞台 / 全屏 / 角落按钮的公共样式在 _game/stage.css */
.wd3{background:#140c08;touch-action:none}
.wd3-top{position:absolute;left:14px;right:14px;top:12px;display:flex;justify-content:space-between;align-items:flex-start;gap:12px;pointer-events:none}
.wd3-top>*{pointer-events:auto}
.wd3-where{display:flex;flex-direction:column;gap:2px;padding:8px 14px;border-radius:12px;background:rgba(20,8,10,.72);border:1px solid rgba(217,169,68,.45);color:#ffe3a3}
.wd3-where b{font-size:16px;letter-spacing:.06em}
.wd3-where small{font-size:12px;color:rgba(255,236,200,.75)}
.wd3-mapbox{position:absolute;z-index:7;left:50%;top:50%;transform:translate(-50%,-50%);padding:12px 14px 10px;border-radius:16px;background:linear-gradient(180deg,rgba(30,12,14,.96),rgba(12,6,8,.97));border:2px solid #d9a944;box-shadow:0 0 0 5px rgba(20,8,10,.7),0 0 0 6px rgba(217,169,68,.45),0 20px 60px rgba(0,0,0,.75);animation:wd3-fade .25s ease-out}
.wd3-mapbox[hidden]{display:none}
.wd3-mapbox__head{display:flex;align-items:center;gap:12px;margin:0 0 8px;color:#ffe3a3}
.wd3-mapbox__head b{font-size:16px;letter-spacing:.08em}
.wd3-mapbox__head small{flex:1;color:rgba(255,236,200,.7);font-size:12px}
.wd3-mapbox__close{width:28px;height:28px;border-radius:50%;border:1px solid rgba(217,169,68,.55);background:rgba(20,8,10,.6);color:#ffd166;cursor:pointer}
.wd3-mapbox__close:hover,.wd3-mapbox__close:focus-visible{background:rgba(217,169,68,.3);outline:none}
.wd3-map{display:block;border-radius:10px;cursor:crosshair;background:#0a0606}
.wd3-mapbox__legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px;color:rgba(255,236,200,.85);font-size:12px}
.wd3-mapbox__legend i{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:50%;vertical-align:-1px}
.wd3-mapbox__legend .wd3-lg-red{width:18px;height:4px;border-radius:2px;background:rgba(214,40,50,.85)}
.wd3-mapbox__legend .wd3-lg-me{width:0;height:0;border-radius:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:10px solid #fff}
.wd3-hint{position:absolute;left:14px;bottom:12px;margin:0;padding:6px 12px;border-radius:10px;background:rgba(20,8,10,.6);color:rgba(255,236,200,.85);font-size:13px;pointer-events:none}
.wd3-tip{position:absolute;z-index:4;padding:5px 10px;border-radius:8px;background:rgba(20,8,10,.88);border:1px solid rgba(217,169,68,.5);color:#fff3d6;font-size:13px;white-space:nowrap;pointer-events:none}
.wd3-tag{position:absolute;z-index:3;transform:translate(-50%,-120%);padding:2px 10px;border-radius:999px;background:rgba(20,8,10,.8);color:#ffd88a;font-size:13px;font-weight:700;white-space:nowrap;pointer-events:none}
.wd3-seat{position:absolute;left:50%;bottom:56px;transform:translateX(-50%);width:min(560px,calc(100% - 32px));padding:14px 18px;border-radius:14px;background:rgba(24,10,12,.92);border:1px solid rgba(217,169,68,.55);box-shadow:0 10px 40px rgba(0,0,0,.6);color:#fff3d6}
.wd3-seat>b{color:#ffd166;font-size:17px}
.wd3-seat p{margin:0 0 12px;font-size:15px;line-height:1.6}
.wd3-talk__btns,.wd3-seat .wd3-talk__btns{display:flex;gap:10px;flex-wrap:wrap}
/* ---- 和 NPC 对话: 游戏式对话框(头像 + 金色名牌 + 打字机文字 + 编号选项) ---- */
.wd3-vignette{position:absolute;inset:0;z-index:3;pointer-events:none;background:radial-gradient(ellipse at 50% 40%,transparent 45%,rgba(0,0,0,.55) 100%);animation:wd3-fade .35s ease-out}
.wd3-talk{position:absolute;z-index:6;left:50%;bottom:18px;transform:translateX(-50%);width:min(860px,calc(100% - 32px));display:grid;grid-template-columns:136px 1fr;grid-template-rows:1fr auto;column-gap:20px;row-gap:8px;padding:26px 24px 16px 18px;
  border-radius:16px;color:#fff6e2;background:linear-gradient(180deg,rgba(44,16,20,.95),rgba(14,6,9,.96));border:2px solid #d9a944;
  box-shadow:0 0 0 1px rgba(0,0,0,.6),0 0 0 5px rgba(20,8,10,.7),0 0 0 6px rgba(217,169,68,.5),0 18px 50px rgba(0,0,0,.7),0 0 36px rgba(217,169,68,.2);animation:wd3-talk-in .35s cubic-bezier(.2,.9,.3,1.2)}
.wd3-talk::before,.wd3-talk::after{content:"◆";position:absolute;top:-11px;color:#ffd166;font-size:15px;text-shadow:0 0 8px rgba(255,209,102,.8)}
.wd3-talk::before{left:-9px}.wd3-talk::after{right:-9px}
.wd3-talk__face{grid-row:1 / span 2;align-self:center;width:136px;height:136px;border-radius:12px;overflow:hidden;background:radial-gradient(circle at 50% 35%,#6a3a22,#1c0c0a 75%);border:3px solid #d9a944;box-shadow:inset 0 0 20px rgba(0,0,0,.7),0 0 16px rgba(217,169,68,.3);display:flex;align-items:center;justify-content:center}
.wd3-talk__face img{width:100%;height:100%;object-fit:cover}
.wd3-talk__faceph{font-size:48px;color:rgba(255,209,102,.5)}
.wd3-talk__plate{position:absolute;left:156px;top:-19px;display:flex;align-items:center;gap:10px;padding:5px 20px;border-radius:999px;background:linear-gradient(135deg,#fff0b8,#e6b04a 55%,#b47d22);color:#2a1300;box-shadow:0 4px 14px rgba(0,0,0,.5)}
.wd3-talk__plate b{font-size:17px;letter-spacing:.04em}
.wd3-talk__plate small{padding:2px 9px;border-radius:999px;background:rgba(42,19,0,.82);color:#ffe3a3;font-size:12px;font-weight:700}
.wd3-talk__body{position:relative;grid-column:2;cursor:pointer;min-height:78px;padding-bottom:20px}
.wd3-talk__line{margin:4px 0 0;font-size:clamp(16px,1.55vw,19px);line-height:1.75;letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.6)}
.wd3-talk__more{position:absolute;right:0;bottom:0;color:#ffd166;font-size:13px;animation:wd3-blink 1s steps(2) infinite}
.wd3-talk__more[hidden]{display:none}
.wd3-talk .wd3-talk__btns{grid-column:2;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;padding-top:10px;border-top:1px solid rgba(217,169,68,.22)}
.wd3-talk .wd3-talk__btns[hidden]{display:none}
.wd3-opt{display:inline-flex;align-items:center;gap:7px;padding:6px 14px 6px 6px;border-radius:999px;border:1px solid rgba(217,169,68,.55);background:linear-gradient(180deg,rgba(255,209,102,.16),rgba(217,169,68,.05));color:#ffe9b8;font:inherit;font-size:14px;font-weight:700;cursor:pointer;transition:background .15s,transform .15s,box-shadow .15s}
.wd3-opt b{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#d9a944;color:#2a1300;font-size:11px}
.wd3-opt--leave{color:rgba(255,233,184,.75);border-color:rgba(217,169,68,.3);background:transparent}
.wd3-opt--leave b{background:rgba(217,169,68,.45)}
.wd3-opt:hover,.wd3-opt:focus-visible{background:linear-gradient(180deg,rgba(255,209,102,.4),rgba(217,169,68,.15));transform:translateY(-2px);box-shadow:0 4px 12px rgba(217,169,68,.3);outline:none}
@keyframes wd3-talk-in{from{opacity:0;transform:translate(-50%,40px) scale(.96)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes wd3-fade{from{opacity:0}to{opacity:1}}
@keyframes wd3-blink{50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.wd3-talk,.wd3-vignette,.wd3-talk__more{animation:none}}
.wd3-btn{display:inline-flex;align-items:center;padding:7px 16px;border:0;border-radius:10px;cursor:pointer;font:inherit;font-weight:700;font-size:14px;color:#2a1700;background:linear-gradient(135deg,#ffd166,#f59e0b);text-decoration:none}
.wd3-btn--ghost{color:#ffd166;background:rgba(38,18,21,.9);border:1px solid rgba(245,158,11,.45)}
.wd3-btn:focus-visible{outline:2px solid #fff3d6;outline-offset:2px}
.wd3-toast{top:22%}
.wd3-loading{background:radial-gradient(circle at 50% 40%,#3a1a10,#0c0605 70%)}
.wd3-loading__k{margin:0;letter-spacing:.3em;font-size:12px;color:#d9a944}
.wd3-loading progress{width:min(320px,70%);accent-color:#d9a944}
@media (max-width:820px),(max-height:500px){.wd3-hint{display:none}.wd3-seat{bottom:12px}
  .wd3-talk{grid-template-columns:84px 1fr;padding:22px 14px 10px 10px;column-gap:12px;bottom:8px}.wd3-talk__face{width:84px;height:84px}.wd3-talk__plate{left:104px}.wd3-talk__body{min-height:56px}}
.wd3-go{position:absolute;right:14px;top:58px;z-index:5;display:grid;gap:4px;min-width:170px;padding:8px;border-radius:12px;background:rgba(20,8,10,.92);border:1px solid rgba(217,169,68,.5)}
.wd3-go__item{padding:8px 12px;border:0;border-radius:8px;background:transparent;color:#ffe3a3;font:inherit;font-size:14px;text-align:left;cursor:pointer}
.wd3-go__item:hover,.wd3-go__item:focus-visible{background:rgba(217,169,68,.2);outline:none}
