.station-marker.npc-marker{border:0;background:transparent;box-shadow:none;min-width:86px;transform:translate(-50%,-50%);border-radius:35%;padding:0;z-index:2;cursor:pointer}.npc-marker .pin{position:absolute;right:0;top:18px;width:25px;height:21px;border-radius:9px;background:#122e2ae8;color:#f1d397;font:600 15px Georgia;box-shadow:0 2px 14px #04131066}.npc-marker .pin-label{position:absolute;top:-14px;left:50%;transform:translateX(-50%);display:block;max-width:240px;white-space:nowrap;background:#102a26ee;color:#ebd29b;border:1px solid #aa8b4d77;border-radius:4px;padding:4px 9px;font-size:11px;letter-spacing:.01em;opacity:1}.npc-marker:hover,.npc-marker:focus-visible{outline:1px solid #eed699;filter:drop-shadow(0 0 12px #dfbb6255)}.npc-marker:hover .pin-label{background:#765b2b;color:#fff5da}
#npcDialog{width:min(940px,94vw);background:linear-gradient(135deg,#143a33,#0a2421);color:#f2e7ce;border:1px solid #b79c59;max-height:91vh}#npcDialog h2{font-family:Georgia;font-size:31px;margin:7px 0}#npcDialog .panel-top{border-bottom:1px solid #cdb57644}.npc-body{display:grid;grid-template-columns:210px 1fr;gap:30px;padding:26px 32px}.npc-portrait-frame{background:radial-gradient(ellipse at center,#79633266,transparent 68%);align-self:start;position:sticky;top:0}.npc-portrait-frame img{display:block;max-height:340px;width:100%;object-fit:contain}#npcText{font-size:18px;line-height:1.65;margin:0 0 15px}#npcBasis{color:#d7b974;font-size:10px;letter-spacing:.13em;line-height:1.65;border-left:2px solid #cdb576;padding-left:12px}#npcRecords{display:grid;gap:7px;margin:21px 0}#npcRecords button{padding:11px 13px;text-align:left;border:1px solid #9a815351;border-radius:5px;background:#ffffff08;color:#f2e7ce;font-size:13px;line-height:1.4}#npcRecords button:hover{background:#bc9c4828;border-color:#ceb66f}#npcContinue{margin-top:6px}.clean-mode .npc-marker .pin-label{opacity:0}.clean-mode .npc-marker:hover .pin-label{opacity:1}@media(max-width:650px){.npc-body{grid-template-columns:95px 1fr;gap:14px;padding:19px}.npc-portrait-frame img{max-height:180px}#npcText{font-size:15px}#npcDialog h2{font-size:23px}.npc-marker .pin-label{font-size:9px;padding:3px 5px}}
#game .npc-marker .pin-label{top:-34px;margin-top:0}.npc-marker:after{display:none}

/* Opening research route: visible slide ranges, distinct optional activities. */
.opening-record .pin{width:76px;height:36px;border-radius:18px;font-size:15px;font-weight:bold}
.opening-record .pin-label,.opening-gate .pin-label,.opening-optional .pin-label{opacity:1}
.opening-record .pin-label{font-size:12px;padding:5px 10px;margin-top:6px}
.opening-record.viewed .pin:after{right:-6px;top:-5px}
.opening-gate .pin-label{color:#f5dfa9;font-size:11px;font-weight:600}
.opening-optional .pin-label{font-size:10px;color:#bfc9bc;border-color:#8e9c8255;background:#142a24e8;white-space:nowrap;max-width:none}
#npcStartArchive{margin-top:5px}
.opening-character .pin-label{display:none}

/* Roaming workshop crew: keep the scenery clear; names appear on approach/hover. */
#game[data-room="workshop"] .npc-marker[data-roaming] .pin-label{opacity:0}
#game[data-room="workshop"] .npc-marker[data-roaming]:hover .pin-label,#game[data-room="workshop"] .npc-marker[data-roaming]:focus-visible .pin-label{opacity:1}
#game[data-room="workshop"] .npc-marker[data-roaming] .pin{font-size:11px;width:21px;height:16px;opacity:.7}

/* Scribe names appear on hover; their writing stays unobstructed. */
#game[data-room="citadel"] .npc-marker[data-scribe] .pin-label{opacity:0}
#game[data-room="citadel"] .npc-marker[data-scribe]:hover .pin-label,#game[data-room="citadel"] .npc-marker[data-scribe]:focus-visible .pin-label{opacity:1}
#game[data-room="citadel"] .npc-marker[data-scribe] .pin{font-size:10px;width:19px;height:16px;opacity:.6;top:0}
#game[data-room="summit"] [data-npc="summit-mira"] .pin-label,#game[data-room="summit"] [data-npc="summit-astrid"] .pin-label{left:auto;right:0;transform:none}
#game[data-room="summit"] [data-npc="summit-mira"],#game[data-room="summit"] [data-npc="summit-astrid"]{min-width:0;width:clamp(24px,2.4vw,42px)!important}
#game[data-room="summit"] [data-npc="summit-mira"] .pin-label,#game[data-room="summit"] [data-npc="summit-astrid"] .pin-label{opacity:0}
#game[data-room="summit"] [data-npc="summit-mira"]:is(:hover,:focus-visible) .pin-label,#game[data-room="summit"] [data-npc="summit-astrid"]:is(:hover,:focus-visible) .pin-label{opacity:1}
