/* Stage 1 tokens and owned surfaces. Legacy screen styles remain scoped to their existing components. */
.phase1-ui{--p1-bg:#0c1016;--p1-surface:#151b23;--p1-line:#303846;--p1-text:#e8e9eb;--p1-muted:#9ba5b4;--p1-gold:#d6ae62;--p1-radius:12px;--p1-header:clamp(3.5rem,4.6vw,4.5rem);--p1-rail:clamp(10rem,12vw,13rem);--p1-gap:clamp(.75rem,1.4vw,1.5rem);color:var(--p1-text);background:var(--p1-bg);scroll-padding-top:88px}
.phase1-ui{height:auto;overflow:auto}.phase1-ui body{height:auto;overflow:visible;background:var(--p1-bg);margin:0}.phase1-ui #app{width:100%;max-width:none;margin:0;padding:0;height:auto;overflow:visible}.phase1-ui button:focus-visible,.phase1-ui a:focus-visible,.phase1-ui input:focus-visible,.phase1-ui summary:focus-visible{outline:2px solid var(--p1-gold);outline-offset:3px}
.p1-status{position:sticky;top:0;z-index:80;min-height:var(--p1-header);display:flex;align-items:center;gap:24px;padding:12px 28px;margin-left:var(--p1-rail);background:#0e141ded;border-bottom:1px solid var(--p1-line);backdrop-filter:blur(14px)}
.p1-identity{background:none;border:0;color:var(--p1-text);text-align:left;display:grid;gap:3px;min-width:0;flex:0 1 12rem}.p1-identity b{font-size:16px}.p1-identity small,.p1-eyebrow{color:var(--p1-muted);font-size:11px;letter-spacing:1px}.p1-vitals{display:flex;gap:24px;flex:1;font-size:12px}.p1-vitals b{font-size:15px;color:var(--p1-text);font-variant-numeric:tabular-nums}.p1-hp{color:#81b79e}.p1-money{color:var(--p1-muted)}.p1-tools{display:flex;gap:8px}
.p1-rail{position:fixed;inset:0 auto 0 0;width:var(--p1-rail);background:#10161e;border-right:1px solid var(--p1-line);z-index:85;overflow:auto;padding:20px 12px}.p1-brand{display:block;color:var(--p1-gold);font-size:20px;font-weight:800;padding:8px 8px 24px;text-decoration:none}.p1-brand small{display:block;font-size:8px;letter-spacing:1.1px;color:var(--p1-muted);margin-top:5px}.p1-navbutton{background:transparent;color:var(--p1-muted);border:1px solid transparent;border-radius:8px;display:flex;align-items:center;gap:12px;min-height:clamp(2.25rem,4.5dvh,2.8rem);padding:8px 12px;width:100%;text-align:left;font:inherit;font-size:clamp(.7rem,.9vw,.85rem);cursor:pointer;word-break:keep-all}.p1-navbutton .uiico-picture,.p1-navbutton .uiico{width:22px;height:22px;object-fit:contain}.p1-navbutton:hover{background:#202a35;color:var(--p1-text)}.p1-navbutton.on{background:#26312e;border-color:#46584b;color:#d2e2d5}.p1-shell{margin-left:var(--p1-rail);padding:var(--p1-gap) clamp(.75rem,2.2vw,2.5rem) clamp(2rem,4vh,3rem)}.p1-main{width:100%;max-width:100rem;margin:auto;min-width:0}.p1-screenhead{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.p1-screenhead h1,.p1-screenhead h2{flex:1;font-size:24px;margin:0}.p1-subtabs{display:flex;gap:6px;overflow:auto;margin-bottom:16px}.p1-subtabs .p1-navbutton{width:auto;white-space:nowrap}
.p1-home{display:grid;gap:var(--p1-gap)}.p1-hero{position:relative;min-height:clamp(14rem,21vw,23rem);display:flex;align-items:center;border:1px solid var(--p1-line);border-radius:var(--p1-radius);background:linear-gradient(90deg,#111821f2 0%,#111821c7 45%,#11182120 100%),var(--p1-hero) center/cover}.p1-hero-copy{padding:32px;width:min(100%,42rem)}.p1-hero h1{font-size:clamp(1.4rem,2.2vw,2.5rem);margin:12px 0 16px;line-height:1.3;word-break:keep-all}.p1-hero p{color:#ced4dc;font-size:14px;line-height:1.75}.p1-hero small{color:var(--p1-muted);display:block;margin-bottom:22px}.p1-primary{min-height:44px;padding:10px 22px}.p1-home-grid{display:grid;grid-template-columns:minmax(13rem,.8fr) minmax(0,2fr);gap:var(--p1-gap)}.p1-card{border:1px solid var(--p1-line);border-radius:var(--p1-radius);padding:22px;background:var(--p1-surface);min-width:0}.p1-card h2{font-size:16px;margin:0 0 18px}.p1-card p{font-size:12px;color:var(--p1-muted);line-height:1.7}.p1-callsign{font-size:22px}.p1-health{height:6px;background:#25302d;border-radius:6px;overflow:hidden}.p1-health i{display:block;height:100%;background:#85b798}.p1-tasks .htiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9rem),1fr));gap:10px}.p1-tasks .htile{min-height:106px;grid-column:auto;background:#10161e;border-color:var(--p1-line);border-radius:8px;min-width:0}.p1-shortcuts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,8rem),1fr));gap:8px}.p1-shortcuts .p1-navbutton{border-color:var(--p1-line);justify-content:center}.p1-next .primary,.p1-home .htile.hot{background:#18212b;border-color:var(--p1-line);color:var(--p1-text)}.p1-menu{width:min(48rem,calc(100vw - 2rem));max-width:calc(100vw - 2rem);max-height:calc(100dvh - 2rem);overflow:auto;padding:24px}.p1-menu-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9rem),1fr));gap:6px}.p1-menu h3{font-size:12px;color:var(--p1-muted);margin:24px 0 10px}.p1-menu .p1-navbutton{border-color:var(--p1-line)}.p1-dock{display:none}.p1-dialog-open .p1-home .p1-primary{background:#25303b;color:var(--p1-text);border-color:var(--p1-line)}
.phase1-ui .auth-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:flex-end;padding:32px max(24px,8vw);background:linear-gradient(90deg,#0c10164d,#0c1016cc),url('/img/bg/login.jpg') center/cover}.phase1-ui .auth-card{width:100%;max-width:440px;background:#111822ed;border:1px solid var(--p1-line);border-radius:16px;padding:32px;backdrop-filter:blur(12px)}.phase1-ui .auth-card .lg{font-family:var(--f-disp);font-size:38px;line-height:1.1;text-align:center}.phase1-ui .auth-card .lg em{color:var(--p1-gold);font-style:normal}.phase1-ui .auth-card .tl{text-align:center;font-size:10px;letter-spacing:2px;color:var(--p1-muted);margin-top:12px}.phase1-ui .auth-card form{display:flex;flex-direction:column;gap:14px;margin-top:28px}.phase1-ui .auth-card input{min-height:46px;border-radius:8px}.phase1-ui .auth-card .btn{min-height:42px;border-radius:8px}
.p1-home .htile.hot::after{display:none}.p1-home .htile .tv{color:var(--p1-text)}
.p1-badge{font-size:10px;min-width:18px;padding:2px 5px;border-radius:9px;background:#31493f;color:#d8edde;margin-left:auto}.htile .p1-badge{position:absolute;right:8px;top:8px}.p1-error{background:#6b3030}.p1-dock .p1-badge{position:absolute;right:4px;top:2px}.p1-dock .p1-navbutton{position:relative}
.p1-home .btn.primary:not(.p1-primary){background:#18212b;border-color:var(--p1-line);color:var(--p1-text)}
.phase1-ui body:has(.uidlg) .p1-main .btn.primary,.phase1-ui body.p1-dialog-open .p1-main .btn.primary{background:#25303b;border-color:var(--p1-line);color:var(--p1-text)}

/* Adaptive shell; native screen actions and renderers are retained. */
.p1-navbutton{position:relative;min-width:0}.p1-navbutton .uiico-picture,.p1-navbutton .uiico{flex-shrink:0}
.p1-status{gap:clamp(.5rem,1.5vw,1.5rem);padding:clamp(.5rem,1vw,.75rem) clamp(.75rem,2vw,1.75rem)}
.p1-identity b,.p1-callsign{overflow-wrap:anywhere}.p1-vitals{gap:clamp(.5rem,1.5vw,1.5rem);white-space:nowrap}
.p1-card,.p1-hero-copy{padding:clamp(1.1rem,2vw,2rem)}.p1-hero h1{overflow-wrap:anywhere}
.p1-tasks .htile{max-width:100%;overflow-wrap:anywhere}.p1-badge{flex-shrink:0}
.phase1-ui .auth-wrap{padding:clamp(1rem,3vw,2rem) clamp(1rem,7vw,8rem)}
.phase1-ui .auth-card{width:min(100%,28rem);padding:clamp(1.1rem,2vw,2rem);overflow-wrap:anywhere}
.phase1-ui .auth-card .lg{font-size:clamp(1.75rem,3vw,2.4rem)}.phase1-ui .auth-card input{min-width:0;max-width:100%}
.phase1-ui .auth-card .btn{white-space:normal}.p1-screenhead h1,.p1-screenhead h2{font-size:clamp(1.1rem,1.7vw,1.5rem)}
.p1-subtabs{max-width:100%}.p1-subtabs .p1-navbutton{flex-shrink:0}
@media(min-width:761px) and (max-width:1199px){
.phase1-ui{--p1-rail:clamp(3.5rem,6vw,4.5rem)}
.p1-rail .p1-navbutton{justify-content:center;padding:.45rem .2rem}
.p1-rail .p1-navbutton>span:not(.p1-badge),.p1-brand small{display:none}
.p1-brand{font-size:0;text-align:center;padding:.5rem 0 1rem}.p1-brand:after{content:'BL';font-size:1rem}
.p1-rail .p1-badge{position:absolute;top:0;right:0}
}
@media(min-width:761px){.phase1-ui .combat-desk{left:var(--p1-rail);top:var(--p1-header)}.phase1-ui .vn.desktop-story{inset:calc(var(--p1-header) + var(--p1-toast-reserve,0px)) 0 0 var(--p1-rail)}}
@media(max-width:1000px){.p1-home-grid{grid-template-columns:1fr}.p1-tools [data-a="comms"]{display:none}}
@media(max-height:800px) and (min-width:761px){.p1-brand{padding-bottom:.5rem}.p1-rail .p1-navbutton{min-height:2.2rem;padding-top:.35rem;padding-bottom:.35rem}}
@media(max-width:760px),(max-height:500px) and (max-width:1000px){
.phase1-ui{--p1-header:clamp(3.5rem,8dvh,4rem);--p1-rail:0px}
.p1-rail{display:none}.p1-status{margin:0;gap:.5rem;padding:.5rem .75rem}
.p1-identity{flex:0 1 6rem;padding:0}.p1-identity b{font-size:.75rem}.p1-identity small{font-size:.55rem}
.p1-vitals{gap:.5rem;justify-content:center;font-size:.6rem}.p1-vitals>span{display:grid;gap:2px}.p1-vitals b{font-size:.75rem;white-space:nowrap}.p1-vitals b span{display:inline}
.p1-tools .btn{padding:.45rem .55rem;min-height:2rem}.p1-tools [data-a="mailOpen"],.p1-tools [data-a="comms"]{display:none}
.p1-shell{margin:0;padding:1rem .75rem calc(5rem + env(safe-area-inset-bottom))}
.p1-hero{min-height:clamp(13rem,36dvh,18rem)}.p1-hero-copy{padding:1.5rem}.p1-hero h1{font-size:clamp(1.4rem,5vw,1.7rem)}
.p1-home-grid{grid-template-columns:1fr}.p1-dock{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;bottom:0;left:0;right:0;padding:.375rem .45rem calc(.375rem + env(safe-area-inset-bottom));background:#0e141df5;border-top:1px solid var(--p1-line);z-index:90}
.p1-dock .p1-navbutton{flex-direction:column;gap:.25rem;padding:.375rem .125rem;font-size:.625rem;min-height:3rem}
.phase1-ui .auth-wrap{padding:clamp(1rem,4vw,1.5rem);justify-content:center}
.p1-focused .p1-dock{display:none}.p1-focused .p1-status{z-index:140}
.phase1-ui body.p1-focused .combat-desk{position:static;padding:0;display:block}
.phase1-ui body.p1-focused .layout.combat{padding-bottom:calc(var(--p1-action-height) + 1.5rem);grid-template-columns:1fr}
.phase1-ui body.p1-focused .layout.combat.v2.live .actpanel.v3{position:fixed;top:auto;bottom:0;left:0;right:0;max-height:40dvh;overflow:auto;z-index:92;padding-bottom:env(safe-area-inset-bottom);background:#10161e;border-top:1px solid var(--p1-line)}
.phase1-ui body.p1-focused .vn{inset:calc(var(--p1-header) + var(--p1-toast-reserve,0px)) 0 0;height:calc(100dvh - var(--p1-header) - var(--p1-toast-reserve,0px))}
.phase1-ui body.p1-focused .vn.desktop-story{display:block;padding:0}.p1-focused .desktop-story-record{display:none}.p1-focused .desktop-story-stage{height:100%;min-height:0;border:0;border-radius:0}
.phase1-ui body.p1-focused .vn .vnbox{transform:none;left:4vw;right:4vw;width:auto;bottom:calc(var(--p1-vn-actions,4.5rem) + .5rem);max-height:max(2rem,calc(100dvh - var(--p1-header) - var(--p1-toast-reserve,0px) - var(--p1-vn-actions,4.5rem) - 3rem));overflow:auto;padding:1rem;min-height:0}
.p1-vn-actions,.phase1-ui body.p1-focused .vn .vnch{position:fixed;bottom:0;left:0;right:0;width:auto;margin:0;z-index:150;background:#10161ef5;padding:.75rem 1rem calc(.75rem + env(safe-area-inset-bottom));display:flex;gap:.6rem;max-height:42dvh;overflow:auto}
.p1-vn-actions button{flex:1}.phase1-ui body.p1-focused .vn .vnch{flex-direction:column}
.phase1-ui body.p1-focused .vn .vnend>button{position:fixed;left:4vw;right:4vw;bottom:1rem;width:92vw}
}

.p1-home-quick{display:grid;gap:.6rem;border:1px solid var(--p1-line);border-radius:var(--p1-radius);padding:.75rem;background:var(--p1-surface)}
.p1-quick-actions{display:flex;gap:.5rem;flex-wrap:wrap}.p1-quick-data{display:flex;align-items:center;gap:clamp(.5rem,2vw,1.5rem);flex-wrap:wrap;font-size:.75rem}
.p1-quick-data>span{display:flex;align-items:center;gap:.3rem}.p1-quick-data img{width:1.25rem;height:1.25rem;object-fit:contain}
.p1-home-right{display:grid;gap:var(--p1-gap);align-content:start;min-width:0}.p1-operator-art{position:relative;display:flex;justify-content:center;aspect-ratio:1/1;max-height:20rem;margin-bottom:1rem}.p1-operator-art>img{height:100%;max-width:100%;object-fit:contain}.p1-operator-art>.p1-pet{position:absolute;bottom:0;right:0;width:35%;height:35%}
.p1-control{display:flex;align-items:center;gap:1rem}.p1-control>img{width:clamp(3.5rem,8vw,7rem);aspect-ratio:1/1;object-fit:contain;flex-shrink:0}.p1-control b,.p1-partner-content b{color:var(--p1-gold)}.p1-hero-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.p1-partner-content{display:flex;gap:1rem;align-items:center}.p1-partner-content>img{width:clamp(4rem,10vw,9rem);aspect-ratio:3/4;object-fit:contain}.p1-partner-content>div{min-width:0}.p1-contract small{line-height:1.5}.p1-home .htile .tt,.p1-home .htile .tv,.p1-home .htile .ts{white-space:normal;text-overflow:clip;overflow:visible;word-break:keep-all;overflow-wrap:anywhere}
.phase1-ui .auth-card{word-break:keep-all}.p1-action-toggle{display:none}
.phase1-ui .toast-wrap{right:1rem;bottom:calc(1rem + env(safe-area-inset-bottom));width:min(480px,calc(100vw - 2rem));max-width:480px;max-height:60dvh;overflow:auto;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}
.phase1-ui .toast-wrap .toast{font-size:15px;line-height:1.5;min-height:48px;flex-shrink:0;display:flex;align-items:flex-start;gap:.6rem;padding:.75rem;white-space:normal;overflow-wrap:anywhere;word-break:keep-all;text-overflow:clip;pointer-events:auto;background:#17202a;animation:none}
.p1-toast-text{min-width:0;flex:1}.p1-toast-speaker{display:block;font-weight:700;color:var(--p1-gold)}.p1-toast-icon{flex:0 0 1.1rem;font-weight:800;text-align:center}.toast[data-toast-type="combat"]{border-left-color:#e3b575}.toast[data-toast-type="bond"]{border-left-color:#d19ab5}.toast[data-toast-type="reward"]{border-left-color:#82c8a1}.toast[data-toast-type="error"]{border-left-color:#ee8383}.toast[data-toast-type="info"]{border-left-color:#80b3d7}
.phase1-ui .toast-wrap.p1-toast-focused{top:calc(var(--p1-toast-top) + 6px);bottom:auto;max-height:30dvh;z-index:151}
.phase1-ui .combat-desk{top:calc(var(--p1-header) + var(--p1-toast-reserve,0px))}
.phase1-ui .vn.desktop-story{top:calc(var(--p1-header) + var(--p1-toast-reserve,0px))}
@media(max-width:760px),(max-height:500px) and (max-width:1000px){
.p1-quick-actions .btn{flex:1;min-width:0;padding:.5rem;font-size:.75rem}.p1-quick-data{gap:.5rem;justify-content:space-between}.p1-quick-data>span:first-child{flex-basis:100%}
.p1-operator-art{max-height:16rem}.phase1-ui body.p1-focused .chead{margin-top:var(--p1-toast-reserve,0px)}
.phase1-ui .toast-wrap{bottom:calc(4.5rem + env(safe-area-inset-bottom));width:calc(100vw - 2rem);max-width:480px}
.phase1-ui .toast-wrap.p1-toast-focused{bottom:auto}
.p1-action-toggle{display:block;width:100%;min-height:2rem;margin-bottom:.5rem}
.phase1-ui .actpanel.p1-actions-collapsed>:not(.p1-action-toggle){display:none}
.phase1-ui .actpanel .parts{display:flex;flex-wrap:wrap;gap:.4rem}.phase1-ui .actpanel .parts button{white-space:normal;word-break:keep-all;overflow-wrap:anywhere;min-width:0;line-height:1.4}.phase1-ui .actpanel .parts .pnote{flex-basis:100%}
}

@media(max-height:500px) and (max-width:1000px) and (orientation:landscape){
.phase1-ui body.p1-focused .vn .vnch{flex-direction:row;flex-wrap:wrap}
.phase1-ui body.p1-focused .vn .vnch .btn{flex:1;min-width:0;white-space:normal;word-break:keep-all}
}

.p1-dock-toggle{display:none}
@media(max-width:760px),(max-height:500px) and (max-width:1000px){
.p1-shell{padding-bottom:calc(var(--p1-dock-height,4rem) + 3.5rem + env(safe-area-inset-bottom))}
.p1-dock-toggle{display:block;position:fixed;right:.75rem;bottom:var(--p1-dock-height,4rem);min-height:2rem;padding:.3rem .6rem;font-size:.7rem;z-index:91;background:#19212b;border:1px solid var(--p1-line)}
.phase1-ui.nav-collapsed .p1-dock{display:none}.p1-focused .p1-dock-toggle{display:none}
.phase1-ui .toast-wrap:not(.p1-toast-focused){bottom:calc(var(--p1-dock-height,4rem) + 3rem + env(safe-area-inset-bottom))}
}

.phase1-ui .hostile,.phase1-ui .combat-range-notice{scroll-margin-top:calc(var(--p1-header) + var(--p1-toast-reserve,0px) + 1rem);scroll-margin-bottom:calc(var(--p1-action-height,0px) + 1rem)}

.phase1-ui body:has(.vn) .p1-shell{visibility:hidden}

/* VN artwork fills the scene; dialogue has its own measured reserve. */
.phase1-ui .vn:not(.p1-vn-cg) .vnbg{background-size:cover!important;background-position:center;background-repeat:no-repeat}
.phase1-ui .vn.desktop-story{padding:0;gap:0}
.phase1-ui .desktop-story-stage{border:0;border-radius:0;height:100%}
.phase1-ui .desktop-story-record{border-radius:0}
.phase1-ui .vn .vnsp.stable-portrait{bottom:var(--p1-vn-dialog-height,0px);height:max(5rem,calc(100% - var(--p1-vn-dialog-height,0px) - 3rem));max-height:100%;object-fit:contain}
.phase1-ui body.p1-focused .actpanel.v3{overscroll-behavior:contain;scroll-padding-bottom:1rem;padding-bottom:calc(1rem + env(safe-area-inset-bottom))}

/* Long mobile dialogue scrolls within its share of the scene. */
@media(max-width:760px),(max-height:500px) and (max-width:1000px){
.phase1-ui body.p1-focused .vn .vnbox{max-height:min(32dvh,max(3rem,calc(100dvh - var(--p1-header) - var(--p1-toast-reserve,0px) - var(--p1-vn-actions,4.5rem) - 3rem)));overscroll-behavior:contain}
}

/* UI1 카드에서도 기존 본부 말풍선 이벤트와 표정 갱신을 유지합니다. */
.p1-partner .hqbub{flex:1;min-width:0;margin:0;padding:0;border:0;background:transparent;cursor:pointer;overflow-wrap:anywhere}
.p1-partner .hqbub:focus-visible{outline:2px solid var(--amber);outline-offset:4px}
.p1-partner-content>.hqnpc.partner{height:auto;max-width:none;max-height:none;margin-bottom:0;filter:none;object-fit:contain;object-position:50% 50%}
