/* Region map pins and the readable world route map. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body #map-panel{overflow:auto;overscroll-behavior:contain}
body #map-panel:not(.region-map-mode) #map-viewport{height:clamp(210px,calc((min(940px,96vw) - 34px) * .65),49dvh);background:var(--ui-panel-a40-map-panel-region-map-mode-map-viewport-background)}
body #map-panel #world-map:not(.actual-region-map){width:1280px;min-width:1280px;height:750px;background:radial-gradient(ellipse at 20% 65%,var(--ui-panel-a40-map-panel-world-map-actual-region-map-background),transparent 55%),radial-gradient(ellipse at 80% 25%,var(--ui-panel-a40-map-panel-world-map-actual-region-map-background-2),transparent 55%),var(--ui-panel-a40-map-panel-world-map-actual-region-map-background-3)}
body.pack-ui #map-panel #world-map:not(.actual-region-map) .map-place{width:150px;height:62px;min-height:0;padding:7px 9px;border:1px solid var(--ui-panel-a40-map-panel-world-map-actual-region-map-border);border-radius:10px;background:var(--ui-panel-a40-map-panel-world-map-actual-region-map-background-4);box-shadow:0 2px 0 var(--ui-panel-a40-map-panel-world-map-actual-region-map-shadow);display:grid;grid-template-columns:24px 1fr;grid-template-rows:1fr 16px;gap:3px 7px;place-items:center;box-sizing:border-box}
body #map-panel #world-map .map-place strong,body #map-panel #world-map .map-visit-state{display:none}
body #map-panel #world-map .map-dot{width:24px;height:24px;border:3px dashed var(--ui-panel-a40-map-panel-world-map-map-dot-border);background:var(--ui-panel-a40-map-panel-world-map-map-dot-background);box-sizing:border-box;box-shadow:none;display:grid;place-items:center}
body #map-panel #world-map .visited .map-dot{background:var(--ui-panel-a40-map-panel-world-map-visited-background);border:3px solid var(--ui-panel-a40-map-panel-world-map-visited-border)}
body #map-panel #world-map .current .map-dot{background:var(--ui-panel-a40-map-panel-world-map-current-background);border:3px solid var(--ui-panel-a40-map-panel-world-map-current-border);box-shadow:0 0 0 5px var(--ui-panel-a40-map-panel-world-map-current-shadow);width:30px;height:30px}
body #map-panel #world-map .selected .map-dot{outline:4px solid var(--ui-panel-a40-map-panel-world-map-selected-focus);outline-offset:4px}
body #map-panel #world-map .map-mark{font:15px/1 system-ui;color:var(--ui-panel-a40-map-panel-world-map-map-mark-text)}
body #map-panel #world-map:not(.actual-region-map) .map-dot{width:22px;height:22px;border-width:2px;grid-row:1/3}
body #map-panel #world-map:not(.actual-region-map) .current .map-dot{width:24px;height:24px}
body #map-panel #world-map:not(.actual-region-map) .map-place strong{display:block;font:600 15px/1.25 system-ui;color:var(--ui-panel-a40-map-panel-world-map-actual-region-map-text);text-shadow:none;white-space:normal;word-break:keep-all;text-decoration:none;text-align:left;justify-self:start}
body #map-panel #world-map:not(.actual-region-map) .map-visit-state{display:block;white-space:nowrap;font:11px/1.2 system-ui;color:var(--ui-panel-a40-map-panel-world-map-actual-region-map-text-2);justify-self:start}
body.pack-ui #map-panel #world-map:not(.actual-region-map) .current{background:var(--ui-panel-a40-map-panel-world-map-actual-region-map-background-5);border-color:var(--ui-panel-a40-map-panel-world-map-actual-region-map-border-color)}
body.pack-ui #map-panel #world-map:not(.actual-region-map) .selected{border:2px solid var(--ui-panel-a40-map-panel-world-map-actual-region-map-border-2);box-shadow:0 0 0 3px var(--ui-panel-a40-map-panel-world-map-actual-region-map-shadow-2)}
body #map-panel #world-map:not(.actual-region-map) .selected .map-dot{outline:none}
body #map-panel #world-map:not(.actual-region-map) .map-place:focus-visible{outline:3px solid var(--ui-panel-a40-map-panel-world-map-actual-region-map-focus);outline-offset:4px}
body #map-panel #world-map .map-people{position:absolute;inset:auto 6px 5px auto;display:block;width:max-content;height:18px;min-width:22px;min-height:0;padding:2px 4px;transform:none;box-sizing:border-box;border:1px solid var(--ui-panel-a40-map-panel-world-map-map-people-border);border-radius:12px;background:var(--ui-panel-a40-map-panel-world-map-map-people-background);color:var(--ui-panel-a40-map-panel-world-map-map-people-text);font:700 12px/1 system-ui;text-align:center;white-space:nowrap}
body #map-panel #world-map .map-people.has-people{background:var(--ui-panel-a40-map-panel-world-map-map-people-background-2);border-color:var(--ui-panel-a40-map-panel-world-map-map-people-border-color);color:var(--ui-panel-a40-map-panel-world-map-map-people-text-2)}
body #map-panel #world-map .map-people.self{background:var(--ui-panel-a40-map-panel-world-map-map-people-background-3);border-color:var(--ui-panel-a40-map-panel-world-map-map-people-border-color-2);color:var(--ui-panel-a40-map-panel-world-map-map-people-text-2)}
body #map-panel #world-map .party-dot{font:16px/1 system-ui;color:var(--ui-panel-a40-map-panel-world-map-party-dot-text)}
body #map-panel #world-map .party-dot.self{color:var(--ui-panel-a40-map-panel-world-map-party-dot-text-2)}
body #map-panel #world-map line.warp{display:none}
body #map-panel #world-map line{stroke-width:.35;stroke:var(--ui-panel-a40-map-panel-world-map-stroke);stroke-dasharray:.7 .7}
body #map-panel #world-map line.visited{stroke:var(--ui-panel-a40-map-panel-world-map-visited-stroke);stroke-dasharray:none}
body #map-panel #world-map line.selected{stroke:var(--ui-panel-a40-map-panel-world-map-selected-stroke);stroke-width:.55;stroke-dasharray:none;opacity:1}
body #map-panel #world-map line.map-road-halo{stroke:var(--ui-panel-a40-map-panel-world-map-map-road-halo-stroke);stroke-width:1.05;stroke-dasharray:none;opacity:1}
body #map-panel .map-layout{display:block;height:clamp(180px,58dvh,580px);min-height:0}
body #map-panel:not(.region-map-mode) .map-layout #map-viewport,body.desktop-ui #map-panel:not(.region-map-mode) .map-layout #map-viewport{height:100%;min-height:0;box-sizing:border-box}
body #map-panel #map-quests{min-width:0;padding:0 12px 12px;border-radius:8px;background:var(--ui-panel-a40-map-panel-map-quests-background);color:var(--ui-panel-a40-map-panel-map-quests-text);font-size:13px}
body #map-panel .map-quests-title{margin:0;padding:10px 0;font-size:15px;line-height:1.4}
body #map-panel .quest-card{margin:8px 0;padding:10px;border:1px solid var(--ui-panel-a40-map-panel-quest-card-border);border-radius:7px;background:var(--ui-panel-a40-map-panel-quest-card-background);color:var(--ui-panel-a40-map-panel-quest-card-text)}
body #map-panel .quest-card summary{display:block;cursor:pointer;list-style:none}
body #map-panel .quest-card summary::before{content:'▸';float:right}
body #map-panel .quest-card[open] summary::before{content:'▾'}
body #map-panel .quest-card h3{margin:0 0 5px;font-size:14px;line-height:1.4;color:var(--ui-panel-a40-map-panel-quest-card-text-2)}
body #map-panel .quest-card p{font-size:12px;line-height:1.5;margin:6px 0;overflow-wrap:anywhere}
body #map-panel .quest-card .quest-state{font-size:11px;color:var(--ui-panel-a40-map-panel-quest-card-quest-state-text)}
body #map-panel .quest-card .quest-state.active{color:var(--ui-panel-a40-map-panel-quest-card-quest-state-text-2);font-weight:700}
body #map-panel .quest-card .quest-lock{color:var(--c-warning-a40-map-panel-quest-card-quest-lock-text)}
body #map-panel .quest-card .quest-step{display:flex;gap:8px;justify-content:space-between;color:var(--ui-panel-a40-map-panel-quest-card-quest-step-text)}
body #map-panel .quest-step b{white-space:nowrap}
body #map-panel .quest-card small{display:block;max-width:none;width:auto;min-width:0;font-size:12px;color:var(--ui-panel-a40-map-panel-quest-card-text-3)}
body #map-panel .map-completed{margin-top:12px;font-size:12px}
body #map-panel .world-map-hint{margin:5px 0 8px;font-size:12px;color:var(--ui-panel-a40-map-panel-world-map-hint-text)}
body #map-panel .map-zoom-tools{display:flex;gap:5px}
body #map-panel .map-zoom-tools button{font-size:12px;min-height:32px;padding:4px 8px}
body:not(.desktop-ui) #map-panel button{min-height:44px}
body #map-panel.region-map-mode .map-layout{display:block;height:auto}
body #map-panel.region-map-mode .world-map-hint,body #map-panel.region-map-mode .world-map-legend,body #map-panel.region-map-mode #party-list{display:none}
body #map-panel .map-footer{display:flex;align-items:center;justify-content:space-between;gap:10px}
@media(max-width:700px){body #map-panel .map-layout{height:46dvh;min-height:200px}body #map-panel .map-tools{flex-wrap:wrap}}
/* Keep the interactive overlay above the terrain canvas at every zoom. */
body #map-panel #world-map.actual-region-map{isolation:isolate}
body #map-panel .region-map-picture{position:relative;z-index:0}
body #map-panel .region-map-markers{z-index:1}
body #map-panel #world-map .region-map-marker{width:32px;height:32px;min-width:0;min-height:0;padding:0;border:0;pointer-events:auto;transform:translate(-50%,-50%) scale(var(--pin-scale,1));background:none;display:grid;place-items:center;touch-action:none}
body #map-panel #world-map .region-map-marker i{position:static;width:13px;height:13px;background:var(--ui-panel-a40-map-panel-world-map-region-map-marker-background);border:2px solid var(--ui-panel-a40-map-panel-world-map-region-map-marker-border);box-shadow:0 0 0 1px var(--ui-panel-a40-map-panel-world-map-region-map-marker-shadow);border-radius:50%}
body #map-panel #world-map .region-map-marker.exit i{background:var(--ui-panel-a40-map-panel-world-map-region-map-marker-background-2);border-color:var(--ui-panel-a40-map-panel-world-map-region-map-marker-border-color);border-radius:3px;transform:rotate(45deg)}
body #map-panel #world-map .region-map-marker.self i{background:var(--ui-panel-a40-map-panel-world-map-region-map-marker-background-3);border-color:var(--ui-panel-a40-map-panel-world-map-region-map-marker-border-color-2)}
body #map-panel #world-map .region-map-marker.peer i{background:var(--ui-panel-a40-map-panel-world-map-region-map-marker-background-4);border-color:var(--ui-panel-a40-map-panel-world-map-region-map-marker-border-color-3)}
body #map-panel #world-map .region-map-marker[aria-pressed=true] i{outline:2px solid var(--ui-panel-a40-map-panel-world-map-region-map-marker-true-focus);outline-offset:2px}
body #map-panel #map-detail{font-size:13px;min-height:38px}
body #map-panel #party-list{font-size:13px;line-height:1.5;padding:10px 12px;margin:8px 0;background:var(--ui-panel-a40-map-panel-party-list-background);border:1px solid var(--ui-panel-a40-map-panel-party-list-border);border-radius:10px}
body #map-panel .map-presence-title{font-size:14px;margin:0 0 6px;color:var(--ui-panel-a40-map-panel-map-presence-title-text);overflow-wrap:anywhere}
body #map-panel .map-presence-empty{margin:0;color:var(--ui-panel-a40-map-panel-map-presence-empty-text)}
body #map-panel .map-presence-list{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
body #map-panel .map-presence-list li{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;padding:7px 10px;border-radius:7px;background:var(--ui-panel-a40-map-panel-map-presence-list-background);max-width:100%;box-sizing:border-box;overflow-wrap:anywhere;color:var(--ui-panel-a40-map-panel-map-presence-list-text)}
body #map-panel .map-presence-list li.self{background:var(--ui-panel-a40-map-panel-map-presence-list-self-background)}
body #map-panel .map-presence-list small{width:100%;font-size:12px;color:inherit;opacity:1}
body #map-panel .world-map-legend{font-size:12px;line-height:1.7;color:var(--ui-panel-a40-map-panel-world-map-legend-text)}
body #map-panel #map-summary{font-size:11px;line-height:1.5}
body #map-panel #map-center{font-size:12px}
body #dialogue{width:min(560px,calc(100vw - 24px));max-height:42dvh}
body #dialogue .dialogue-copy{min-width:0}
body #dialogue #dialogue-text{font-size:15px;line-height:1.75;min-height:3.5em;white-space:pre-line;text-shadow:none;overflow-wrap:anywhere}
body #dialogue #dialogue-quest,body #dialogue #dialogue-training{display:none}
body #dialogue .dialogue-actions{justify-content:flex-end}
body .appearance-fields input[type=color]{width:100%;height:36px;border:1px solid var(--ui-panel-a40-appearance-fields-border);border-radius:6px;padding:3px;background:var(--ui-panel-a40-appearance-fields-background)}
body #stat-dice{grid-column:1/-1;width:100%;padding:10px 0}
body #stat-dice h3{font-size:15px;margin:0 0 4px}
body #stat-dice p{font-size:11px;margin:0 0 8px}
body #stat-dice .dice-values{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
body #stat-dice .dice-values span{display:grid;place-items:center;background:var(--ui-panel-a40-stat-dice-dice-values-background);border-radius:8px;padding:6px;color:var(--ui-panel-a40-stat-dice-dice-values-text)}
body #stat-dice small{font-size:11px}
body #stat-dice .dice-values small{color:var(--ui-panel-a40-stat-dice-dice-values-text);opacity:1}
body #stat-dice b{font-size:22px}
body #stat-reroll{width:100%;margin-top:7px;font-size:13px;min-height:36px}
body #stat-dice[hidden]{display:none}

body #map-panel #world-map .region-map-marker.exit.coop-locked i{background:var(--ui-panel-a40-map-panel-world-map-region-map-marker-background-5);border-color:var(--ui-panel-a40-map-panel-world-map-region-map-marker-border-color-4)}
/* Themed atlas islands. Locked regions retain their geography. */
body #map-panel #world-map .continent-band{position:absolute;box-sizing:border-box;pointer-events:none}
body #map-panel #world-map .continent-terrain{position:absolute;inset:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 5px 3px var(--ui-panel-a40-map-panel-world-map-continent-terrain-filter))}
body #map-panel .terrain-coast{fill:color-mix(in srgb,var(--continent-color) 27%,var(--c-continent-a40-map-panel-terrain-coast-fill));stroke:color-mix(in srgb,var(--continent-color) 70%,var(--c-continent-a40-map-panel-terrain-coast-stroke));stroke-width:2}
body #map-panel .terrain-river{fill:none;stroke:var(--c-continent-a40-map-panel-terrain-river-stroke);stroke-width:8;opacity:.22}
body #map-panel .terrain-landmark{fill:var(--continent-color);stroke:var(--c-continent-a40-map-panel-terrain-landmark-stroke);stroke-width:1;opacity:.55}
body #map-panel [data-continent=demon] .terrain-river{stroke:var(--c-continent-a40-map-panel-terrain-river-demon-stroke);stroke-width:5}
body #map-panel [data-continent=edge] .terrain-coast{fill:var(--c-continent-a40-map-panel-terrain-coast-edge-fill)}
body #map-panel [data-continent=beyond] .terrain-river{stroke:var(--c-continent-a40-map-panel-terrain-river-beyond-stroke);stroke-dasharray:8 10}
body #map-panel .continent-band.level-locked .terrain-coast{stroke-dasharray:6 4}
body #map-panel .continent-band-heading{position:relative;display:table;margin:26px auto 0;max-width:calc(100% - 64px);padding:6px 14px;border-bottom:2px solid var(--continent-color);border-radius:14px;background:var(--ui-panel-a40-map-panel-continent-band-heading-background);font:600 18px/1.5 system-ui;color:var(--ui-panel-a40-map-panel-continent-band-heading-text);white-space:normal;overflow-wrap:anywhere;text-align:center}
body #map-panel #world-map:not(.actual-region-map)>svg{z-index:0;pointer-events:none}
body #map-panel #world-map:not(.actual-region-map) line{vector-effect:non-scaling-stroke;stroke-width:2;stroke-dasharray:5 5}
body #map-panel #world-map:not(.actual-region-map) line.map-road-halo{stroke-width:6;stroke-dasharray:none}
body #map-panel #world-map:not(.actual-region-map) line.selected{stroke-width:3;stroke-dasharray:none}
body.pack-ui #map-panel #world-map:not(.actual-region-map) .continent-entry{border:2px solid var(--ui-panel-a40-map-panel-world-map-actual-region-map-border-3)}
body .continent-heading{font:600 13px/1.5 system-ui;color:var(--ui-panel-a40-continent-heading-text);margin:12px 0 6px;overflow-wrap:anywhere}
body #map-panel .continent-directory{padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--ui-panel-a40-map-panel-continent-directory-border-bottom)}
body #map-panel .level-recommendation{padding:8px;margin-bottom:8px;border:1px solid var(--ui-panel-a40-map-panel-level-recommendation-border);border-radius:6px;background:var(--ui-panel-a40-map-panel-level-recommendation-background);color:var(--ui-panel-a40-map-panel-level-recommendation-text)}
body #map-panel .level-recommendation>p{margin:0 0 6px;font:600 13px/1.5 system-ui;color:var(--ui-panel-a40-map-panel-level-recommendation-text)}
body #map-panel .continent-location{font:600 13px/1.6 system-ui;margin:8px 0;color:var(--ui-panel-a40-map-panel-continent-location-text);overflow-wrap:anywhere}
body #map-panel .continent-condition,body #map-panel .continent-empty{font:12px/1.5 system-ui;color:var(--ui-panel-a40-map-panel-continent-condition-map-panel-text);margin:6px 0}
body #map-panel .continent-region-group{border-bottom:1px solid var(--ui-panel-a40-map-panel-continent-region-group-border-bottom);padding:2px 0 6px}
body #map-panel .continent-region-group>.continent-heading{cursor:pointer;min-height:44px;box-sizing:border-box;padding:10px 2px;margin:0}
body #map-panel .continent-region-group.level-locked>.continent-heading{color:var(--c-warning-a40-map-panel-continent-region-group-level-locked-text)}
body.pack-ui #map-panel .continent-region,body.pack-ui #map-panel .continent-next{display:block;box-sizing:border-box;width:100%;height:auto;min-height:44px;margin:3px 0;padding:8px;border:1px solid var(--ui-panel-a40-map-panel-continent-region-map-panel-border);border-image:none;border-radius:6px;background:var(--ui-panel-a40-map-panel-continent-region-map-panel-background);color:var(--ui-panel-a40-map-panel-continent-region-map-panel-text);font:13px/1.5 system-ui;text-align:left;white-space:normal;overflow-wrap:anywhere}
body.pack-ui #map-panel .continent-region[aria-pressed=true]{background:var(--ui-panel-a40-map-panel-continent-region-true-background);border-color:var(--ui-panel-a40-map-panel-continent-region-true-border-color);font-weight:600}
body.pack-ui #map-panel .continent-next{background:var(--ui-panel-a40-map-panel-continent-next-background);border-color:var(--ui-panel-a40-map-panel-continent-next-border-color)}
body #map-panel .continent-directory button:focus-visible,body #map-panel .continent-directory summary:focus-visible{outline:3px solid var(--ui-panel-a40-map-panel-continent-directory-map-panel-focus);outline-offset:1px}
/* A114: ?mapdebug=1 diagnostic line (developer text, off by default) */
body #map-panel #map-debug{position:absolute;left:8px;right:8px;top:4px;z-index:50;padding:2px 6px;border-radius:4px;background:var(--ui-panel-a40-map-panel-map-debug-background);color:var(--ui-panel-a40-map-panel-map-debug-text);font:9px/1.25 ui-monospace,Menlo,Consolas,monospace;word-break:break-all;pointer-events:none}
body #map-panel #map-debug[hidden]{display:none}
/* A114b: markers are painted on the picture canvas; while it has them the DOM buttons paint nothing (taps, aria and checks keep the 32px box) */
body #map-panel #world-map.canvas-pins .region-map-marker>*{visibility:hidden}
/* F227: 지역 지도 의뢰 "진행 중" 배지 대비 7.4:1(#f4f9e6 / #2f5a36) */
body #map-panel .quest-card .quest-state.active{color:var(--ui-panel-a40-map-panel-quest-card-quest-state-text-3);background:var(--ui-panel-a40-map-panel-quest-card-quest-state-background)}
/* F227: 세계 지도 장소 칸 — 두 줄 이름이면 칸이 늘어 "현재" 줄·사람 배지가 안 겹침(한 줄 이름은 62px 그대로) */
body.pack-ui #map-panel #world-map:not(.actual-region-map) .map-place{height:auto;min-height:62px}
/* F227: ja 지도 글도 일본어 글꼴(위 font: … system-ui 를 ja 에서만 덮음, #world-map 을 넣어 우선순위를 맞춤) */
:root:lang(ja) body #map-panel :is(#world-map .map-mark,#world-map .map-place strong,#world-map .map-visit-state,#world-map .map-people,#world-map .party-dot,.continent-band-heading,.continent-heading,.continent-location,.continent-condition,.continent-empty,.continent-region,.continent-next){font-family:"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic UI","Yu Gothic",Meiryo,"Noto Sans JP",system-ui,sans-serif}

/* Displaced marker fallback: one thin connector back to the real map position. */
body #map-panel #world-map .region-map-marker::before{content:"";position:absolute;left:50%;top:50%;width:var(--pin-link-length,0px);height:1px;background:var(--c-continent-a40-map-panel-region-map-marker-link);transform:rotate(var(--pin-link-angle,0rad));transform-origin:0 0;pointer-events:none;z-index:-1}
body #map-panel #world-map.canvas-pins .region-map-marker::before{visibility:hidden}
/* F343: 세로·PC 의 고정 탭(world-atlas.css top:60px)과 머리줄(top:0) 사이 틈으로 스크롤된 내용(세계 지도판 = 「세계」 밑 베이지 띠)이 비치지 않게 탭 위 60px 을 창 바탕으로 덮는다. 머리줄(z-index 3)이 탭(2) 위라 틈만 보인다. */
@media (min-height:501px),(orientation:portrait){html body.pack-ui #map-panel>.map-tools::before{content:"";position:absolute;inset:-60px 0 100%;background:inherit}}
