body #options-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(400px,92vw);max-height:88dvh;overflow:auto;box-sizing:border-box;padding:16px;background:var(--ui-panel-menu-bg);border:1px solid var(--ui-panel-menu-line);border-radius:16px;z-index:10;box-shadow:0 10px 70px var(--ui-panel-menu-shadow)}
.options-list{display:grid;gap:10px}.options-list button{position:static!important;min-height:46px;width:100%;text-align:left;padding:10px 16px}
/* A288: four settings groups share the existing option controls and handlers. */
body #options-panel{display:flex;flex-direction:column;overflow:hidden}
body #options-panel>.panel-heading{gap:8px;flex:none;margin:0 0 12px;min-height:44px}
body #options-panel>.panel-heading h2{margin:0;flex:1;min-width:0}
body #options-panel #options-back{flex:none;width:44px;min-height:44px;padding:0;text-align:center}
body #options-panel .options-groups{display:grid;gap:8px;min-width:0}
body #options-panel #options-groups>button{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1px 8px;align-items:center;min-height:56px;width:100%;padding:6px 12px;text-align:left;background:var(--ui-panel-menu-soft);color:var(--ui-panel-menu-fg);border:1px solid var(--ui-panel-menu-line);border-radius:12px;box-shadow:none}
body #options-panel #options-groups>button::after{content:'›';grid-column:2;grid-row:1 / 3;align-self:center;font-size:24px;color:var(--ui-panel-menu-muted)}
body #options-panel #options-groups strong{grid-column:1;min-width:0;line-height:1.2}
body #options-panel #options-groups>button:has(small:empty) strong{grid-row:1 / 3;align-self:center}
body #options-panel #options-groups small{grid-column:1;min-width:0;max-width:none;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;white-space:normal;overflow-wrap:normal;line-height:1.2;font-size:12px!important;color:var(--ui-panel-menu-muted);opacity:1}
html:lang(ja) body #options-panel #options-groups small{line-break:strict}
body #options-panel #options-groups small:empty{display:none}
body #options-panel .options-list{display:block;overflow:auto;min-height:0;overscroll-behavior:contain;touch-action:pan-y}
body #options-panel .options-group{display:grid;gap:10px}
body #options-panel :is(.options-list,.options-group,.options-groups,#options-back)[hidden]{display:none!important}
#options-panel .credits-line{border-top:1px solid var(--ui-panel-menu-line);margin-top:20px;padding-top:12px;text-align:center}
body #lobby{max-height:92dvh;overflow:auto}.lobby-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:12px}
#character-summary{text-align:center;font-size:18px;color:var(--ui-panel-a21-character-summary-text)}#character-delete,#delete-yes{background:var(--ui-panel-a21-character-delete-delete-yes-background);color:var(--ui-panel-a21-character-delete-delete-yes-text)}
#character-slots{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:0 0 10px}body #lobby #character-slots button{flex:1 1 0;min-width:0;min-height:44px;padding:4px 6px;display:grid;gap:1px;line-height:1.25}
body #lobby #character-slots button>*{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#character-slots span{font-size:14px}#character-slots small{font-size:12px;font-weight:400;color:inherit;opacity:.8}
body #lobby #character-slots button>span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;overflow-wrap:anywhere}
body:not(.pack-ui) #lobby #character-slots button.pressed{background:var(--ui-panel-a21-lobby-character-slots-pressed-background);outline:2px solid var(--ui-panel-a21-lobby-character-slots-pressed-focus);outline-offset:1px}body.pack-ui #lobby #character-slots button.pressed{box-shadow:0 0 0 2px var(--ui-panel-a21-lobby-character-slots-pressed-shadow)}
body #lobby #character-slots button.pressed{background:var(--ui-panel-acc-soft);color:var(--ui-panel-fg);border-color:var(--ui-panel-acc);box-shadow:inset 0 -3px var(--ui-panel-acc)}
body #lobby #character-slots button:focus-visible{outline:3px solid var(--ui-panel-on-success);outline-offset:2px}
body #lobby #character-slots button[aria-disabled=true]{cursor:wait;color:var(--ui-panel-muted)}
body #lobby .appearance-fields[hidden],body #name-editor[hidden],body #job-picker[hidden]{display:none!important}
body #delete-confirm{width:min(420px,85vw);box-sizing:border-box;border:1px solid var(--ui-panel-a21-delete-confirm-border);border-radius:16px;background:var(--ui-panel-a21-delete-confirm-background);color:var(--ui-panel-a21-delete-confirm-text);padding:22px;max-height:90dvh;overflow:auto}
#delete-confirm::backdrop{background:var(--ui-panel-a21-delete-confirm-background-2)}#delete-confirm h2{font-size:19px;line-height:1.6}#delete-confirm p{font-size:14px;line-height:1.6}#delete-error{color:var(--c-danger-a21-delete-error-text)}#lobby #name-error{color:var(--c-danger-a21-lobby-name-error-text);font-size:13px;margin:-2px 0 8px 77px}body.pack-ui #lobby #name-error{color:var(--c-danger-a21-lobby-name-error-text-2)}#lobby #name-error.notice{color:var(--c-danger-a21-lobby-name-error-notice-text)}body.pack-ui #lobby #name-error.notice{color:var(--c-danger-a21-lobby-name-error-notice-text-2)}#lobby #name-change{flex:none;padding:7px 14px}
body #map-panel{width:min(1000px,95vw);max-height:92dvh;overflow:auto}
.map-tools{display:flex;align-items:center;gap:10px;justify-content:space-between}.map-tools p{font-size:12px;margin:4px 0}.map-tools button{flex-shrink:0;font-size:12px}
body #map-viewport{height:min(58dvh,500px);width:100%;overflow:auto;touch-action:none;overscroll-behavior:contain;cursor:grab;border:1px solid var(--ui-panel-a21-map-viewport-border);border-radius:12px;position:relative;scrollbar-width:thin;user-select:none}
body #map-viewport.dragging{cursor:grabbing}
body #world-map{position:relative;width:1500px;height:1100px;min-width:1500px;margin:0;background:radial-gradient(ellipse at center,var(--ui-panel-a21-world-map-background),var(--ui-panel-a21-world-map-background-2));border:0}
body .map-place{min-height:44px;padding:8px 10px;justify-content:center;gap:6px;touch-action:none}
body .map-place strong{display:block;font-size:15px;font-weight:500;color:var(--ui-panel-a21-map-place-text)}
body .map-place:not(.current) .map-dot,body .map-place:not(.current) .map-people{display:none}
body .map-place.current strong{font-size:21px;font-weight:700;color:var(--ui-panel-a21-map-place-current-text)}
body .map-place.current .map-dot{width:32px;height:32px;background:var(--ui-panel-a21-map-place-current-map-dot-background);box-shadow:0 0 0 6px var(--ui-panel-a21-map-place-current-map-dot-shadow)}
body .map-place.selected strong{color:var(--ui-panel-a21-map-place-selected-text);text-decoration:underline;text-underline-offset:5px}
body .map-place:not(.current):hover strong{color:var(--ui-panel-a21-map-place-current-text-2)}
body #skill-button.cooling{opacity:1}body #skill-button::after{z-index:0}body #skill-button span,body #skill-button small{position:relative;z-index:1}body #skill-timer{font-size:11px;font-weight:bold;color:var(--ui-hud-a21-skill-timer-text)}
@media(orientation:portrait){body #map-viewport{height:58dvh}.map-tools{align-items:flex-start}.map-tools p{max-width:65%}}
/* Keep the existing parchment skin legible; remove its old all-node badges. */
body.pack-ui #world-map{background:var(--ui-panel-a21-world-map-background-3);border-radius:0}
body.pack-ui .map-place{border:0;border-image:none;outline:none;background:transparent;border-radius:0;opacity:1;box-shadow:none}
body.pack-ui .map-place strong{color:var(--ui-panel-a21-map-place-text-2);text-shadow:none}
body.pack-ui .map-place.current{background:var(--ui-panel-a21-map-place-current-background);border-radius:16px;padding:12px 18px}
body.pack-ui .map-place.current strong{color:var(--ui-panel-a21-map-place-current-text-3)}
body.pack-ui .map-place.current .map-dot{border-color:var(--ui-panel-a21-map-place-current-map-dot-border-color);background:var(--ui-panel-a21-map-place-current-map-dot-background-2)}
body.pack-ui .map-place.selected:not(.current) strong,body.pack-ui .map-place:not(.current):hover strong{color:var(--ui-panel-a21-map-place-selected-current-text)}
body.pack-ui #world-map line{stroke-width:.18;opacity:.45}
body.pack-ui #world-map line.visited{opacity:.8}
body.pack-ui #lobby.returning{width:min(480px,94vw)}
body #lobby.returning>.customizer{display:flex;justify-content:center}
body.pack-ui #character-summary{font-size:17px;color:var(--ui-panel-a21-character-summary-text-2);font-weight:700}
body.pack-ui #character-delete,body.pack-ui #delete-yes{color:var(--ui-panel-a21-character-delete-delete-yes-text-2)}
body.lobby-active :is(#region-hud,#stick,#home){display:none!important}
body.pack-ui #skill-button.cooling #skill-timer{color:var(--ui-hud-a21-skill-button-cooling-skill-timer-text);text-shadow:0 1px 2px var(--ui-hud-a21-skill-button-cooling-skill-timer-text-shadow)}

/* 읽기 크기는 한 변수로 대화·의뢰·채팅·옵션·소식에 적용한다. */
:root{--readable-font-size:15px}
body :is(#dialogue,#missions,#quest-panel,#social-panel,#desktop-chat,#chat-toast,#options-panel,#update-notes,#menu-panel),
body :is(#dialogue,#missions,#quest-panel,#social-panel,#desktop-chat,#chat-toast,#options-panel,#update-notes,#menu-panel) :is(p,span,strong,small,button,label,select,summary,li,h3,output){font-size:var(--readable-font-size)!important;overflow-wrap:anywhere}
body :is(#dialogue,#quest-panel,#social-panel,#options-panel,#update-notes,#menu-panel) h2{font-size:calc(var(--readable-font-size)*1.2)!important}
body :is(#social-panel,#options-panel) input:not([type=checkbox]):not([type=range]){font-size:max(16px,var(--readable-font-size))!important}
body .readability-size{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px;min-width:0}
body .readability-size select{min-width:0;min-height:44px;max-width:100%;flex:1;font:inherit;padding:8px;border:1px solid var(--ui-panel-a21-readability-size-border);border-radius:7px;background:var(--ui-panel-a21-readability-size-background);color:var(--ui-panel-a21-readability-size-text)}
body .readability-toggle{display:flex;align-items:center;gap:10px;padding:8px;min-height:44px}
body .readability-toggle input{width:20px;height:20px;flex:none;accent-color:var(--ui-panel-a21-readability-toggle-accent-color)}
/* A303: labels remain the checkbox hit area; sliders are directly 44px high. */
html body #options-panel :is(.readability-toggle,.friends-hide){min-width:44px;min-height:44px;padding:12px;gap:12px;touch-action:manipulation}
html body #options-panel :is(#music-volume,#effects-volume){min-height:44px;min-width:44px}
body #options-panel :is(button,select),body #update-notes button{max-width:100%;white-space:normal;min-width:0;overflow-wrap:anywhere}
body #options-panel .credits-line a{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}
body #update-notes>div:last-child{flex-wrap:wrap}
body #update-notes .panel-heading{flex-wrap:wrap}
body #update-notes .panel-heading h2{min-width:0}
/* A239: opening animations must not make the news reader translucent. */
body #update-notes{background-color:var(--ui-panel-a21-update-notes-background);opacity:1!important}
/* The summary title sits on the green soft panel, unlike accent buttons. */
body #update-notes .update-notes-top-title{color:var(--ui-panel-update-top-title-text)!important}
body #lobby-news{display:flex;justify-content:center;align-items:center;gap:8px;width:100%;margin-top:10px;font-size:var(--readable-font-size)}
body #menu-news{display:flex;justify-content:center;align-items:center;gap:8px}
body .news-dot{display:inline-block;flex:none;width:9px;height:9px;border-radius:50%;background:var(--ui-panel-a21-news-dot-background);box-shadow:0 0 0 1px var(--ui-panel-a21-news-dot-shadow)}
/* 모바일 HUD의 작은 글자 !important보다 의뢰 읽기 옵션을 우선한다. */
body #missions :is(#missions-list,#path-checklist) :is(p,button,strong,span,small),body #missions :is(#missions-toggle,#missions-open){font-size:var(--readable-font-size)!important;overflow-wrap:anywhere}
body #invite-panel{position:fixed;inset:0;margin:auto;width:min(480px,94vw);max-height:90dvh;box-sizing:border-box;overflow:auto;padding:20px;border:1px solid var(--ui-panel-a21-invite-panel-border);border-radius:16px;background:var(--ui-panel-a21-invite-panel-background);color:var(--ui-panel-a21-invite-panel-text);box-shadow:0 12px 60px var(--ui-panel-a21-invite-panel-shadow);font-size:var(--readable-font-size,15px);line-height:1.6;overflow-wrap:anywhere;overscroll-behavior:contain}
#invite-panel::backdrop{background:var(--ui-panel-a21-invite-panel-background-2)}
body #invite-panel .panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
body #invite-panel h2{font-size:calc(var(--readable-font-size,15px)*1.2);line-height:1.4;margin:0;min-width:0}
body #invite-panel :is(p,label,button){font-size:inherit;line-height:1.6}
body #invite-panel button{position:static;min-height:44px;max-width:100%;white-space:normal;padding:8px 12px;touch-action:manipulation}
#invite-close{flex:none}
#invite-form{display:grid;gap:10px}
body #invite-code{box-sizing:border-box;width:100%;min-width:0;min-height:44px;padding:10px;font-size:18px;letter-spacing:2px;border:1px solid var(--ui-panel-a21-invite-code-border);border-radius:8px;background:var(--ui-panel-a21-invite-code-background);color:var(--ui-panel-a21-invite-code-text)}
body #invite-code[aria-invalid="true"]{border:2px solid var(--ui-panel-a21-invite-code-true-border)}
#invite-status{min-height:1.6em;color:var(--ui-panel-a21-invite-status-text);margin-bottom:0}
@media(max-height:500px){body #invite-panel{max-height:94dvh;padding:12px 18px}#invite-help{margin:8px 0}#invite-form{gap:6px}}
body #feedback-panel{position:fixed;inset:0;margin:auto;width:min(440px,94vw);max-height:calc(100dvh - 24px);box-sizing:border-box;overflow:auto;padding:18px;border:1px solid var(--ui-panel-a21-feedback-panel-border);border-radius:14px;background:var(--ui-panel-a21-feedback-panel-background);color:var(--ui-panel-a21-feedback-panel-text);font-size:var(--readable-font-size,15px);line-height:1.45;overflow-wrap:anywhere;overscroll-behavior:contain}
#feedback-panel::backdrop{background:var(--ui-panel-a21-feedback-panel-background-2)}
body #feedback-panel .panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
body #feedback-panel h2{margin:0;min-width:0;font-size:calc(var(--readable-font-size,15px)*1.2);line-height:1.4}
body #feedback-panel :is(button,label,p,output){font-size:inherit;line-height:1.45}
body #feedback-panel #feedback-example{font-size:calc(var(--readable-font-size)*.9);color:var(--ui-panel-muted)}
body #feedback-panel button{position:static;min-width:44px;min-height:44px;max-width:100%;white-space:normal;padding:8px 12px;touch-action:manipulation}
#feedback-close{flex:none}
#feedback-form{display:grid;gap:8px}
body #feedback-text{box-sizing:border-box;width:100%;min-width:0;min-height:88px;max-height:35dvh;resize:vertical;padding:10px;border:1px solid var(--ui-panel-a21-feedback-text-border);border-radius:8px;background:var(--ui-panel-a21-feedback-text-background);color:var(--ui-panel-a21-feedback-text-text);font-family:inherit;font-size:max(16px,var(--readable-font-size,15px));line-height:1.45}
#feedback-count{text-align:right}#feedback-daily{margin:12px 0 0}#feedback-status{margin:8px 0 0;color:var(--ui-panel-a21-feedback-status-text)}#feedback-status:empty{display:none}
/* A258: reuse the existing core warning colour; keep named wipes inside phone widths. */
body #raid-message[data-wipe-soon=true]{color:var(--c-danger-a21-raid-message-true-text);font-weight:bold}
body #raid-wipe{padding:16px;text-align:center;overflow-wrap:anywhere;font-size:clamp(20px,5vw,36px)}
body #invite-optional{position:static;min-height:44px;margin:10px 0;font-size:var(--readable-font-size,15px)}
body #invite-panel[data-optional="true"] button{background:var(--ui-panel-a21-invite-panel-true-background);color:var(--ui-panel-a21-invite-panel-true-text);border:1px solid var(--ui-panel-a21-invite-panel-true-border);border-radius:8px}
.friends-code-section{margin-top:18px;padding-top:12px;border-top:1px solid var(--ui-panel-a21-friends-code-section-border-top);min-width:0}.friends-code-section h3{margin:0 0 8px;font-size:1.1em}.friends-code-section label{display:block;margin:8px 0 4px}
#friend-code-disclosure{margin-top:18px;padding-top:12px;border-top:1px solid var(--ui-panel-line)}
#friend-code-toggle{width:100%;text-align:left;background:var(--ui-panel-soft);color:var(--ui-panel-fg);border-color:var(--ui-panel-line)}
#friend-code-toggle::after{content:' ▸'}#friend-code-toggle[aria-expanded=true]::after{content:' ▾'}
#friend-code-section[hidden]{display:none}
.friends-code-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.friends-code-row :is(input,textarea){box-sizing:border-box;flex:1 1 170px;width:100%;min-width:0;max-width:100%;min-height:44px;padding:8px;border:1px solid var(--ui-panel-a21-friends-code-row-border);border-radius:7px;background:var(--ui-panel-a21-friends-code-row-background);color:var(--ui-panel-a21-friends-code-row-text);font:inherit}.friends-code-row textarea{resize:none;overflow-wrap:anywhere}
body #friends-panel :is(#friend-code-value,#invites-code){font-size:18px;font-weight:bold;letter-spacing:1px}.friends-code-row button{flex:0 1 auto}#invites-list{padding-left:22px;max-height:180px;overflow:auto}#invites-list li{margin:6px 0;overflow-wrap:anywhere}#invites-status{color:var(--ui-panel-a21-invites-status-text);min-height:1.55em}
body #raid-hud{width:min(300px,calc(100vw - 28px))}body.desktop-ui #raid-hud{top:calc(env(safe-area-inset-top) + 90px)}
/* Friend heading stays first; F420 code disclosure follows the main content. */
body #friends-panel[open]{display:flex;flex-direction:column}
#friends-panel>.panel-heading{order:-3}#friends-help{order:-2}#friend-code-section{margin-top:0}
body #friends-panel :is(#friends-refresh,#friend-code-reset,#friend-code-copy,#friend-by-code-send){display:inline-flex;align-items:center;justify-content:center;min-width:96px;min-height:44px;white-space:normal}
body #friends-panel .friends-code-row{gap:8px}
@media(orientation:landscape) and (max-height:500px){
 body #update-notes{display:grid;grid-template-columns:minmax(0,1fr) auto;max-height:calc(100dvh - 24px);overflow:auto}
 body #update-notes .panel-heading{grid-column:1/-1}
 body #update-notes .update-notes-version{grid-column:1}
 body #update-notes>div:last-child{grid-column:2;grid-row:2;position:static!important;margin-top:0!important;padding:0 0 8px!important;border-top:0!important}
 body #update-notes .update-notes-body{grid-column:1/-1;min-height:0!important}
 body #update-notes[hidden]{display:none}
}
@media(orientation:portrait) and (min-height:501px){body #raid-hud{width:min(280px,calc(100vw - 118px))}}   /* F401: 오른쪽 끝 12+100vw-118 = 빠른 아이템 칸 왼쪽(100vw-106) — 세로 폭 어디서나 겹침 0 */
@media(max-height:500px){body #feedback-panel{padding:12px 18px}#feedback-help{margin:8px 0}#feedback-form{gap:4px}body #feedback-text{min-height:72px}#feedback-daily{margin-top:8px}}
html body #options-panel #options-groups>button:is(:active,.pressed) small{color:var(--ui-panel-acc-fg)}
