/* Korean UI type and text placement. Loaded last to supersede prototype rules. */
@font-face{font-family:Pretendard;src:url('/assets/fonts/PretendardVariable.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
:root{--sans:Pretendard,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;--ui-body:16px;--ui-label:14px;--ui-note:13px}
body{font:400 var(--ui-body)/1.6 var(--sans);font-kerning:normal;word-break:keep-all;overflow-wrap:break-word;line-break:strict}
button,input,select,textarea{font-family:var(--sans);line-height:1.5}
h1,h2,h3,h4{font-family:var(--sans);font-weight:600;letter-spacing:-.015em;text-wrap:balance}
p,li,label{word-break:keep-all;overflow-wrap:break-word;text-wrap:pretty}
small{font-size:var(--ui-note);line-height:1.6}
button{word-break:keep-all;overflow-wrap:break-word}
kbd{font:500 12px/1.4 var(--sans);font-variant-numeric:tabular-nums}

/* HUD: reserve separate rows for shortcut, icon and Korean caption. */
.location-hud{top:24px;left:24px;max-width:356px;padding:8px 12px}
.location-button{padding:0;line-height:1.4}
.location-button>span{font:600 24px/1.35 var(--sans);letter-spacing:-.025em}
.location-button small{font-size:14px;line-height:1.5;margin-top:5px;color:#d6cbb7}
.field-objective{left:24px;top:112px;width:356px;max-width:356px;padding:10px 12px;line-height:1.6}
.field-objective>span{font-size:15px;font-weight:500}
.field-objective>small{font-size:13px;line-height:1.65;margin-top:5px;word-break:keep-all}
.field-objective button{font-size:14px;line-height:1.5;min-height:40px;margin-top:10px}
.vitals{width:316px;height:104px;gap:8px;padding:4px 8px}
.vital-name{gap:8px;font-size:15px;line-height:1.45;margin-bottom:7px}
.vital-name b{font-weight:600;min-width:0}
.vital-name>span{font:600 15px/1.45 var(--sans);flex:none;margin-left:0}
.hp-count{font:500 13px/1.35 var(--sans);margin-top:4px;font-variant-numeric:tabular-nums}
.hud-meter.hp{height:11px}.hud-meter.xp{height:4px}
.actionbar{gap:8px;bottom:24px}
.hud-slot{width:72px;min-width:72px;height:88px}
.hud-slot .ui-icon{top:0;width:56px;height:56px;background-size:224px 224px;background-position:calc(var(--ix) * -56px) calc(var(--iy) * -56px)}
.hud-slot kbd{top:-22px;line-height:17px;padding:1px 5px;font-size:12px}
.slot-label{left:0;right:0;bottom:0;font-size:14px;line-height:22px;white-space:nowrap;font-weight:500}
.utilitybar.nine{height:104px;min-height:104px;gap:6px;bottom:24px;padding:3px}
.menu-slot.nine{width:60px;min-width:60px;height:76px}
.menu-slot .ui-icon{top:0;width:44px;height:44px;background-size:176px 176px;background-position:calc(var(--ix) * -44px) calc(var(--iy) * -44px)}
.menu-caption{left:0;right:0;bottom:0;font-size:14px;line-height:22px;white-space:nowrap;font-weight:500}
.menu-slot kbd{top:-18px;font-size:12px;line-height:16px;padding:0 4px}
.menu-badge{top:-18px;right:0;font:500 12px/16px var(--sans);padding:0 3px;white-space:nowrap}
.camp-hint{bottom:152px;max-width:620px;font-size:14px;line-height:1.5;white-space:normal;gap:12px;padding:9px 14px}
.camp-hint button{font-size:14px;min-height:40px}
.hud-messages{left:24px;bottom:150px;max-width:360px}
.hud-messages p{font-size:14px;line-height:1.6;padding:7px 10px;word-break:keep-all;overflow-wrap:break-word}
#game-frame #toast{bottom:224px;font-size:15px;line-height:1.6;max-width:640px;padding:12px 18px;text-align:center;word-break:keep-all}
.field-interaction{bottom:156px;font-size:15px;line-height:1.6;max-width:620px;text-align:center}
.rebirth-hint{top:auto;bottom:148px;left:auto;right:24px;transform:none;font-size:14px;line-height:1.6;max-width:290px;padding:7px 12px}
.target-title{font:600 16px/1.5 var(--sans);letter-spacing:0;margin-bottom:8px;word-break:keep-all}
.target-cast{font:500 14px/1.5 var(--sans)}
.boss-announcement.nine{top:170px;width:370px;padding:12px 16px}
.boss-announcement small{font-size:14px;line-height:1.5}
.boss-announcement strong{font:600 22px/1.5 var(--sans);margin-top:4px}

/* All menus share left-aligned labels, stable numeric columns and Korean word wrapping. */
.game-window .window-heading,.game-window:not(.small-window) .window-heading{height:56px;flex-basis:56px;padding:0 18px;gap:12px}
.game-window .window-heading h2{font:600 22px/1.4 var(--sans);margin:0 auto 0 0}
.window-heading>span{font-size:13px;line-height:1.5;margin-right:0;flex:none}
.game-window .close-button{width:36px;height:36px;flex:none;line-height:20px}
.game-window:not(.small-window) .armory-nav{height:54px;flex-basis:54px;padding:7px 12px;gap:8px}
.game-window:not(.small-window) .armory-nav button{min-width:106px;height:38px;min-height:38px;font-size:14px;line-height:1.4}
.game-window .window-body{font-size:16px;line-height:1.65;overscroll-behavior:contain}
.game-window .armory-layout{grid-template-columns:240px minmax(0,1fr) 320px;gap:12px}
.armory-heading{align-items:baseline;gap:10px}
.game-window .armory-heading h3{font:600 17px/1.5 var(--sans);min-width:0;word-break:keep-all;overflow-wrap:break-word}
.armory-heading>span{font-size:13px;flex:none}
.game-window .loadout-row strong{font-size:14px;line-height:1.55;word-break:keep-all;overflow-wrap:break-word}
.game-window .loadout-row small,.game-window .loadout-row>div>span{font-size:13px;line-height:1.5}
.portrait-plinth small,.loadout-stats dt,.loadout-memories{font-size:13px;line-height:1.6}
.loadout-stats dd{font-family:var(--sans);font-variant-numeric:tabular-nums}
.game-window .bag-tabs button,.game-window .armory-button{font-size:14px;line-height:1.45;min-height:38px}
.bag-sort,.bag-sort select{font-size:13px;line-height:1.5}
.bag-sort select{padding:5px 6px;max-width:128px}
.bag-empty,.bag-footer p,.bag-footer button{font-size:13px;line-height:1.65}
.option-legend{font-size:12px!important;gap:5px 8px}
.game-window .inspect-heading{grid-template-columns:58px minmax(0,1fr)}
.game-window .inspect-heading h3{font:600 20px/1.5 var(--sans);word-break:keep-all;overflow-wrap:break-word}
.game-window .inspect-heading>small,.game-window .inspect-heading>span{font-size:13px;line-height:1.5}
.inspect-power>span{font-size:14px;line-height:1.5}
.item-properties,.item-properties .affix-line,.affix-line>span{font-size:14px;line-height:1.65;word-break:keep-all;overflow-wrap:break-word}
.base-implicit b,.relic-summary b,.relic-summary p,.relic-effect b,.relic-effect p,.equipped-compare small,.equipped-compare span{font-size:13px;line-height:1.65}
.option-grade{font-size:12px}.option-range{font-size:13px;line-height:1.5}
.game-window .stat-comparison>div{font-size:14px;min-height:30px;align-items:baseline;gap:8px}
.game-window .stat-comparison>div>span{word-break:keep-all;overflow-wrap:normal}
.game-window .stat-comparison em{font-size:13px;min-width:46px}.stat-comparison b{font-variant-numeric:tabular-nums}
.game-window .stat-comparison h4{font-size:15px;line-height:1.5}
.attack-interval,.inspect-scroll-note{font-size:13px;line-height:1.65}
.armory-wallet.nine{font-size:14px;gap:18px;flex-wrap:wrap;padding:6px 10px}
.armory-wallet b{font:600 16px/1.4 var(--sans);font-variant-numeric:tabular-nums}
.armory-wallet small{font-size:12px;line-height:1.5;max-width:410px}
.inspect-empty h3{font:600 20px/1.5 var(--sans)}.inspect-empty p,.inspect-empty small{font-size:14px;line-height:1.7}

/* Map destination copy has its own text column; status never steals its line width. */
.game-window .map-destination{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:start;gap:12px;padding:12px;min-height:150px}
.map-destination>span:nth-child(2){min-width:0}
.map-destination strong{font-size:17px;font-weight:600;line-height:1.5}
.game-window .map-destination small,.game-window .map-destination p{font-size:14px;line-height:1.65;word-break:keep-all}
.map-destination>b{font-size:13px;line-height:1.5;margin:4px 0 0;white-space:nowrap}
.window-actions{font-size:14px;line-height:1.6;flex-wrap:wrap}
.game-window .primary,.game-window .secondary,.game-window .quiet{font-size:14px;line-height:1.5;min-height:40px}
.exploration-destinations h3{font-size:18px}.exploration-destinations p,.exploration-destinations button{font-size:15px;line-height:1.6}
.game-window .settings-grid label{font-size:15px;line-height:1.65;align-items:flex-start;gap:9px;margin:13px 0}
.settings-grid input[type=checkbox]{flex:none;margin-top:5px;width:16px;height:16px}
.game-window .settings-grid h3{font-size:18px;line-height:1.5}
.settings-grid p{font-size:15px;line-height:1.8}.settings-grid small,.settings-grid summary{font-size:13px;line-height:1.65}
.forge-window .item-name strong{font-size:15px;line-height:1.5;word-break:keep-all;overflow-wrap:break-word}
.forge-window .item-name small,.forge-window .detail-title .eyebrow,.forge-window .detail-title p,.forge-window .cost,.forge-window .protect small,.forge-window .probabilities{font-size:13px;line-height:1.65}
.forge-window .detail-title h2{font:600 22px/1.5 var(--sans)}
.forge-window .affixes,.forge-window .chance,.forge-window .protect{font-size:14px;line-height:1.65}
.legacy-window .legacy-hero h2{font:600 26px/1.5 var(--sans)}
.legacy-hero>p,.legacy-row,.footnote,.archive-history>p{font-size:15px;line-height:1.8}
.legacy-row span,.archive-stats small,.log-entry,.chronicle-tabs button{font-size:13px;line-height:1.7}

/* Blocking choices: keep headings, body copy and actions on predictable baselines. */
.origin-dialog h1{font:600 30px/1.45 var(--sans);letter-spacing:-.025em}
.origin-dialog p{font-size:16px;line-height:1.7}
.name-label{font-size:15px;line-height:1.5}.name-label input{font-size:16px;line-height:1.5}
.origin-options{align-items:stretch}
.origin-card{display:flex;flex-direction:column}
.origin-card h2{font:600 22px/1.5 var(--sans);margin:12px 0 20px}
.origin-card>div b{font-size:15px;line-height:1.5}.origin-card>div span{font-size:14px;line-height:1.65}
.origin-choose{font-size:14px;line-height:1.5;margin-top:auto;padding-top:16px}
.dialog-footer{font-size:14px;line-height:1.6;gap:16px;flex-wrap:wrap}
.blessing-dialog h2{font:600 25px/1.5 var(--sans)}
.blessing-instruction{font-size:15px;line-height:1.7}
.blessing-card h3{font:600 20px/1.5 var(--sans)}.blessing-card p{font-size:15px;line-height:1.75}.blessing-card>span{font-size:14px;line-height:1.5}
.death-prompt h2{font:600 25px/1.5 var(--sans)}.death-prompt p,.modal-dialog p,.window-body>p{font-size:16px;line-height:1.75}
/* Keep even the transparent icon boxes clear of their caption line. */
.hud-slot .ui-icon{width:48px;height:48px;background-size:192px 192px;background-position:calc(var(--ix) * -48px) calc(var(--iy) * -48px)}
.menu-slot .ui-icon{top:2px;width:40px;height:40px;background-size:160px 160px;background-position:calc(var(--ix) * -40px) calc(var(--iy) * -40px)}
.game-window .map-destination:disabled{opacity:1;filter:none}
.game-window .map-destination:disabled strong{color:#b9b9ae}
.game-window .map-destination:disabled small,.game-window .map-destination:disabled p{color:#a7aea8}
.game-window .map-destination:disabled .map-num{color:#8d9791}
/* Secondary Korean copy remains readable in forge and history views as well. */
.game-window .panel-heading{font-size:15px;line-height:1.5;min-height:42px}
.game-window .panel-heading small,.game-window .inventory-meta,.game-window .inventory-meta span{font-size:13px;line-height:1.5}
.forge-window .filter-row button{font-size:14px;line-height:1.5;min-height:38px}
.forge-window .main-stat>span,.forge-window .item-effect b{font-size:14px;line-height:1.5}
.forge-window .item-effect small,.forge-window .weapon-profile,.forge-window .forge-preview>p{font-size:13px;line-height:1.7}
.game-window .eyebrow,.blessing-dialog>.eyebrow{font-size:13px;line-height:1.5;letter-spacing:.015em}
.journal-window .empty p,.journal-window .log-entry p,.journal-window .archive-history>small{font-size:14px;line-height:1.7}
.origin-dialog .dialog-footer button{font-size:14px;line-height:1.5;min-height:40px}
.forge-window .list-caption{font-size:13px;line-height:1.5;padding:10px 12px}
.option-grade{font-size:13px}.option-legend{font-size:13px!important}.armory-wallet small{font-size:13px}
