/* Extracted unchanged native input styles, in original load order. */

:root{--ink:#14202E;--ink2:#33404F;--sub:#5A6573;--line:#E3E1DA;--line2:#EEECE6;--ground:#F5F4F0;--navy:#13233A;--pri:#1D3A5F;--hd:#EDF1F6;--in:#1E3A8A;--auto:#EEF1F4;
--okbg:#E4F1E7;--oktx:#1D5A33;--ambg:#FFF3DB;--amtx:#8A4B00;--tlbg:#DDF1EE;--tltx:#0B5E57;--chg:#C2410C;--errbg:#FDE8E6;--errtx:#A12A1B;--bar:#2a78d6}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
html{overflow:auto}
body{font:14px/1.5 'IBM Plex Sans KR','Malgun Gothic',sans-serif;color:var(--ink);background:var(--ground);display:flex;flex-direction:column}
button,input,select{font:inherit}
a{color:var(--in)}
header{height:64px;flex-shrink:0;display:flex;align-items:center;gap:12px;padding:0 20px;background:var(--navy);color:#fff;position:relative;z-index:20}
header .logo{width:32px;height:32px;border-radius:8px;background:#fff;color:var(--navy);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0}
header .ttl2{flex:1;min-width:0}header .ttl2 b{display:block;font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
header .ttl2 span{font-size:12px;color:#C5D0DD;white-space:nowrap}
header .hb{height:40px;padding:0 14px;border-radius:8px;border:1px solid #52667F;background:transparent;color:#fff;cursor:pointer;font-size:14px;text-decoration:none;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
header .hb:hover{background:#1F3350}
header .hb.w{background:#fff;color:var(--navy);border-color:#fff;font-weight:600}header .hb.w:hover{background:#E8EEF5}
header .menu{position:relative}
header .mn{position:absolute;right:0;top:46px;min-width:200px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(20,32,46,.18);padding:6px;display:flex;flex-direction:column}
header .mn[hidden]{display:none}
header .mn button,header .mn label{height:40px;display:flex;align-items:center;gap:10px;padding:0 12px;border:0;border-radius:6px;background:none;color:var(--ink);font-size:14px;cursor:pointer;text-align:left}
header .mn button:hover,header .mn label:hover{background:#F1F4F8}
header .mn .sep{height:1px;background:var(--line);margin:4px 6px}
.wrap{flex:1;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr);min-height:0}
main{grid-row:3}aside{grid-row:3}
.alert{grid-column:1/-1;grid-row:2;display:flex;gap:12px;align-items:flex-start;padding:10px 20px;border-bottom:1px solid;font-size:13px}.alert[hidden]{display:none}
.alert.err{background:#FDE8E6;color:#8E1F12;border-color:#F2B8B0}.alert.warn{background:#FFF3DB;color:#7A4300;border-color:#F0D39A}
.alert .ai{width:24px;height:24px;border-radius:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff;background:#C0321F;margin-top:1px}.alert.warn .ai{background:#C27400}
.alert .am{flex:1;min-width:0}.alert .am b{font-size:14px;display:block;margin-bottom:2px}.alert ul{margin:0;padding-left:18px}.alert li{margin:1px 0;line-height:1.45}
.alert .ag{flex-shrink:0;min-height:36px;font-weight:700;background:#fff;border:1.5px solid currentColor;color:inherit;white-space:nowrap}
.alert ul{max-height:150px;overflow:auto}.alert li{display:flex;gap:8px;align-items:baseline}.alert li span{flex:1}.alert li button{border:0;background:transparent;color:inherit;font:inherit;font-weight:700;text-decoration:underline;white-space:nowrap;cursor:pointer}
/* 한 줄 고정 경고 줄 — 사용자 확정 2026-09-29 (목업 경고줄-한줄고정-v0.2) */
.alert{height:44px;align-items:center;padding:0 20px;gap:10px;position:relative;z-index:6}
.alert .ai{width:22px;height:22px;font-size:13px;margin:0}
.alert .alc{font-weight:700;white-space:nowrap;font-size:14px}.alert .alc small{font-weight:600;font-size:12px;opacity:.85;margin-left:6px}
.alert .als{width:1px;height:20px;background:currentColor;opacity:.25;flex-shrink:0}
.alert .alcur{display:flex;align-items:center;gap:8px;min-width:0;border:0;background:transparent;color:inherit;font:inherit;padding:4px 8px;border-radius:5px;cursor:pointer;text-align:left}
.alert .alcur:hover:not([disabled]){background:rgba(0,0,0,.05)}.alert .alcur[disabled]{cursor:default}
.alert .alcur .tx,.alert .alrow .tx{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alert .alst{font-size:12px;font-weight:600;border:1px solid currentColor;border-radius:10px;padding:0 7px;white-space:nowrap;opacity:.8;flex-shrink:0}
.alert .algo{font-size:13px;font-weight:600;border:1px solid currentColor;background:#fff;border-radius:5px;padding:0 8px;white-space:nowrap;flex-shrink:0}
.alert .alnav{display:inline-flex;align-items:center;border:1px solid currentColor;background:#fff;border-radius:6px;padding:1px;flex-shrink:0}
.alert .alnav button,.alert .allst,.alert .almin{border:0;background:transparent;color:inherit;font:inherit;font-weight:600;padding:2px 9px;border-radius:4px;cursor:pointer;white-space:nowrap}
.alert .alnav .pos{padding:0 6px;font-variant-numeric:tabular-nums;font-weight:600}
.alert .allst{border:1px solid currentColor;background:#fff;flex-shrink:0}.alert .almin{margin-left:auto;opacity:.8;flex-shrink:0}
.alert .aldrop{position:absolute;left:52px;top:44px;width:min(760px,calc(100% - 72px));max-height:360px;overflow:auto;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:0 0 8px 8px;box-shadow:0 8px 24px rgba(20,35,58,.18)}
.alert .aldrop h4{margin:0;padding:8px 14px 4px;font-size:12px;color:var(--mute,#566271);position:sticky;top:0;background:#fff}
.alert .alrow{display:flex;align-items:center;gap:8px;width:100%;border:0;background:#fff;color:inherit;font:inherit;padding:6px 14px;cursor:pointer;text-align:left}
.alert .alrow:hover{background:#F4F6F9}.alert .alrow.on{background:#FDEEEC;box-shadow:inset 3px 0 0 #C0321F}.alert .alrow .tx{flex:1}
.alert .alk{font-size:12px;font-weight:700;border-radius:4px;padding:0 5px;color:#fff;background:#C0321F;flex-shrink:0}.alert .alk.w{background:#C27400}
.alert .aldrop .algo{border-color:#D9DEE5;color:#16212E}
.alchip{border:1px solid #F0D39A;background:#FFF3DB;color:#7A4300;font:inherit;font-size:12px;font-weight:700;border-radius:12px;padding:3px 10px;margin-right:8px;cursor:pointer}.alchip.e{border-color:#F2B8B0;background:#FDE8E6;color:#8E1F12}
.flash{animation:flash 1.1s ease-in-out 3;outline:3px solid #D93A2B!important;outline-offset:2px;border-radius:4px}
@keyframes flash{50%{outline-color:rgba(217,58,43,.15);background-color:#FFE3DF}}
nav.rail{grid-column:1/-1;display:flex;flex-direction:row;align-items:center;gap:4px;padding:8px 20px;border-bottom:1px solid var(--line);background:#fff;overflow-x:auto}
nav.rail button{display:flex;align-items:center;gap:8px;min-height:40px;width:auto;flex-shrink:0;padding:0 12px;white-space:nowrap;border-radius:8px;border:0;background:transparent;color:var(--ink2);cursor:pointer;text-align:left;font-size:14px}
nav.rail button:hover{background:#F4F6F9}
nav.rail button .d{width:22px;height:22px;border-radius:11px;border:1px solid #B4BDC9;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--sub);flex-shrink:0}
nav.rail button.done .d{background:var(--oktx);border-color:var(--oktx);color:#fff}
nav.rail button.on{background:#E8EEF5;color:var(--navy);font-weight:600}nav.rail button.on .d{background:var(--navy);color:#fff;border-color:var(--navy)}
nav.rail button.bad .d{border-color:var(--errtx);color:var(--errtx);background:#fff}
nav.rail .cnt{margin-left:auto;min-width:22px;height:20px;padding:0 6px;border-radius:10px;background:#FBEAD9;color:#8A3D0E;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center}
nav.rail .cnt.e{background:var(--errbg);color:var(--errtx)}
nav.rail .go{margin-left:auto;display:flex;align-items:center;gap:8px;padding-left:16px;flex-shrink:0}
nav.rail .go .btn{min-height:38px;white-space:nowrap}nav.rail .cnt{margin-left:2px}
nav.rail a.rs2{min-height:38px;display:flex;align-items:center;gap:8px;padding:0 12px;border-radius:8px;color:var(--pri);font-size:13px;font-weight:600;text-decoration:none}nav.rail a.rs2:hover{background:#F4F6F9}
main{min-width:0;min-height:0;overflow:auto;padding:24px 28px 60px}
.ttl{display:flex;align-items:baseline;gap:12px;margin-bottom:18px}.ttl span{font-size:13px;color:var(--sub)}.ttl h1{margin:0;font-size:20px;font-weight:700;letter-spacing:-.01em}
section.c{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin-bottom:16px}
section.c>h2{margin:0 0 14px;font-size:16px;font-weight:600;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
section.c>h2 .r{margin-left:auto;display:flex;gap:8px;align-items:center;font-weight:400}
.g{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:12px 14px}
.f{display:flex;flex-direction:column;gap:5px;min-width:0}
.f>label,.f>.lb{font-size:13px;font-weight:500;display:flex;align-items:center;gap:2px;min-height:24px}
.f .h{font-size:12px;color:var(--sub)}.f .h.w{color:var(--amtx)}.f .h.e{color:var(--errtx)}
input.i,select.i{width:100%;min-height:38px;padding:0 10px;border:1px solid #B4BDC9;border-radius:6px;background:#fff;font-size:14px;font-weight:600;color:var(--in);font-variant-numeric:tabular-nums}
input.i.n{text-align:right}
input.i:focus,select.i:focus{outline:2px solid #9DB6E0;outline-offset:0;border-color:#7E9CCB}
input.i::placeholder{color:#8A94A1;font-weight:400}
input.i.chg{box-shadow:inset 3px 0 0 var(--chg)}
select.i:disabled,input.i:disabled{background:var(--auto);color:var(--sub)}
.a{min-height:38px;padding:0 10px;border-radius:6px;background:var(--auto);display:flex;align-items:center;justify-content:flex-end;font-variant-numeric:tabular-nums;overflow:hidden;white-space:nowrap}
.a.l{justify-content:flex-start}
.ck{display:flex;align-items:center;gap:8px;min-height:38px;font-size:14px;cursor:pointer}
.ck input{width:18px;height:18px;accent-color:var(--navy)}
.seg{display:inline-flex;gap:2px;padding:3px;background:#E6E9ED;border-radius:8px}
.seg button{min-height:34px;padding:0 16px;border:0;border-radius:5px;background:transparent;color:var(--sub);cursor:pointer}
.seg button[aria-pressed=true]{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(22,33,46,.18)}
.pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap}
.pill.info{background:var(--tlbg);color:var(--tltx)}.pill.warn{background:var(--ambg);color:var(--amtx)}.pill.ok{background:var(--okbg);color:var(--oktx)}.pill.mute{background:var(--auto);color:var(--sub)}.pill.err{background:var(--errbg);color:var(--errtx)}
details.tip{position:relative;display:inline-block;vertical-align:middle;font-weight:400}
details.tip summary{list-style:none;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
details.tip summary::-webkit-details-marker{display:none}
details.tip summary span{width:17px;height:17px;border-radius:9px;border:1px solid #9AA5B3;color:var(--sub);font-size:12px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
details.tip div{position:fixed;z-index:60;top:0;left:0;margin:0;border:0;width:280px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto;padding:10px 12px;background:var(--ink);color:#fff;font-size:12px;line-height:1.6;border-radius:8px;white-space:normal;box-shadow:0 6px 18px rgba(22,33,46,.22);text-align:left;font-weight:400}
th details.tip summary span{border-color:#9AA5B3;color:var(--sub)}
.tw{overflow:auto;border:1px solid var(--line);border-radius:10px}
table.t{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
table.t th{padding:7px 8px;font-weight:600;font-size:12px;color:var(--ink2);background:var(--hd);border-bottom:1px solid #C9CFD8;white-space:nowrap;text-align:right;position:sticky;top:0;z-index:3}
table.t th.l,table.t td.l{text-align:left}
table.t td{padding:4px 8px;border-bottom:1px solid var(--line2);text-align:right;white-space:nowrap}
table.t tbody tr:hover td{background:#F7F9FC}
table.t td.au{background:#F6F7F9}
table.t td.bs{white-space:normal;color:var(--sub);font-size:12px;text-align:left;min-width:260px;max-width:460px}
table.t td.bs input.i{width:130px}
table.t input.i{min-height:32px;font-size:13px;padding:0 8px}
table.t tr.sub td{background:#F6F7F9;color:var(--ink);font-weight:600}
table.t tr.tot td{background:#EEF2F7;font-weight:700;border-top:1px solid #9AA5B3}
table.t tr.need td{background:#FFFAF0}
.btn{min-height:42px;padding:0 18px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;font-size:14px;display:inline-flex;align-items:center;gap:6px}
.btn:hover{background:#F6F7F9}
.btn.p{background:var(--navy);border-color:var(--navy);color:#fff;font-weight:600}.btn.p:hover{background:#243c61}
.btn.s{min-height:32px;padding:0 10px;font-size:13px}
.btn:disabled{opacity:.5;cursor:default}
.x{border:0;background:none;color:var(--sub);cursor:pointer;font-size:16px;min-width:28px;min-height:28px;border-radius:4px}.x:hover{background:var(--auto);color:var(--errtx)}
.rst{border:0;background:none;color:var(--in);cursor:pointer;font-size:12px;padding:0 2px;text-decoration:underline}
.foot{display:flex;align-items:center;gap:12px;margin-top:8px;flex-wrap:wrap}.foot .sp{flex:1}
.ban{padding:10px 14px;border-radius:8px;margin-bottom:14px;font-size:13px}
.ban.err{background:var(--errbg);color:var(--errtx)}.ban.warn{background:var(--ambg);color:var(--amtx)}.ban.info{background:var(--tlbg);color:var(--tltx)}
aside{width:292px;flex-shrink:0;padding:20px 18px;border-left:1px solid var(--line);background:#FAFAF8;overflow:auto}
aside .kc{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px}
aside .kc span{font-size:12px;color:var(--sub);display:block}aside .kc b{display:block;font-size:20px;font-weight:700;letter-spacing:-.01em;margin-top:2px;font-variant-numeric:tabular-nums}
aside .kc b small{font-size:12px;font-weight:400;color:var(--sub);margin-left:3px}aside .kc em{font-style:normal;font-size:12px;color:var(--sub)}
aside .kc.pf b{color:var(--oktx)}aside .kc.pf.n b{color:var(--errtx)}
aside .seg{margin:0 0 12px}aside .seg button{min-height:28px;padding:0 10px;font-size:12px}
aside h3{margin:0;font-size:14px}
aside .sh{display:flex;align-items:center;margin-bottom:8px}aside .sh h3{flex:1}
aside.fold{width:46px;padding:14px 6px;display:flex;flex-direction:column;align-items:center;gap:10px}
aside.fold .fl{writing-mode:vertical-rl;font-size:13px;color:var(--sub);letter-spacing:2px}
.fb{width:30px;height:30px;border-radius:6px;border:1px solid var(--line);background:#fff;color:var(--sub);cursor:pointer;font-size:14px;line-height:1}.fb:hover{background:var(--auto);color:var(--ink)}
.pj4{display:grid;grid-template-columns:1.5fr 1.5fr 1fr 1fr;gap:12px 14px}
.pj3{display:grid;grid-template-columns:1.5fr 1.5fr 1fr;gap:12px 14px}
/* 3단계 사업 주요가정 */
.seg.sm button{min-height:30px;padding:0 12px;font-size:13px}
.seg.xs{padding:2px;border-radius:6px}.seg.xs button{min-height:26px;padding:0 9px;font-size:12px;white-space:nowrap}
.seg.w{display:flex}.seg.w button{flex:1}
select.i.us{width:auto;min-height:32px;font-size:13px;padding:0 6px}
.gear{display:inline-flex;width:22px;height:22px;border-radius:5px;border:1px solid #9AA5B3;align-items:center;justify-content:center;font-size:12px;color:var(--pri);margin-left:4px;background:#fff;cursor:pointer;vertical-align:middle}.gear:hover{background:#E8EEF5}
.bal{display:inline-flex;align-items:center;justify-content:flex-end;min-width:84px;min-height:32px;padding:0 10px;border:1px dashed #7E9CCB;border-radius:6px;color:var(--in);font-weight:600;background:#F4F7FC;cursor:pointer;font:inherit;font-weight:600}.bal.em{color:#8A94A1;font-weight:400}.bal:hover{background:#E8EEF5}
table.t tr.kid td{background:#FBFCFD;color:var(--sub)}table.t tr.kid td.l{padding-left:32px}
table.t tr.bl td{background:#F4F7FC}
table.t.pt th{vertical-align:bottom;line-height:1.3}table.t th.c,table.t td.c{text-align:center}table.t th.nw{white-space:nowrap}
table.t.pt td{padding:4px 6px}table.t.pt input.i{width:112px}table.t.pt .a{min-height:32px;min-width:100px}
.ar2{display:inline-flex;flex-direction:column;align-items:flex-end;line-height:1.25}.ar2 small{font-size:12px;color:var(--sub)}
table.t.ct td,table.t.ct th{vertical-align:middle;padding:4px 5px}table.t.ct td input.i{width:78px}table.t.ct td:nth-child(4) input.i{width:116px}table.t.ct td:nth-child(4) .a{min-height:32px}
table.t.ct td:first-child{white-space:normal;min-width:92px}
/* 입력 방식 토글 — 항목 수와 관계없이 전체 길이는 같고 칸은 똑같이 나눈다(2개 1/2 · 3개 1/3) */
.seg.xs.eq{display:flex;width:198px}.seg.xs.eq button{flex:1 1 0;min-width:0;padding:0 2px;overflow:hidden;text-overflow:ellipsis}
table.t.ct td:nth-child(2){width:206px}
/* 산정기준 — 기준 수량과 단가·요율 입력을 한 칸에, 왼쪽 정렬 */
table.t.ct td:nth-child(3){white-space:normal;min-width:260px}table.t.ct td:nth-child(3) .cfs{justify-content:flex-start;flex-wrap:wrap;gap:4px 5px}
table.t.ct td:nth-child(3) input.i{width:74px}table.t.ct td:nth-child(3) .qty{white-space:nowrap}table.t.ct td.nw{white-space:nowrap}
.ctl{font:inherit;font-size:13px;font-weight:600;color:var(--pri);background:#F4F7FC;border:1px dashed #7E9CCB;border-radius:6px;min-height:32px;padding:0 10px;cursor:pointer}.ctl:hover{background:#E8EEF5}
.sh{font-size:13px;font-weight:700;color:var(--ink2);margin:6px 0 10px;display:flex;align-items:center;gap:8px}.sh:after{content:"";flex:1;height:1px;background:var(--line)}
.g+.sh,.ban+.sh{margin-top:18px}
.pill.in{background:#E8EEF5;color:var(--pri)}
.bar+.sh{margin-top:14px}
/* 열 너비 조정 — 머리글 오른쪽 끝을 끌면 바뀌고, 두 번 누르면 원래대로 (표마다 브라우저에 저장) */
table.t th .rz{position:absolute;top:0;right:-4px;width:8px;height:100%;cursor:col-resize;z-index:6;touch-action:none}
table.t th:last-child .rz{right:0}table.t th .rz:hover,table.t th .rz.on{background:rgba(30,58,138,.28)}
table.t.rzd{table-layout:fixed}table.t.rzd td,table.t.rzd th{overflow:hidden;text-overflow:ellipsis}table.t.rzd input.i,table.t.rzd select.i{max-width:100%}
.bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:2px 0 4px}
.bar .it{display:flex;align-items:center;gap:8px}.bar .lb{font-size:13px;font-weight:600;color:var(--ink2);display:inline-flex;align-items:center}
.bar select.i.sm{width:auto;min-height:32px;font-size:13px;padding:0 8px}.bar input.i.yr{width:140px;min-height:32px;font-size:13px}.bar input.i.yr::placeholder{font-size:12px}
.bar .ctb{margin-left:auto;gap:6px}
section.c>h2 .r input.i.yr{width:150px;min-height:30px;font-size:13px;padding:0 8px}section.c>h2 .r input.i.yr::placeholder{font-size:12px}
.dpw{position:relative;display:flex;align-items:center;width:100%}.dpw>.i{flex:1;min-width:0;padding-right:32px}td .dpw,section.c>h2 .r .dpw{display:inline-flex;width:auto}
.dpb{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:26px;height:26px;border:0;border-radius:5px;background:none;color:var(--sub);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.dpb:hover{background:var(--auto);color:var(--pri)}.dpb:disabled{opacity:.4;cursor:default}
input.i.bad{outline:2px solid #D93A2B;background:#FFF5F4}
.dpk{position:fixed;z-index:1000;background:#fff;border:1px solid #C9CFD8;border-radius:8px;box-shadow:0 8px 24px rgba(20,32,46,.18);width:244px;padding:12px 12px 10px}.dpk.d3{width:318px}.dpk[hidden]{display:none}
.dpk .dph{display:flex;align-items:center;margin-bottom:8px}.dpk .dph b{flex:1;font-size:14px}.dpk .dpx{border:0;background:none;font-size:20px;line-height:1;color:var(--sub);cursor:pointer;padding:0 2px}
.dpk .dpn{font-size:12px;color:var(--sub);margin:-4px 0 6px}
.dpk .dpc{display:flex;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.dpk ul{list-style:none;margin:0;padding:4px 0;flex:1;height:176px;overflow-y:auto;scrollbar-width:thin}.dpk ul+ul{border-left:1px solid var(--line)}
.dpk li{padding:5px 12px;font-size:14px;cursor:pointer;color:var(--ink2);white-space:nowrap}.dpk li:hover{background:#F1F4F8}.dpk li.on{background:#E8EEF5;color:var(--ink);font-weight:700}.dpk li.off{color:#C0C6CE;cursor:default;background:none}
.dpk .dpf{font-size:12px;color:var(--sub);margin-top:8px}
table.t th.pre,table.t td.pre{background:#FFF3DB}table.t th.bad,table.t td.bad{background:#FDE8E6;color:#A12A1B}
.miss{outline:2px solid #D93A2B!important;outline-offset:1px;background:#FFF5F4!important}tr.miss td{background:#FFF0EE!important}
ul.mis{list-style:none;margin:0 0 12px;padding:0}ul.mis li{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--line2);font-size:13px}ul.mis li span{flex:1}
.ban.mb{margin-bottom:12px}
.inv{color:var(--sub);font-size:13px;display:inline-flex;align-items:center;gap:6px}.inv em{font-style:normal;font-size:12px;padding:1px 6px;border-radius:8px;background:#EEF1F4;color:#566271}
.ctn{font-size:12px;color:var(--sub);font-weight:400;margin-top:2px;white-space:nowrap}.bar label.ck.in{margin-left:0;font-size:13px}
.ctbar{display:flex;height:22px;border-radius:6px;overflow:hidden;margin-top:12px;background:var(--auto)}.ctbar span{display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;white-space:nowrap;overflow:hidden}
table.t.ctt td{vertical-align:middle}table.t.ctt input.i{width:110px}
label.ck.in{display:inline-flex;min-height:24px;font-size:12px;font-weight:400;margin-left:10px;gap:6px}
dialog.sm{width:min(620px,94vw)}
.ck.r{min-height:30px;font-size:13px;gap:6px;color:var(--ink)}
input.i.autov{color:var(--sub);font-weight:500}
.imp{display:flex;flex-direction:column;gap:12px}
.imp .st{display:flex;gap:12px;align-items:flex-start}
.imp .no{width:24px;height:24px;border-radius:12px;background:var(--navy);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:8px}
.imp .bd{flex:1;min-width:0}
.imp .ac{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.imp .t2{font-weight:600;margin-right:6px}
textarea.ta{width:100%;min-height:92px;padding:8px 10px;border:1px solid #B4BDC9;border-radius:6px;font:12px/1.5 ui-monospace,Consolas,monospace;resize:vertical;color:var(--ink)}
textarea.ta:focus{outline:2px solid #9DB6E0;border-color:#7E9CCB}
.rs{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;border-radius:8px;background:#F6F7F9}
a.btn{text-decoration:none}
.rl{margin:0;padding:0}.rl li{list-style:none;display:flex;gap:10px;padding:7px 0;border-bottom:1px solid var(--line);font-size:13px}
.rl li b{min-width:150px;font-weight:500}.rl li span{color:var(--sub)}
.pgw{position:relative;overflow-x:auto}
.pgw svg{display:block}
.ctip{position:absolute;pointer-events:none;background:var(--ink);color:#fff;font-size:12px;line-height:1.5;padding:6px 9px;border-radius:6px;white-space:nowrap;box-shadow:0 4px 12px rgba(22,33,46,.25);z-index:5}
table.t.ut td:nth-child(1) select{min-width:128px}
.cfs{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.cfs input.i{width:82px;min-height:28px;font-size:12px;padding:0 6px}
label.cf{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--sub)}
label.cf input.i{width:74px;min-height:28px;font-size:12px;padding:0 6px}
.qty{font-size:12px;color:var(--sub);white-space:nowrap}
.bsw{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
table.t.s4t td.bs{min-width:320px;max-width:520px}
table.t.s4t th:nth-child(1),table.t.s4t td:nth-child(1){position:sticky;left:0;z-index:2;background:#fff;width:66px;min-width:66px}
table.t.s4t th:nth-child(2),table.t.s4t td:nth-child(2){position:sticky;left:var(--c1w,66px);z-index:2;background:#fff;box-shadow:inset -1px 0 0 var(--line2);min-width:170px}
table.t.s4t thead th:nth-child(1),table.t.s4t thead th:nth-child(2){z-index:4;background:var(--hd)}
.eqb{display:flex;margin-top:4px}.eqb button{min-height:24px!important;padding:0 6px!important;font-size:12px!important;font-weight:500}
table.t.s4t tr.vx td{color:var(--ink2);font-size:13px}table.t.s4t tr.sub td[colspan]{position:static}
table.t.s4t tr.sub td:nth-child(-n+2){background:#F6F7F9}table.t.s4t tr.tot td:nth-child(-n+2){background:#EEF2F7}table.t.s4t tr.need td:nth-child(-n+2){background:#FFFAF0}
table.t.s4t tbody tr:hover td:nth-child(-n+2){background:#F7F9FC}
table.t tr.sub:hover td{background:#F6F7F9}
button.tg{border:0;background:none;padding:0;font:inherit;font-weight:600;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
button.tg .ar{display:inline-block;width:14px;color:var(--sub)}
.vsrc{display:inline-flex;margin-left:4px}
table.t.ut td:nth-child(3) input{width:58px}
table.t.ut td:nth-child(2) input{min-width:84px}
.big{font-size:16px;font-weight:700;margin:0 0 12px;display:flex;align-items:center;gap:8px}
aside .kv{display:flex;justify-content:space-between;gap:8px;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}
aside .kv span:first-child{color:var(--sub)}aside .kv span:last-child{font-weight:500;text-align:right;font-variant-numeric:tabular-nums}
aside .kv.big span:last-child{font-size:16px;font-weight:700}
#pv{font-size:12px;color:var(--sub);margin:4px 0 12px;display:flex;align-items:center;gap:6px}
#pv.err{color:var(--errtx)}
header #pv{display:inline;margin:0;font-size:inherit;color:inherit}header #pv.err{color:#FFB4A8}
.card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:12px;background:#fff}
.card.tr{border-color:#9CC9C3;background:#FBFEFD}
.card .hd{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-weight:600}
.card .hd .sp{flex:1}
.chart{width:100%;height:auto;display:block}
.chk li{list-style:none;display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line)}
.chk{margin:0;padding:0}
.chk li button{margin-left:auto;flex-shrink:0}
.met{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.met div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.met b{display:block;font-size:20px;font-variant-numeric:tabular-nums;margin-top:4px}
details.c{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 20px;margin-bottom:16px}
details.c>summary{cursor:pointer;font-weight:600;font-size:14px}
details.c section.c{border:0;padding:0;margin:12px 0 0}
.met span{font-size:13px;color:var(--sub)}
dialog{border:0;border-radius:12px;padding:0;width:min(1040px,94vw);max-height:90vh;box-shadow:0 20px 60px rgba(22,33,46,.35)}
dialog::backdrop{background:rgba(22,33,46,.45)}
dialog .dh{position:sticky;top:0;background:var(--navy);color:#fff;padding:14px 20px;font-weight:600;display:flex;align-items:center;z-index:2}
dialog .dh .sp{flex:1}
dialog .db{padding:18px 20px;background:var(--ground)}
dialog .df{position:sticky;bottom:0;background:#fff;border-top:1px solid var(--line);padding:12px 20px;display:flex;gap:10px;justify-content:flex-end}
.neg{color:var(--errtx)}
input.i.impc,select.i.impc{background:var(--ambg)}input.i.impm{border-style:dashed;border-color:#E0A33A}
tr.impc td{background:#FFF8E8}
.drop{border:1.5px dashed #B9C1CB;border-radius:10px;padding:16px;display:flex;gap:14px;align-items:center;flex-wrap:wrap;background:#FAFBFC}
.drop.on{border-color:var(--in);background:#EEF3FB}
.muted{color:var(--sub)}
.spin{width:12px;height:12px;border-radius:6px;border:2px solid #B9C1CB;border-top-color:var(--navy);animation:sp 0.8s linear infinite;display:inline-block}
@keyframes sp{to{transform:rotate(360deg)}}


/* 1단계 — 단위 · 층수 · 7칸 줄 */
.uw{display:flex;align-items:center;gap:5px;min-width:0}.uw>.i,.uw>.a{flex:1;min-width:0}.un{font-size:13px;color:var(--sub);white-space:nowrap;flex-shrink:0}
button.a.flr{width:100%;border:1px solid #B4BDC9;background:#fff;color:var(--in);font:inherit;font-weight:600;font-size:13px;padding:0 6px;justify-content:center;cursor:pointer}
table.t.ut td input.i.n{min-width:80px}button.a.flr:hover{border-color:var(--pri)}

/* 2단계 차트 통합 — 사업 및 공사일정 (2단계-차트통합-제안 v0.3) */
.klg{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:6px}
.klt{display:inline-flex;align-items:center;gap:7px;border:1px solid #C9CFD8;border-radius:16px;padding:3px 11px;font-size:13px;cursor:pointer;background:#fff;color:var(--ink2);min-height:30px}
.klt[aria-pressed="false"]{opacity:.45;background:#F4F5F7}
.klt .ksw{width:16px;height:0;border-top:3px solid;flex-shrink:0}.klt .ksw.ka{height:10px;border:0;background:#E4E8ED;border-top:2px solid #7A8594}
.klt .ksw.kv{width:0;height:12px;border-top:0;border-left:2px solid #33404F}.klt .ksw.kvs{width:0;height:12px;border-top:0;border-left:2px dashed #6B4FA3}
.kbox .lb{white-space:nowrap}
.klg .sep{width:1px;height:20px;background:var(--line);margin:0 4px}
.kcw{position:relative;cursor:zoom-in;margin-top:4px}.kcw svg,.kxs svg{display:block}
.ktip{position:absolute;background:#fff;border:1px solid #C9CFD8;border-radius:8px;box-shadow:0 6px 16px rgba(0,0,0,.12);padding:8px 10px;font-size:12px;pointer-events:none;min-width:210px;z-index:5;color:var(--ink)}
.ktip[hidden]{display:none}.ktip b{display:block;margin-bottom:4px}.ktip .ln{display:flex;gap:6px;align-items:center}.ktip .ln i{width:10px;height:3px;flex-shrink:0}.ktip .ln span{margin-left:auto;font-weight:600;padding-left:10px}
.ktip .evs{margin-top:5px;border-top:1px solid #EEE;padding-top:4px;color:var(--ink2)}
.kch{display:flex;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-top:10px;cursor:pointer;flex-wrap:wrap;position:relative;row-gap:2px}
.kch:hover{border-color:#9DB2CF;background:#FAFBFD}
.kch .hd{flex:0 0 100%;font-weight:700;font-size:13px;display:flex;gap:6px;align-items:center;padding:0 0 4px}
.kch .hd i{width:14px;border-top:2px solid #33404F}.kch.s .hd i{border-top:2px dashed #6B4FA3}
.kch .note{flex:0 0 100%;font-size:12px;color:var(--sub);margin:-2px 0 4px}
.kch .ed{position:absolute;right:10px;top:6px;border:0;background:none;font:inherit;font-size:13px;color:var(--pri);font-weight:600;cursor:pointer;min-height:28px;padding:0 4px}
.ktl{position:relative;height:72px;flex:0 0 100%}
.knd{position:absolute;top:0;transform:translateX(-50%);text-align:center;white-space:nowrap}.knd .k{font-size:12px;color:var(--sub);white-space:nowrap}.knd .v{font-weight:700;font-size:13px;white-space:nowrap}.knd .m{font-size:12px;color:var(--sub);white-space:nowrap}
.kln{position:absolute;top:29px;height:13px;border-bottom:1.5px solid #B9C4D2}.kln:after{content:"";position:absolute;right:-2px;bottom:-5px;border:4px solid transparent;border-left:6px solid #B9C4D2}
.kln span{position:absolute;left:-40px;right:-40px;bottom:3px;text-align:center;font-size:12px;color:var(--pri);white-space:nowrap}
.knd .tag{font-size:12px;font-weight:700;color:#33404F;height:15px;white-space:nowrap}
.kar{flex:1 1 40px;min-width:max-content;text-align:center;font-size:12px;color:var(--pri);padding:12px 12px 0 8px;position:relative;white-space:nowrap}
.kar:before{content:"";position:absolute;left:4px;right:4px;top:30px;border-top:1.5px solid #B9C4D2}.kar:after{content:"";position:absolute;right:2px;top:26px;border:4px solid transparent;border-left:6px solid #B9C4D2}
.kar.e{flex:1 1 18px;min-width:18px;padding:12px 0 0}.kar.long{flex:6 1 220px}.kar.tight{flex:0 0 auto;min-width:58px}
.kch.w .kar{padding-top:27px}.kch.w .kar:before{top:45px}.kch.w .kar:after{top:41px}
/* 분양 일정이 한 지점뿐이면 (선택 문구 없는) 빈 태그 줄을 빼고 높이를 줄인다 */
.kch.s .ktl:has(.knd:only-child){height:56px}.kch.s .ktl .knd:only-child .tag:empty{display:none}
.kempty{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:18px;border:1.5px dashed #C9CFD8;border-radius:10px;color:var(--sub);flex-wrap:wrap}
.kov{position:fixed;inset:0;top:var(--kovt,0px);background:rgba(22,33,46,.45);display:flex;align-items:flex-start;justify-content:center;padding-top:16px;z-index:40}
.hpf-input .hpf-main:has(#kov){isolation:auto}
.kdlg{width:min(1000px,calc(100vw - 48px));max-height:min(720px,calc(100dvh - var(--kovt,0px) - 40px));background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 20px 60px rgba(22,33,46,.35);display:flex;flex-direction:column}
.kdlg.kbig{width:96vw}
.kdh{background:var(--navy);color:#fff;padding:10px 12px 10px 18px;display:flex;align-items:center;gap:10px;flex-shrink:0;cursor:move;user-select:none;touch-action:none}
.ktb{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:8px}.ktb .sp{flex:1}
.kct{display:flex;align-items:flex-end;border-bottom:1px solid #C9CFD6;margin-bottom:8px}.kct button{border:1px solid transparent;border-bottom:0;background:none;padding:6px 16px;margin-bottom:-1px;border-radius:4px 4px 0 0;text-align:left;line-height:1.25;cursor:pointer;color:var(--sub,#5A6573);font:inherit}
.kct button[aria-selected=true]{border-color:#C9CFD6;background:#fff;color:var(--ink)}.kct .cn{font-size:13px}.kct .cn.rv{font-weight:700;color:var(--ink)}.kct .st{color:#C08A00;margin-left:3px}.kct .ps{display:block;font-size:12px;color:#5A6573}
.kct .leg{margin-left:auto;align-self:center;font-size:12px;color:#5A6573;padding:0 4px 4px}.kct .leg b{color:#C08A00}
.btn.s.on{background:var(--pri);border-color:var(--pri);color:#fff;font-weight:600}.kcc{border:1px solid #D4D1C8;border-radius:6px;padding:8px;margin-top:10px}.kcl{font-size:12px;color:#5A6573}.kcl i{display:inline-block;width:16px;height:3px;vertical-align:middle;margin-right:4px}
table.t th.post,table.t td.post{background:#EEF4FB}
.kfr{display:flex;gap:14px 22px;flex-wrap:wrap;margin-bottom:10px}.kf{display:flex;flex-direction:column;gap:4px;min-width:170px}.kf .lb{font-size:13px;font-weight:600;color:var(--ink2)}.kf .kg{font-size:13px;color:#8A94A1;min-height:18px}
table.t.kst{table-layout:fixed;width:100%}table.t.kst td,table.t.kst th{padding:4px 4px}table.t.kst th:first-child,table.t.kst td:first-child{width:82px}table.t.kst .dpw{width:100%}table.t.kst input.i{text-align:left;padding-left:8px}
.ksep{display:inline-block;width:1px;height:22px;background:var(--line);margin:0 6px}.kdh .sp,.kdf .sp{flex:1}
.kx{background:none;border:0;color:#fff;font-size:20px;cursor:pointer;line-height:1;min-width:36px;min-height:36px;border-radius:6px}.kx:hover{background:#1F3350}
.kdb{display:grid;grid-template-columns:160px minmax(0,1fr);grid-template-rows:minmax(0,1fr);min-height:0;flex:1}
.knav{background:#F6F7F9;border-right:1px solid var(--line);padding:12px 8px;display:flex;flex-direction:column;gap:2px;min-height:0;overflow:auto}
.knav button{text-align:left;padding:7px 10px;border-radius:8px;font-size:13px;color:var(--ink2);border:0;background:none;cursor:pointer;min-height:34px;flex-shrink:0}
.knav button:hover{background:#EEF1F5}.knav button.on{background:#E8EEF5;color:var(--navy);font-weight:700;box-shadow:inset 3px 0 0 var(--pri)}
.knav-group{padding:6px 12px 3px;font-size:12px;font-weight:600;color:var(--sub)}.knav-group:not(:first-child){margin-top:10px}
.kdlg .pw4 input.i{padding-right:26px}.kdlg .pw4 i{right:8px}
#kb-pay table.t input.i,#kb-pay table.t select.i{height:32px;min-height:32px;font-size:13px;border-radius:4px}
.kpane{padding:16px 20px;overflow:auto;background:var(--ground);min-height:0}
.kbox{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:12px;background:#fff}
.kbox.hi{border-color:var(--pri);box-shadow:0 0 0 3px #DCE6F3}
.kbox h3{margin:0 0 10px;font-size:14px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.kbox h3 .r{margin-left:auto;font-weight:400}
.kdf{display:flex;gap:8px;padding:10px 18px;border-top:1px solid var(--line);align-items:center;background:#fff;flex-shrink:0}
table.kfrm{border-collapse:collapse;width:100%}table.kfrm td{padding:8px 6px;border-bottom:1px solid var(--line2);font-size:13px;vertical-align:middle}table.kfrm td:first-child{padding-left:12px}table.kfrm td:last-child{padding-right:12px}table.kfrm td.eq{width:24px;padding:8px 2px}table.kfrm td.pn{width:40px;text-align:center}table.kfrm td.pl{width:120px}
table.kfrm td.nm{font-weight:600;color:var(--ink2);white-space:nowrap}table.kfrm td.bs{color:var(--sub);white-space:nowrap}table.kfrm td.pl{white-space:nowrap}
table.kfrm td.eq{text-align:center;color:var(--sub)}table.kfrm td.note{font-size:12px;color:var(--sub);padding-left:14px;line-height:1.45}
input.i.kmi{width:64px;display:inline-block}.kfrm .kdel{border:0;background:none;color:#98A2B3;font-size:14px;line-height:1;cursor:pointer;padding:0 2px;margin-left:2px;vertical-align:1px}.kfrm .kdel:hover{color:#C0392B}.kfrm tr.kadd td{padding:4px 8px}.kaddb{border:0;background:none;color:#98A2B3;font-size:13px;cursor:pointer;padding:2px 0}.kaddb:hover{color:#3E78C8;text-decoration:underline}.kfrm .dpw{width:128px;display:inline-flex}.kfrm input.kdi{width:100%}
.kpin{border:1px solid #C9CFD8;background:#fff;border-radius:6px;min-width:36px;min-height:34px;cursor:pointer;opacity:.4;font-size:14px}.kpin.on{opacity:1;border-color:var(--pri);background:#E8EEF5}
.ctlag{display:flex;align-items:center;gap:10px;margin-top:12px;font-size:13px}.ctlag select{width:auto}
dialog.eqd{width:min(900px,94vw)}.eqtop{display:flex;gap:18px;align-items:flex-end;flex-wrap:wrap;padding-bottom:12px;border-bottom:1px solid var(--line2)}.eqtop .lb{font-size:12px;color:var(--sub);margin-bottom:4px}
input.eqtot{width:170px;font-weight:600}table.eqt{margin-top:10px;width:100%}table.eqt td{padding:6px 8px}table.eqt input.eqi{width:110px}.eqt td.eqa,input.c4e.eqa{color:#2B6CB0;background:#F4F8FD}.eqt td.mute{color:#A0AAB6}
.eqo{display:inline-block;width:18px;height:18px;border-radius:50%;background:#E3EAF3;color:#1D3A5F;font-size:12px;text-align:center;line-height:18px;margin-right:6px}
.eqm{display:flex;gap:12px;flex-wrap:wrap;margin-top:10px;font-size:13px}.eqm .ok4{color:#1F7A4D;font-weight:600}.eqref{margin-top:12px;border:1px dashed #C9D3E0;border-radius:8px;padding:9px 12px;font-size:13px;background:#FAFBFD}
.lk4{border:0;background:none;color:#3E78C8;cursor:pointer;padding:0;font-size:13px}.lk4:hover{text-decoration:underline}
.eql4{display:flex;align-items:center;gap:8px;margin:0 0 10px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:13px}.eql4 .sp{flex:1}.eql4.miss{border-color:#F0C27A;background:#FFFBF4}.eql4 .eqv{font-size:13px}
.kfs{margin-top:8px;font-size:13px;color:var(--ink2)}.kfh{font-size:12px;margin-top:6px;line-height:1.5}
.kzb{padding:12px 16px;overflow:auto;min-height:0}
.kxw{position:relative}.kxs{overflow-x:auto;border:1px solid var(--line);border-radius:10px;position:relative;background:#fff}
.kyf{position:absolute;left:1px;top:1px;width:44px;pointer-events:none}.kyf[hidden]{display:none}
.kyf span{position:absolute;right:0;font-size:12px;font-weight:600;color:#5A6573;background:rgba(255,255,255,.92);padding:0 4px;border-radius:4px}

/* 4단계 사업수지 · 자금조달 검토 (목업 step4-목업-v0.10) */
main.m4{padding:12px 16px 12px 0;overflow:hidden;display:flex;flex-direction:column}
.s4w{flex:1;min-height:0;display:flex;gap:16px}
.fs4{position:relative;overflow:visible;width:288px;flex-shrink:0;background:#FBFBF9;border:1px solid var(--line);border-left:0;border-radius:0 12px 12px 0;display:flex;flex-direction:column;min-height:0;transition:width .28s ease}
.fs4.open{width:600px}
.fsh4{display:flex;align-items:center;gap:6px;padding:10px 12px 8px}.fsh4 b{font-size:14px;white-space:nowrap}.fsh4 .sp{flex:1}
.fsb4{flex:1;min-height:0;overflow:auto;padding:0 12px 14px}
.fsx4{position:absolute;top:50%;right:-19px;transform:translateY(-50%);width:18px;height:120px;background:#fff;border:1px solid #C2C9D2;border-left:0;border-radius:0 11px 11px 0;box-shadow:3px 1px 6px rgba(20,32,46,.08);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:6;color:#6A7684;padding:0;transition:color .15s,width .15s,right .15s}
.fsx4:hover{color:var(--pri);width:21px;right:-22px}.fsx4 svg{transition:transform .3s ease}.fs4.open .fsx4 svg{transform:rotate(180deg)}
.u4{display:inline-flex;background:#EEF1F4;border-radius:7px;padding:2px;flex-shrink:0}
.u4 button{border:0;background:transparent;font-size:12px;padding:2px 6px;border-radius:5px;color:var(--sub);cursor:pointer;min-height:0}
.u4 button[aria-pressed="true"]{background:#fff;color:var(--ink);font-weight:700;box-shadow:0 1px 1px rgba(0,0,0,.08)}
.fmh4 .u4 button{font-size:12px;padding:4px 9px}
.cd4{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px}
.cd4 h4{margin:0 0 10px;font-size:13px;color:var(--ink2);display:flex;align-items:center;gap:6px}.cd4 h4 .sp{flex:1}
.note4{font-size:12px;color:#8A94A1;font-weight:400}
.kv4{margin-top:10px;font-size:12px;display:flex;flex-direction:column;gap:3px}
.kv4 .kr{display:flex;flex-wrap:wrap;align-items:center;column-gap:10px;row-gap:1px}.kv4 .kr>span{color:var(--sub);display:inline-flex;align-items:center}.kv4 .kr>b{margin-left:auto;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.kv4 .kr b.r{color:#C0321F}.kv4 .kr b small{font-weight:500;color:#8A94A1;font-size:12px}.kv4 .un4{font-size:10px;margin-left:2px}
.kv4 .hr{height:1px;background:var(--line2);margin:2px 0}
.kv4 details.tip summary{width:18px;height:18px}.kv4 details.tip summary span{width:14px;height:14px;font-size:9.5px}
.sum4 .kv4{margin-top:0}.fs4.open .sum4 .kv4{display:block;columns:2;column-gap:22px}.fs4.open .sum4 .kv4 .kr{break-inside:avoid;margin-bottom:2px}.fs4.open .sum4 .kv4 .hr{break-inside:avoid}
.ln4{border-top:1px solid var(--line2);padding:8px 0}.ln4:first-of-type{border-top:0;padding-top:0}
.ln4 .t,.lr4 .t{display:flex;align-items:center;gap:6px}.ln4 .t b,.lr4 .t b{font-size:13px}
.rk4{font-size:12px;font-weight:800;color:#fff;background:var(--navy);border-radius:4px;padding:1px 5px;white-space:nowrap}
.ty4{font-size:12px;font-weight:700;border-radius:4px;padding:1px 5px}.ty4.pf{background:#E8F0FB;color:#2A6FD1}.ty4.spc{background:#EEF0FB;color:#4B55B8}.ty4.tr{background:#E6F4F0;color:#0E7C66}.ty4.cc{background:#FFF1DC;color:#9A5B00}
.ln4 .d{display:flex;flex-direction:column;gap:1px;margin-top:5px;font-size:12px}.ln4 .d div{display:flex;flex-wrap:wrap;column-gap:8px}.ln4 .d span{color:var(--sub)}.ln4 .d b{margin-left:auto;font-weight:600;font-variant-numeric:tabular-nums}
.ln4 .d div.ref span,.ln4 .d div.ref b{color:#8A94A1;font-weight:500}
.lr4{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin-bottom:8px;background:#fff}.lr4 .t .sp{flex:1}
.g44{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px 8px;margin-top:6px}
.f4{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--sub);min-width:0}.f4>span{display:flex;align-items:center;gap:3px;white-space:nowrap;min-height:20px}
.f4 input.i,.f4 select.i{min-height:30px;font-size:13px;padding:0 7px}.f4 input.i:disabled{background:#EEF1F4;color:var(--ink2);border-color:transparent}
.f4.w2{grid-column:span 2}.f4>span{overflow:hidden}
.f4 input.rfv{color:#8A94A1!important}.f4 details.tip summary{width:18px;height:18px}.f4 details.tip summary span{width:14px;height:14px;font-size:9.5px}
.fiw{position:relative;display:block}.fiw input.i{padding-right:44px;width:100%}.fiw i{position:absolute;right:7px;top:50%;transform:translateY(-50%);font-style:normal;font-size:12px;color:#8A94A1;pointer-events:none}
em.rf{font-style:normal;font-size:9.5px;color:#8A94A1;border:1px solid #CDD2D9;border-radius:3px;padding:0 3px}
.ck.xs{min-height:0;font-size:12px;gap:3px;display:inline-flex;align-items:center}.ck.xs input{width:13px;height:13px}
.addl4{display:flex;gap:5px;flex-wrap:wrap;align-items:center;font-size:12px;color:var(--sub)}.addl4 button{border:1px dashed #9FB3CC;border-radius:12px;padding:2px 10px;color:var(--pri);font-weight:600;background:#fff;cursor:pointer;font-size:12px}
.dist4{border-color:#CFE3DC;background:linear-gradient(180deg,#F6FBF9,#fff 60%)}.dist4 h4{color:#0B5E4E}
.rt4{display:flex;align-items:flex-end;gap:10px}.rt4 .g44{flex:1;margin-top:0}.ckv{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;color:var(--ink2);white-space:nowrap;min-height:30px}
.gy4{font-size:12px;color:#8A94A1;margin-top:4px;display:flex;align-items:center}
.pw4{position:relative;display:block}.pw4 input.i{width:100%;padding-right:24px;text-align:right}.pw4 i{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-style:normal;font-size:12px;color:#8A94A1;pointer-events:none}
#dlg .pw4 input[data-vr]{padding-right:26px}
.dist4 h4{display:flex;align-items:center;gap:4px}.h54{margin:12px 0 0;font-size:12px;font-weight:700;color:var(--ink2)}
.acc4{border:1px solid var(--line);border-radius:10px;background:#fff;margin-bottom:8px;padding:0 12px}.acc4 summary{padding:9px 0;display:flex;align-items:center;gap:6px;font-weight:600;font-size:13px;cursor:pointer;list-style:none}
.acc4 summary::-webkit-details-marker{display:none}.acc4 summary .sp{flex:1}.acc4 summary i{font-style:normal;color:#8A94A1;font-weight:400;font-size:12px}.acc4[open]{padding-bottom:10px}
.fs4 .ed4{display:block}
/* 메인 틀 */
.fm4{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px;min-height:0}
.fmh4{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.fmh4 .sp{flex:1}
.s4tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;margin-left:auto;max-width:100%;order:1}
.seg4{display:inline-flex;background:#E7EBF0;border-radius:11px;padding:4px}
.seg4 button{border:0;background:transparent;font-size:16px;padding:6px 18px;border-radius:8px;color:var(--ink2);cursor:pointer;letter-spacing:-.01em;min-height:0}
.seg4 button[aria-pressed="true"]{background:#fff;color:var(--navy);font-weight:800;box-shadow:0 1px 2px rgba(0,0,0,.12)}
.chk4{display:flex;gap:5px;flex-wrap:wrap}.chk4 span{font-size:12px;border-radius:11px;padding:2px 9px;background:#FDE8E6;color:#8E1F12;white-space:nowrap}
.bz4{font-size:12px;color:var(--sub);display:inline-flex;align-items:center;gap:5px}
.fr4{position:relative;flex:1;min-height:0;background:#fff;border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 1px 2px rgba(20,32,46,.04)}
.g4w{flex:1;min-height:0;overflow:auto;scrollbar-gutter:stable}
table.x4t{border-collapse:separate;border-spacing:0;font-size:12px;table-layout:fixed;width:100%;min-width:1180px}
table.x4t th,table.x4t td{border-bottom:1px solid var(--line2);padding:0 8px;height:28px;white-space:nowrap;text-align:right;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
table.x4t thead th{position:sticky;background:#F4F6F9;z-index:5;font-weight:600;color:var(--ink2);font-size:12px;overflow:visible}
table.x4t thead tr.h1 th{top:0;height:26px;border-bottom:1px solid #D3D8DF}table.x4t thead tr.h2 th{top:26px;height:28px}
table.x4t th.l,table.x4t td.l{text-align:left}table.x4t th.c{text-align:center}
table.x4t .fz{position:sticky;left:0;z-index:3;background:#fff;text-align:left;box-shadow:inset -1px 0 0 #C2C9D2}table.x4t thead .fz{z-index:7;background:#F4F6F9}
table.x4t td.fnd,table.x4t th.fnd{border-left:1px solid #D3D8DF}
table.x4t tr.band td{height:30px;font-weight:800;font-size:13px;letter-spacing:.02em}
table.x4t tr.band.rv td{background:#E6F4F0;color:#0E7C66;border-top:2px solid #0E7C66}table.x4t tr.band.cs td{background:#E9EEF5;color:var(--pri);border-top:2px solid var(--pri)}
table.x4t tr.gp td{background:#F7F8FA;font-weight:700;color:var(--ink2)}table.x4t tr.gp td.fz{box-shadow:inset 3px 0 0 var(--gc,#9AA5B3),inset -1px 0 0 #C2C9D2}
table.x4t tr.gp.solo td{background:#FBFBFC}
table.x4t tr.r td.fz{padding-left:18px}
table.x4t tr.r:hover td{background:#FAFCFF}
table.x4t tr.vx td{color:var(--sub);font-style:italic}
table.x4t tr.fin td.fz{background-image:repeating-linear-gradient(135deg,transparent 0 5px,#FFF3DE 5px 7px)}
table.x4t tr.zero td{color:#AEB6C0}
table.x4t tr.need td.fz{box-shadow:inset 3px 0 0 #D93A2B,inset -1px 0 0 #C2C9D2}
table.x4t tr.pl td{font-weight:800;background:#FDF7EA;border-top:2px solid #E0B45C;color:#6B4700}
table.x4t tr.hit td{background:#FFF8D6!important}
table.x4t .gtg{border:0;background:none;font:inherit;font-weight:700;color:inherit;cursor:pointer;padding:0;display:inline-flex;gap:5px;align-items:center}.gtg .ar{font-size:10px;color:var(--sub);width:9px}
table.x4t .o4{display:inline-block;width:14px;height:14px;border-radius:4px;font-size:9.5px;font-weight:800;text-align:center;line-height:14px;margin-left:5px;vertical-align:1px;font-style:normal}
.o4.s3{background:#E8F0FB;color:#2a78d6}.o4.lw{background:#F2EEFA;color:#7A5AB8}.o4.s5{background:#FFF1DC;color:#B26A00}
table.x4t .lk{color:#8A94A1}table.x4t .lk:before{content:"";display:inline-block;width:9px;height:10px;margin-right:4px;vertical-align:-1px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 9 10'%3E%3Crect x='.5' y='4.3' width='8' height='5.2' rx='1.2' fill='%23AEB6C0'/%3E%3Cpath d='M2.3 4.4V3a2.2 2.2 0 0 1 4.4 0v1.4' fill='none' stroke='%23AEB6C0' stroke-width='1.2'/%3E%3C/svg%3E") no-repeat}
table.x4t button.ctb{border:0;background:none;font:inherit;cursor:pointer;padding:0}table.x4t button.ctb:hover{color:var(--pri);text-decoration:underline}
table.x4t input.i{min-height:22px;height:22px;font-size:12px;padding:0 6px;border-radius:5px}
table.x4t input.c4a{width:100%;max-width:120px}table.x4t input.c4e{width:100%;max-width:110px;border-color:#D5DBE3}table.x4t input.c4e:placeholder-shown{border-style:dashed}
table.x4t input.c4p{width:56px}table.x4t input.c4{width:62px;display:inline-block;height:20px;min-height:20px}
table.x4t select.c4s{min-height:20px;height:20px;font-size:12px;padding:0 4px;width:110px;margin-left:4px}
table.x4t tr.zero input.c4a{border-style:dashed;color:#9AA5B3;font-weight:500}
table.x4t td.ct{text-align:left;font-size:12px;color:var(--ink2)}
.fx{display:inline-flex;align-items:baseline;gap:3px}.fx .bq{color:var(--sub)}.fx i.bx{font-style:normal;color:#B0B8C2;font-size:12px}.fx i.bu{font-style:normal;font-size:12px;color:#8A94A1;margin-left:1px}.fx .tx{color:var(--sub)}
.df{font-size:9.5px;font-weight:700;color:#2a78d6;background:#EAF2FC;border-radius:3px;padding:0 3px;margin-left:4px}
table.x4t .tag4{font-size:10px;font-weight:600;border-radius:4px;padding:0 4px;margin-left:5px;vertical-align:1px}.tag4.op{color:#98A2AE;border:1px solid #CDD2D9}.tag4.nw{color:#2F7A55;background:#E6F4EC}
table.x4t .dx,.lr4 .dx{display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;border-radius:8px;margin-left:5px;color:#B7BFC9;font-size:13px;cursor:pointer;opacity:.55;border:0;background:none;padding:0;vertical-align:0}
table.x4t tr:hover .dx,.lr4:hover .dx{opacity:1}.dx:hover{background:#FDE8E6;color:#C0321F}
table.x4t .ovon{border:0;background:none;color:#B0B8C2;cursor:pointer;font-size:12px;padding:0 0 0 3px}table.x4t .ovon:hover{color:var(--pri)}
table.x4t .rst{font-size:12px;padding:0 4px;min-height:0;margin-left:2px}
.cw4{display:flex;align-items:center;justify-content:flex-end;gap:2px}.cw4 input.c4a{flex:1;min-width:0}
.rs4{border:0;background:none;color:#C2410C;cursor:pointer;font-size:12px;padding:0 2px;flex-shrink:0}.rs4:hover{color:var(--pri)}
table.x4t .vtg{border:0;background:none;cursor:pointer;color:var(--pri);font-weight:700;padding:0 2px}
table.x4t .eqb{display:inline-flex;margin-left:4px;background:#E7EBF0;border-radius:5px;padding:1px}.eqb button{border:0;background:transparent;font-size:10px;padding:0 4px;border-radius:4px;color:var(--sub);cursor:pointer}.eqb button[aria-pressed="true"]{background:#fff;color:var(--ink);font-weight:700}
table.x4t .ck.xs{margin-left:6px}
table.x4t details.tip summary{width:18px;height:18px}table.x4t details.tip summary span{width:14px;height:14px;font-size:9.5px}
.hi4{display:flex;align-items:center;gap:8px}
.sq4{position:relative;display:flex;align-items:center;flex:1;height:24px;border:1px solid #B4BDC9;border-radius:12px;background:#fff;padding:0 6px 0 24px;transition:border-color .15s,box-shadow .15s;font-weight:400}
.sq4:focus-within{border-color:#6F8FBF;box-shadow:0 0 0 3px rgba(42,111,209,.12)}.sq4 svg{position:absolute;left:8px;top:6px}
.sq4 input{border:0;outline:0;font:inherit;font-size:12px;width:100%;background:transparent;color:var(--ink);min-height:0;padding:0}
.sq4 .x4{display:none;width:16px;height:16px;border-radius:8px;background:#E3E7EC;color:var(--sub);font-size:12px;line-height:16px;text-align:center;cursor:pointer;flex-shrink:0;border:0;padding:0}.sq4.has .x4{display:block}
.dd4{position:absolute;top:54px;left:8px;width:420px;background:#fff;border:1px solid #C9CFD8;border-radius:12px;box-shadow:0 16px 36px rgba(15,30,50,.2);z-index:40;text-align:left;overflow:hidden}.dd4[hidden]{display:none}
.dd4 .hd{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--line2);font-size:12px;color:var(--sub)}.dd4 .hd b{color:var(--ink)}.dd4 .hd .sp{flex:1}
.dd4 .cl{width:22px;height:22px;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--sub);border:0;background:none}.dd4 .cl:hover{background:#EEF1F4;color:var(--ink)}
.dd4 .sc{padding:6px 12px 2px;font-size:12px;font-weight:700;color:#8A94A1;letter-spacing:.04em}
.dd4 .dop{display:flex;align-items:center;gap:8px;padding:6px 12px;cursor:pointer;width:100%;border:0;background:none;text-align:left;font:inherit}.dd4 .dop:hover,.dd4 .dop.on{background:#F2F6FB}
.dd4 .dop .nm{font-size:13px;color:var(--ink)}.dd4 .dop mark{background:#FFE58F;border-radius:2px;padding:0 1px}
.dd4 .dop .gt{font-size:12px;border-radius:4px;padding:0 5px;background:#EEF1F4;color:var(--sub)}.dd4 .dop .mt{margin-left:auto;font-size:12px;color:#8A94A1}
.dd4 .dop .ad{margin-left:6px;font-size:12px;font-weight:700;color:var(--pri);border:1px solid #BCD0EA;border-radius:6px;padding:1px 7px;background:#F5F9FE}
.dd4 .ft{border-top:1px solid var(--line2);padding:6px 12px;font-size:12px;color:#8A94A1;display:flex;gap:12px}.dd4 .ft kbd{font:inherit;border:1px solid #C2C9D2;border-radius:4px;padding:0 4px;background:#F7F8FA;color:var(--sub)}
.dd4 .em{padding:14px 12px;color:#8A94A1;font-size:12px}


/* 4단계 현금흐름표 */
.g4w.cf4{scrollbar-gutter:stable}
table.x4c{table-layout:fixed}
table.x4c th,table.x4c td{padding:0 6px}
table.x4c .fz2{position:sticky;left:230px;z-index:3;background:#fff;box-shadow:inset -1px 0 0 #C2C9D2;font-weight:600}table.x4c thead .fz2{z-index:7;background:#F4F6F9}
table.x4c td.pre,table.x4c th.pre{background:#FBF7EE}table.x4c thead th.pre{background:#F6F1E6}
table.x4c thead tr.he th{top:0;height:22px;border-bottom:0;background:#F9FAFB;padding:0 2px;text-align:center}table.x4c thead tr.hm th{top:22px;height:36px;line-height:1.2}
table.x4c thead tr.he th.fz,table.x4c thead tr.he th.fz2,table.x4c thead tr.he th.pre{background:#F4F6F9}
table.x4c td.ev,table.x4c th.ev{box-shadow:inset 1px 0 0 #B8C2CF}
.evt4{display:inline-block;font-size:10px;font-weight:700;color:#fff;background:#33404F;border-radius:9px;padding:0 7px;line-height:16px;margin:0 1px}.evt4.s{background:#6B4FA3}.evt4.e{background:#B23A2A}
table.x4c th.mo b{display:block;font-size:12px;font-weight:600}table.x4c th.mo small{font-size:10px;color:#8A94A1;font-weight:500}
table.x4c td.nz{background:rgba(42,111,209,.06)}table.x4c tr.rv2 td.nz{background:rgba(14,124,102,.07)}
table.x4c td.cel{cursor:cell}table.x4c td.cel:hover{box-shadow:inset 0 0 0 1px #6F8FBF;background:#F5F9FE}
table.x4c td.fx1{background:#FFF1E6!important;color:#9A4A12;font-weight:700}
table.x4c td.fx1 button{margin-left:5px;border:0;background:none;color:#9A4A12;cursor:pointer;font-size:12px;text-decoration:underline}
table.x4c input.ci4{width:100%;height:21px;border:1px solid #2A6FD1;border-radius:4px;font:inherit;font-size:12px;text-align:right;padding:0 4px;color:var(--in);font-weight:700;outline:0;box-shadow:0 0 0 3px rgba(42,111,209,.15)}
table.x4t .tag4.dg{color:#5A6573;background:#EEF1F4;border:0;cursor:pointer;font-size:10px;font-weight:600;border-radius:4px;padding:0 5px;margin-left:5px;line-height:15px}table.x4t .tag4.dg:hover{background:#E3E8EF}
table.x4t .tag4.dr{color:#fff;background:#D9631E;border:0;cursor:pointer;font-size:10px;font-weight:600;border-radius:4px;padding:0 5px;margin-left:5px;line-height:15px}
.bp4{position:relative;flex-shrink:0;border-top:2px solid #C9D3E0;background:#FCFCFB;display:flex;flex-direction:column;z-index:8}
.bz4{display:inline-flex;gap:2px;margin-left:2px}.bz4 button{width:20px;height:20px;border:1px solid #C9D3E0;border-radius:4px;background:#fff;color:#5A6B80;font-size:12px;line-height:1;cursor:pointer;padding:0}.bz4 button:hover{border-color:#3E78C8;color:#1D3A5F}.bz4 button.on{background:#1D3A5F;border-color:#1D3A5F;color:#fff}
.bph4{display:flex;align-items:center;gap:8px;padding:0 12px;height:30px;flex-shrink:0;border-bottom:1px solid var(--line2);background:#F4F6F9}.bph4 b{font-size:13px}.bph4 .sp{flex:1}
.bps4{flex:none;overflow-y:hidden;overflow-x:hidden;scrollbar-gutter:stable}
.bps4 table.x4c td{height:24px;font-size:12px}
table.x4c tr.sh4 td{font-weight:800;color:var(--ink2);background:#F3F5F8;height:22px;font-size:12px}
table.x4c tr.sep4 td{height:3px;padding:0;background:#E3E8EF;border:0}
table.x4c td.neg4{color:#C0321F;font-weight:700;background:#FDE8E6}table.x4c tr.bl4 td{font-weight:600}

/* 자동 채우기 메뉴 · 자동 배분 팝업 */
.am4{position:relative}.mn4{position:fixed;width:340px;background:#fff;border:1px solid #C9CFD8;border-radius:12px;box-shadow:0 14px 34px rgba(0,0,0,.18);padding:6px;z-index:30}
.it4{display:flex;gap:10px;padding:8px 10px;border-radius:8px;width:100%;border:0;background:none;text-align:left;cursor:pointer;font:inherit}.it4:hover{background:#F2F6FB}
.it4 em{font-style:normal;width:22px;height:22px;border-radius:6px;background:#E8EEF5;color:var(--pri);font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:12px}
.it4 b{display:block;font-size:13px}.it4 small{display:block;font-size:12px;color:#8A94A1}
.ft4{border-top:1px solid var(--line);margin-top:4px;padding:7px 10px;display:flex;gap:10px;font-size:12px;color:var(--sub);align-items:center}.ft4 .sp{flex:1}.ft4 label{display:inline-flex;gap:4px;align-items:center}
.ap4d .aps4{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--ink2);margin:12px 0 8px}.ap4d .aps4:first-child{margin-top:0}
.ap4d .aps4 em{font-style:normal;width:18px;height:18px;border-radius:9px;background:var(--pri);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center}
.ap4d .row4{display:flex;gap:8px;align-items:center;font-size:13px;flex-wrap:wrap}.ap4d .row4 select.i{width:auto;min-height:32px}
.apt4 td,.apt4 th{padding:5px 8px!important}.sg4{display:inline-flex;background:#E7EBF0;border-radius:7px;padding:2px}
.sg4 button{border:0;background:transparent;font-size:12px;padding:2px 10px;border-radius:5px;color:var(--sub);cursor:pointer}.sg4 button[aria-pressed="true"]{background:#fff;color:var(--ink);font-weight:700;box-shadow:0 1px 1px rgba(0,0,0,.08)}.sg4 button:disabled{cursor:default}
.up4{color:#B42318;font-weight:700}.dn4{color:#1D5A33;font-weight:700}
/* 자동배분은 본문만 스크롤해 표 머리가 대화상자 제목·적용 버튼을 덮지 않게 한다. */
dialog[open]:has(>.ap4d){display:flex;flex-direction:column;overflow:hidden;height:min(780px,90vh)}
dialog:has(>.ap4d)>.dh,dialog:has(>.ap4d)>.df{position:static;flex:none}
dialog:has(>.ap4d)>.db{flex:1;min-height:0;overflow:auto}

.review-status{display:flex;flex-wrap:wrap;gap:14px 28px;padding:15px 20px;margin-bottom:18px;background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--sub);font-size:13px}
.review-status b{color:var(--ink);margin-left:5px;font-size:16px}.review-notice{display:flex;align-items:center;gap:12px}.review-notice>span{flex:1}
.review-list .review-row{padding:14px 0;align-items:flex-start}.review-text{flex:1;min-width:0;line-height:1.6}.review-value{color:var(--sub);font-size:12px;margin-top:3px}.review-text details{margin-top:8px;font-size:12px}.review-text summary{cursor:pointer;color:var(--pri);width:max-content}.review-text details p{background:#f6f8fa;padding:10px 12px;margin:8px 0 0;line-height:1.7}.review-intro{margin:0 0 6px;font-size:12px}.review-footer{padding:14px 0 20px}.review-row>.pill{flex-shrink:0}


.r5{font-size:14px}.r5compare,.r5summary{background:#fff;border:1px solid var(--line);border-radius:8px;padding:0 16px;margin-bottom:16px}.r5sticky{position:sticky;top:-24px;z-index:3;background:#fff;padding-top:14px;border-bottom:1px solid var(--line)}.r5cardtitle,.r5summaryhead{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:13px}.r5cardtitle h2,.r5summaryhead h2{font-size:14px;font-weight:600;margin:0}.r5cardtitle small,.r5cardtitle>span{font-size:12px;font-weight:400;color:var(--sub)}.r5grid{display:grid;grid-template-columns:145px minmax(0,1fr) minmax(0,1fr) minmax(200px,.9fr);gap:12px;align-items:center}.r5labels{padding-bottom:10px;font-size:13px;font-weight:600}.r5labels span:last-child{color:var(--sub);font-weight:400}.r5row{padding:9px 0;border-bottom:1px solid var(--line)}.r5row:last-child{border-bottom:0}.r5account{font-size:13px;font-weight:600;word-break:keep-all}.r5pick{height:68px;min-width:0;width:100%;padding:9px 11px;border:1px solid transparent;border-radius:5px;background:#f4f6f8;text-align:left;font:inherit;color:var(--ink);cursor:pointer}.r5pick:hover{border-color:#879db4}.r5pick[aria-pressed=true]{background:#eaf0f6;border-color:#879db4;box-shadow:inset 3px 0 0 #244563,0 1px 2px #0001}.r5pick:focus-visible{outline:2px solid #244563;outline-offset:2px}.r5moneyline{display:flex;align-items:baseline;gap:8px;white-space:nowrap;margin-bottom:3px;font-variant-numeric:tabular-nums}.r5moneyline b{font-size:16px;font-weight:600;letter-spacing:-.25px}.r5moneyline small{margin-left:auto;font-size:12px;white-space:nowrap}.r5moneyline .up{color:#95532b}.r5moneyline .down{color:#326653}.r5rate{display:block;color:var(--sub);font-size:12px;line-height:1.4}.r5basis{font-size:12px;color:var(--sub);line-height:1.7;word-break:keep-all;overflow-wrap:anywhere}.r5empty{padding:28px 8px;text-align:center;color:var(--sub)}.r5summary{padding:14px 16px}.r5summary .r5fundbtn{background:#3c5873;color:#fff;border-color:#3c5873;min-height:36px;font-size:13px}.r5summary .r5fundbtn:hover{background:#29445f}.r5summary .r5fundbtn:disabled{opacity:.6;cursor:default}.r5summary table,.r5dialog table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}.r5summary td,.r5summary th,.r5dialog td,.r5dialog th{padding:10px 6px;border-bottom:1px solid var(--line);text-align:right;font-weight:400}.r5summary th:first-child,.r5dialog th:first-child{text-align:left}.r5summary thead,.r5dialog thead{color:var(--sub)}.r5summary tbody tr:last-child>*{border-bottom:0}.r5note{font-size:12px;color:var(--sub);margin:12px 0 0}.r5tablewrap{overflow-x:auto}.r5warnings{margin-bottom:16px;padding:10px 14px;background:#fff8ef;border:1px solid #ead9c2;border-radius:6px;font-size:13px}.r5warnings summary{cursor:pointer}.r5warnings ul{list-style:none;padding:0;margin:10px 0 0}.r5warnings li{display:flex;gap:12px;align-items:center;padding:6px 0}.r5warnings li>span{flex:1}.r5 .ban{display:flex;align-items:center;justify-content:space-between;gap:12px}.r5dialog p{font-size:13px;color:var(--sub);line-height:1.6}.r5dialog h3{font-size:14px;margin:20px 0 8px}.r5fields{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:14px}.r5fields label{display:flex;align-items:center;gap:8px;font-size:13px}.r5fields .i{width:auto;min-height:36px}.r5dialog table select{min-height:36px}.r5dialogactions{display:flex;justify-content:flex-end;margin-top:12px}




.r5titleright{display:flex;align-items:center;gap:12px}.r5moneyline{flex-wrap:wrap;white-space:normal}.r5moneyline b{overflow-wrap:anywhere}.r5pick{height:auto;min-height:68px;align-self:stretch}

/* 사업개요: 2026-09-27 승인된 토지·건축 병렬 표 방향. 계산·입력 규칙은 기존 헬퍼를 사용한다. */
main.overview-main{background:#fff;padding:24px 28px 44px}
.overview-main>.ttl{margin:0 0 18px;padding-bottom:14px;border-bottom:1px solid #dce2e9}
.overview-main>.ttl h1{font-size:20px;letter-spacing:-.035em}
.overview-page{max-width:1760px;margin:0 auto;font-variant-numeric:tabular-nums}
.ov-tools{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin:-62px 0 22px;min-height:40px}
.ov-tools>span{font-size:13px;font-weight:600;color:#344860;margin-right:6px}
.ov-tools .btn{min-height:42px;border:1px solid #245687;border-radius:6px;font-size:14px;font-weight:600;padding:0 20px;background:#245687;color:#fff;box-shadow:0 2px 4px #173a601a}
.ov-tools .btn:hover{background:#193f68;border-color:#193f68}
.ov-tools .btn:focus-visible{outline:3px solid #80b6ed;outline-offset:3px}
.ov-tools .btn[aria-expanded=true]{background:#153653;color:#fff;border-color:#153653;box-shadow:inset 0 0 0 1px #b6d8f3}
.ov-meta{--ov-field-height:34px;display:grid;grid-template-columns:1.15fr 1.65fr .85fr;gap:20px;margin-bottom:16px}
.ov-meta .lb{font-size:12px;color:#536174;font-weight:500}
.overview-page input.i,.overview-page select.i{border-color:#d8dfe7;border-radius:4px;font-weight:500;color:#214f81;min-height:34px;font-size:13px}
.overview-page input.i:focus,.overview-page select.i:focus{outline:2px solid #b7cbea;border-color:#5279a7}
.ov-location-status{color:#687588;font-size:12px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-top:2px}
.ov-location-status .rst{font-size:12px;white-space:nowrap}
.ov-classification{display:flex;align-items:center;gap:14px;padding:11px 0 17px;border-bottom:1px solid #dce2e9;margin-bottom:24px;font-size:13px;flex-wrap:wrap}
.ov-classification .ov-k{color:#657285;font-size:12px}
.ov-classification strong{font-weight:600;color:#233c58}
.ov-classification .ov-route{border-left:1px solid #dce2e9;padding-left:14px;color:#4a596d}
.ov-classification button{margin-left:auto;font-size:12px;min-height:28px}
.ov-ledgers{display:grid;grid-template-columns:minmax(340px,.82fr) minmax(540px,1.35fr);gap:28px;margin-bottom:26px}
.ov-ledgers>section{min-width:0}
.ov-ledgers>section+section{border-left:1px solid #dde3ea;padding-left:28px}
.ov-heading{margin:0 0 12px;display:flex;align-items:baseline;gap:10px;font-size:16px;font-weight:600;letter-spacing:-.025em}
.ov-heading small{font-size:12px;letter-spacing:0;font-weight:400;color:#778396}
.ov-ledger{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}
.ov-ledger thead th{height:28px;text-align:right;font-size:12px;font-weight:500;color:#768296;border-bottom:1px solid #dce2e9}
.ov-ledger th:first-child{text-align:left}
.ov-ledger tbody th{font-weight:400;text-align:left;color:#435269;line-height:1.35}
.ov-ledger td,.ov-ledger tbody th{height:43px;padding:4px 9px;border-bottom:1px solid #ecf0f4}
.ov-ledger th:first-child{padding-left:0}
.ov-ledger td{text-align:right;color:#64748b}
.ov-ledger td input.i{min-height:31px;text-align:right;padding:0 8px}
.ov-ledger .ov-auto{display:block;padding:5px 8px;color:#23364d;font-weight:600;background:#f1f4f8;border-radius:3px;min-height:31px;white-space:nowrap}
.ov-ledger .ov-total th,.ov-ledger .ov-total td{border-top:1px solid #bfcbd9;border-bottom:1px solid #bfcbd9;background:#f6f8fb}
.ov-ledger .ov-total th{font-weight:600;color:#23364d;padding-left:8px}
.ov-ledger .ov-total .ov-auto{background:transparent}
.ov-ledger .un{font-size:10px;color:#8b95a4;flex-shrink:0}
.ov-ledger .ov-rate{font-weight:600;color:#35465d;white-space:nowrap}
.ov-ledger .flr{width:100%;min-height:31px;font-size:12px;justify-content:center;border:1px solid #d8dfe7;border-radius:4px;background:white;color:#214f81}
.ov-ledger .uw{gap:5px}
.ov-ledger .ov-py{font-size:12px;white-space:nowrap}
.ov-ledger .ov-side-label{padding-left:18px;border-left:1px solid #ecf0f4;font-size:12px;color:#66758a}
.ov-ledger .ov-side-cell{padding-right:0}
.ov-note{font-size:12px;color:#8a642f;margin:8px 0 0;line-height:1.5}
.ov-units .tw{border:1px solid #dce2e9;border-radius:5px}
.ov-units table.t{min-width:1030px;font-size:12px}
.ov-units table.t th{background:#f3f5f8;font-size:12px;font-weight:500;color:#58677b;padding:9px 8px;border-bottom:1px solid #d3dbe5}
.ov-units table.t td{padding:7px 8px;border-bottom:1px solid #dfe5ec}
.ov-units table.t tbody tr:last-child td{border-bottom:0}
.ov-units table.t input.i,.ov-units table.t select.i{min-height:29px;font-size:12px;padding:0 6px;border-color:#e0e5ed}
.ov-units table.t td.au{background:#f7f9fc;color:#31445c}
.ov-units table.t tr.tot td{font-size:12px;background:#edf2f7;border-top:1px solid #c4cfdd}
.ov-units-footer{display:flex;justify-content:space-between;align-items:center;margin-top:10px}
.ov-units-footer .btn{font-size:12px;min-height:30px;border-radius:4px}
.ov-legend{font-size:12px;color:#7a8698}
/* 건축개요 불러오기 미완료 표시 — 점선 주황: 불러오지 못해 직접 입력할 칸, 노란 바탕: 원문과 맞춰 볼 칸 */
.overview-page input.i.impm,.overview-page select.i.impm,.overview-page button.flr.impm{border:1.5px dashed #D9822B;background:#FFF7EE}
.overview-page input.i.impc,.overview-page select.i.impc,.overview-page button.flr.impc{background:var(--ambg)}
.ov-units.impm .tw{border:1.5px dashed #D9822B}
.ov-imp-miss{font-size:12px;color:#9a5b14;margin:0 0 8px}
.ov-imp-gaps{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;margin:0 0 14px;padding:10px 14px;border:1px solid #F0C48A;border-radius:6px;background:#FFFBF4;font-size:13px;color:#5b4320}
.ov-imp-gaps i{display:inline-block;width:14px;height:12px;margin-right:6px;vertical-align:-1px;border-radius:2px}
.ov-imp-gaps .impm-key{border:1.5px dashed #D9822B;background:#FFF7EE}.ov-imp-gaps .impc-key{background:var(--ambg);border:1px solid #E8D29A}
.ov-imp-result{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;margin:0 0 10px}
.ov-legend em{font-style:normal;color:#214f81;margin-right:10px}
.ov-panel{background:#f8fafc;border:1px solid #dce3ec;border-radius:6px;padding:16px;margin:0 0 20px}
.ov-panel h3{font-size:14px;margin:0 0 12px;font-weight:600}
.ov-panel .g{gap:12px 16px}
.ov-panel p,.ov-panel li{font-size:12px;color:#637087;line-height:1.65}
.ov-panel .ov-source{font-size:12px;margin:12px 0 0}
.ov-panel .ov-answer{background:#edf2f8;border-left:3px solid #7188a5;padding:10px 12px;font-size:12px;color:#324965;margin:12px 0}
.ov-panel ul{padding-left:18px;margin:10px 0}
.ov-import-body>section.c{border-radius:6px;border-color:#dce3ec;background:#fbfcfe;padding:16px;margin-bottom:20px}
.overview-page>.foot{margin-top:22px;padding-top:16px;border-top:1px solid #dce2e9}
.overview-page>.foot .btn{min-height:37px;border-radius:5px;font-size:13px}



.overview-active .header-orig{display:none}

.ov-project-type{margin-top:7px;color:#637087;font-size:12px;line-height:1.5}

.ov-address-status{display:flex;align-items:flex-start;gap:7px;margin-top:7px;font-size:12px;line-height:1.5;color:#425b72}
.ov-address-status.is-pending{color:#7a6753}
.ov-map-link{display:inline-flex;align-items:center;justify-content:center;flex:0 0 27px;min-height:27px;margin-top:-4px;border-radius:4px;color:#245687}
.ov-map-link:hover{background:#edf2f7}.ov-map-link:focus-visible{outline:2px solid #245687;outline-offset:2px}
/* Address drafts and suggestions are independent of calculation rendering. */
.ov-address-control{position:relative;min-width:0}
.ov-meta input.i,.ov-meta select.i{height:var(--ov-field-height);min-height:var(--ov-field-height)}
.ov-address-entry{display:flex;align-items:center;gap:6px}.ov-address-entry .i{min-width:0;flex:1}.ov-address-entry .btn{flex:none;height:var(--ov-field-height);min-height:var(--ov-field-height);padding:0 12px;border-radius:4px;font-size:13px;color:#fff;background:#245d99;border-color:#245d99}
.ov-address-options{position:absolute;top:100%;left:0;right:0;z-index:30;max-height:260px;overflow:auto;background:#fff;border:1px solid #bac7d5;border-radius:6px;box-shadow:0 8px 20px #19334d25;margin-top:4px}
.ov-address-options[hidden]{display:none}.ov-address-options button{display:block;width:100%;border:0;background:white;text-align:left;padding:10px 12px;font-size:13px;color:#24384d;cursor:pointer}.ov-address-options button:hover,.ov-address-options button[aria-selected=true]{background:#edf4fc}
.ov-address-choice{font:inherit;color:inherit;background:transparent;border:0;border-bottom:1px dotted #8295ab;max-width:100%;cursor:pointer;padding:1px 20px 1px 0}
.ov-address-status.is-invalid{color:#bd3131}.ov-address-hint{font-size:12px;color:#69788a}
.ov-address-status.is-dong{color:#8a5a00}.ov-address-hint.is-dong{color:#8a5a00;font-size:12px;margin-top:2px}

/* AIRI 공용 스타일 — DESIGN v0.3 (+ 2026-09-30 검토 반영: 초점 링 · 자동값 들어가 보이게 · 행 따라가기)
   입력화면(airipf1input.html)의 기존 <style> 뒤에 읽어 덮어쓴다. 배치는 그대로, 크기 · 간격 · 색만 통일.
   이 파일 밖에서 새 hex를 쓰지 않는다 — 새 색은 여기 토큰으로 추가. */
:root{
  --bg:#F5F4F0;--card:#FFFFFF;--fill:#F4F6F9;--line:#D4D1C8;--line2:#E2DFD8;--line-strong:#B4BDC9;   /* 테두리 한 단계 진하게(사용자 요청 2026-09-30) */
  --ink:#14202E;--ink2:#33404F;--sub:#5A6573;--mute:#8A94A1;
  --pri:#1D3A5F;--navy:#13233A;--acc:#2A78D6;--in:#1E3A8A;
  --pos:#0B5E57;--pos-bg:#DDF1EE;--neg:#B42318;--neg-bg:#FDE8E6;--warn:#8A4B00;--warn-bg:#FFF3DB;--chg:#C2410C;
  --grid-sum:#EDF1F6;--grid-cum:#E3E9F1;--row-hover:#EAF1FA;
  --sh-sm:0 1px 2px rgba(20,32,46,.12);--sh-md:0 8px 24px rgba(20,35,58,.18);--sh-lg:0 20px 60px rgba(22,33,46,.35);
  --ring:0 0 0 3px rgba(29,58,95,.18);
  /* 옛 이름 → 새 토큰 */
  --ground:var(--bg);--hd:var(--grid-sum);--auto:var(--fill);--errtx:var(--neg);--errbg:var(--neg-bg);--amtx:var(--warn);--ambg:var(--warn-bg);--tltx:var(--pos);--tlbg:var(--pos-bg);--bar:var(--acc);
}
body{font-size:13px}

/* 머리 48 · 단계 줄 40 */
header{height:48px;padding:0 16px;gap:12px}
header .logo{width:auto;height:24px;padding:0 6px;border-radius:4px;font-size:13px;font-weight:800;letter-spacing:.5px}
header .ttl2 b{font-size:16px;display:inline;margin-right:8px}
header .ttl2 span{font-size:12px}
header .hb{height:28px;padding:0 10px;border-radius:4px;font-size:13px;gap:6px}
header .mn{top:34px;border-radius:6px;box-shadow:var(--sh-md)}
header .mn button,header .mn label{height:32px;font-size:13px}
nav.rail{padding:6px 16px;gap:4px;min-height:56px}       /* 단계 메뉴가 단계 제목을 겸한다(사용자 요청 2026-09-30) — 글자 약 120%, 지금 단계 약 130% */
nav.rail button{min-height:40px;padding:0 12px;border-radius:4px;font-size:16px;gap:8px}
nav.rail button.on{font-size:18px;font-weight:700}
nav.rail button .d{width:24px;height:24px;border-radius:12px;font-size:13px}
nav.rail button.on .d{width:26px;height:26px;border-radius:13px;font-size:14px}
nav.rail .cnt{height:22px;min-width:22px;font-size:12px;border-radius:11px;cursor:pointer}
nav.rail .cnt:hover,nav.rail .cnt[aria-expanded="true"]{box-shadow:0 0 0 2px currentColor}
nav.rail .go .btn{min-height:32px;font-size:13px}
nav.rail a.rs2{min-height:32px;border-radius:4px}

/* 본문 · 카드 */
main{padding:12px 16px 48px}
.ttl{margin-bottom:12px}.ttl h1{font-size:20px}.ttl span{font-size:12px}
section.c{border-radius:6px;padding:12px 16px;margin-bottom:12px;box-shadow:var(--sh-sm)}
section.c>h2{font-size:16px;margin:0 0 8px}
.card,.kbox{border-radius:6px}
.g{gap:8px 12px}
.f{gap:4px}.f>label,.f>.lb{font-size:12px;min-height:20px}

/* 입력칸 28 · 초점 링 · 자동값은 들어가 보이게 */
input.i,select.i{min-height:28px;padding:0 8px;border-radius:4px;font-size:13px;border-color:var(--line-strong);transition:border-color .12s,box-shadow .12s}
input.i:focus,select.i:focus{outline:none;border-color:var(--pri);box-shadow:var(--ring)}
.a{min-height:28px;border-radius:4px;background:var(--fill)}
select.i:disabled,input.i:disabled{background:var(--fill);border-color:transparent;color:var(--sub)}
.ck{min-height:28px;font-size:13px}.ck input{width:16px;height:16px}
.seg{padding:2px;border-radius:4px}.seg button{min-height:24px;padding:0 10px;border-radius:4px;font-size:12px}
.btn{min-height:28px;padding:0 12px;border-radius:4px;font-size:13px}
.btn.s{min-height:24px;padding:0 8px;font-size:12px}

/* 일반 표 */
.tw{border-radius:6px}
table.t{font-size:12px}
table.t th{padding:2px 6px;height:24px;font-size:12px}
table.t td{padding:2px 6px;height:24px}
table.t input.i{min-height:22px;height:22px;font-size:12px;padding:0 6px}
table.t tbody tr:hover td{background:var(--row-hover)}
table.t tr.sub td{background:var(--grid-sum)}
table.t tr.tot td{background:var(--grid-sum);border-top-color:var(--line-strong)}

/* 팝업 */
dialog{border-radius:8px;box-shadow:var(--sh-lg)}
dialog .dh{padding:10px 16px}
dialog .db{padding:16px}
dialog .df{padding:8px 16px}

/* 4단계 표 — 사업수지표 · 현금흐름표 같은 격자(행 24 · 머리 24+32 · 항목 열 230 고정) */
table.x4t th,table.x4t td{height:24px;padding:0 6px}
table.x4t thead th{font-size:12px}
table.x4t thead tr.h1 th,table.x4c thead tr.he th{top:0;height:24px}
table.x4t thead tr.h2 th,table.x4c thead tr.hm th{top:24px;height:32px}
table.x4c th.mo b{font-size:12px}table.x4c th.mo small{font-size:12px}
table.x4t tr.band td{height:24px;font-size:12px}
table.x4t tr.gp td{background:var(--grid-sum)}
table.x4t tr.gp.solo td{background:var(--card)}
table.x4t tr.r td.fz{padding-left:16px}
table.x4t td.ct{font-size:12px}
table.x4t input.i{min-height:20px;height:20px;font-size:12px;padding:0 6px;border-radius:4px}
table.x4t input.i:focus{box-shadow:inset 0 0 0 1px var(--pri)}
/* 행 따라가기 — 고정 열까지 함께. 줄무늬(zebra)는 소계 · 합계 음영과 헷갈려 쓰지 않는다 */
table.x4t tbody tr.r:hover td,table.x4t tbody tr.gp:hover td{background:var(--row-hover)}
table.x4t .pw4{display:inline-block;width:64px;vertical-align:middle}
table.x4t .pw4 input.i{padding-right:18px}
table.x4t .pw4 i{right:6px;font-size:12px}
/* 일반 % 칸 */
.pw4.inl{display:inline-block;vertical-align:middle}

/* 4단계 자금조달 사이드바 — 간격만 줄임 */
.fs4{border-radius:0 6px 6px 0}
.cd4{border-radius:6px;padding:8px 12px;margin-bottom:8px}
.cd4 h4{margin:0 0 6px;font-size:13px}
.lr4{border-radius:6px;padding:6px 8px;margin-bottom:6px}
.g44{gap:4px 6px}
.f4{font-size:12px}.f4 input.i,.f4 select.i{min-height:24px;font-size:12px}
.kv4{margin-top:6px;gap:2px}

/* 1단계 시작 선택 팝업 */
.start1{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.start1>button,.start1>.card1{min-height:200px;border:1px solid var(--line-strong);border-radius:8px;background:var(--card);text-align:left;padding:20px;display:flex;flex-direction:column;gap:6px;cursor:pointer;font:inherit;color:var(--ink)}
.start1>button:hover,.start1>button:focus{border-color:var(--acc);box-shadow:var(--ring);outline:none}
.start1 b{font-size:20px;color:var(--pri)}
.start1 .ico{font-size:28px;line-height:1}
.start1 ul{margin:4px 0 0;padding-left:16px;color:var(--sub);font-size:12px;line-height:1.7}
.start1 .sub{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.start1 .sub button{min-height:32px;padding:0 12px;border:1px solid var(--line-strong);background:var(--card);cursor:pointer;text-align:left;font:inherit;color:var(--ink);flex-direction:row;align-items:center;border-radius:4px;font-size:13px}

/* 1단계 '기존 자료에서 가져오기' 버튼 — 크기만 맞춤(눈에 띄는 색은 유지) */
.ov-tools{margin:0 0 12px;min-height:32px}
.ov-tools .btn{min-height:32px;border-radius:4px;font-size:13px;padding:0 14px;box-shadow:none}
table.x4t{min-width:1240px}
.ov-address-hint.is-bad{color:var(--neg);font-weight:600}
.ov-address-status.is-dong{color:var(--ink2)}

/* 경고 줄 — 버튼 크기 통일, ◀ n/N ▶ · 전체 목록 · 접기는 오른쪽에 고정(문장 길이와 무관, 사용자 요청 2026-09-30) */
.alert{gap:8px;padding:0 16px;font-size:13px}
.alert .alc{font-size:14px;flex-shrink:0}
.alert .alcur{flex:1 1 auto;min-width:0;height:28px;padding:0 8px;border-radius:4px}
.alert .alcur .tx{flex:0 1 auto}
.alert .alcur .algo{margin-left:auto}
.alert .algo,.alert .allst,.alert .almin,.alert .alnav{height:28px;display:inline-flex;align-items:center;font-size:13px;font-weight:600;border-radius:4px;box-sizing:border-box;flex-shrink:0}
.alert .algo{padding:0 10px;border:1px solid currentColor;background:#fff}
.alert .allst{padding:0 10px;border:1px solid currentColor;background:#fff}
.alert .almin{padding:0 10px;margin-left:0;border:1px solid transparent}
.alert .alnav{padding:0 2px;border:1px solid currentColor;background:#fff}
.alert .alnav button{height:24px;padding:0 8px;font-size:12px}
.alert .alnav .pos{min-width:56px;text-align:center}
.alert .alst{font-size:12px}

/* 글자 크기 규칙(12 · 13 · 14 · 16 · 20) — 작은 글자 정리. 예외: 기호 아이콘(③ · 법 · ⑤ · ? · ▾)과 막대그래프 안 글자(11) */
span.un,table.x4t .tag4,span.df,em.rf{font-size:12px}
main.overview-main{padding:12px 16px 48px}
.r5fundbtn{min-height:28px}

/* 단계 메뉴 숫자 → 확인할 사항 목록 · 무시 */
#isspop{position:fixed;z-index:60;width:640px;max-height:60vh;overflow:auto;background:var(--card);border:1px solid var(--line-strong);border-radius:6px;box-shadow:var(--sh-md);font-size:13px}
#isspop h4{margin:0;padding:8px 12px;font-size:13px;color:var(--ink2);border-bottom:1px solid var(--line2);position:sticky;top:0;background:var(--card)}
#isspop .isrow{display:flex;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--line2)}
#isspop .isrow .tx{flex:1;min-width:0}
#isspop .algo{height:24px;padding:0 8px;border:1px solid var(--line-strong);border-radius:4px;background:var(--card);font-size:12px;font-weight:600;color:var(--pri);cursor:pointer;flex-shrink:0}
#isspop .em{padding:16px 12px;color:var(--mute)}
#isspop .alk,.alert .alk{font-size:12px;font-weight:700;border-radius:4px;padding:0 6px;color:#fff;background:var(--neg);flex-shrink:0}
#isspop .alk.w,.alert .alk.w{background:#C27400}
#isspop .alk.n,.alert .alk.n{background:var(--sub)}
.alack{height:24px;padding:0 8px;border:1px solid var(--line-strong);border-radius:4px;background:var(--card);font-size:12px;color:var(--sub);cursor:pointer;flex-shrink:0;display:inline-flex;align-items:center}
.alack:hover:not([disabled]){color:var(--ink);border-color:var(--sub)}
.alack[disabled]{opacity:.35;cursor:default}
.alack.ph{visibility:hidden;width:44px}
.alert .alack{height:28px;font-size:13px}

/* 자금조달 펼치기 · 접기 손잡이 — 사이드바 색에 맞추되 눈에 띄게 */
.fsx4{width:22px;right:-23px;height:88px;background:var(--pri);color:#fff;border:0;border-radius:0 8px 8px 0;box-shadow:var(--sh-sm)}
.fsx4:hover{width:26px;right:-27px;color:#fff;background:#274B78}
.fsx4 svg{stroke:#fff}

/* 사업수지표 · 현금흐름표 간격 조정 — 행 간격(좁게 · 보통 · 넓게) · 열 폭(머리 오른쪽 끝을 끌기) */
table.x4t.dn-1 td,table.x4t.dn-1 th{height:22px}
table.x4t.dn-3 tbody td{height:30px}
table.x4t thead th{position:sticky}
.cr4{position:absolute;top:0;right:-3px;width:7px;height:100%;cursor:col-resize;z-index:9}
.cr4:hover,.cr4.on{background:rgba(42,120,214,.35)}
.dn4{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--sub)}
table.x4c .fz2{left:var(--w4i,230px)}

/* 설명용 ? 규격 (사용자 요청 2026-09-30): 글자 바로 뒤 4px, 원 16px(표 안 14px), 누르는 영역은 원 크기 그대로 — 멀리 떨어져 보이지 않게 */
details.tip{margin-left:4px}
details.tip summary{width:auto;height:20px;padding:0}
details.tip summary span{width:16px;height:16px;font-size:11px}
.kv4 details.tip summary,.f4 details.tip summary,table.x4t details.tip summary{width:auto;height:18px}
.ov-heading>details.tip,.ov-heading details.tip{margin-left:-6px}   /* 제목 줄은 gap 10px이 이미 있다 → 4px로 맞춤 */
/* 1단계 기본사항 (사용자 요청 2026-09-30) — 토지 · 면적표와 같은 제목 */
.ov-basic{margin:0 0 20px}

/* 0단계 시작 화면 (home.js · 시작화면-저장프로젝트-제안-v0.3, 2026-09-30) — 칸은 위로 맞추고 높이를 고정하지 않는다(빈 공간 없앰) */
/* 프로젝트 선택 — 단계와 따로 떼어 둔 메뉴. 1~5단계에서는 폴더 아이콘만 (사용자 요청 2026-09-30) */
nav.rail .home0{gap:8px;color:var(--pri)}nav.rail .home0 svg{flex-shrink:0}
nav.rail .home0.ic{width:40px;min-width:40px;padding:0;justify-content:center;border:1px solid var(--line);background:#fff}
nav.rail .home0.ic:hover{border-color:var(--pri);background:#E8EFF8}
nav.rail .rsep{width:1px;height:28px;background:var(--line-strong);margin:0 10px;flex-shrink:0}
.home{max-width:960px;margin:0 auto;padding:24px 16px 48px}
.h-tabs{display:flex;gap:4px;border-bottom:2px solid var(--line);margin:0 0 24px}
.h-tabs button{height:44px;padding:0 20px;border:0;background:none;font:inherit;font-size:16px;color:var(--sub);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px}
.h-tabs button[aria-selected="true"]{color:var(--navy);font-weight:700;border-bottom-color:var(--navy)}
.h-tabs small{font-size:12px;color:var(--mute);font-weight:400;margin-left:6px}
.h-h1{font-size:20px;margin:0 0 4px}
.h-lead{margin:0 0 20px;color:var(--sub);font-size:13px}
.h-opts{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:16px;align-items:start}
.h-opt{background:#fff;border:1px solid var(--line);border-radius:8px;padding:20px}
.h-opt h2{margin:0 0 8px;font-size:16px;display:flex;align-items:center;gap:10px}
.h-ic{width:32px;height:32px;border-radius:8px;background:#E8EFF8;display:inline-flex;align-items:center;justify-content:center;font-size:16px}
.h-p{margin:0;font-size:14px;color:var(--ink2)}
.h-warn{margin:4px 0 0;font-size:12px;color:var(--sub)}
.h-acc{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.h-ai{border:1px solid var(--line);border-radius:6px;background:var(--fill)}
.h-ai.open{background:#fff;border-color:var(--pri)}
.h-ah{width:100%;min-height:56px;display:flex;align-items:center;gap:12px;padding:8px 14px;border:0;background:none;font:inherit;cursor:pointer;text-align:left}
.h-fi{width:32px;height:32px;border-radius:6px;background:#fff;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--pri);flex-shrink:0}
.h-at{display:flex;flex-direction:column;min-width:0}.h-at b{font-size:14px}.h-at small{font-size:12px;color:var(--sub)}
.h-tg{margin-left:auto;font-size:12px;color:var(--pri);white-space:nowrap}
.h-ab{padding:0 14px 14px 58px}
.h-ad{margin:0 0 10px;font-size:12px;color:var(--sub)}
.h-drop{display:flex;align-items:center;gap:12px;flex-wrap:wrap;min-height:64px;padding:12px 14px;border:2px dashed var(--line-strong);border-radius:6px;background:var(--fill);font-size:12px}
.h-drop.on{border-color:var(--pri);background:#EEF3FA}
.h-aih{margin-top:10px;font-size:12px}.h-aih summary{cursor:pointer;color:var(--pri)}
.h-aih .ac{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:8px 0}
.h-aih textarea{width:100%;min-height:56px;box-sizing:border-box;font-size:12px}
.h-mode{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:12px;color:var(--sub)}
.h-ul{margin:12px 0 16px;padding-left:18px;color:var(--sub);font-size:13px}.h-ul li{margin:2px 0}
.h-go{width:100%;height:44px;font-size:15px;justify-content:center}
.h-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px}.h-bar .i{width:240px}.h-bar .sp{flex:1}
.h-tw{background:#fff;border:1px solid var(--line);border-radius:8px;overflow:auto}
.h-pl{width:100%;border-collapse:collapse;font-size:13px}
.h-pl th,.h-pl td{padding:10px 12px;border-bottom:1px solid var(--line2);text-align:left;white-space:nowrap}
.h-pl th{background:var(--fill);color:var(--sub);font-weight:600;font-size:12px}
.h-pl td.n{text-align:right}.h-pl tr:last-child td{border-bottom:0}.h-pl tr.cur td{background:#F7FAFD}
.h-st{display:inline-block;font-size:12px;padding:0 8px;border-radius:10px;background:var(--fill);color:var(--sub)}
.h-now{font-size:12px;color:var(--pri);font-weight:600;margin-left:6px}
.h-delq{font-size:12px;color:var(--neg);font-weight:600}
.h-empty{padding:28px;text-align:center;color:var(--sub);background:#fff;border:1px dashed var(--line-strong);border-radius:8px}
.h-foot{margin:12px 0 0;font-size:12px;color:var(--mute)}


/* AIRI 공사조건 팝업(construction.js): 머리말·꼬리말은 스크롤 밖, 본문(.db)만 스크롤하고 비교표는 .db 기준 sticky.
 * dialog 전체가 스크롤하면 sticky 카드가 머리말을 밀어낸다(UX-CONVENIENCE '구현 함정'). */
dialog.construction-dialog{width:min(1100px,94vw)}
dialog.construction-dialog[open]{display:flex;flex-direction:column;overflow:hidden;height:min(780px,90vh)}
dialog.construction-dialog>.dh,dialog.construction-dialog>.df{position:static;flex:none}
dialog.construction-dialog>.db{flex:1;min-height:0;overflow:auto;padding:0 20px 16px;display:flex;flex-direction:column;gap:12px}
dialog.construction-dialog>.db>.c{margin:0}
.construction-dialog .ce-stick{position:sticky;top:0;z-index:3;border-top:0;border-top-left-radius:0;border-top-right-radius:0;box-shadow:0 8px 14px -8px rgba(0,0,0,.25)}
.construction-dialog .r5grid{grid-template-columns:150px minmax(0,1fr) minmax(0,1fr) minmax(220px,.95fr)}
.construction-dialog .r5labels{padding-bottom:8px;border-bottom:1px solid var(--line)}
.r5account small{display:block;font-weight:400;color:var(--sub);font-size:12px}
.r5pick:disabled{cursor:default;opacity:.7}.r5pick:disabled:hover{border-color:transparent}
.construction-dialog .ce-status{margin:0 0 8px;font-size:12.5px;color:var(--sub)}
.construction-dialog .ce-note{margin:10px 0 0;font-size:12px}
#dlg select.i:disabled{background:#eef0f3;color:#9aa3ae;border-color:transparent;cursor:not-allowed}
.construction-dialog .ce-init{background:#fff;color:var(--ink);border:1px solid #fff;border-radius:6px;padding:4px 12px;font:600 12.5px/1.4 inherit;margin-right:12px;cursor:pointer}
.construction-dialog .ce-fold>summary{font-size:15px;font-weight:700;list-style:none}.construction-dialog .ce-fold>summary::-webkit-details-marker{display:none}
.construction-dialog .ce-fold>summary::before{content:"▸ ";color:var(--sub)}.construction-dialog .ce-fold[open]>summary::before{content:"▾ "}
.construction-dialog .ce-sub{font-size:14px;font-weight:600;margin:14px 0 8px;display:flex;align-items:center}
.construction-dialog .ce-warn{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.35)}
.construction-dialog .ce-warn .box{width:460px;max-width:calc(100% - 32px);background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 20px 60px rgba(22,33,46,.35)}
.construction-dialog .ce-warn .dh,.construction-dialog .ce-warn .df{position:static}.construction-dialog .ce-warn p{margin:0;padding:18px 20px;line-height:1.6}
.ce-link{border:0;background:none;color:#244563;text-decoration:underline;cursor:pointer;font:inherit;padding:0}
/* 2단계 왼쪽 색인 탭(세로 글자, 카드 밖으로 돌출) */
#kcard{position:relative}main:has(#kcard>.ce-idx){padding-left:51px}
/* D-210 2단계: 일정 표(.kch)가 카드 제목 바로 아래, 차트는 그 아래. 제목·표·차트 사이 여백을 줄인다. */
#kcard>h2{margin-bottom:6px}#kcard>h2+.kch{margin-top:0}#kcard>.kchart{margin-top:10px}#kcard>.kchart .klg{margin-bottom:4px}
.ce-idx{position:absolute;left:-44px;top:36px;display:flex;flex-direction:column;gap:8px;z-index:4}
.ce-idx button{writing-mode:vertical-rl;text-orientation:upright;letter-spacing:1px;width:40px;padding:14px 0;border:0;border-radius:8px 0 0 8px;background:#244563;color:#fff;font:600 13px/1 inherit;cursor:pointer;box-shadow:-2px 2px 6px rgba(0,0,0,.18)}
.ce-idx button.alt{background:#17685f}.ce-idx button.alt2{background:#7a4a1d}.ce-idx button:hover{transform:translateX(-3px)}.ce-idx button:focus-visible{outline:2px solid #244563;outline-offset:2px}
/* 일정 팝업 여백 축소 — 공사 쪽(대출·공사 일정 + 보할공정률)이 팝업 한 화면에 들어오게 한다 */
.hpf-app .kdlg{max-height:min(760px,calc(100dvh - var(--kovt,0px) - 24px))}
.hpf-app .kdlg .kpane{padding:10px 14px}
.hpf-app .kdlg .kbox{padding:8px 12px;margin-bottom:8px}
.hpf-app .kdlg .kbox h3{margin:0 0 4px}
.hpf-app .kdlg table.kfrm td{padding:3px 6px}.hpf-app .kdlg table.kfrm td.eq{padding:3px 2px}
.hpf-app .kdlg table.kfrm td.note{padding-left:10px;line-height:1.3}
.hpf-app .kdlg .kfrm input.i{min-height:28px;height:28px}.hpf-app .kdlg .kpin{min-height:28px;min-width:32px}
.hpf-app .kdlg .kfs{margin-top:4px}
.hpf-app .kdlg .bar{margin-bottom:4px!important}
.hpf-app .kdlg .kbox .tw table.t th{padding:4px 6px;line-height:1.3}.hpf-app .kdlg .kbox .tw table.t td{padding:4px 6px}
.hpf-app .kdlg .kbox .tw input.i{min-height:28px;height:28px}
.kdlg .kpre{font-size:12.5px;color:#8A5A00;background:#FFF3D6;border-radius:6px;padding:3px 10px;margin-left:4px}
/* 분양률 Case 탭 — 고정 폭, 이름 오른쪽에 구분 문구(색으로만 구분), 세 탭 모두 짙은 글자 */
.hpf-app .kct button{flex:0 0 200px;width:200px;display:flex;align-items:baseline;gap:8px;white-space:nowrap;padding:6px 12px;color:var(--ink)}
.hpf-app .kct .cn,.hpf-app .kct .cn.rv{font-size:14px;font-weight:700;color:var(--ink)}
.hpf-app .kct .ps{display:inline;font-size:12.5px;font-weight:600}
.hpf-app .kct .ps.pre{color:#2A78D6}.hpf-app .kct .ps.man{color:#17685f}.hpf-app .kct .ps.oth{color:#6B7684}
.hpf-app .kdlg .kspl{font-size:12.5px;color:var(--ink);margin-left:4px}.hpf-app .kdlg .kspl b{color:#17685f}
.hpf-app .kdlg .kset{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:0 0 8px;padding:8px 12px;background:#F4F7FA;border:1px solid #C9D2DC;border-radius:8px;font-size:13px}.hpf-app .kdlg .kset .sp{flex:1}.hpf-app .kdlg .kset .kfh{flex-basis:100%;margin:0}
.hpf-app .kdlg .kset select.i{width:auto}
/* 탭 가시성 — 고르지 않은 탭도 눌러 볼 수 있는 탭으로 보이게(회색 바탕·테두리), 고른 탭은 흰 바탕·위 굵은 선. ⚠는 확인할 내용이 있는 탭 */
.hpf-app .kdlg .kct{gap:4px;border-bottom:2px solid #8FA0B3}
.hpf-app .kdlg .kct button{background:#E6EBF1;border:1px solid #B9C4D0;border-bottom:0;margin-bottom:-2px;border-radius:6px 6px 0 0;cursor:pointer}
.hpf-app .kdlg .kct button:hover{background:#D9E1EA}
.hpf-app .kdlg .kct button[aria-selected=true]{background:#fff;border-color:#8FA0B3;border-top:3px solid #244563;box-shadow:0 -2px 6px rgba(0,0,0,.08)}
.hpf-app .kdlg .kct button:not([aria-selected=true]) .cn{font-weight:600;color:#33404F}
.hpf-app .kdlg .kct .bd,.hpf-app .kdlg .kct .ps.bd{color:#C0392B;font-weight:700}
.hpf-app .kdlg .kct button .bd{margin-left:auto}
.hpf-app .kdlg .kpt{flex-wrap:wrap}.hpf-app .kdlg .kpt button{flex:0 0 auto;width:auto;min-width:150px;margin-bottom:0}
.hpf-app .kdlg .kpay th{white-space:nowrap}.hpf-app .kdlg .kpay td:first-child,.hpf-app .kdlg .kpay th:first-child{width:64px}
.hpf-app .kdlg .rst:disabled{opacity:.45;cursor:default;text-decoration:none}
.hpf-app .kdlg{width:min(1100px,calc(100vw - 48px))}
.hpf-app .kdlg table.kpay{table-layout:auto}.hpf-app .kdlg .kpay td .dpw{min-width:104px}.hpf-app .kdlg .kpay th,.hpf-app .kdlg .kpay td{padding:4px 6px}
.hpf-app .kdlg .kpay td .dpw{min-width:92px}.hpf-app .kdlg .kpay th,.hpf-app .kdlg .kpay td{padding:4px 4px}.hpf-app .kdlg .kpay td:first-child,.hpf-app .kdlg .kpay th:first-child{width:48px}
/* 하단 작업 칩 — 최소화한 창 · 확인할 사항 · 저장 시각 */
.hpf-chips{position:fixed;left:50%;bottom:12px;transform:translateX(-50%);display:flex;gap:8px;align-items:center;max-width:min(52vw,720px);z-index:30;pointer-events:none}.hpf-chips:empty{display:none}
.hpf-chips>*{pointer-events:auto}
.hchip{display:inline-flex;align-items:center;gap:2px;height:32px;padding:0 10px;border:1px solid #8FA0B3;border-radius:16px;background:#fff;color:#14202E;font:600 12.5px/1 inherit;white-space:nowrap;box-shadow:0 2px 8px rgba(20,36,58,.18)}
.hchip button{border:0;background:none;font:inherit;color:inherit;cursor:pointer;padding:0 4px;height:100%}.hchip .hc-o:hover{color:#244563;text-decoration:underline}.hchip .hc-x{font-size:16px;color:#5A6573}.hchip .hc-x:hover{color:#C0392B}
.hchip.busy{border-color:#17685f;background:#EEF7F5}.hchip.hc-a{background:#FFF3D6;border-color:#E0B54A;color:#7A4A00;cursor:pointer}.hchip.hc-s{font-weight:400;color:#5A6573;box-shadow:none;border-color:#D4D9DF;background:#F6F7F9}
@media(max-width:1180px){.hchip.hc-s{display:none}}
/* 팝업 크기 조절 — 오른쪽 아래 모서리를 끌어 바꾼다 */
.hpf-app .kdlg:not(.kbig){resize:both;min-height:380px}
.hpf-app dialog#dlg:not(.sm){resize:both;overflow:auto;min-width:420px;min-height:240px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}
.hpf-app dialog#dlg:not(.sm) .dh{cursor:move;user-select:none;touch-action:none}
.dh .dmin,.kdh .kmin{font-size:20px;min-width:32px}
/* 공사조건 팝업 탭(AIRI 공사조건 · 공사도급 조건) — 일정 팝업 탭과 같은 모양 */
dialog.construction-dialog>.ce-tabs{flex:none;margin:10px 20px 0;display:flex;gap:4px;border-bottom:2px solid #8FA0B3}
.ce-tabs button{flex:0 0 auto;padding:8px 22px;background:#E6EBF1;border:1px solid #B9C4D0;border-bottom:0;margin-bottom:-2px;border-radius:6px 6px 0 0;cursor:pointer;color:#33404F;font:inherit;display:flex;gap:6px;align-items:center}
.ce-tabs button:hover{background:#D9E1EA}
.ce-tabs button[aria-selected=true]{background:#fff;border-color:#8FA0B3;border-top:3px solid #244563;color:#14202E;font-weight:700;box-shadow:0 -2px 6px rgba(0,0,0,.08)}
.ce-tabs .bd{color:#C0392B;font-weight:700}
/* 엑셀식 셀 선택 — 안쪽 선으로 고정열·행 높이를 유지한다. */
.hpf-app :is(#t4,table.s3-gk) :is(td,th).gk-range{box-shadow:inset 0 0 0 9999px color-mix(in srgb,var(--hpf-accent-soft) 50%,transparent)!important}
.hpf-app :is(#t4,table.s3-gk) :is(td,th).gk-active{outline:2px solid var(--hpf-accent)!important;outline-offset:-2px}
.hpf-app :is(#t4,table.s3-gk) :is(td,th).gk-editing{outline:2px solid var(--hpf-accent)!important;outline-offset:-2px}
.hpf-app .hpf-toast{white-space:pre-wrap;overflow-wrap:anywhere;word-break:keep-all;line-height:1.5}
.hpf-app .hpf-toast[data-level="warn"]{background:var(--airi-note-bg);color:var(--airi-note);border:1px solid var(--hpf-rule)}
.hpf-app .gk-status{flex:none;min-height:23px;padding:2px 8px;border-top:1px solid var(--hpf-rule);background:var(--hpf-paper-2);color:var(--hpf-muted);font:12px/18px var(--hpf-font,var(--airi-font));text-align:right;font-variant-numeric:tabular-nums;white-space:normal;word-break:keep-all}
.hpf-app .gk-status:empty{display:none}
.gk-menu{position:fixed;z-index:120;min-width:190px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);overflow:auto;padding:4px;border:1px solid var(--hpf-rule,var(--airi-border));border-radius:var(--airi-radius,6px);background:var(--hpf-paper,var(--airi-paper));color:var(--hpf-ink,var(--airi-ink));box-shadow:var(--hpf-shadow,0 5px 18px var(--airi-shadow));font:13px/1.5 var(--hpf-font,var(--airi-font))}
.gk-menu[hidden]{display:none}
.gk-menu button[role="menuitem"]{display:flex;align-items:center;gap:12px;width:100%;min-height:32px;padding:4px 12px;border:0;border-radius:4px;background:transparent;color:inherit;font:inherit;text-align:left;white-space:nowrap;cursor:pointer}
.gk-menu-label{flex:1}
.gk-menu-hint{margin-inline-start:auto;color:var(--hpf-muted,var(--airi-muted));font-variant-numeric:tabular-nums}
.gk-menu button[role="menuitem"]:hover{background:var(--hpf-accent-soft,var(--airi-action-soft))}
.gk-menu button[role="menuitem"]:focus-visible{background:var(--hpf-accent-soft,var(--airi-action-soft));outline:2px solid var(--hpf-focus,var(--airi-focus));outline-offset:-2px}
.gk-menu button[role="menuitem"]:is(:disabled,[aria-disabled="true"]){color:var(--hpf-muted,var(--airi-muted));background:transparent;cursor:default;opacity:.6}
.hpf-app #hpf-install:disabled{color:var(--hpf-muted);cursor:default}
.hpf-app #hpf-install small{display:block;margin-top:4px;font:11px/1.45 var(--hpf-font,var(--airi-font));color:var(--hpf-muted)}
.gk-find{position:fixed;z-index:119;display:flex;align-items:center;gap:var(--airi-space-2,8px);max-width:calc(100vw - 16px);padding:var(--airi-space-1,4px) var(--airi-space-2,8px);border:1px solid var(--hpf-rule,var(--airi-border));border-radius:var(--airi-radius,6px);background:var(--hpf-paper,var(--airi-paper));color:var(--hpf-ink,var(--airi-ink));box-shadow:var(--hpf-shadow,0 5px 18px var(--airi-shadow));font:13px/1.5 var(--hpf-font,var(--airi-font))}
.gk-find-input{flex:1 1 180px;width:180px;min-width:0;height:28px;padding:4px 8px;border:1px solid var(--hpf-rule,var(--airi-border));border-radius:4px;background:var(--hpf-paper,var(--airi-paper));color:inherit;font:inherit}
.gk-find-count{flex:none;min-width:5ch;color:var(--hpf-muted,var(--airi-muted));font-variant-numeric:tabular-nums;text-align:center;white-space:nowrap}
.gk-find button{display:inline-flex;align-items:center;justify-content:center;flex:0 0 28px;width:28px;height:28px;padding:4px;border:0;border-radius:4px;background:transparent;color:inherit;font:inherit;font-size:16px;line-height:1;cursor:pointer}
.gk-find button:hover{background:var(--hpf-accent-soft,var(--airi-action-soft))}
.gk-find :is(input,button):focus-visible{outline:2px solid var(--hpf-focus,var(--airi-focus));outline-offset:-2px}
@media(forced-colors:active){.gk-find,.gk-find-input{border-color:ButtonText}.gk-find :is(input,button):focus-visible{outline-color:Highlight}}
@media print{.gk-find{display:none!important}}
@media(forced-colors:active){.hpf-app :is(#t4,table.s3-gk) :is(td,th).gk-range{outline:1px solid Highlight;outline-offset:-1px}.hpf-app :is(#t4,table.s3-gk) :is(td,th).gk-active,.hpf-app :is(#t4,table.s3-gk) :is(td,th).gk-editing{outline-color:Highlight!important}}
@media print{.hpf-app :is(#t4,table.s3-gk) :is(td,th):is(.gk-active,.gk-range,.gk-editing){outline:none!important;box-shadow:none!important}.gk-menu,.hpf-app .gk-status{display:none!important}}
/* SPEC-5/J: 네 표의 본문 언어. 상태 선택은 색·안쪽 고리만 바꾸며 치수를 바꾸지 않는다. */
@media screen{
 .hpf-app :is(#t4,table.s3-gk){--gk-font:"Malgun Gothic","맑은 고딕",sans-serif;--gk-head:#1F3864;--gk-input:#FFF7D6;--gk-sub:#E2EFDA;--gk-total:#C6E0B4;border:0;background:#fff;font:12px/18px var(--gk-font);color:#111}
 .hpf-app :is(#t4,table.s3-gk) :is(th,td){height:var(--gk-row-h,22px);padding:0 6px;border:0;border-top:var(--gk-bt,0px) var(--gk-top-style,solid) var(--gk-top-color,#000);border-bottom:var(--gk-bb,0px) solid var(--gk-rule,#000);background:var(--gk-cell-bg,var(--gk-row-bg,#fff));color:var(--gk-stale-fg,#111);font:var(--gk-row-weight,400) 12px/min(18px,calc(var(--gk-row-h,22px) - var(--gk-bt,0px) - var(--gk-bb,0px))) var(--gk-font);letter-spacing:normal;font-style:var(--gk-stale-fs,normal);font-variant-numeric:tabular-nums;text-align:right}
 .hpf-app :is(#t4,table.s3-gk) :is(input,select,button,span,small,i,em,b,strong){font-family:var(--gk-font)!important;font-size:12px!important;font-style:var(--gk-stale-fs,normal)!important;letter-spacing:normal}
 .hpf-app :is(#t4,table.s3-gk) :is(input,select,.lk,.fx,.bq,.tx,.bx,.bu,.neg,.z,.nm4,.b4-u,.xs,small,b,strong){color:inherit!important;font-weight:inherit}
 .hpf-app :is(#t4,table.s3-gk) thead th{--gk-bt:0px;--gk-bb:1px;z-index:8;background:var(--gk-head);color:#fff;font-weight:700;text-align:center;border-bottom-color:var(--gk-head-rule,#fff)}
 .hpf-app :is(#t4,table.s3-gk) thead tr:last-child th{--gk-bb:2px;border-bottom-color:var(--gk-rule,#000)}
 .hpf-app :is(#t4,table.s3-gk) thead th[rowspan]{--gk-bb:2px;border-bottom-color:var(--gk-rule,#000)}
 .hpf-app :is(#t4,table.s3-gk) thead tr.h1 th{height:23px;top:0}
 .hpf-app :is(#t4,table.s3-gk) thead tr.h2 th{height:23px;top:23px}
 .hpf-app :is(#t4,table.s3-gk) thead tr.he th{height:22px;top:0}
 .hpf-app :is(#t4,table.s3-gk) thead tr.hm th{height:34px;top:22px;line-height:16px}
 .hpf-app :is(#t4,table.s3-gk) td:is(.fz,.fz2){background:var(--gk-cell-bg,var(--gk-row-bg,#fff));box-shadow:none}
 .hpf-app :is(#t4,table.s3-gk) :is(.fz,.ct,.l){text-align:left}
 .hpf-app :is(#t4,table.s3-gk) :is(th,td)[data-gk-rline="thick"]{border-right:2px solid var(--gk-rule,#000)}
 .hpf-app :is(#t4,table.s3-gk) :is(th,td)[data-gk-rline="thin"]{border-right:1px solid var(--gk-rule,#000)}
 .hpf-app :is(#t4,table.s3-gk) :is(thead th,tbody th.gk-side-h)[data-gk-rline="thin"]{border-right-color:var(--gk-head-rule,#fff)}
 .hpf-app :is(#t4,table.s3-gk) :is(th,td)[data-gk-rline="none"]{border-right:0}
 .hpf-app :is(#t4,table.s3-gk) tbody td:is([data-gk-col="g1"],[data-gk-col="g2"]){--gk-cell-bg:var(--gk-row-bg,var(--gk-sub));font-weight:700;text-align:center}
 .hpf-app :is(#t4,table.s3-gk) tbody td[data-gk-col="g1"]{--gk-bb:2px}
 .hpf-app :is(#t4,table.s3-gk) tbody td[data-gk-col="g2"]{--gk-bb:1px}
 .hpf-app :is(#t4,table.s3-gk) tr:is(.gk-total,.gk-profit)>td[data-gk-col="g2"]{--gk-bb:2px}
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-col="src"]{text-align:center}
 .hpf-app :is(#t4,table.s3-gk) td:is([data-gk-col="item"],[data-gk-col="note"]){text-align:left}
 .hpf-app :is(#t4,table.s3-gk):not(.x4c) td[data-gk-col="item"]{padding-right:26px}
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-col="item"]>button.b4-lk-btn{position:absolute;right:3px;top:50%;transform:translateY(-50%);margin:0}
 .hpf-app :is(#t4,table.s3-gk):not(.x4c) tbody td[data-gk-col="es"]:not(.gk-side-blank){--gk-cell-bg:#FFF2CC}
 .hpf-app :is(#t4,table.s3-gk):not(.x4c) tbody td[data-gk-col="sub"]:not(.gk-side-blank){--gk-cell-bg:#DDEBF7}
 .hpf-app :is(#t4,table.s3-gk):not(.x4c) tbody td[data-gk-col="eq"]:not(.gk-side-blank){--gk-cell-bg:#FCE4D6}
 .hpf-app :is(#t4,table.s3-gk) :is(td,th).gk-gap,.hpf-app :is(#t4,table.s3-gk) td.gk-side-blank,.hpf-app :is(#t4,table.s3-gk) thead th.gk-blank{--gk-cell-bg:#fff;padding:0;background:#fff!important;border-top:0;border-bottom:0;border-left:0;box-shadow:none}
 .hpf-app :is(#t4,table.s3-gk) thead td:is(.gk-gap,.gk-side-blank){position:sticky;top:0;z-index:8}
 .hpf-app :is(#t4,table.s3-gk) tr.gk-side-head>th.gk-side-h{--gk-bt:2px;--gk-bb:1px;position:sticky;top:var(--gk-head-h);z-index:6;height:var(--gk-row-h,23px);background:var(--gk-head);color:#fff;font-weight:700;text-align:center;white-space:normal;overflow-wrap:anywhere;overflow:visible;text-overflow:clip;border-bottom-color:var(--gk-head-rule,#fff)}
 .hpf-app :is(#t4,table.s3-gk) tr.gk-side-head+tr.gk-side-head>th.gk-side-h{--gk-bt:0px;--gk-bb:2px;top:calc(var(--gk-head-h) + var(--gk-side1-h));border-bottom-color:var(--gk-rule,#000)}
 .hpf-app :is(#t4,table.s3-gk) tr.gk-side-head>.gk-gap{position:sticky;top:var(--gk-head-h);z-index:6;height:var(--gk-row-h,23px)}
 .hpf-app :is(#t4,table.s3-gk) tr.gk-side-head+tr.gk-side-head>.gk-gap{top:calc(var(--gk-head-h) + var(--gk-side1-h))}
 .hpf-app :is(#t4,table.s3-gk) tr.gk-grp-start{--gk-bt:1px;--gk-top-style:dotted;--gk-top-color:#777}
 .hpf-app :is(#t4,table.s3-gk) tr.gk-cat-start{--gk-bt:1px;--gk-top-style:solid;--gk-top-color:#000}
 .hpf-app :is(#t4,table.s3-gk) tr.gk-sub{--gk-bt:1px;--gk-bb:1px;--gk-top-style:solid;--gk-top-color:#000;--gk-row-bg:var(--gk-sub);--gk-row-weight:700}
 .hpf-app :is(#t4,table.s3-gk) tr:is(.gk-total,.gk-profit){--gk-bt:1px;--gk-bb:2px;--gk-top-style:solid;--gk-top-color:#000;--gk-row-bg:var(--gk-total);--gk-row-weight:700}
 .hpf-app :is(#t4,table.s3-gk) tr:is(.gk-sub,.gk-total,.gk-profit)+tr{--gk-bt:0px}
 .hpf-app :is(#t4,table.s3-gk) tbody>tr:first-child{--gk-bt:0px}
 .hpf-app :is(#t4,table.s3-gk) tr:is(.band,.gp,.pl,.need) td.fz{background-image:none;box-shadow:none}
 .hpf-app :is(#t4,table.s3-gk) :is(input.i,input.ci4,select.i),.hpf-app :is(#t4,table.s3-gk) :is(td.b4-in input,td.b4-sched select){min-height:min(18px,calc(var(--gk-row-h,22px) - var(--gk-bt,0px) - var(--gk-bb,0px)));height:min(18px,calc(var(--gk-row-h,22px) - var(--gk-bt,0px) - var(--gk-bb,0px)));padding:0 4px;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;outline:none!important;font:inherit;line-height:inherit;caret-color:transparent}
 .hpf-app :is(#t4,table.s3-gk) input{cursor:cell}
 .hpf-app :is(#t4,table.s3-gk) td.gk-editing input,.hpf-app :is(#t4,table.s3-gk) td input:focus{caret-color:auto;cursor:text}
 .hpf-app :is(#t4,table.s3-gk) td:not(.gk-active):not(.gk-editing) :is(input,select):focus{outline:2px solid var(--hpf-accent)!important;outline-offset:-2px}
 .hpf-app :is(#t4,table.s3-gk) td:not(.gk-active):not(.gk-editing) button:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px}
 .hpf-app :is(#t4,table.s3-gk) td:is(.gk-active,.gk-editing) :is(input,select,button):focus{outline:none!important}
 .hpf-app :is(#t4,table.s3-gk) .ck{min-height:min(18px,calc(var(--gk-row-h,22px) - var(--gk-bt,0px) - var(--gk-bb,0px)));line-height:inherit;vertical-align:middle}
 .hpf-app :is(#t4,table.s3-gk) .fx{align-items:center;vertical-align:middle;line-height:inherit}
 .hpf-app :is(#t4,table.s3-gk) tbody .evt4{margin:0;padding:0;border-radius:0;background:transparent;color:#111;font:inherit;line-height:inherit}
 .hpf-app :is(#t4,table.s3-gk) .ck input{max-height:calc(var(--gk-row-h) - 1px);margin-top:clamp(0px,calc((var(--gk-row-h,22px) - 18px)/2),3px);margin-bottom:clamp(0px,calc((var(--gk-row-h,22px) - 18px)/2),3px)}
 .hpf-app :is(#t4,table.s3-gk) details.tip summary{height:min(18px,calc(var(--gk-row-h,22px) - 1px))}
 .hpf-app :is(#t4,table.s3-gk) :is(.gk-col-head-active,.gk-row-head-active){background-color:#DEE3E9!important;color:#111!important}
 .hpf-app :is(#t4,table.s3-gk) :is(td,th).gk-range{box-shadow:inset 0 0 0 9999px color-mix(in srgb,var(--hpf-accent-soft) 50%,transparent),inset 0 var(--gk-et,0px) var(--hpf-accent),inset var(--gk-er,0px) 0 var(--hpf-accent),inset 0 var(--gk-eb,0px) var(--hpf-accent),inset var(--gk-el,0px) 0 var(--hpf-accent)!important}
 .hpf-app :is(#t4,table.s3-gk) .gk-range-top{--gk-et:1px}.hpf-app :is(#t4,table.s3-gk) .gk-range-right{--gk-er:-1px}.hpf-app :is(#t4,table.s3-gk) .gk-range-bottom{--gk-eb:-1px}.hpf-app :is(#t4,table.s3-gk) .gk-range-left{--gk-el:1px}
 .hpf-app :is(#t4,table.s3-gk) :is(.gk-cl,.gk-rn,.gk-corner){--gk-bt:0px;--gk-bb:1px;background:#EFEFEF!important;color:#555!important;border-right:1px solid #C8C8C8;border-bottom-color:#C8C8C8;text-align:center;font:400 11px/min(16px,calc(var(--gk-row-h,22px) - 1px)) var(--gk-font)}
 .hpf-app :is(#t4,table.s3-gk) .gk-letters>th{position:sticky;top:0;height:18px;z-index:8}
 .hpf-app :is(#t4,table.s3-gk) :is(.gk-rn,.gk-corner){position:sticky;left:var(--gk-sl-rn);z-index:7}
 .hpf-app :is(#t4,table.s3-gk) thead :is(.gk-rn,.gk-corner){z-index:9}
 .hpf-app :is(#t4,table.s3-gk) .gk-letters>.gk-corner{z-index:10}
 .hpf-app :is(#t4,table.s3-gk) :is(td,th).gk-ol{--gk-bt:0px;--gk-bb:0px;position:sticky;left:var(--gk-sl-ol);z-index:7;padding:0!important;border:0!important;background:var(--hpf-paper,#fff)!important;box-shadow:none!important;overflow:visible;vertical-align:top;text-align:center;font:400 12px/1 var(--gk-font)}
 .hpf-app :is(#t4,table.s3-gk) thead th.gk-ol{z-index:10}
 .hpf-app :is(#t4,table.s3-gk):not(.x4c) :is(td,th):is([data-gk-col="g1"],[data-gk-colkey="g1"],[data-gk-col="g2"],[data-gk-colkey="g2"],[data-gk-col="item"],[data-gk-colkey="item"]){position:sticky;z-index:7}
 .hpf-app :is(#t4,table.s3-gk):not(.x4c) :is(td,th):is([data-gk-col="g1"],[data-gk-colkey="g1"]){left:var(--gk-sl-g1)}
 .hpf-app :is(#t4,table.s3-gk):not(.x4c) :is(td,th):is([data-gk-col="g2"],[data-gk-colkey="g2"]){left:var(--gk-sl-g2)}
 .hpf-app :is(#t4,table.s3-gk):not(.x4c) :is(td,th):is([data-gk-col="item"],[data-gk-colkey="item"]){left:var(--gk-sl-item)}
 .hpf-app :is(#t4,table.s3-gk).x4c :is(td,th):is([data-gk-col="item"],[data-gk-col="ctot"]){position:sticky;z-index:7}
 .hpf-app :is(#t4,table.s3-gk).x4c :is(td,th)[data-gk-col="item"]{left:var(--gk-sl-item)}
 .hpf-app :is(#t4,table.s3-gk).x4c :is(td,th)[data-gk-col="ctot"]{left:var(--gk-sl-ctot)}
 .hpf-app :is(#t4,table.s3-gk):not(.x4c) thead th:is([data-gk-col="g1"],[data-gk-colkey="g1"],[data-gk-col="g2"],[data-gk-colkey="g2"],[data-gk-col="item"],[data-gk-colkey="item"]),.hpf-app :is(#t4,table.s3-gk).x4c thead th:is([data-gk-col="item"],[data-gk-col="ctot"]){z-index:9}
 .hpf-app :is(#t4,table.s3-gk) .gk-ol-btn{position:absolute;top:2px;left:2px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:12px;min-width:0;height:12px;min-height:0;margin:0;padding:0;border:1px solid var(--hpf-muted);border-radius:0;background:var(--hpf-paper,#fff);box-shadow:none;color:var(--hpf-muted);font:400 12px/10px var(--gk-font);cursor:pointer}
 .hpf-app :is(#t4,table.s3-gk) .gk-ol-btn:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px}
 .hpf-app :is(#t4,table.s3-gk) .gk-ol::before,.hpf-app :is(#t4,table.s3-gk) .gk-ol::after{content:none;position:absolute;pointer-events:none}
 .hpf-app :is(#t4,table.s3-gk) .gk-ol:is([data-gk-ol="first"],[data-gk-ol="mid"],[data-gk-ol="last"])::before{content:"";left:7px;top:0;bottom:0;border-left:1px solid var(--hpf-rule)}
 .hpf-app :is(#t4,table.s3-gk) .gk-ol[data-gk-ol="first"]::before{top:14px}
 .hpf-app :is(#t4,table.s3-gk) .gk-ol[data-gk-ol="last"]::before{bottom:50%}
 .hpf-app :is(#t4,table.s3-gk) .gk-ol[data-gk-ol="last"]::after{content:"";left:7px;right:2px;top:50%;border-top:1px solid var(--hpf-rule)}
 .hpf-app :is(#t4,table.s3-gk) thead>.gk-letters+tr>:is(th,td){top:calc(18px / var(--gk-zf,1));height:23px}
 .hpf-app :is(#t4,table.s3-gk) thead>.gk-letters+tr+tr>:is(th,td){top:calc(18px / var(--gk-zf,1) + 23px);height:23px}
 /* D-232(3): 배율은 표 본문에만 — 행 번호 열 폭·글자, 열 문자 줄 높이·글자는 화면에서 100% 그대로(표 안 크기를 배율 --gk-zf로 나눈다). 열 문자 칸의 가로 폭은 열 폭을 따른다 */
 .hpf-app table.x4t col[data-cw="rn"]{width:calc(36px / var(--gk-zf,1))!important}
 .hpf-app :is(#t4,table.s3-gk,table.gk-bp) :is(.gk-cl,.gk-rn,.gk-corner){font-size:calc(11px / var(--gk-zf,1))}
 .hpf-app :is(#t4,table.s3-gk,table.gk-bp) :is(.gk-rn,.gk-corner){padding-left:calc(2px / var(--gk-zf,1))!important;padding-right:calc(2px / var(--gk-zf,1))!important;overflow:hidden;text-overflow:clip;white-space:nowrap}   /* 행 번호 폭 36px 고정, 안쪽 여백도 배율로 나눠 세 자리(100행 이상)가 어느 배율에서도 다 보인다(lead b142f66 검수 2) */
 .hpf-app :is(#t4,table.s3-gk) .gk-letters>th{height:calc(18px / var(--gk-zf,1));line-height:calc(16px / var(--gk-zf,1))}
 .hpf-app :is(#t4,table.s3-gk) :is(.gk-cl.gk-col-head-active,.gk-rn.gk-row-head-active){background-color:#DEE3E9!important;color:#111!important}
 .hpf-app :is(#t4,table.s3-gk) [data-gk-hidden-before]::before{content:"";position:absolute;left:1px;top:2px;bottom:2px;width:3px;border-left:1px solid currentColor;border-right:1px solid currentColor;pointer-events:none}
 html.gk-wide,html.gk-wide body{overflow:hidden}
 html.gk-wide .hpf-input main.hpf-main.m4{isolation:auto}
 html.gk-wide .hpf-app .fm4{position:fixed;inset:0;z-index:110;display:flex;flex-direction:column;min-height:0;max-width:none;padding:8px;background:#fff}
 html.gk-wide .hpf-app .fm4>.fr4{flex:1;min-height:0}
 .hpf-app #fr4{border:0;border-radius:0;background:#fff;box-shadow:none}
 .gk-menu,.gk-find{border-radius:2px;box-shadow:0 2px 6px var(--airi-shadow)}
 .gk-menu button[role="menuitem"]{min-height:28px;padding:4px 8px;border-radius:2px}
 .gk-find :is(input,button){border-radius:2px}
 .hpf-app:has(#t4) #wb-message{border-radius:2px;box-shadow:0 2px 6px var(--airi-shadow)}
}
@media(forced-colors:active){
 .hpf-app :is(#t4,table.s3-gk){--gk-rule:ButtonText;--gk-head-rule:ButtonText}
 .hpf-app :is(#t4,table.s3-gk) :is(th,td){--gk-top-color:ButtonText;border-color:ButtonText;background:Canvas!important;color:CanvasText!important}
 .hpf-app :is(#t4,table.s3-gk) :is(.gk-cl,.gk-rn,.gk-corner){border-color:ButtonText;background:ButtonFace!important;color:ButtonText!important}
 .hpf-app :is(#t4,table.s3-gk) thead th{background:ButtonFace!important;color:ButtonText!important}
 .hpf-app :is(#t4,table.s3-gk) :is(.gk-col-head-active,.gk-row-head-active){background:Highlight!important;color:HighlightText!important}
 .hpf-app :is(#t4,table.s3-gk) :is(.gk-cl.gk-col-head-active,.gk-rn.gk-row-head-active){background:Highlight!important;color:HighlightText!important}
 .hpf-app :is(#t4,table.s3-gk) td:not(.gk-active):not(.gk-editing) :is(input,select):focus,.hpf-app :is(#t4,table.s3-gk) td:not(.gk-active):not(.gk-editing) button:focus-visible{outline-color:Highlight!important}
 .hpf-app :is(#t4,table.s3-gk) :is(td,th):is(.gk-active,.gk-editing){outline-color:Highlight!important}
 .hpf-app :is(#t4,table.s3-gk) .gk-range:not(.gk-active):not(.gk-editing){outline:1px solid Highlight;outline-offset:-1px}
 .hpf-app :is(#t4,table.s3-gk) :is(td,th).gk-ol{background:Canvas!important;color:CanvasText}
 .hpf-app :is(#t4,table.s3-gk) .gk-ol-btn{border-color:ButtonText;background:ButtonFace;color:ButtonText}
 .hpf-app :is(#t4,table.s3-gk) .gk-ol-btn:focus-visible{outline-color:Highlight}
 .hpf-app :is(#t4,table.s3-gk) .gk-ol[data-gk-ol]::before,.hpf-app :is(#t4,table.s3-gk) .gk-ol[data-gk-ol]::after{border-color:GrayText}
}
 @media print{.hpf-app :is(#t4,table.s3-gk) col[data-cw="ol"],.hpf-app :is(#t4,table.s3-gk) :is(td,th).gk-ol{display:none!important}}
.hpf-app :is(#t4,table.s3-gk,#bps4 table.gk-bp) .gk-col-hidden{display:none!important}
/* F8: 분류 안 추가행과 계정 후보 목록. 좌표·후보 순서는 호스트가 관리한다. */
.hpf-app :is(#t4,table.s3-gk) tr.gk4-add>td.fz[colspan]{height:var(--gk-row-h,22px);padding:0;text-align:left;background:var(--hpf-paper);box-shadow:none}
 .hpf-app :is(#t4,table.s3-gk) tr.gk4-add>td.gk4-add-cell{padding:0 6px;text-align:left}
 .hpf-app :is(#t4,table.s3-gk) button.gk4-add-btn{display:block;width:100%;height:calc(var(--gk-row-h,22px) - var(--gk-bt,0px) - var(--gk-bb,0px));min-height:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:#B8BCC2;font:inherit;font-weight:400;line-height:inherit;text-align:left;cursor:pointer}
.hpf-app :is(#t4,table.s3-gk) button.gk4-add-btn:hover{background:var(--hpf-accent-soft);color:var(--hpf-accent)}
.hpf-app #fr4>div.gk4-add-list[role="listbox"]{position:absolute;z-index:40;display:flex;flex-direction:column;width:360px;max-width:calc(100% - 8px);max-height:min(300px,calc(100dvh - 160px));padding:4px;border:1px solid #D2D5D9;border-radius:2px;background:var(--hpf-paper);color:var(--hpf-ink);box-shadow:0 2px 6px var(--airi-shadow);font:12px/20px var(--hpf-font)}
.hpf-app #fr4>.gk4-add-list>input.gk4-add-q[type="search"]{flex:none;width:100%;min-width:0;min-height:28px;height:28px;margin:0 0 4px;padding:3px 8px;border:1px solid #D2D5D9;border-radius:2px;background:var(--hpf-paper);color:inherit;box-shadow:none;font:inherit}
.hpf-app #fr4>.gk4-add-list>div.gk4-add-opts{flex:1 1 auto;min-height:0;max-height:224px;overflow-y:auto;overscroll-behavior:contain}
.hpf-app #fr4>.gk4-add-list button.gk4-add-opt[role="option"]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;width:100%;min-height:28px;padding:4px 8px;border:0;border-radius:0;background:transparent;color:inherit;box-shadow:none;font:inherit;font-variant-numeric:tabular-nums;text-align:left;white-space:normal;word-break:keep-all;overflow-wrap:anywhere;cursor:pointer}
.hpf-app #fr4>.gk4-add-list button.gk4-add-opt::after{content:attr(data-add4);color:var(--hpf-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.hpf-app #fr4>.gk4-add-list button.gk4-add-opt:is(.on,[aria-selected="true"],:hover){background:var(--hpf-accent-soft);color:var(--hpf-accent)}
.hpf-app #fr4>.gk4-add-list :is(input.gk4-add-q,button.gk4-add-opt):focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px}
.hpf-app #fr4>.gk4-add-list button.gk4-add-opt.is-etc{margin-top:4px;border-top:1px solid #D2D5D9}
.hpf-app #fr4>.gk4-add-list .gk4-add-empty{padding:8px;color:var(--hpf-muted);white-space:normal;word-break:keep-all}
@media(forced-colors:active){
 .hpf-app #fr4>.gk4-add-list,.hpf-app #fr4>.gk4-add-list>input.gk4-add-q,.hpf-app #fr4>.gk4-add-list button.gk4-add-opt.is-etc{border-color:ButtonText}
 .hpf-app #fr4>.gk4-add-list button.gk4-add-opt:is(.on,[aria-selected="true"]){background:Highlight;color:HighlightText}
 .hpf-app #fr4>.gk4-add-list button.gk4-add-opt::after{color:inherit}
 .hpf-app #fr4>.gk4-add-list :is(input.gk4-add-q,button.gk4-add-opt):focus-visible{outline-color:Highlight}
}
@media print{.hpf-app :is(#t4,table.s3-gk) tr.gk4-add,.hpf-app #fr4>.gk4-add-list{display:none!important}}
/* CC-7: 값·단위를 한 칸에 담는다. 열 폭·숫자·환산은 호스트 소유다. */
@media screen{
 .hpf-app :is(#t4,table.s3-gk) td.b4-v{vertical-align:middle;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
 .hpf-app :is(#t4,table.s3-gk) td.b4-v>i.b4-u{margin-left:2px;color:inherit!important;font:normal 12px/1 var(--gk-font);white-space:nowrap}
 .hpf-app :is(#t4,table.s3-gk) td.b4-in input{display:inline-block;width:calc(100% - 4em - 4px);max-width:100%;min-width:0;margin:0;padding:0;text-align:right;vertical-align:middle;font:inherit;font-variant-numeric:tabular-nums}
 .hpf-app :is(#t4,table.s3-gk) tr[data-code^="REV:"] td.b4-in[data-gk-col="v2"]{padding-right:3px}
 .hpf-app :is(#t4,table.s3-gk) tr[data-code^="REV:"] td.b4-in[data-gk-col="v2"] input{width:calc(100% - 4em - 7px)}
 .hpf-app :is(#t4,table.s3-gk) td.b4-x{padding:0 1px;text-align:center;vertical-align:middle}
 .hpf-app :is(#t4,table.s3-gk) td.b4-text[colspan="5"]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;vertical-align:middle}
 .hpf-app :is(#t4,table.s3-gk) td.b4-sched{text-align:left;vertical-align:middle}
 .hpf-app :is(#t4,table.s3-gk) td.b4-sched select{display:block;width:100%;max-width:100%;min-width:0;margin:0;padding:0 2px;text-align:left;font:inherit}
}
/* SPEC-5: 편집 가능 여부는 호스트 tone만 따른다. 잠금·소유권은 바탕색을 바꾸지 않는다. */
@media screen{
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-tone]{background:var(--gk-cell-bg,var(--gk-row-bg,#fff))!important;color:var(--gk-stale-fg,#111)!important;cursor:default}
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-tone="input"]{background:var(--gk-cell-bg,var(--gk-input))!important;cursor:text}
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-tone] :is(input,select,.lk,.fx,.bq,.tx,.bx,.bu,.neg,.z),.hpf-app :is(#t4,table.s3-gk) td[data-gk-tone] .pw4>i{color:inherit!important;cursor:inherit}
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-tone]:is(.gk-col-head-active,.gk-row-head-active){background-color:#DEE3E9!important;color:#111!important}
 .hpf-app .gk-legend{display:flex;align-items:stretch;flex-wrap:nowrap;gap:0;margin-left:auto;max-width:100%;padding-left:8px;border-left:1px solid #D5DBE3;font:400 11.5px/16px "Malgun Gothic","맑은 고딕",sans-serif;color:#222}
 .hpf-app .gk-legend>:is(.gk-lg-in,.gk-lg-ro){display:inline-flex;flex-direction:column;align-items:center;gap:2px;min-width:84px;padding:5px 10px;white-space:nowrap}
 .hpf-app .gk-legend>:is(.gk-lg-in,.gk-lg-ro)>.gk-lg-sw{flex:none;box-sizing:border-box;width:64px;height:16px;border:1px solid #888;background:#fff}
 .hpf-app .gk-legend>.gk-lg-in>.gk-lg-sw{background:#FFF7D6}
 .hpf-app .fm4{gap:0}
 .hpf-app .fm4>.fmh4{display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:0;margin:0;border:0;background:#fff}
 .hpf-app .fm4>.fmh4>.gk-top{display:flex;align-items:flex-end;gap:0;min-width:0;border-bottom:2px solid #1F3864;background:#fff}
 .hpf-app .gk-top>.gk-tbsp{flex:1;min-width:12px}
 .hpf-app .fm4>.fmh4>.gk-top>.seg4{display:inline-flex;flex:none;align-items:stretch;gap:0;margin:0 0 -2px;padding:0;border:0;border-radius:0;background:transparent}
 .hpf-app .fm4>.fmh4>.gk-top>.seg4>button[data-m4]{box-sizing:border-box;height:42px;min-height:42px;margin:0;padding:8px 28px;border:1px solid #1F3864;border-top-width:3px;border-bottom:0;border-radius:0;background:#1F3864;color:#fff;box-shadow:none;font:700 14px/20px "Malgun Gothic","맑은 고딕",sans-serif;letter-spacing:normal;white-space:nowrap}
 .hpf-app .fm4>.fmh4>.gk-top>.seg4>button[data-m4][aria-pressed="true"]{background:#fff;color:#111}
 .hpf-app .gk-unit-label{margin:0 6px 12px 0;color:#1F3864;font:700 13px/20px "Malgun Gothic","맑은 고딕",sans-serif}
 .hpf-app .gk-unit[role="group"]{display:inline-flex;flex:none;margin:0 8px 6px 0;padding:0;border:0;border-radius:0;background:transparent}
 .hpf-app .gk-unit[role="group"]>button[data-unit]{box-sizing:border-box;height:32px;min-height:32px;margin:0 0 0 -1px;padding:0 14px;border:1px solid #9AA6B8;border-radius:0;background:#fff;color:#333;box-shadow:none;font:400 13px/20px "Malgun Gothic","맑은 고딕",sans-serif;white-space:nowrap}
 .hpf-app .gk-unit[role="group"]>button[data-unit]:first-child{margin-left:0}
 .hpf-app .gk-unit[role="group"]>button[data-unit][aria-pressed="true"]{border-color:#1F3864;background:#1F3864;color:#fff}
 .hpf-app button.gk-help[data-gk-cmd="help"]{box-sizing:border-box;display:inline-flex;align-items:center;gap:5px;height:32px;min-height:32px;margin:0 6px 6px 0;padding:0 14px;border:0;border-radius:4px;background:#2F6FB7;color:#fff;box-shadow:none;font:700 13px/20px "Malgun Gothic","맑은 고딕",sans-serif}
 .hpf-app button[data-gk-cmd="wide"]{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex:none;width:34px;height:32px;min-height:32px;margin:0 0 6px;padding:0;border:1px solid #7FA6D6;border-radius:4px;background:#fff;color:#2F6FB7;box-shadow:none}
 .hpf-app button.gk-help>svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7}
 .hpf-app button[data-gk-cmd="wide"]>svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7}
 .hpf-app button[data-gk-cmd="wide"]>.gk-ico-unfull,html.gk-wide .hpf-app button[data-gk-cmd="wide"]>.gk-ico-full{display:none}
 html.gk-wide .hpf-app button[data-gk-cmd="wide"]>.gk-ico-unfull{display:block}
 .hpf-app .gk-tools[role="toolbar"]{display:flex;align-items:stretch;flex-wrap:nowrap;gap:2px;min-width:0;overflow-x:auto;padding:4px 6px;border:1px solid #C9D1DC;border-top:0;background:#F7F9FC;font:400 11.5px/16px "Malgun Gothic","맑은 고딕",sans-serif}
 .hpf-app .gk-tools[role="toolbar"]>button[data-gk-cmd]{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none;gap:2px;min-width:52px;min-height:0;margin:0;padding:5px 8px;border:0;border-radius:3px;background:transparent;color:#1F3864;box-shadow:none;font:inherit;white-space:nowrap}
 .hpf-app .gk-tools[role="toolbar"]>button[data-gk-cmd]>span{color:#222;font:inherit}
 .hpf-app .gk-tools[role="toolbar"]>button[data-gk-cmd]:is([aria-disabled="true"],:disabled){opacity:.4}
 .hpf-app .gk-tools[role="toolbar"]>button[data-gk-cmd]:not([aria-disabled="true"]):not(:disabled):hover{background:#E3EAF5}
 .hpf-app .gk-tools-sep{align-self:stretch;flex:none;width:1px;margin:0 8px;background:#D5DBE3}
 .hpf-app .gk-tools .gk-ico{flex:none;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
 .hpf-app :is(.gk-tools,.gk-unit)>button:focus-visible,.hpf-app .fmh4 button:is(.gk-help,[data-gk-cmd="wide"],[data-m4]):focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px}
}
.hpf-app :is(#t4,table.s3-gk) .lk::before{display:none;content:none}
@media(forced-colors:active){
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-tone="input"]{background:Field!important;color:FieldText!important}
 .hpf-app :is(#t4,table.s3-gk) td:is([data-gk-tone="calc"],[data-gk-tone="other"]){background:Canvas!important;color:CanvasText!important}
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-tone]:is(.gk-col-head-active,.gk-row-head-active){background:Highlight!important;color:HighlightText!important}
 .hpf-app .gk-legend>:is(.gk-lg-in,.gk-lg-ro)>.gk-lg-sw{background:Canvas;border-color:ButtonText}
 .hpf-app .gk-legend>.gk-lg-in>.gk-lg-sw{background:Field}
 .hpf-app :is(#t4,table.s3-gk) :is(td,th).gk-gap,.hpf-app :is(#t4,table.s3-gk) td.gk-side-blank,.hpf-app :is(#t4,table.s3-gk) thead th.gk-blank{background:Canvas!important;border-color:ButtonText}
 .hpf-app :is(.gk-tools,.gk-unit)>button,.hpf-app .fmh4 button:is(.gk-help,[data-gk-cmd="wide"],[data-m4]){border-color:ButtonText!important;background:ButtonFace!important;color:ButtonText!important}
 .hpf-app .gk-tools button>span{color:inherit!important}
 .hpf-app .gk-unit>button[aria-pressed="true"],.hpf-app .fmh4 button[data-m4][aria-pressed="true"],.hpf-app .gk-tools>button:not([aria-disabled="true"]):not(:disabled):hover{background:Highlight!important;color:HighlightText!important}
 .hpf-app .gk-tools[role="toolbar"],.hpf-app .gk-legend,.hpf-app .fm4>.fmh4{border-color:ButtonText;background:Canvas}
 .hpf-app .gk-tools-sep{background:ButtonText}
 .hpf-app .gk-unit-label{color:CanvasText}
 .hpf-app :is(.gk-tools,.gk-unit)>button:focus-visible,.hpf-app .fmh4 button:focus-visible{outline-color:Highlight!important}
}
@media print{.hpf-app :is(.gk-legend,.gk-tools,.gk-unit,.gk-unit-label,.gk-help,[data-gk-cmd="wide"]){display:none!important}}
/* CC-7 F12: 출처·이동 안내의 위치와 내용은 호스트가 정한다. */
.hpf-app :is(#t4,table.s3-gk) td.b4-src{padding:0 3px;text-align:center;vertical-align:middle}
.hpf-app :is(#t4,table.s3-gk) .b4-chip{max-width:100%;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:#111;font:inherit;white-space:normal;overflow-wrap:anywhere;text-decoration:none;cursor:pointer}
.hpf-app :is(#t4,table.s3-gk) .b4-chip:is([data-src="lw"],[data-src="auto"]){color:#5F6368}
.hpf-app :is(#t4,table.s3-gk) .b4-chip[data-src="new"]{cursor:default}
.hpf-app :is(#t4,table.s3-gk) .b4-chip u{text-decoration:none}
.hpf-app .gk4-nav{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:4px 8px;border:1px solid var(--hpf-rule);background:var(--hpf-paper-2);color:var(--hpf-secondary);font:12px/20px var(--hpf-font)}
.hpf-app .gk4-nav-back{padding:0 6px;border:1px solid var(--hpf-rule);border-radius:2px;background:var(--hpf-paper);color:var(--hpf-accent);font:inherit;cursor:pointer}
.hpf-app .gk4-nav-back:hover{background:var(--hpf-accent-soft)}
.hpf-app .gk4-nav-back:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:1px}
.hpf-app .gk4-pop[role="dialog"]{z-index:118;box-sizing:border-box;width:max-content;max-width:min(360px,calc(100vw - 16px));max-height:min(320px,calc(100dvh - 16px));overflow:auto;padding:8px;border:1px solid var(--hpf-rule);border-radius:2px;background:var(--hpf-paper);color:var(--hpf-ink);box-shadow:0 2px 6px var(--airi-shadow);font:12px/1.5 var(--hpf-font);white-space:pre-wrap;overflow-wrap:anywhere;word-break:keep-all}
.hpf-app :is(.gk4-nav,.gk4-pop,.gk-hint)[hidden]{display:none!important}
/* F11: 안내선의 좌표·길이·크기와 커서는 키트가 소유한다. */
.hpf-app .gk-resize-guide{position:fixed;z-index:121;background:var(--hpf-accent);pointer-events:none}
/* F13: 내용 맞춤 폭의 세 줄. 값·경고·위치는 키트/호스트 소유다. */
.hpf-app .gk-hint[role="status"]{z-index:118;box-sizing:border-box;width:max-content;max-width:min(360px,calc(100vw - 16px));padding:6px 8px;border:1px solid var(--hpf-rule);border-radius:2px;background:var(--hpf-paper);color:var(--hpf-ink);box-shadow:0 2px 6px var(--airi-shadow);font:12px/18px var(--hpf-font);white-space:normal;overflow-wrap:anywhere;pointer-events:none}
.hpf-app .gk-hint>:is(.gk-hint-1,.gk-hint-2,.gk-hint-3){display:block;white-space:normal;overflow-wrap:anywhere}
.hpf-app .gk-hint-1{font-weight:600}
.hpf-app .gk-hint-2{color:var(--airi-muted);font-size:11px}
.hpf-app .gk-hint-3{font-size:14px;line-height:20px;font-variant-numeric:tabular-nums}
.hpf-app .gk-hint.is-warn .gk-hint-3{color:var(--airi-note)}
.hpf-app .gk-hint:is(.gk-hint-left,.gk-hint-top,.gk-hint-bottom)::after{content:"";position:absolute;box-sizing:border-box;width:6px;height:6px;background:inherit;border:solid;border-color:inherit;border-width:1px 1px 0 0;pointer-events:none}
.hpf-app .gk-hint.gk-hint-left::after{right:-3px;top:var(--gk-hint-arrow,50%);transform:translateY(-50%) rotate(45deg)}
.hpf-app .gk-hint.gk-hint-top::after{left:var(--gk-hint-arrow,50%);bottom:-3px;transform:translateX(-50%) rotate(135deg)}
.hpf-app .gk-hint.gk-hint-bottom::after{left:var(--gk-hint-arrow,50%);top:-3px;transform:translateX(-50%) rotate(-45deg)}
@media(forced-colors:active){
 .hpf-app :is(#t4,table.s3-gk) td.b4-v>i.b4-u{color:CanvasText!important}
 .hpf-app :is(.b4-chip,.gk4-nav,.gk4-nav-back,.gk4-pop,.gk-hint){border-color:ButtonText}
 .hpf-app .gk-resize-guide{background:Highlight}
 .hpf-app .gk4-nav-back:focus-visible{outline-color:Highlight}
 .hpf-app .gk-hint.is-warn .gk-hint-3{color:CanvasText}
}
@media print{
 .hpf-app :is(.gk4-nav,.gk4-pop,.gk-resize-guide,.gk-hint){display:none!important}
 .hpf-app :is(#t4,table.s3-gk) .b4-chip[data-src]{padding:0;border:0;background:none;color:inherit;font:inherit}
 .hpf-app :is(#t4,table.s3-gk) td :is(input,select):focus,.hpf-app :is(#t4,table.s3-gk) td button:focus-visible{outline:none!important;box-shadow:none!important}
}
/* F11: 호스트는 저장한 행 높이를 tr의 height와 --gk-row-h에 함께 전달한다.
   변수 미지정 시 기존 치수 유지. 여러 줄 콘텐츠의 강제 클리핑은 하지 않는다. */
/* CC-10: 상태 단추는 항목 칸 안의 실제 SVG 한 개이며 별도 잠금 열은 없다. */
@media screen{
 .hpf-app :is(#t4,table.s3-gk) button.b4-lk-btn{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:16px;height:min(16px,calc(var(--gk-row-h,22px) - var(--gk-bt,0px) - var(--gk-bb,0px)));min-height:0;margin:0 0 0 4px;padding:0;border:0;border-radius:3px;background:#3C4043;box-shadow:none;color:#fff;font:inherit;opacity:1;cursor:pointer}
 .hpf-app :is(#t4,table.s3-gk) button.b4-lk-btn[data-lk="locked"]{background:#E8710A}
 .hpf-app :is(#t4,table.s3-gk) button.b4-lk-btn[data-lk="open"]{background:#188038}
 .hpf-app :is(#t4,table.s3-gk) button.b4-lk-btn[data-lk="reset"]{background:#1A73E8}
 .hpf-app :is(#t4,table.s3-gk) button.b4-lk-btn[data-lk="fixed"]{background:#3C4043}
 .hpf-app :is(#t4,table.s3-gk) button.b4-lk-btn[data-lk="del"]{background:#DADDE1;color:#202124}
 .hpf-app :is(#t4,table.s3-gk) button.b4-lk-btn[data-lk="rm"]{background:#D93025}
 .hpf-app :is(#t4,table.s3-gk) button.b4-lk-btn>svg{flex:none;width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:1.8;pointer-events:none}
}
@media(forced-colors:active){
 .hpf-app :is(#t4,table.s3-gk) button.b4-lk-btn[data-lk]{background:ButtonFace;color:ButtonText;border:1px solid ButtonText}
}
@media print{
 .hpf-app :is(#t4,table.s3-gk) button.b4-lk-btn{display:none!important}
}
/* F12: 실제 이동에서 붙는 일시적 강조. 초점과 같은 outline 한 겹만 쓴다. */
.hpf-app .gk4-flash{outline:2px solid var(--airi-primary-hover)!important;outline-offset:-2px;background:var(--hpf-accent-soft)!important;box-shadow:none!important}
@media(forced-colors:active){.hpf-app .gk4-flash{outline-color:Highlight!important;background:Canvas!important}}
@media print{.hpf-app .gk4-flash{outline:none!important;background:transparent!important;box-shadow:none!important}}
/* F20: gk-wrap 행의 저장 높이는 최소값이다. 다른 행의 높이 선언은 변경하지 않는다. */
@media screen{
 .hpf-app :is(#t4,table.s3-gk) td.gk-wrap,.hpf-app :is(#t4,table.s3-gk) td.b4-text.gk-wrap{white-space:normal;overflow-wrap:anywhere;overflow:visible;text-overflow:clip}
 .hpf-app :is(#t4,table.s3-gk) td>span.pw4{width:calc(100% - 1em - 2px);max-width:64px}
 .hpf-app :is(#t4,table.s3-gk) td>span.pw4>input[data-es]{width:100%;min-width:0;padding-right:0}
 .hpf-app :is(#t4,table.s3-gk) td>span.pw4+i.b4-u{margin-left:2px}
}
/* F22 실측 보정: 항목 머리 찾기 단추 크기(UI07) · REV 비고 칸 세대당 입력(D-92). 표 구조·sticky left/z-index는 건드리지 않는다. */
@media screen{
 .hpf-app :is(#t4,table.s3-gk) thead th.fz{white-space:nowrap;overflow:visible}
 .hpf-app :is(#t4,table.s3-gk) thead th.fz>.hi4{gap:4px;min-width:0;white-space:nowrap}
 .hpf-app :is(#t4,table.s3-gk) button.gk-find-btn{display:inline-flex;flex:none;align-items:center;justify-content:center;width:16px;height:16px;min-width:16px;min-height:16px;margin:0;padding:0;border:0;border-radius:2px;background:transparent;box-shadow:none;color:inherit;font:inherit;line-height:1;cursor:pointer}
 .hpf-app :is(#t4,table.s3-gk) button.gk-find-btn>.gk-ico{display:block;flex:none;width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
 /* 세대당 비고 칸: '세대당' + 입력 + 단위를 한 줄 flex로 두고, 입력만 줄어들게 한다(단위·라벨은 고정). 열 폭은 호스트(fitInitial)가 정한다. */
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-col="note"].b4-in{display:flex;align-items:center;justify-content:flex-start;gap:0;padding:0 1px;min-width:0;white-space:nowrap}
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-col="note"].b4-in>span.b4-pre{flex:none}
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-col="note"].b4-in>input.i{flex:1 1 0;width:0;min-width:0;max-width:100%;padding:0 1px}
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-col="note"].b4-in>i.b4-u{flex:none;margin:0}
}
@media(forced-colors:active){
 .hpf-app :is(#t4,table.s3-gk) button.gk-find-btn{background:ButtonFace;color:ButtonText;border:1px solid ButtonText}
 .hpf-app :is(#t4,table.s3-gk) button.gk-find-btn>.gk-ico{stroke:ButtonText}
}
@media print{
 .hpf-app :is(#t4,table.s3-gk) button.gk-find-btn{display:none!important}
}
/* F22 K5/K7: 실제 금융 창 안에만 적용한다. 위치·크기·수치·문구는 호스트 소유다. */
@media screen{
 .hpf-app .af-win{z-index:112;position:relative;display:flex;flex-direction:column;box-sizing:border-box;border:1px solid #5F7393;background:#EEF1F5;box-shadow:0 8px 24px rgba(15,30,60,.28);color:#111;font:12px/1.4 "Malgun Gothic","맑은 고딕",sans-serif}
 .hpf-app .af-win *{box-sizing:border-box}
 .hpf-app .af-win>.af-bar{display:flex;flex:none;flex-wrap:wrap;align-items:center;gap:4px;min-height:32px;padding:5px 6px 5px 10px;background:linear-gradient(#2B4A7E,#1F3864);color:#fff;cursor:move;touch-action:none}
 .hpf-app .af-win .af-title{flex:none;font-size:13px;font-weight:700;white-space:nowrap}
 .hpf-app .af-win .af-unit{flex:none;margin-right:auto;padding:1px 8px;border-radius:11px;background:#fff;color:#1F3864;font:700 11.5px/18px "Segoe UI","Malgun Gothic",sans-serif;white-space:nowrap}
 .hpf-app .af-win .af-btn{flex:none;min-width:22px;min-height:22px;margin:0;padding:2px 5px;border:1px solid #8FA3C2;border-radius:2px;background:#2A4677;color:#fff;font:inherit;font-size:11.5px;line-height:16px;white-space:nowrap;cursor:pointer}
 .hpf-app .af-win .af-btn[data-af="mode"]{background:#fff;color:#1F3864;font-weight:700}
 .hpf-app .af-win>.af-body{flex:1 1 0;min-height:0;min-width:0;overflow:auto;overscroll-behavior:contain;padding:4px}
 .hpf-app .af-win>.af-grip{position:absolute;right:0;bottom:0;width:14px;height:14px;background:linear-gradient(135deg,transparent 50%,#8FA3C2 50% 58%,transparent 58% 70%,#8FA3C2 70% 78%,transparent 78%);cursor:nwse-resize;touch-action:none}
 .hpf-app .af-win[data-af-min="true"]{height:auto!important;min-height:0}
 .hpf-app .af-win[data-af-min="true"]>:is(.af-body,.af-grip){display:none}
 .hpf-app .af-win[data-af-mode="small"] [data-fc="repay"],.hpf-app .af-win[data-af-mode="small"] [data-fc="fee"]{display:none}
 /* F23-1: small 머리줄은 한 줄. 단추는 줄이지 않고, 제목·단위 알약만 말줄임으로 줄어든다. */
 .hpf-app .af-win[data-af-mode="small"]>.af-bar{flex-wrap:nowrap;min-height:0;height:32px;padding:4px 6px 4px 10px;gap:4px}
 .hpf-app .af-win[data-af-mode="small"]>.af-bar :is(.af-title,.af-unit){flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
 .hpf-app .af-win[data-af-mode="small"]>.af-bar .af-title{flex-shrink:1}
 .hpf-app .af-win[data-af-mode="small"]>.af-bar .af-unit{flex-shrink:2;margin-right:auto}
 .hpf-app .af-win[data-af-mode="small"]>.af-bar .af-btn{flex:none;white-space:nowrap}
 .hpf-app .af-win[data-af-mode="small"] .af-btn-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;min-width:24px;padding:2px;line-height:1}
 .hpf-app .af-win .af-btn-icon>.af-ico{display:block;flex:none;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
 .hpf-app .af-win .fc4{min-width:0;margin:0 0 8px;border:1px solid #B7C2D0;background:#fff}
 .hpf-app .af-win .fc4:last-child{margin-bottom:0}
 .hpf-app .af-win .fc4-h{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:26px;margin:0;padding:4px 8px;border-bottom:1px solid #D3DAE3;background:#F4F6F9;color:#1F3864;font:inherit;font-weight:700}
 .hpf-app .af-win .fc4-h::before{content:"";flex:none;width:3px;height:12px;background:#2F5597}
 .hpf-app .af-win .sp{flex:1}
 .hpf-app .af-win .fc4-2{display:flex;flex-wrap:wrap;align-items:flex-start;gap:4px 8px;padding:4px}
 .hpf-app .af-win .fc4-col{display:block;flex:1 1 220px;min-width:0;break-inside:avoid}
 .hpf-app .af-win .fc4-sep{display:block;flex:none;align-self:stretch;width:1px;background:#C3CCD8}
 .hpf-app .af-win .fc4-sub{display:flex;align-items:center;justify-content:space-between;gap:4px;margin:0 0 4px;padding:0 0 4px;border-bottom:1px solid #D3DAE3;color:#1F3864;font-size:12px;font-weight:700}
 .hpf-app .af-win[data-af-mode="small"] .fc4-2{flex-wrap:nowrap;flex-direction:column;gap:4px}
 .hpf-app .af-win[data-af-mode="small"] .fc4-sub{display:none}
 .hpf-app .af-win[data-af-mode="small"] .fc4-col{flex:none;width:100%}
 .hpf-app .af-win[data-af-mode="small"] .fc4-sep{display:none}
 .hpf-app .af-win[data-af-mode="small"] .fc4-col:last-child{margin-top:4px;padding-top:4px;border-top:1px solid #C3CCD8}
 .hpf-app .af-win div.fr4{position:relative;display:grid;grid-template-columns:104px minmax(0,1fr) 15px;align-items:center;gap:3px 1px;flex:none;min-height:22px;margin:3px 0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible}
 .hpf-app .af-win .fr4-k{min-width:0;color:#333;text-align:right;white-space:nowrap;overflow-wrap:normal}
 .hpf-app .af-win .fr4-v{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:4px;min-width:0;min-height:22px;padding:0 1px;border:1px solid #A9B4C2;background:#fff;font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere}
 .hpf-app .af-win .fr4-v.ro{border-color:#C7CED8;background:#F1F3F6;color:#333}
 .hpf-app .af-win .fr4-v.neg{color:#C00000}
 .hpf-app .af-win .fr4-v.two i{font-style:normal;color:#9AA4B2}
 .hpf-app .af-win .fr4-lock{display:inline-flex;flex:none;margin-right:auto;color:#80868B}
 .hpf-app .af-win .fr4-q{display:flex;align-items:center;justify-content:center;align-self:center;min-width:15px;width:15px}
 .hpf-app .af-win .fr4-v :is(input.i,select.i){width:100%;max-width:100%;min-width:0;min-height:0;height:20px;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:inherit;font:inherit}
 .hpf-app .af-win .fr4-v select.i{appearance:none;-webkit-appearance:none;padding:0 20px 0 2px;min-width:min(132px,100%);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5L6 8l3.5-3.5' fill='none' stroke='%2344546A' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 4px center;background-size:12px 12px}
 .hpf-app .af-win .fr4-v select.i:disabled{padding:0 20px 0 2px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5L6 8l3.5-3.5' fill='none' stroke='%235F6368' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
 .hpf-app .af-win .fr4-v input.n{text-align:right;font-variant-numeric:tabular-nums}
 .hpf-app .af-win .fr4-v select.i{text-align:left}
 .hpf-app .af-win .fr4-v :is(.pw4,.fiw){position:static;display:flex;flex:1;align-items:center;gap:4px;min-width:0;width:100%}
 .hpf-app .af-win .fr4-v :is(.pw4,.fiw)>input.i{flex:1;width:0;min-width:0;padding:0}
 .hpf-app .af-win .fr4-v :is(.pw4,.fiw)>i{position:static;flex:none;transform:none;font:inherit;font-size:11px;font-style:normal;color:#5F6368;white-space:nowrap}
 .hpf-app .af-win .fr4-v .pw4>.u0{margin-right:auto}
 .hpf-app .af-win .fr4-v .ck{flex:none;margin:0;font-size:11px;white-space:nowrap}
 .hpf-app .af-win :is(.fq-eq,.fq-eqv){min-width:0;min-height:0;margin:0;padding:0;border:0;background:transparent;box-shadow:none;color:#1F3864;font:inherit;cursor:pointer}
 .hpf-app .af-win .fq-eqv{flex:1;text-align:right}
 .hpf-app .af-win .fq-eq{display:flex;align-items:center;justify-content:center;width:15px;height:15px}
 .hpf-app .af-win .fq-gear{display:block;width:15px;height:15px}
 .hpf-app .af-win .seg4[data-k="fsb.vat"]{display:inline-flex;flex:none;margin:0;padding:0;border:1px solid #9AA8BC;border-radius:2px;background:#fff}
 .hpf-app .af-win .seg4[data-k="fsb.vat"]>button{min-height:0;margin:0;padding:1px 8px;border:0;border-radius:0;background:#fff;color:#44546A;box-shadow:none;font:inherit;font-size:11px;line-height:16px;white-space:nowrap}
 .hpf-app .af-win .seg4[data-k="fsb.vat"]>button[aria-pressed="true"]{background:#2F5597;color:#fff}
 .hpf-app .af-win .fq-auto{min-height:24px;margin:0;padding:3px 10px;border:1px solid #1F3864;border-radius:2px;background:linear-gradient(#2F5597,#1F3864);color:#fff;font:inherit;font-weight:700;font-size:11.5px;line-height:16px;cursor:pointer}
 .hpf-app .af-win .fq-auto>span{color:#F6A23B}
 .hpf-app .af-win:not([data-af-mode="small"]) .fc4[data-fc="lenders"]{min-width:0;overflow-x:auto}
 .hpf-app .af-win .fl4-detail{position:sticky;left:0}
 .hpf-app .af-win table.fl4{width:100%;max-width:100%;margin:0;border-collapse:collapse;font:inherit;font-variant-numeric:tabular-nums}
 .hpf-app .af-win .fl4 :is(th,td){height:22px;padding:3px 6px;border:1px solid #D3DAE3;background:#fff;white-space:nowrap;vertical-align:middle;font:inherit;text-align:right}
 .hpf-app .af-win .fl4 th{background:#E9EDF3;color:#1F3864;font-weight:700}
 .hpf-app .af-win .fl4 .c{text-align:center}
 .hpf-app .af-win .fl4 tbody tr.sel td{background:#E8F0FE}
 .hpf-app .af-win .fl4 tbody tr.fl4-sum td{border-top:1px solid #8FA3C2;background:#E9EDF3;color:#1F3864;font-weight:700;white-space:normal}
 .hpf-app .af-win .fl4 td.dx{padding:0;text-align:center}
 .hpf-app .af-win .fl4 button.dx{display:block;min-width:18px;min-height:22px;width:100%;margin:0;padding:0;border:0;border-radius:0;background:#D93025;color:#fff;font:inherit;font-weight:700;font-size:14px;line-height:20px;cursor:pointer}
 .hpf-app .af-win .fl4-row{cursor:pointer}
 .hpf-app .af-win .fl4-empty{padding:8px;text-align:center;color:#5F6368}
 .hpf-app .af-win .fl4-add{display:block;width:calc(100% - 16px);min-height:24px;margin:6px 8px 8px;padding:3px 8px;border:1px dashed #7F93B5;border-radius:2px;background:#F8FAFD;color:#2F5597;font:inherit;font-weight:700;cursor:pointer}
 .hpf-app .af-win .fl4-detail{margin:10px 8px 8px;padding:0 0 6px;border:1px solid #2F5597;border-left-width:4px;background:#F5F8FD;box-shadow:0 2px 6px rgba(31,56,100,.12)}
 .hpf-app .af-win .fl4-dh{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 6px;padding:4px 10px;background:#2F5597;color:#fff;font-weight:700}
 .hpf-app .af-win .fl4-ds{color:#DCE6F5;font-weight:400;overflow-wrap:anywhere}
 .hpf-app .af-win .fl4-btns{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px 2px}
 .hpf-app .af-win .fl4-btns .btn{min-height:26px;margin:0;padding:3px 14px;border:1px solid #9AA8BC;border-radius:2px;background:linear-gradient(#fff,#EDF1F6);color:#111;font:inherit}
 .hpf-app .af-win .fl4-btns .btn.p{border-color:#1F3864;background:linear-gradient(#2F5597,#1F3864);color:#fff;font-weight:700}
 .hpf-app .af-win .fl4-btns .btn.dl{border-color:#E3A8A8;color:#C00000}
 .hpf-app .af-win .fq-note{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px;padding:6px 8px;border:1px solid #F6A23B;border-left-width:4px;background:#FFF8E6;color:#111;overflow-wrap:anywhere}
 .hpf-app .af-win .fq-note>b{color:#7A5B00}
 .hpf-app .af-win .fq-note>span{flex:1 1 100px;min-width:0}
 .hpf-app .af-win :is(.lk4,.fq-note-x){min-width:0;min-height:0;padding:0;border:0;background:transparent;color:#2F5597;font:inherit;cursor:pointer}
 .hpf-app .af-win .fq-note-x{flex:none;margin-left:auto}
 .hpf-app .af-win .fr4-v.flash{background:#FFF2CC!important;outline:2px solid #F6A23B!important;outline-offset:-2px;animation:none}
 .hpf-app .af-win :is(button,input,select):focus-visible,.hpf-app .af-win .fl4-row:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px}
 .hpf-app .af-win button:disabled{opacity:.5;cursor:not-allowed}
 .hpf-app .af-win .fr4-v :is(input,select):disabled{opacity:1;background:#F1F3F6;color:#5F6368;cursor:not-allowed}
 .hpf-app .af-win details.tip{margin:0}
 .hpf-app .af-win details.tip summary,.hpf-app .af-win details.tip summary>span{width:15px;height:15px;min-height:0;padding:0;font-size:10px}
 .hpf-app .af-win details.tip>div[role="tooltip"]{z-index:118;max-width:min(330px,calc(100vw - 24px));border:1px solid #8A99B0;border-radius:2px;background:#fff;color:#222;box-shadow:0 4px 12px rgba(0,0,0,.18);padding:7px 9px;font-size:11.5px;line-height:1.55;overflow-wrap:anywhere}
}
@media screen{
 .hpf-app dialog:is(.eqd,.atd){box-sizing:border-box;max-height:calc(100dvh - 24px);padding:0;border:1px solid #5F7393;border-radius:0;background:#EEF1F5;color:#111;font:12px/1.4 "Malgun Gothic","맑은 고딕",sans-serif}
 .hpf-app dialog:is(.eqd,.atd)[open]{display:flex;flex-direction:column;overflow:hidden}
 .hpf-app dialog:is(.eqd,.atd)>.dh{position:static;flex:none;min-height:32px;padding:6px 12px;background:linear-gradient(#2B4A7E,#1F3864);color:#fff;font-size:13px;font-weight:700}
 .hpf-app dialog:is(.eqd,.atd) .dh-unit{display:inline-block;margin-left:10px;padding:1px 8px;border-radius:11px;background:#fff;color:#1F3864;font-size:11.5px;line-height:18px;white-space:nowrap}
 .hpf-app dialog:is(.eqd,.atd)>.db:is(.eqd4,.atd4){flex:1;min-height:0;min-width:0;overflow:auto;padding:8px;background:#EEF1F5;font:inherit}
 .hpf-app dialog:is(.eqd,.atd)>.df{position:static;flex:none;gap:6px;padding:8px;border-top:1px solid #C3CCD8;background:#E2E7EE}
 .hpf-app dialog:is(.eqd,.atd)>.df>.btn{min-height:26px;margin:0;padding:3px 14px;border:1px solid #9AA8BC;border-radius:2px;background:linear-gradient(#fff,#EDF1F6);color:#111;font:inherit}
 .hpf-app dialog:is(.eqd,.atd)>.df>.btn.p{border-color:#1F3864;background:linear-gradient(#2F5597,#1F3864);color:#fff;font-weight:700}
 .hpf-app :is(.eqd4,.atd4) *{box-sizing:border-box}
 .hpf-app .eqd4 .eqc,.hpf-app .atd4 .atd4-c{min-width:0;margin:0 0 8px;padding:0;border:1px solid #B7C2D0;background:#fff}
 .hpf-app :is(.eqd4,.atd4) .gt{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:26px;padding:4px 8px;border-bottom:1px solid #D3DAE3;background:#F4F6F9;color:#1F3864;font-weight:700}
 .hpf-app :is(.eqd4,.atd4) .gt::before{content:"";flex:none;width:3px;height:12px;background:#2F5597}
 .hpf-app :is(.eqd4,.atd4) .sp{flex:1}
 .hpf-app :is(.eqd4,.atd4) .gt small{color:#5F6368;font-size:11px;font-weight:400}
 .hpf-app :is(.eqd4,.atd4) .i{box-sizing:border-box;min-width:0;min-height:0;height:22px;padding:0 5px;border:1px solid #A9B4C2;border-radius:0;background:#fff;box-shadow:none;color:#111;font:inherit}
 .hpf-app :is(.eqd4,.atd4) input.n{text-align:right;font-variant-numeric:tabular-nums}
 .hpf-app :is(.eqd4,.atd4) .i:disabled{opacity:1;border-color:#C7CED8;background:#F1F3F6;color:#5F6368;cursor:not-allowed}
 .hpf-app .eqd4 .eqbar{display:grid;grid-template-columns:auto minmax(120px,170px) auto minmax(0,1fr);align-items:center;gap:6px 10px;margin:8px 8px 2px;padding:6px 8px;border:1px solid #D3DAE3;background:#F4F6F9}
 .hpf-app .eqd4 .eqbar>.b{display:flex;justify-content:flex-end;min-width:0}
 .hpf-app .eqd4 .eqbar>.k{color:#333;font-weight:700;white-space:nowrap}
 .hpf-app .eqd4 .eqbar>.v{display:flex;align-items:center;gap:4px;min-width:0;height:22px;padding:0 6px;border:1px solid #A9B4C2;background:#fff}
 .hpf-app .eqd4 .eqbar .eqtot{flex:1;min-width:0;width:0;height:20px;padding:0;border:0;font-weight:700}
 .hpf-app .eqd4 .eqbar em{flex:none;color:#5F6368;font-size:11.5px;font-style:normal;white-space:nowrap}
 .hpf-app .eqd4 .vtg{display:inline-flex;flex-wrap:nowrap;margin:0;padding:0;border:1px solid #9AA8BC;border-radius:2px;background:#fff}
 .hpf-app .eqd4 .vtg>button{min-height:0;margin:0;padding:2px 8px;border:0;border-radius:0;background:#fff;color:#44546A;box-shadow:none;font:inherit;font-size:11.5px;white-space:nowrap}
 .hpf-app .eqd4 .vtg>button[aria-pressed="true"]{background:#2F5597;color:#fff}
 .hpf-app .eqd4 .eqbar .btn{min-height:24px;padding:3px 14px;border:1px solid #1F3864;border-radius:2px;background:linear-gradient(#2F5597,#1F3864);color:#fff;font:inherit;font-weight:700;white-space:nowrap}
 .hpf-app .eqd4 .hint{padding:3px 10px 8px;color:#6B7684;font-size:11.5px;line-height:1.6;overflow-wrap:anywhere}
 .hpf-app .eqd4 #eqtb{max-width:100%;overflow:auto;padding:0 8px 8px}
 .hpf-app :is(.eqd4,.atd4) table.dt{width:100%;min-width:680px;margin:0;border-collapse:collapse;font:inherit;font-variant-numeric:tabular-nums}
 .hpf-app .eqd4 table.dt{min-width:812px;table-layout:fixed}
 .hpf-app .eqd4 table.dt>thead>tr>th:nth-child(1),.hpf-app .eqd4 table.dt>tbody>tr>td:nth-child(1){width:40px}
 .hpf-app .eqd4 table.dt>thead>tr>th:nth-child(2),.hpf-app .eqd4 table.dt>tbody>tr>td:nth-child(2){width:auto}
 .hpf-app .eqd4 table.dt>thead>tr>th:nth-child(3),.hpf-app .eqd4 table.dt>tbody>tr>td:nth-child(3){width:104px}
 .hpf-app .eqd4 table.dt>thead>tr>th:nth-child(4),.hpf-app .eqd4 table.dt>tbody>tr>td:nth-child(4){width:110px}
 .hpf-app .eqd4 table.dt>thead>tr>th:nth-child(5),.hpf-app .eqd4 table.dt>tbody>tr>td:nth-child(5){width:88px}
 .hpf-app .eqd4 table.dt>thead>tr>th:nth-child(6),.hpf-app .eqd4 table.dt>tbody>tr>td:nth-child(6){width:96px}
 .hpf-app .eqd4 table.dt>thead>tr>th:nth-child(7),.hpf-app .eqd4 table.dt>tbody>tr>td:nth-child(7){width:84px}
 .hpf-app .eqd4 table.dt>thead>tr>th:nth-child(8),.hpf-app .eqd4 table.dt>tbody>tr>td:nth-child(8){width:76px}
 .hpf-app .eqd4 table.dt th:nth-child(2),.hpf-app .eqd4 table.dt td:nth-child(2){white-space:nowrap;overflow-wrap:normal}
 .hpf-app .eqd4 table.dt td.in input.i{width:100%}
 .hpf-app :is(.eqd4,.atd4) .dt :is(th,td){height:22px;padding:3px 6px!important;border:1px solid #D3DAE3;background:#fff;color:#111;vertical-align:middle;font:inherit;text-align:right;white-space:nowrap}
 .hpf-app :is(.eqd4,.atd4) .dt th{position:sticky;top:0;z-index:2;border-color:#B7C2D0;background:linear-gradient(#F4F6F9,#E3E8EF);color:#1F3864;font-weight:700}
 .hpf-app :is(.eqd4,.atd4) .dt .l{text-align:left;white-space:normal;overflow-wrap:anywhere}
 .hpf-app :is(.eqd4,.atd4) .dt .c{text-align:center}
 .hpf-app :is(.eqd4,.atd4) .dt tbody tr:nth-child(even):not(.tot):not(.eqr)>td{background:#FAFBFC}
 .hpf-app :is(.eqd4,.atd4) .dt tr.tot>td{border-top-color:#8FA3C2;background:#EEF1F5;font-weight:700}
 .hpf-app :is(.eqd4,.atd4) .dt td.in{padding:2px 3px!important;background:#fff}
 .hpf-app :is(.eqd4,.atd4) .dt td.in input.i{width:100%;min-width:0;height:20px;padding:0 5px;background:#fff}
 .hpf-app .eqd4 .dt input.eqi[value]:not([value=""]){background:#FFFDF0}
 .hpf-app .eqd4 .dt .au{color:#2F5597;text-align:right}
 .hpf-app .eqd4 .dt .mu{color:#9AA4B2;text-align:right}
 .hpf-app .eqd4 .ordn{display:inline-block;width:16px;text-align:center}
 .hpf-app .eqd4 .eqm{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:6px 0;font-size:11.5px}
 .hpf-app .eqd4 .eqref{margin:8px 0 0;padding:6px 8px;border:1px solid #D9C27A;border-radius:0;background:#FFFBEA;line-height:1.6;overflow-wrap:anywhere}
 .hpf-app .eqd4 .eqref>b{color:#7A5B00}
 .hpf-app .atd4 .sub3{margin:8px 8px 4px;padding:0 0 3px;border-bottom:1px solid #D3DAE3;color:#1F3864;font-weight:700}
 .hpf-app .atd4 .goal{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:8px 16px;padding:2px 10px 6px}
 .hpf-app .atd4 .goal>.fm{display:grid;grid-template-columns:auto minmax(0,226px);align-items:center;gap:4px 6px;flex:0 1 auto;min-width:0;padding:0}
 .hpf-app .atd4 .goal>.fm:last-child{grid-template-columns:auto minmax(0,150px) 15px}
 .hpf-app .atd4 .goal .lb{display:flex;align-items:center;gap:4px;min-width:0;color:#333;line-height:1.5}
 .hpf-app .atd4 .goal select{width:100%;min-width:0}
 .hpf-app .atd4 .goal select.i{padding-right:17px}
 .hpf-app .atd4 .goal input[type="checkbox"]{flex:none;width:14px;height:14px;margin:0;accent-color:#2F5597}
 .hpf-app .atd4 .fr4-q{display:flex;align-items:center;justify-content:center;width:15px;min-width:15px}
 .hpf-app .atd4 .tw{margin:0 8px;border:0;border-radius:0;overflow:auto}
 .hpf-app .atd4 #ap4result{overflow:auto}
 .hpf-app .atd4 .dt .pw4{position:static;display:flex;align-items:center;gap:4px;min-width:0;width:100%}
 .hpf-app .atd4 .dt .pw4>input.i{flex:1;width:0;min-width:0;padding:0 5px}
 .hpf-app .atd4 .dt .pw4>i{position:static;flex:none;transform:none;color:#5F6368;font:inherit;font-style:normal}
 .hpf-app .atd4 .dt tr.eqr>td{border-top:2px solid #8FA3C2;background:#F4F6F9}
 .hpf-app .atd4 .dt tr.eqr>td:nth-child(6){color:#80868B}
 .hpf-app .atd4 .fr4-lock{display:inline-flex;color:#80868B}
 .hpf-app .atd4 .dt input[type="checkbox"]{width:14px;height:14px;vertical-align:middle;accent-color:#2F5597}
 .hpf-app .atd4 .runrow{display:flex;align-items:stretch;gap:10px;padding:6px 8px 8px}
 .hpf-app .atd4 .runrow>.ex{flex:1;min-width:0;padding:5px 8px;border:1px solid #DCE2EA;background:#F4F6F9;color:#33404F;font-size:11.5px;line-height:1.6;overflow-wrap:anywhere}
 .hpf-app .atd4 .runrow>.btn{flex:none;min-width:96px;min-height:44px;padding:6px 14px;border:1px solid #1F3864;border-radius:2px;background:linear-gradient(#2F5597,#1F3864);color:#fff;font:inherit;font-size:13px;font-weight:700}
 .hpf-app .atd4 td.is-err{background:#FFF1F0!important}
 .hpf-app .atd4 input.is-err{border-color:#C00000;background:#FFF1F0!important;color:#C00000}
 .hpf-app .atd4 .atd4-err{margin:0 0 8px;padding:8px 10px;border:1px solid #E3A8A8;border-left:4px solid #C00000;background:#FFF1F0;color:#C00000;font-size:12px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
 .hpf-app :is(.eqd4,.atd4) :is(.neg,.up4,.bad){color:#C00000}
 .hpf-app :is(.eqd4,.atd4) .dn4{color:#2F5597}
 .hpf-app :is(.eqd4,.atd4) :is(.ok4,.ok){color:#1E7B34}
 .hpf-app :is(.eqd4,.atd4) .lk4{padding:0;border:0;background:transparent;color:#2F5597;font:inherit;text-decoration:underline;cursor:pointer}
 .hpf-app :is(.eqd4,.atd4) :is(input.i,select.i,button):focus-visible{outline:2px solid var(--hpf-focus);outline-offset:0;box-shadow:none}
 .hpf-app dialog:is(.eqd,.atd) button:disabled{opacity:.5;cursor:not-allowed}
 .hpf-app :is(.eqd4,.atd4) details.tip{margin:0}
 .hpf-app :is(.eqd4,.atd4) details.tip summary,.hpf-app :is(.eqd4,.atd4) details.tip summary>span{width:15px;height:15px;min-height:0;padding:0;font-size:10px}
 .hpf-app :is(.eqd4,.atd4) details.tip>div[role="tooltip"]{max-width:min(330px,calc(100vw - 24px));padding:8px 10px;border:1px solid #8A99B0;border-radius:2px;background:#fff;color:#222;font-size:11.5px;line-height:1.6;overflow-wrap:anywhere}
 .hpf-app .atd4 details.tip.qw summary>span{border-color:#C98A00;background:#FFE8A3;color:#7A4A00}
 .hpf-app .atd4 details.tip.qw>div[role="tooltip"]{border-color:#C98A00;background:#FFF6D6}
 .hpf-app .atd4 details.tip.qw>div[role="tooltip"] b{color:#7A4A00}
 .hpf-app :is(.eqd4,.atd4) .dt td.in input.i:disabled{background:#F1F3F6}
 .hpf-app .af-win .fr4-v.warn{font-weight:700}
 .hpf-app dialog.atd{width:min(780px,94vw)}
 .hpf-app dialog.eqd{width:min(900px,94vw)}
 .hpf-app :is(.eqd4,.atd4) fieldset{min-width:0}
 .hpf-app .eqd4 .eqbar .g{display:flex;align-items:center;min-width:0}
 .hpf-app .atd4 .dt tr.key>td{font-weight:700}
 .hpf-app .atd4 .h.e{margin:6px 8px 8px;padding:6px 8px;border:1px solid #E3A8A8;background:#FFF1F0;color:#C00000;font-size:11.5px;line-height:1.6;overflow-wrap:anywhere}
}
@media(forced-colors:active){
 .hpf-app .af-win{border-color:ButtonText;background:Canvas;color:CanvasText;box-shadow:none}
 .hpf-app .af-win :is(.af-bar,.fc4-h,.fl4-dh),.hpf-app dialog:is(.eqd,.atd)>.dh,.hpf-app :is(.eqd4,.atd4) .gt{background:ButtonFace;color:ButtonText;border-color:ButtonText}
 .hpf-app .af-win :is(.af-unit,.af-btn,.fc4,.fr4-v,.fl4-detail,.fl4-add,.fq-auto,.fq-note),.hpf-app .af-win .fl4 :is(th,td),.hpf-app dialog:is(.eqd,.atd),.hpf-app dialog:is(.eqd,.atd)>.db,.hpf-app dialog:is(.eqd,.atd)>.df{border-color:ButtonText;background:Canvas;color:CanvasText;box-shadow:none}
 .hpf-app :is(.eqd4,.atd4) :is(.eqc,.atd4-c,.eqbar,.eqbar>.v,.eqref,.i,.tw),.hpf-app :is(.eqd4,.atd4) .dt :is(th,td),.hpf-app .atd4 .runrow>.ex{border-color:ButtonText;background:Canvas;color:CanvasText}
 .hpf-app .af-win .fr4-v.ro,.hpf-app .af-win .fr4-v :is(input,select):disabled,.hpf-app :is(.eqd4,.atd4) .i:disabled{background:Canvas;color:GrayText}
 .hpf-app .af-win :is(.fq-eq,.fq-eqv,.lk4,.fq-note-x,.fr4-lock),.hpf-app :is(.eqd4,.atd4) :is(.lk4,.fr4-lock){color:LinkText}
 .hpf-app .af-win .seg4[data-k="fsb.vat"]>button,.hpf-app .eqd4 .vtg>button,.hpf-app .af-win .fl4-btns .btn,.hpf-app dialog:is(.eqd,.atd)>.df>.btn,.hpf-app .eqd4 .eqbar .btn,.hpf-app .atd4 .runrow>.btn{border-color:ButtonText;background:ButtonFace;color:ButtonText}
 .hpf-app .af-win .seg4[data-k="fsb.vat"]>button[aria-pressed="true"],.hpf-app .eqd4 .vtg>button[aria-pressed="true"],.hpf-app .af-win .fl4 tbody tr.sel td{background:Highlight;color:HighlightText}
 .hpf-app .af-win .fr4-v.flash{background:Canvas!important;outline-color:Highlight!important}
 .hpf-app .af-win :is(button,input,select):focus-visible,.hpf-app .af-win .fl4-row:focus-visible,.hpf-app :is(.eqd4,.atd4) :is(input.i,select.i,button):focus-visible{outline-color:Highlight}
 .hpf-app .af-win .fc4-sep{background:ButtonText}
 .hpf-app .af-win .fc4-h::before,.hpf-app :is(.eqd4,.atd4) .gt::before{background:ButtonText}
 .hpf-app .atd4 .atd4-err,.hpf-app .atd4 td.is-err,.hpf-app .atd4 input.is-err{border-color:LinkText;background:Canvas!important;color:LinkText}
 .hpf-app :is(.af-win,.eqd4,.atd4) details.tip>div[role="tooltip"]{border-color:ButtonText;background:Canvas;color:CanvasText;box-shadow:none}
 .hpf-app .af-win .af-btn[data-af="mode"],.hpf-app .af-win .fl4-btns .btn.p,.hpf-app dialog:is(.eqd,.atd)>.df>.btn.p{border-color:ButtonText;background:ButtonFace;color:ButtonText}
 .hpf-app .af-win .af-btn-icon>.af-ico{fill:none;stroke:ButtonText}
 .hpf-app .af-win .fr4-v select.i{appearance:auto;-webkit-appearance:auto;background-image:none;padding-right:2px}
 .hpf-app .af-win .fl4 tbody tr.fl4-sum td,.hpf-app :is(.eqd4,.atd4) .dt tbody tr:nth-child(even):not(.tot):not(.eqr)>td,.hpf-app :is(.eqd4,.atd4) .dt tr.tot>td,.hpf-app .atd4 .dt tr.eqr>td{border-color:ButtonText;background:Canvas;color:CanvasText}
 .hpf-app :is(.eqd4,.atd4) .dt td.in input.i,.hpf-app .eqd4 .dt input.eqi[value]:not([value=""]){border-color:ButtonText;background:Field;color:FieldText}
 .hpf-app :is(.eqd4,.atd4) .dt td.in input.i:disabled{background:Canvas;color:GrayText}
 .hpf-app .atd4 .dt tr.eqr>td:nth-child(6){color:GrayText}
 .hpf-app .atd4 details.tip.qw summary>span,.hpf-app .atd4 details.tip.qw>div[role="tooltip"]{border-color:ButtonText;background:Canvas;color:CanvasText}
 .hpf-app .atd4 details.tip.qw>div[role="tooltip"] b{color:CanvasText}
 .hpf-app .atd4 .h.e{border-color:LinkText;background:Canvas}
 .hpf-app .atd4 .dt tr.key>td{border-color:ButtonText;background:Canvas;color:CanvasText}
}
@media print{
 .hpf-app .af-win,.hpf-app dialog.eqd,.hpf-app dialog.atd{display:none!important}
}
/* WO1 D-99 A1/A2/B3: 글자 4.5:1 · 경계 3:1 · 하단 합계 글자. 색만 바꾸고 치수·구조·문구는 건드리지 않는다. 팔레트 #5F6368(글자)·#7B8696(경계). */
@media screen{
 .hpf-app .gk-status{color:#111}
 .gk-menu button[role="menuitem"]:is(:disabled,[aria-disabled="true"]){color:#5F6368;opacity:1}
 .hpf-app .gk-tools[role="toolbar"]>button[data-gk-cmd]:is([aria-disabled="true"],:disabled){opacity:1;color:#5F6368}
 .hpf-app .gk-tools[role="toolbar"]>button[data-gk-cmd]:is([aria-disabled="true"],:disabled)>span{color:#5F6368}
 .hpf-app .gk-legend{border-left-color:#7B8696}
 .hpf-app .gk-tools[role="toolbar"]{border-color:#7B8696}
 .hpf-app .gk-tools-sep{background:#7B8696}
 .hpf-app button[data-gk-cmd="wide"]{border-color:#2F6FB7}
}
@media screen{
 /* A1: 연한 회색 글자를 #5F6368로(흰 6.05 · 연회색 면 5.1 이상). 입력 가능/불가 구분은 배경·밑줄 등 기존 단서를 유지한다. */
 .hpf-app :is(#t4,table.s3-gk) button.gk4-add-btn{color:#5F6368}
 .hpf-app :is(input.i,.fiw input,.f4 input.rfv)::placeholder{color:#5F6368;opacity:1}
 .hpf-app .f4 input.rfv{color:#5F6368}
 .hpf-app :is(.fiw i,.pw4 i,.gy4,.it4 small,.note4,.kv4 .kr b small,.bal.em,.acc4 summary i,.kf .kg,.dd4 .sc,.dd4 .dop .mt,.dd4 .ft,.dd4 .em,.ln4 .d div.ref span,.ln4 .d div.ref b,em.rf,.tag4.op,.fx i.bu,.fx i.bx,table.x4t .lk,table.x4c th.mo small){color:#5F6368}
 .hpf-app table.x4t .ovon:not(:hover){color:#5F6368}
 .hpf-app :is(table.x4t,.lr4) .dx:not(:hover){color:#5F6368;opacity:1}
 .hpf-app .kfrm .kdel:not(:hover),.hpf-app .kaddb:not(:hover){color:#5F6368}
 .hpf-app .kaddb:hover,.hpf-app .lk4{color:#1F5FB8}
 .hpf-app .af-win .fr4-lock,.hpf-app .atd4 .fr4-lock,.hpf-app .atd4 .dt tr.eqr>td:nth-child(6),.hpf-app .eqd4 .dt .mu,.hpf-app .af-win .fr4-v.two i,.hpf-app .eqt td.mute,.hpf-app #dlg select.i:disabled{color:#5F6368}
 .hpf-app .af-win .fq-auto>span{color:#FFD08A}
 .hpf-app .o4.s5{color:#8A5000}
 .hpf-app :is(.o4.s3,.ty4.pf,.kct .ps.pre){color:#1F5FB8}
 .hpf-app .kct :is(.st,.leg b){color:#7A5200}
 .hpf-app .dpk li.off{color:#5F6368}
 /* A2: 경계선 3:1. J가 검정·흰색으로 정한 표 선은 건드리지 않는다. 가로 틀 번호의 #C8C8C8만 올린다. */
 .hpf-app :is(#t4,table.s3-gk) :is(.gk-cl,.gk-rn,.gk-corner){border-right-color:#858585;border-bottom-color:#858585}
 .hpf-app .gk-unit[role="group"]>button[data-unit]{border-color:#7B8696}
 .hpf-app .af-win>.af-grip{background:linear-gradient(135deg,transparent 50%,#5F7393 50% 58%,transparent 58% 70%,#5F7393 70% 78%,transparent 78%)}
 .hpf-app .af-win .fc4{border-color:#7B8696}
 .hpf-app .af-win .fc4-h{border-bottom-color:#7B8696}
 .hpf-app .af-win .fc4-sep{background:#7B8696}
 .hpf-app .af-win .fc4-sub{border-bottom-color:#7B8696}
 .hpf-app .af-win[data-af-mode="small"] .fc4-col:last-child{border-top-color:#7B8696}
 .hpf-app .af-win .fr4-v{border-color:#7B8696}
 .hpf-app .af-win .fr4-v.ro{border-color:#7B8696}
 .hpf-app .af-win .seg4[data-k="fsb.vat"]{border-color:#7B8696}
 .hpf-app .af-win .fl4 :is(th,td){border-color:#7B8696}
 .hpf-app .af-win .fl4 tbody tr.fl4-sum td{border-top-color:#5F7393}
 .hpf-app .af-win .fl4-btns .btn{border-color:#7B8696}
 .hpf-app .af-win .fl4-btns .btn.dl{border-color:#A12A1B}
 .hpf-app .af-win .fq-note{border-color:#B26A00}
 .hpf-app .af-win details.tip>div[role="tooltip"],.hpf-app :is(.eqd4,.atd4) details.tip>div[role="tooltip"]{border-color:#7B8696}
 .hpf-app .eqd4 .eqc,.hpf-app .atd4 .atd4-c{border-color:#7B8696}
 .hpf-app :is(.eqd4,.atd4) .gt{border-bottom-color:#7B8696}
 .hpf-app :is(.eqd4,.atd4) .i{border-color:#7B8696}
 .hpf-app :is(.eqd4,.atd4) .i:disabled{border-color:#7B8696;background:#F1F3F6;color:#5F6368}
 .hpf-app .eqd4 .eqbar{border-color:#7B8696}
 .hpf-app .eqd4 .eqbar>.v{border-color:#7B8696}
 .hpf-app .eqd4 .vtg{border-color:#7B8696}
 .hpf-app :is(.eqd4,.atd4) .dt :is(th,td){border-color:#7B8696}
 .hpf-app :is(.eqd4,.atd4) .dt th{border-color:#7B8696}
 .hpf-app :is(.eqd4,.atd4) .dt tr.tot>td{border-top-color:#5F7393}
 .hpf-app .eqd4 .eqref{border-color:#9A7B1E}
 .hpf-app .atd4 .sub3{border-bottom-color:#7B8696}
 .hpf-app .atd4 .dt tr.eqr>td{border-top-color:#5F7393}
 .hpf-app .atd4 .runrow>.ex{border-color:#7B8696}
 .hpf-app .atd4 .atd4-err{border-top-color:#A12A1B;border-right-color:#A12A1B;border-bottom-color:#A12A1B}
 .hpf-app .atd4 .h.e{border-color:#A12A1B}
 .hpf-app .atd4 details.tip.qw summary>span,.hpf-app .atd4 details.tip.qw>div[role="tooltip"]{border-color:#A66F00}
 .hpf-app dialog:is(.eqd,.atd)>.df{border-top-color:#7B8696}
 .hpf-app dialog:is(.eqd,.atd)>.df>.btn{border-color:#7B8696}
 /* C(5-1): 금융 창을 배경 표와 구분한다. 바깥 1px 고리는 box-shadow라 안쪽 치수가 변하지 않는다. */
 .hpf-app .af-win{border-color:#1F3864;box-shadow:0 0 0 1px #1F3864,0 12px 32px rgba(15,30,60,.42)}
 /* B1: 입력 칸 안쪽 여백을 계산 칸과 같게(td 여백 6px만 남긴다). 구분은 배경색·글자색이 한다. */
 .hpf-app :is(#t4,table.s3-gk) td[data-gk-tone="input"] :is(input.i,input.ci4,select.i){padding-inline:0}
 /* B2: 소계·합계·이익 행의 색이 열 색(필수·분양불·Equity)보다 이긴다. 일반 데이터 행·빈 줄은 열 색을 유지한다. */
 .hpf-app :is(#t4,table.s3-gk):not(.x4c) tbody tr:is(.gk-sub,.gk-total,.gk-profit)>td:is([data-gk-col="es"],[data-gk-col="sub"],[data-gk-col="eq"]):not(.gk-side-blank){--gk-cell-bg:var(--gk-row-bg)}
}
/* WO1 D-99 §2-1·§5-1: 입력 중 대주 빨간 점선 · 최소화 칩·경고 점·말풍선. 치수는 바꾸지 않고 문구는 JS가 넣는다. */
@media screen{
 /* §2-1 목록 행: 둘레 점선을 셀 배경 그라디언트로 그려 border-collapse 표의 행 높이·열 폭이 변하지 않는다. */
 .hpf-app .af-win .fl4 tbody tr.is-draft{--wo1-dh:repeating-linear-gradient(90deg,#C00000 0 6px,transparent 6px 10px);--wo1-dv:repeating-linear-gradient(180deg,#C00000 0 6px,transparent 6px 10px)}
 .hpf-app .af-win .fl4 tbody tr.is-draft>td{background-image:var(--wo1-dh),var(--wo1-dh);background-size:100% 2px,100% 2px;background-position:0 0,0 100%;background-repeat:no-repeat}
 .hpf-app .af-win .fl4 tbody tr.is-draft>td:first-child{background-image:var(--wo1-dh),var(--wo1-dh),var(--wo1-dv);background-size:100% 2px,100% 2px,2px 100%;background-position:0 0,0 100%,0 0}
 .hpf-app .af-win .fl4 tbody tr.is-draft>td:last-child{background-image:var(--wo1-dh),var(--wo1-dh),var(--wo1-dv);background-size:100% 2px,100% 2px,2px 100%;background-position:0 0,0 100%,100% 0}
 .hpf-app .af-win .fl4 tbody tr.is-draft>td:only-child{background-image:var(--wo1-dh),var(--wo1-dh),var(--wo1-dv),var(--wo1-dv);background-size:100% 2px,100% 2px,2px 100%,2px 100%;background-position:0 0,0 100%,0 0,100% 0}
 /* §2-1 상세 패널: 파란 실선·왼쪽 띠를 빨간 점선으로. */
 .hpf-app .af-win .fl4-detail.is-draft{border:2px dashed #C00000}
 /* §5-1 최소화 칩 */
 .hpf-app .af-chip{position:relative;box-sizing:border-box;display:inline-flex;flex:none;align-items:center;gap:6px;height:32px;min-height:32px;margin:0 0 4px 8px;padding:0 12px;border:1px solid #1F3864;border-radius:4px;background:#EEF1F5;color:#1F3864;box-shadow:none;font:700 13px/20px "Malgun Gothic","맑은 고딕",sans-serif;white-space:nowrap;cursor:pointer}
 .hpf-app .af-chip::before{content:"";flex:none;box-sizing:border-box;width:13px;height:11px;border:1.5px solid currentColor;border-top-width:3px;border-radius:1px}
 .hpf-app .af-chip:hover{background:#E3EAF5}
 .hpf-app .af-chip:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:2px}
 .hpf-app .af-chip[data-af-badge="true"]{border-color:#C00000}
 .hpf-app .af-chip-label{flex:none;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .hpf-app .af-chip.af-chip-floating{z-index:113;margin:0;background:#fff;box-shadow:0 4px 12px rgba(15,30,60,.3)}
 .hpf-app .af-badge{flex:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:16px;height:16px;border-radius:50%;background:#C00000;color:#fff;font:700 12px/1 "Malgun Gothic","맑은 고딕",sans-serif}
 .hpf-app .af-badge[hidden],.hpf-app .af-badge-tip[hidden]{display:none!important}
 .hpf-app .af-badge-tip{position:absolute;z-index:120;top:calc(100% + 8px);left:0;box-sizing:border-box;display:none;width:max-content;max-width:min(360px,calc(100vw - 24px));padding:8px 10px;border:1px solid #1F3864;border-radius:2px;background:#fff;color:#111;box-shadow:0 4px 12px rgba(15,30,60,.28);font:400 12px/1.5 "Malgun Gothic","맑은 고딕",sans-serif;text-align:left;white-space:normal;word-break:keep-all;overflow-wrap:anywhere;pointer-events:none}
 .hpf-app .af-badge-tip.is-open:not([hidden]){display:block}
 .hpf-app .af-badge-tip::before{content:"";position:absolute;top:-6px;left:18px;width:10px;height:10px;background:#fff;border-left:1px solid #1F3864;border-top:1px solid #1F3864;transform:rotate(45deg)}
 .hpf-app .af-chip-floating .af-badge-tip{top:auto;bottom:calc(100% + 8px);left:auto;right:0}
 .hpf-app .af-chip-floating .af-badge-tip::before{top:auto;bottom:-6px;left:auto;right:18px;border:0;border-right:1px solid #1F3864;border-bottom:1px solid #1F3864}
 /* 창 애니메이션 중에는 클릭을 막고, 최소화가 확정되면 레이아웃·스크롤에서 완전히 뺀다(펼친 크기의 빈 영역 없음). */
 .hpf-app .af-win[data-af-anim]{will-change:transform,opacity;pointer-events:none}
 .hpf-app .af-win[data-af-min="true"]{display:none!important}
}
@media(prefers-reduced-motion:reduce){.hpf-app .af-win[data-af-anim]{transition:none!important}}
@media(forced-colors:active){
 .hpf-app .af-win .fl4 tbody tr.is-draft>td{border-top-style:dashed;border-bottom-style:dashed;border-color:LinkText;background-image:none}
 .hpf-app .af-win .fl4 tbody tr.is-draft>td:first-child{border-left-style:dashed}
 .hpf-app .af-win .fl4 tbody tr.is-draft>td:last-child{border-right-style:dashed}
 .hpf-app .af-win .fl4-detail.is-draft{border-color:LinkText}
 .hpf-app .af-chip,.hpf-app .af-badge-tip{border-color:ButtonText;background:ButtonFace;color:ButtonText;box-shadow:none}
 .hpf-app .af-chip:hover,.hpf-app .af-chip:focus-visible{background:Highlight;color:HighlightText}
 .hpf-app .af-chip[data-af-badge="true"]{border-color:Highlight}
 .hpf-app .af-badge{background:Highlight;color:HighlightText;border:1px solid ButtonText}
 .hpf-app .af-badge-tip::before{background:ButtonFace;border-color:ButtonText}
}
@media print{.hpf-app :is(.af-chip,.af-badge-tip){display:none!important}}
/* WO1 D-99 3차: small 머리줄 폭 확보 · disabled select 캐럿 · CF 머리 높이 한 값 · 대비 잔여. 실측(Chromium 1440x900) 근거. */
@media screen{
 /* §1 small(336) 머리줄: 제목·단위가 줄임표 없이 들어가도록 여백만 줄인다(단추 크기·문구 불변). 필요 342.6 → 322.6px. */
 .hpf-app .af-win[data-af-mode="small"]>.af-bar{padding:4px 4px 4px 8px;gap:3px}
 .hpf-app .af-win[data-af-mode="small"]>.af-bar .af-unit{padding:1px 6px}
 .hpf-app .af-win[data-af-mode="small"]>.af-bar .af-btn:not(.af-btn-icon){padding:2px 3px}
 /* §2 disabled select: shorthand가 반복·크기·위치를 초기화하므로 캐럿 배치를 함께 명시한다. */
 .hpf-app .af-win .fr4-v select.i:disabled{background-color:#F1F3F6;background-repeat:no-repeat;background-position:right 4px center;background-size:12px 12px}
 /* §3 입력 CF 머리: 열 번호 줄(--cf-let-h) 아래에 첫 행(--cf-he-h)과 월 행(--cf-hm-h)이 틀고정으로 이어 붙는다. 세 줄 합 18+20+26 = 64px로 사업수지표 머리(18+23+23)와 같다(목록 10 · 13). 칩은 한 줄로 나란히(2개까지), 더 많으면 가리고 칸 title에 전부 적는다. */
.hpf-app :is(#t4,table.s3-gk).x4c{--cf-let-h:18px;--cf-he-h:20px;--cf-hm-h:26px}
.hpf-app :is(#t4,table.s3-gk).x4c thead tr.he th{height:var(--cf-he-h);min-height:var(--cf-he-h);top:var(--cf-let-h);padding-top:0;padding-bottom:0;vertical-align:middle;text-align:center}
.hpf-app :is(#t4,table.s3-gk).x4c thead tr.hm th{height:var(--cf-hm-h);top:calc(var(--cf-let-h) + var(--cf-he-h));padding-top:0;padding-bottom:0;line-height:12px;vertical-align:middle}
.hpf-app :is(#t4,table.s3-gk).x4c thead tr.hm th.mo b{line-height:13px}.hpf-app :is(#t4,table.s3-gk).x4c thead tr.hm th.mo small{display:block;font-size:10px;line-height:11px}
.hpf-app :is(#t4,table.s3-gk).x4c thead tr.he th.ev{white-space:nowrap;overflow:hidden}
.hpf-app :is(#t4,table.s3-gk).x4c thead th.ev>.evt4{display:inline-block;box-sizing:border-box;width:auto;min-width:0;margin:1px;padding:0 4px;text-align:center;white-space:nowrap;font-size:10px;line-height:16px;vertical-align:top}
/* 4단계 표 안 아이콘 크기(목록 12): ? 도움말 img와 오른쪽 표 머리의 톱니가 규칙 없이 원본 24px로 나왔다 → ? 15px, 톱니 14px(머리 안 톱니와 같게) */
.hpf-app :is(#t4,table.s3-gk) details.tip>summary>img{display:block;flex:none;box-sizing:border-box;width:15px;height:15px;min-width:15px;min-height:15px;max-width:15px;max-height:15px}
.hpf-app :is(#t4,table.s3-gk) th.gk-side-h button.gear>img{display:block;width:14px;height:14px}
 /* §4 대비 잔여 */
 .hpf-app span.df{color:#1F5FB8}
 .hpf-app .alert.warn .ai{background:#A25F00}
}
/* WO1 D-99 4차 §5-2: 준공사업비확보율 경고 이름 칸. 문구는 호스트의 data-tip을 그대로 보여 주며 CSS는 문구를 만들지 않는다. */
@media screen{
 .hpf-app .af-win .fr4-k.is-warn{position:relative;box-sizing:border-box;display:flex;align-items:center;justify-content:flex-end;min-height:22px;padding:0 2px;border-radius:2px;background:#C00000;color:#fff;font-weight:700;cursor:help}
 .hpf-app .af-win .fr4-k.is-warn:focus-visible{outline:2px solid #fff;outline-offset:-3px;box-shadow:0 0 0 2px #1F3864}
 .hpf-app .af-win .fr4-k.is-warn:is(:hover,:focus,:focus-visible)::after{content:attr(data-tip);position:absolute;z-index:120;top:calc(100% + 6px);left:0;box-sizing:border-box;width:max-content;max-width:min(300px,calc(100vw - 24px));padding:8px 10px;border:1px solid #1F3864;border-radius:2px;background:#fff;color:#111;box-shadow:0 4px 12px rgba(15,30,60,.28);font:400 12px/1.5 "Malgun Gothic","맑은 고딕",sans-serif;text-align:left;white-space:normal;word-break:keep-all;overflow-wrap:anywhere;pointer-events:none}
 .hpf-app .af-win .fr4-k.is-warn:is(:hover,:focus,:focus-visible)::before{content:"";position:absolute;z-index:121;top:calc(100% + 1px);left:14px;width:10px;height:10px;background:#fff;border-left:1px solid #1F3864;border-top:1px solid #1F3864;transform:rotate(45deg);pointer-events:none}
}
@media(forced-colors:active){
 .hpf-app .af-win .fr4-k.is-warn{background:Highlight;color:HighlightText}
 .hpf-app .af-win .fr4-k.is-warn:is(:hover,:focus,:focus-visible)::after{border-color:ButtonText;background:Canvas;color:CanvasText;box-shadow:none}
 .hpf-app .af-win .fr4-k.is-warn:is(:hover,:focus,:focus-visible)::before{background:Canvas;border-color:ButtonText}
}
/* WO1 D-99 5차: large의 조달요약(오른쪽 열) 확보율 말풍선은 오른쪽 정렬로 왼쪽으로 펼쳐 창 본문 오른쪽에서 잘리지 않게 한다. */
@media screen{
 .hpf-app .af-win[data-af-mode="large"] .fc4-2>.fc4-col:last-child .fr4-k.is-warn:is(:hover,:focus,:focus-visible)::after{left:auto;right:0}
 .hpf-app .af-win[data-af-mode="large"] .fc4-2>.fc4-col:last-child .fr4-k.is-warn:is(:hover,:focus,:focus-visible)::before{left:auto;right:14px}
}
/* WO1 R1 (D-104): 자금조달 설정 창 ? 아이콘·톱니 15px, 값 상자와 4px, ? 열 고정. 읽기 전용 점선 되돌림은 위 WO1 블록의 두 규칙을 직접 고쳤다. */
@media screen{
 .hpf-app .af-win div.fr4{grid-template-columns:104px minmax(0,1fr) 18px}
 .hpf-app .af-win .fr4-q{width:18px;min-width:18px;justify-content:flex-end}
 .hpf-app .af-win details.tip>summary>img,.hpf-app .af-win .fq-gear{display:block;flex:none;box-sizing:border-box;width:15px;height:15px;min-width:15px;min-height:15px;max-width:15px;max-height:15px}
 .hpf-app .af-win .fc4-2{padding:4px 2px}
}
/* F25 D-116: 주 단추 button.gk-action 외형과 계산 전 표지 .gk-stale. 위치(position/left/top/display)는 JS 인라인이 정하고 CSS는 덮지 않는다. 화면 글자는 만들지 않는다. */
@keyframes gk-action-spin{to{transform:rotate(360deg)}}
@keyframes gk-action-flash{0%{box-shadow:0 0 0 0 rgba(31,56,100,.6),0 4px 12px rgba(15,30,60,.35)}100%{box-shadow:0 0 0 14px rgba(31,56,100,0),0 4px 12px rgba(15,30,60,.35)}}
@media screen{
 .hpf-app button.gk-action{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;min-width:160px;margin:0;padding:0 16px;border:1px solid #1F3864;border-radius:4px;background:#1F3864;color:#fff;box-shadow:0 4px 12px rgba(15,30,60,.35);font:700 13px/20px "Malgun Gothic","맑은 고딕",sans-serif;white-space:nowrap;cursor:pointer;z-index:111}
 .hpf-app button.gk-action:not(.is-disabled):not(.is-busy):not([aria-disabled="true"]):hover{background:#2B4A7E}
 .hpf-app button.gk-action .gk-action-label{white-space:nowrap}
 .hpf-app button.gk-action .gk-action-spinner{flex:none;box-sizing:border-box;width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:gk-action-spin .8s linear infinite}
 .hpf-app button.gk-action .gk-action-spinner[hidden]{display:none}
 .hpf-app button.gk-action:focus-visible{outline:2px solid #fff;outline-offset:-4px;box-shadow:0 0 0 2px #1F3864,0 4px 12px rgba(15,30,60,.35)}
 .hpf-app button.gk-action:is(.is-disabled,[aria-disabled="true"],[data-gk-state="disabled"]){border-color:#7B8696;background:#E4E8EE;color:#4F565E;box-shadow:none;cursor:not-allowed}
 .hpf-app button.gk-action:is(.is-disabled,[aria-disabled="true"],[data-gk-state="disabled"]):focus-visible{outline-color:#1F3864;box-shadow:none}
 .hpf-app button.gk-action:is(.is-busy,[data-gk-state="busy"]){border-color:#1F3864;background:#1F3864;color:#fff;box-shadow:0 4px 12px rgba(15,30,60,.35);cursor:progress}
 .hpf-app button.gk-action.is-flash{animation:gk-action-flash .9s ease-out 1}
 /* 계산 전 표지: 글자색 #555B63과 기울임만 바꾼다. 굵기·크기·치수는 그대로이며 기울임은 합성 사선이라 글자 폭이 변하지 않는다(추정, 실측 전). */
 .hpf-app :is(#t4,table.s3-gk) td.gk-stale:not(.gk-editing){color:#555B63!important;font-style:italic}
 .hpf-app :is(#t4,table.s3-gk) td.gk-stale:not(.gk-editing) :is(span,small,i,em,b,strong,.fx,.tx,.lk){color:inherit!important;font-style:italic!important}
 .hpf-app .af-win .fr4.gk-stale .fr4-v:not(.neg){color:#555B63}
 .hpf-app .af-win .fr4.gk-stale .fr4-v{font-style:italic}
 .hpf-app .g4w.cf4.gk-stale :is(#t4,table.s3-gk) tbody{--gk-stale-fg:#555B63;--gk-stale-fs:italic}
 .hpf-app .g4w.cf4.gk-stale :is(#t4,table.s3-gk) tbody :is(td.fz,td.b4-src,td.fx1,td.gk-editing){--gk-stale-fg:#111;--gk-stale-fs:normal}
}
@media(prefers-reduced-motion:reduce){
 .hpf-app button.gk-action.is-flash{animation:none}
 .hpf-app button.gk-action .gk-action-spinner{animation:none;border-color:#fff;border-top-color:transparent}
}
@media(forced-colors:active){
 .hpf-app button.gk-action{border-color:HighlightText;background:Highlight;color:HighlightText;box-shadow:none}
 .hpf-app button.gk-action:is(.is-disabled,[aria-disabled="true"],[data-gk-state="disabled"]){border-color:GrayText;background:ButtonFace;color:GrayText}
 .hpf-app button.gk-action:is(.is-busy,[data-gk-state="busy"]){border-color:HighlightText;background:Highlight;color:HighlightText}
 .hpf-app button.gk-action .gk-action-spinner{border-color:currentColor;border-top-color:transparent}
 .hpf-app :is(#t4,table.s3-gk) td.gk-stale:not(.gk-editing){color:CanvasText!important}
}
@media print{.hpf-app button.gk-action{display:none!important}}
/* F26: 자동 분배 결과 미리보기 표(table.apt4.rs)와 요약 상자. 선택자는 모두 table.apt4.rs.dt 아래로 한정하고 tr.sub/tr.tot/.tg를 전역으로 쓰지 않는다. kid 줄은 display를 건드리지 않아 hidden 속성이 그대로 접는다. */
@media screen{
 .hpf-app .atd4 table.apt4.rs.dt{border-collapse:collapse;border:1px solid #7B8696}
 .hpf-app .atd4 table.apt4.rs.dt tbody td{vertical-align:top;color:#1F2D3D}
 .hpf-app .atd4 table.apt4.rs.dt tbody td.lb{text-align:left;padding-left:10px!important}
 .hpf-app .atd4 table.apt4.rs.dt .tg{margin-left:3px;padding:0 2px;border:0;background:none;color:#4A5C78;font-size:10px;line-height:1;cursor:pointer}
 .hpf-app .atd4 table.apt4.rs.dt .l2{margin-top:2px;color:#4A5C78;font-size:11px;font-weight:400}
 .hpf-app .atd4 table.apt4.rs.dt tr.kid>td{color:#4A5A70;font-size:12px}
 .hpf-app .atd4 table.apt4.rs.dt tr.kid .ix{display:inline-block;padding-left:16px}
 .hpf-app .atd4 table.apt4.rs.dt tr.lo.grp>td{font-weight:400}
 .hpf-app .atd4 table.apt4.rs.dt tbody tr.up>td{background:#fff}
 .hpf-app .atd4 table.apt4.rs.dt tbody tr.up.z>td{background:#F1F6FC}
 .hpf-app .atd4 table.apt4.rs.dt tbody tr.up>td.lb{box-shadow:inset 3px 0 0 #4F73A8}
 .hpf-app .atd4 table.apt4.rs.dt tbody tr.up.sub>td{background:#E8F0F9;font-weight:700;border-top-color:#7B8696}
 .hpf-app .atd4 table.apt4.rs.dt tbody tr.up.tot>td{background:#D6E4F4;color:#1F3864;font-weight:700;border-top-color:#7B8696;border-bottom-color:#5F7393}
 .hpf-app .atd4 table.apt4.rs.dt tbody tr.lo>td{background:#fff}
 .hpf-app .atd4 table.apt4.rs.dt tbody tr.lo.z>td{background:#FAF6EC}
 .hpf-app .atd4 table.apt4.rs.dt tbody tr.lo>td.lb{box-shadow:inset 3px 0 0 #8C6F2E}
 .hpf-app .atd4 table.apt4.rs.dt tbody tr.lo.tot>td{background:#F3EAD6;color:#5A4520;font-weight:700;border-top-color:#7B8696}
 .hpf-app .atd4 table.apt4.rs.dt tbody tr.up.tot+tr>td{border-top-color:#5F7393}
 .hpf-app .atd4 table.apt4.rs.dt tbody tr.key>td{background:#F4F6F9;color:#1F3864;font-weight:700;border-top:2px solid #5F7393}
 .hpf-app .atd4 table.apt4.rs.dt tbody td.dn{color:#1F5FBF!important}
 .hpf-app .atd4 table.apt4.rs.dt tbody td.ok{color:#176B2B!important}
 .hpf-app .atd4 table.apt4.rs.dt tbody td.bad{color:#C00000!important}
 .hpf-app .atd4 .sumbox{margin-top:8px;padding:7px 10px;border:1px solid #BFCBDA;border-left:4px solid #1E7B34;background:#F4F8F4;color:#1F2D3D;font-size:12px;line-height:1.6}
 .hpf-app .atd4 .sumbox b{color:#176B2B}
 .hpf-app .atd4 .sumbox.bad{border-left-color:#C00000;background:#FFF1F0}
 .hpf-app .atd4 .sumbox.bad b{color:#C00000}
 .hpf-app .atd4 .sumbox.lim{border-left-color:var(--amtx);background:var(--ambg)}
 .hpf-app .atd4 .sumbox.lim b{color:var(--amtx)}
 .hpf-app .atd4 :is(span.exh,span.s3-exh){display:inline-block;margin-left:4px;padding:0 6px;border:1px solid currentColor;border-radius:999px;background:var(--ambg);color:var(--amtx);font-size:11px;font-weight:600;line-height:1.6;white-space:nowrap}
 .hpf-app .atd4 :is(span.exh.ovr,span.s3-exh.s3-ovr){background:var(--errbg);color:var(--errtx)}
}
@media(forced-colors:active){
 .hpf-app .atd4 table.apt4.rs.dt tbody :is(td.dn,td.ok,td.bad){color:CanvasText!important}
 .hpf-app .atd4 .sumbox{border-color:ButtonText;border-left-color:Highlight;background:Canvas;color:CanvasText}
 .hpf-app .atd4 .sumbox.bad{border-left-color:LinkText}
 .hpf-app .atd4 .sumbox b,.hpf-app .atd4 .sumbox.bad b,.hpf-app .atd4 .sumbox.lim b{color:CanvasText}
 .hpf-app .atd4 .sumbox.lim{border-left-color:Mark}
 .hpf-app .atd4 :is(span.exh,span.s3-exh,span.exh.ovr,span.s3-exh.s3-ovr){background:Canvas;color:CanvasText}
}
/* F27 3단계 탭 내용(탭 줄, 하단 단추, 확인 창은 제외). 모든 선택자는 .hpf-app .s3-root 아래이고 display는 hidden 속성에 맡긴다. content 규칙 없음. */
@media screen{
 .hpf-app .s3-root .s3-ip{display:flex;align-items:center;justify-content:flex-end;gap:4px;box-sizing:border-box;min-width:0;height:26px;padding:0 8px;border:1px solid #7B8696;background:#fff;color:#111;font-variant-numeric:tabular-nums;white-space:nowrap}
 .hpf-app .s3-root .s3-ip>input{flex:1 1 auto;box-sizing:border-box;width:100%;min-width:0;height:100%;min-height:0;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:inherit;font:inherit;font-size:13px;text-align:right}
 .hpf-app .s3-root .s3-ip>input:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px}
 .hpf-app .s3-root .s3-ip>i{flex:none;color:#5F6368;font-size:12px;font-style:normal}
 .hpf-app .s3-root .s3-ip.is-req{border:2px solid #D93025;background:#FFF5F4}
 .hpf-app .s3-root .s3-ip.is-calc>input{color:#5F6368;font-weight:400}
 .hpf-app .s3-root .s3-ip.is-lkd{background:#F1F3F6;color:#4F565E;cursor:pointer}
 .hpf-app .s3-root .s3-ip.is-lkd>input{cursor:pointer}
 .hpf-app .s3-root .s3-ip.is-ro{background:#EEF0F3;color:#222;cursor:default}
 .hpf-app .s3-root .s3-ip.is-sel{justify-content:flex-start}
 .hpf-app .s3-root .s3-tab-note{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:0 0 8px;padding:0 4px;color:#44546A;font-size:12px}
 .hpf-app .s3-root .s3-mu{color:#5F6368;font-size:12px}
 .hpf-app .s3-root .s3-note{box-sizing:border-box;max-width:min(100%,720px);margin:12px 0 0;color:#44546A;font-size:12px;line-height:1.5;text-align:left;white-space:normal;overflow-wrap:anywhere}
 .hpf-app .s3-root .s3-sg{display:inline-flex;box-sizing:border-box;border:1px solid #7B8696;border-radius:3px;overflow:hidden;white-space:nowrap}
 .hpf-app .s3-root .s3-sg>button{min-height:0;margin:0;padding:4px 11px;border:0;border-left:1px solid #7B8696;border-radius:0;background:#fff;color:#44546A;font:inherit;font-size:12px;cursor:pointer}
 .hpf-app .s3-root .s3-sg>button:first-child{border-left:0}
 .hpf-app .s3-root .s3-sg>button[aria-pressed="true"]{background:#1F3864;color:#fff;font-weight:700}
 .hpf-app .s3-root .s3-sg>button:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px}
 .hpf-app .s3-root select.i{box-sizing:border-box;width:auto;min-height:26px;height:26px;padding:0 6px;border:1px solid #7B8696;border-radius:2px;background:#fff;color:#111;font-size:12px}
 .hpf-app .s3-root details.tip>summary{width:15px;height:15px;min-height:0;padding:0}
 .hpf-app .s3-root details.tip>summary>img{display:block;flex:none;box-sizing:border-box;width:15px;height:15px;min-width:15px;min-height:15px;max-width:15px;max-height:15px}
 .hpf-app .s3-root .s3-pbar{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:12px}
 .hpf-app .s3-root .s3-cols{display:grid;align-items:start;gap:14px}
 .hpf-app .s3-root .s3-cols.is-c2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
 .hpf-app .s3-root .s3-col{display:flex;flex-direction:column;gap:12px;min-width:0}
 .hpf-app .s3-root .s3-card{border:1px solid #7B8696;background:#fff}
 .hpf-app .s3-root .s3-gt{display:flex;align-items:center;gap:6px;min-height:36px;padding:0 12px 0 14px;border-bottom:1px solid #7B8696;background:#F4F6F9;box-shadow:inset 4px 0 0 #2F5597;color:#1F3864;font-size:14px;font-weight:700}
 .hpf-app .s3-root .s3-cb{padding:6px 12px 8px}
 .hpf-app .s3-root .s3-rw{display:grid;grid-template-columns:124px minmax(0,1fr) 84px 20px;align-items:center;gap:8px;min-height:36px;padding:3px 0;border-top:1px dotted #7B8696}
 .hpf-app .s3-root .s3-rw:first-child{border-top:0}
 .hpf-app .s3-root .s3-lb{color:#333;font-size:13px;font-weight:700;white-space:nowrap}
 .hpf-app .s3-root .s3-rw.is-sub>.s3-lb{padding-left:16px;font-weight:400}
 .hpf-app .s3-root .s3-fv{display:grid;grid-template-columns:minmax(0,1fr) 104px 116px;align-items:center;gap:6px;min-width:0}
 .hpf-app .s3-root .s3-rw .s3-c{display:flex;align-items:center;min-width:0}
 .hpf-app .s3-root .s3-rw .s3-c.is-base{overflow:hidden;color:#44546A;font-size:12px;text-overflow:ellipsis;white-space:nowrap}
 .hpf-app .s3-root .s3-rw .s3-c>.s3-ip{width:100%}
 .hpf-app .s3-root .s3-bgc{text-align:right}
 .hpf-app .s3-root .s3-qc{display:flex;justify-content:center}
 .hpf-app .s3-root .s3-tx{color:#44546A;font-size:12px}
 .hpf-app .s3-root .s3-rw.is-head{min-height:26px;padding:0 6px;border-top:0;background:#F4F6F9;color:#44546A;font-size:12px;font-weight:700}
 .hpf-app .s3-root .s3-rw.is-head .s3-c:is(.is-unit,.is-amt){justify-content:flex-end}
 .hpf-app .s3-root .s3-rw.is-ctl>.s3-fv{display:flex;align-items:center;gap:8px}
 .hpf-app .s3-root .s3-rw .s3-c.is-ctl{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
 .hpf-app .s3-root .s3-rw:is(.is-note,.is-help){display:block;min-height:0;padding:4px 0;border-top:0}
 .hpf-app .s3-root .s3-chk{display:inline-flex;align-items:center;gap:6px;color:#111;font-size:12.5px;white-space:nowrap}
 .hpf-app .s3-root .s3-chk>input[type="checkbox"]{width:16px;height:16px;margin:0;accent-color:#1F3864}
 .hpf-app .s3-root .s3-bdg{display:inline-block;padding:2px 8px;border-radius:3px;font-size:11.5px;line-height:1.5;white-space:nowrap}
 .hpf-app .s3-root .s3-bdg.is-u{background:#E3F0E3;color:#1E6B2E}
 .hpf-app .s3-root .s3-bdg.is-l{background:#E8E6F7;color:#4A3F9C}
 .hpf-app .s3-root .s3-bdg.is-a{background:#FDEFD2;color:#8A5A00}
 .hpf-app .s3-root .s3-bdg.is-r{background:#D9EAF7;color:#1B5E9A}
 .hpf-app .s3-root .s3-bdg.is-req{background:#FDE3E1;color:#B3261E;font-weight:700}
 .hpf-app .s3-root .s3-fund{display:flex;align-items:flex-start;gap:16px}
 .hpf-app .s3-root .s3-m3l{flex:0 1 900px;min-width:0}
 .hpf-app .s3-root .s3-m3r{flex:1 1 480px;min-width:480px;max-width:600px}
}
@media screen and (max-width:1279px){
 .hpf-app .s3-root .s3-cols.is-c2{grid-template-columns:minmax(0,1fr)}
 .hpf-app .s3-root .s3-fund{flex-direction:column}
 .hpf-app .s3-root .s3-m3l{flex:none;width:100%}
 .hpf-app .s3-root .s3-m3r{flex:none;width:100%;min-width:0;max-width:none}
}
@media(forced-colors:active){
 .hpf-app .s3-root .s3-ip{border-color:ButtonText;background:Canvas;color:CanvasText}
 .hpf-app .s3-root .s3-ip.is-req{border-color:Highlight}
 .hpf-app .s3-root .s3-ip:is(.is-lkd,.is-ro){color:GrayText}
 .hpf-app .s3-root .s3-sg{border-color:ButtonText}
 .hpf-app .s3-root .s3-sg>button{border-color:ButtonText;background:ButtonFace;color:ButtonText}
 .hpf-app .s3-root .s3-sg>button[aria-pressed="true"]{background:Highlight;color:HighlightText}
 .hpf-app .s3-root .s3-card{border-color:ButtonText}
 .hpf-app .s3-root .s3-gt{border-color:ButtonText;background:Canvas;color:CanvasText}
 .hpf-app .s3-root .s3-bdg{border:1px solid ButtonText;background:Canvas;color:CanvasText}
}
/* F27 입력 칸 노랑: 4단계 범례 입력 칸과 같은 #FFF7D6. 필수 빈 칸(.is-req)은 빨강 규칙이, 계산값(.is-calc)은 흰 바탕이 우선한다. */
@media screen{
 .hpf-app .s3-root .s3-ip.is-in:not(.is-req):not(.is-calc){background:#FFF7D6}
 .hpf-app .s3-root .s3-ip.is-in>select.i{width:100%;min-height:0;height:100%;border:0;background:transparent;color:inherit}
}
@media(forced-colors:active){
 .hpf-app .s3-root .s3-ip.is-in:not(.is-req):not(.is-calc){background:Field;color:FieldText}
}
@media print{
 .hpf-app .s3-root .s3-ip.is-in{background:#fff}
}
/* T2 D-212 3단계 전수 점검(2026-10-26): 단가/요율 칸 폭(숫자와 단위가 잘리지 않게) · 수입 표 안쪽 카드 · 타입 열 정렬. */
@media screen{
 .hpf-app .s3-root .s3-fv{grid-template-columns:minmax(0,1fr) 128px 120px}
 .hpf-app .s3-root .s3-rw .s3-c.is-base>.s3-ip{max-width:132px}
 .hpf-app .s3-root .s3-gkw{box-sizing:border-box;max-width:1184px;max-height:400px;padding:0 10px 10px;border:0;background:#fff}   /* 1184 = 열 폭 합 1162(step3-income.js WD) + 안쪽 여백 22. 카드(.s3-gkc) 전체 높이 약 440 = 제목 줄 37 + 이 상자 400 + 테두리 2(D-215). 이 상자가 세로 스크롤 상자다 */
 .hpf-app .s3-root .s3-gkc{box-sizing:border-box;max-width:1184px}
 .hpf-app :is(#t4,table.s3-gk) tbody tr.s3-type td.s3-c-nm{text-align:center}
 .hpf-app :is(#t4,table.s3-gk) tbody tr:is(.s3-sub,.s3-bal) td.s3-c-nm{text-align:left;white-space:nowrap}
}
/* F28 CSS: 창 제목줄 단추, 제자리 최소화 띠, 경고 배지, 4단계 도구줄, 커서, 채우기 핸들, 선택 테두리. content 규칙 없음. */
@media screen{
 .hpf-app .af-win[data-af-id]>.af-bar>button.af-btn[data-af]{box-sizing:border-box;display:inline-flex;flex:none;align-items:center;justify-content:center;width:24px;min-width:24px;height:24px;min-height:24px;margin:0;padding:0;border:1px solid #1F3864;border-radius:3px;background:#fff;color:#1F3864;font:700 16px/1 "Malgun Gothic","맑은 고딕",sans-serif;white-space:nowrap;cursor:pointer}
 .hpf-app .af-win[data-af-id]>.af-bar>button.af-btn[data-af]:hover{background:#E3EAF5}
 .hpf-app .af-win[data-af-id]>.af-bar>button.af-btn[data-af][hidden]{display:none!important}
 .hpf-app .af-win>.af-bar .af-title{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .hpf-app .af-win>.af-bar .af-unit{margin-left:4px;margin-right:auto}
 .hpf-app .af-win[data-af-barmin="true"]{background:#fff;border-color:#C00000;overflow:hidden}
 .hpf-app .af-win[data-af-barmin="true"]>.af-bar .af-unit{display:none}
 .hpf-app .af-win[data-af-barmin="true"]>.af-bar .af-title{margin-right:auto;white-space:nowrap}
 .hpf-app .af-win[data-af-barmin="true"]>.af-bar{align-items:center;flex-wrap:nowrap;height:100%;min-height:0;padding:0 6px 0 10px}
 .hpf-app .af-win[data-af-barmin="true"]>.af-grip{display:none}
 .hpf-app .af-badge{overflow:hidden;border:1px solid #fff;line-height:1;text-align:center}
 .hpf-app .af-badge img,.hpf-app .af-badge svg{display:none}
 .hpf-app .af-badge-tip{left:auto;right:0}
 .hpf-app .af-badge-tip::before{left:auto;right:18px}
 .hpf-app .gk-unit[role="group"]>button[data-unit]{box-sizing:border-box;flex:none;width:60px;min-width:60px;height:30px;min-height:30px;margin:0;padding:0 4px;border:0;border-left:1px solid var(--hpf-accent);border-radius:0;background:#fff;color:var(--hpf-accent);font:700 13px/20px "Malgun Gothic","맑은 고딕",sans-serif;text-align:center}
 .hpf-app button.gk-help[data-gk-cmd="help"]{height:32px;min-height:32px;padding:0 14px;font-size:13px;line-height:20px}
 .hpf-app button[data-gk-cmd="wide"]{height:32px;min-height:32px;border-color:#1F3864;background:#1F3864;color:#fff;font-weight:700}
 .hpf-app button[data-gk-cmd="wide"][aria-pressed="true"]{box-shadow:inset 0 0 0 1px #fff}
 .hpf-app :is(#t4,table.s3-gk) thead th button.gear{width:18px;height:18px;min-width:0;min-height:0;padding:1px;border:0;border-radius:3px;background:transparent;box-shadow:none}
 .hpf-app :is(#t4,table.s3-gk) thead th button.gear>img{display:block;width:14px;height:14px;filter:brightness(0) invert(1)}
 .hpf-app :is(#t4,table.s3-gk) thead th button.gear:is(:hover,:focus-visible){background:rgba(255,255,255,.18);outline:1px solid #fff}
 .hpf-app table.gk-grid td.gk-cell{cursor:cell}
 .hpf-app :is(#t4,table.s3-gk).gk-grid td.gk-cell{cursor:cell}
 .hpf-app table.gk-grid :is(th.gk-cl,th.gk-corner,th.gk-rn){cursor:default}
 .hpf-app .gk-fill-handle{position:fixed;box-sizing:border-box;width:7px;height:7px;border:1px solid #fff;background:#1F3864;z-index:30;cursor:crosshair;pointer-events:auto}
 .hpf-app table.gk-grid td.gk-fill-preview{outline:1px dashed #1F3864;outline-offset:0}
 .hpf-app :is(#t4,table.s3-gk) :is(td,th):is(.gk-active,.gk-editing,.gk-range){--hpf-accent:#111}
 .hpf-app :is(#t4,table.s3-gk) .gk-range-top{--gk-et:2px}
 .hpf-app :is(#t4,table.s3-gk) .gk-range-right{--gk-er:-2px}
 .hpf-app :is(#t4,table.s3-gk) .gk-range-bottom{--gk-eb:-2px}
 .hpf-app :is(#t4,table.s3-gk) .gk-range-left{--gk-el:2px}
}
@media(forced-colors:active){
 .hpf-app .af-win>.af-bar>button.af-btn[data-af]{border-color:ButtonText;background:ButtonFace;color:ButtonText}
 .hpf-app .af-win[data-af-barmin="true"]{background:Canvas;border-color:ButtonText}
 .hpf-app .af-badge{border-color:ButtonText}
 .hpf-app :is(#t4,table.s3-gk) thead th button.gear{background:ButtonFace;border:1px solid ButtonText}
 .hpf-app :is(#t4,table.s3-gk) thead th button.gear>img{filter:none}
 .hpf-app .gk-fill-handle{border-color:Canvas;background:Highlight}
 .hpf-app table.gk-grid td.gk-fill-preview{outline-color:Highlight}
 .hpf-app :is(#t4,table.s3-gk) :is(td,th):is(.gk-active,.gk-editing,.gk-range){--hpf-accent:Highlight}
}
@media print{
 .hpf-app .gk-fill-handle{display:none!important}
 .hpf-app table.gk-grid td.gk-fill-preview{outline:none}
}
/* 조달 결과 미리보기 폭(설문 팝업 5의 조달 표 옆). content 규칙 없음. */
@media screen{
 .hpf-app .s3-root .s3-m3r table.rs{width:100%;min-width:0;table-layout:fixed}
 .hpf-app .s3-root .s3-m3r table.rs :is(th.l,td.lb){overflow-wrap:anywhere;white-space:normal}
}
/* F30 D-158 D-159: 도구줄 단추 11개는 F28 이전 모양(위 규칙 삭제), 주 단추와 자동 채우기만 범례 왼쪽으로 붙여 옆 단추와 같은 높이, 모서리, 글꼴로 맞춘다. 단위 토글은 도움말과 같은 마감. */
@media screen{
 .hpf-app .gk-tools[role="toolbar"] .gk-acthost{display:flex;align-self:stretch;flex:none;margin-left:auto}
 .hpf-app .gk-tools[role="toolbar"] .gk-acthost>button.gk-action{box-sizing:border-box;align-self:stretch;height:auto;min-height:0;min-width:0;margin:0 0 0 4px;padding:5px 10px;gap:6px;border:1px solid #C9D1DC;border-radius:3px;background:transparent;box-shadow:none;color:#5F6368;font:inherit;font-weight:400;cursor:not-allowed}
 .hpf-app .gk-tools[role="toolbar"] .gk-acthost>button.gk-action:is([data-gk-state="enabled"],[data-gk-state="busy"],.is-busy){border-color:#1F3864;background:transparent;color:#1F3864;font-weight:700;cursor:pointer}
 .hpf-app .gk-tools[role="toolbar"] .gk-acthost>button.gk-action[data-gk-state="enabled"]:not(.is-disabled):hover{background:#E3EAF5}
 .hpf-app .gk-tools[role="toolbar"] .gk-acthost>button.gk-action:is(.is-busy,[data-gk-state="busy"]){cursor:progress}
 .hpf-app .gk-tools[role="toolbar"] .gk-acthost>button.gk-action:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px;box-shadow:none}
 .hpf-app .gk-tools[role="toolbar"] .gk-acthost>button.gk-action .gk-action-spinner{width:12px;height:12px;border:2px solid currentColor;border-top-color:transparent}
 .hpf-app .gk-tools[role="toolbar"] .am4{display:flex;align-self:stretch;flex:none;margin-left:4px}
 .hpf-app .gk-tools[role="toolbar"] .am4>#af4{box-sizing:border-box;height:auto;min-height:0;margin:0;padding:5px 10px;border:1px solid #C9D1DC;border-radius:3px;background:transparent;box-shadow:none;color:#1F3864;font:inherit;font-weight:400}
 .hpf-app .gk-tools[role="toolbar"] .am4>#af4:hover{background:#E3EAF5}
 .hpf-app .gk-tools[role="toolbar"] .am4>#af4:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px}
 .hpf-app .gk-tools[role="toolbar"] .am4 .mn4{top:calc(100% + 4px)}
 .hpf-app .gk-tools[role="toolbar"] .gk-legend{flex:none;margin-left:0}
 .hpf-app .gk-unit[role="group"]{box-sizing:border-box;height:32px;border:1px solid var(--hpf-accent);border-radius:4px;overflow:hidden;background:#fff}
 .hpf-app .gk-unit[role="group"]>button[data-unit]:first-child{border-left:0}
 .hpf-app .gk-unit[role="group"]>button[data-unit][aria-pressed="true"]{border-color:var(--hpf-accent);background:var(--hpf-accent);color:#fff}
 .hpf-app .gk-unit-label{display:inline-flex;align-items:center;height:32px;margin:0 6px 6px 0;line-height:1}
}
@media screen and (max-width:1500px){
 .hpf-app .gk-tools[role="toolbar"] .gk-legend>:is(.gk-lg-in,.gk-lg-ro){min-width:0;padding:4px 6px}
 .hpf-app .gk-tools[role="toolbar"] .gk-legend>:is(.gk-lg-in,.gk-lg-ro)>.gk-lg-sw{width:48px}
 .hpf-app .gk-tools[role="toolbar"] .gk-acthost>button.gk-action,.hpf-app .gk-tools[role="toolbar"] .am4>#af4{padding:5px 8px;font-size:11px}
}
@media(forced-colors:active){
 .hpf-app .gk-tools[role="toolbar"] .gk-acthost>button.gk-action,.hpf-app .gk-tools[role="toolbar"] .am4>#af4{border-color:ButtonText;background:ButtonFace;color:ButtonText}
 .hpf-app .gk-tools[role="toolbar"] .gk-acthost>button.gk-action[data-gk-state="disabled"]{color:GrayText;border-color:GrayText}
}
/* F31: 3단계 수입 표는 4단계 표 규칙을 :is(#t4,table.s3-gk)로 함께 받는다. 아래는 3단계 줄 종류와 입력 칸 표시, 단위와 기준 토글 마감. */
@media screen{
 .hpf-app .s3-root .s3-gkw{overflow:auto}
 .hpf-app table.s3-gk{min-width:0;table-layout:fixed}
 .hpf-app table.s3-gk tr.is-sub{--gk-bt:1px;--gk-bb:1px;--gk-top-style:solid;--gk-top-color:#000;--gk-row-bg:var(--gk-sub);--gk-row-weight:700}
 .hpf-app table.s3-gk tr.is-tot{--gk-bt:1px;--gk-bb:2px;--gk-top-style:solid;--gk-top-color:#000;--gk-row-bg:var(--gk-total);--gk-row-weight:700}
 .hpf-app table.s3-gk tr:is(.is-sub,.is-tot)+tr{--gk-bt:0px}
 .hpf-app table.s3-gk tbody>tr:first-child{--gk-bt:0px}
 .hpf-app table.s3-gk tbody td:is(.s3-c-grp,.s3-c-nm,.s3-c-vat){text-align:center}
 .hpf-app table.s3-gk tbody td:is(.s3-c-ex,.s3-c-sup,.s3-c-con,.s3-c-n,.s3-c-py,.s3-c-pu,.s3-c-sum,.s3-c-bal){text-align:right}
 .hpf-app table.s3-gk tbody td.s3-gk-in{--gk-cell-bg:var(--gk-input);cursor:text}
 .hpf-app table.s3-gk tbody td.s3-gk-in.is-calc{color:#5F6368}
 .hpf-app table.s3-gk tbody td.s3-gk-in.is-req{--gk-cell-bg:#FFF5F4;box-shadow:inset 0 0 0 2px #D93025}
 .hpf-app table.s3-gk tbody td.is-donation{--gk-cell-bg:#EEE;cursor:default}
 .hpf-app .s3-root .s3-tab-note{display:flex;align-items:center;justify-content:flex-end;gap:8px}
 .hpf-app .s3-root .s3-tab-note select.i.us{box-sizing:border-box;width:76px;height:32px;min-height:32px;padding:0 6px;border:1px solid var(--hpf-accent);border-radius:4px;background:#fff;color:var(--hpf-accent);font:700 13px/20px "Malgun Gothic","맑은 고딕",sans-serif}
 .hpf-app .s3-root :is(.s3-tab-note,.s3-pbar) .s3-sg{box-sizing:border-box;height:32px;border:1px solid var(--hpf-accent);border-radius:4px;overflow:hidden;background:#fff}
 .hpf-app .s3-root :is(.s3-tab-note,.s3-pbar) .s3-sg>button{box-sizing:border-box;flex:none;width:76px;height:30px;min-height:30px;margin:0;padding:0 4px;border:0;border-left:1px solid var(--hpf-accent);border-radius:0;background:#fff;color:var(--hpf-accent);font:700 13px/20px "Malgun Gothic","맑은 고딕",sans-serif;text-align:center}
 .hpf-app .s3-root :is(.s3-tab-note,.s3-pbar) .s3-sg>button:first-child{border-left:0}
 .hpf-app .s3-root :is(.s3-tab-note,.s3-pbar) .s3-sg>button[aria-pressed="true"]{background:var(--hpf-accent);color:#fff}
}
@media(forced-colors:active){
 .hpf-app table.s3-gk tbody td.s3-gk-in.is-req{box-shadow:inset 0 0 0 2px Highlight}
 .hpf-app .s3-root :is(.s3-tab-note,.s3-pbar) .s3-sg>button[aria-pressed="true"]{background:Highlight;color:HighlightText}
}
/* F31: 3단계 단위 토글은 단추 속성이 data-unit-price라서 4단계 data-unit 규칙이 걸리지 않는다. 같은 값(묶음 32px, 단추 60px, 700 13px)으로 따로 둔다. */
@media screen{
 .hpf-app .s3-root .s3-tab-note .gk-unit-label{display:inline-flex;align-items:center;height:32px;margin:0;color:#1F3864;font:700 13px/20px "Malgun Gothic","맑은 고딕",sans-serif}
 .hpf-app .s3-root .s3-tab-note .gk-unit[role="group"]{display:inline-flex;flex:none;box-sizing:border-box;height:32px;margin:0;padding:0;border:1px solid var(--hpf-accent);border-radius:4px;overflow:hidden;background:#fff}
 .hpf-app .s3-root .s3-tab-note .gk-unit[role="group"]>button[data-unit-price]{box-sizing:border-box;flex:none;width:60px;min-width:60px;height:30px;min-height:30px;margin:0;padding:0 4px;border:0;border-left:1px solid var(--hpf-accent);border-radius:0;background:#fff;color:var(--hpf-accent);font:700 13px/20px "Malgun Gothic","맑은 고딕",sans-serif;text-align:center;cursor:pointer}
 .hpf-app .s3-root .s3-tab-note .gk-unit[role="group"]>button[data-unit-price]:first-child{border-left:0}
 .hpf-app .s3-root .s3-tab-note .gk-unit[role="group"]>button[data-unit-price][aria-pressed="true"]{background:var(--hpf-accent);color:#fff}
 .hpf-app .s3-root .s3-tab-note .gk-unit[role="group"]>button[data-unit-price]:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px}
}
@media(forced-colors:active){
 .hpf-app .s3-root .s3-tab-note .gk-unit[role="group"]>button[data-unit-price]{border-color:ButtonText;background:ButtonFace;color:ButtonText}
 .hpf-app .s3-root .s3-tab-note .gk-unit[role="group"]>button[data-unit-price][aria-pressed="true"]{background:Highlight;color:HighlightText}
}
/* F35: 계산 오류 안내(role=alert)는 기존 fq-note 위에 빨간 계열로 덮는다. 색만 바꾸고 치수는 그대로이며 문구는 호스트 소유다. */
@media screen{
 .hpf-app .af-win .fq-note.fq-err{border-color:#A12A1B;border-left-color:#C00000;background:#FFF1F0;color:#1F2D3D}
 .hpf-app .af-win .fq-note.fq-err>b{color:#C00000}
}
@media(forced-colors:active){
 .hpf-app .af-win .fq-note.fq-err{border-color:LinkText;border-left-color:Highlight;background:Canvas;color:CanvasText}
 .hpf-app .af-win .fq-note.fq-err>b{color:CanvasText}
}
/* F34 D-168: 계좌 흐름 아래 표 틀. 두 표 사이는 짙은 경계선 한 줄, 최소화(s0)는 높이 0, 크기 단추 묶음은 경계선 위 가운데. 옛 .bpt4 규칙은 지웠다. */
@media screen{
 .hpf-app .bp4{border-top:3px solid var(--hpf-accent,#1D3A5F);background:#E9EEF5}
 .hpf-app .bp4.s0{height:0;min-height:0}
 .hpf-app .bp4>.bpz4g{position:absolute;top:-19px;left:50%;transform:translateX(-50%);display:flex;gap:3px;z-index:9}
 .hpf-app .bpz4g>.bpz4{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:40px;height:19px;min-height:0;margin:0;padding:0;border:2px solid var(--hpf-accent,#1D3A5F);border-bottom:0;border-radius:10px 10px 0 0;background:#F4F6F9;box-shadow:none;color:var(--hpf-accent,#1D3A5F);cursor:pointer}
 .hpf-app .bpz4g>.bpz4:not(.is-off):hover{background:#E3EAF5}
 .hpf-app .bpz4g>.bpz4:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px}
 .hpf-app .bpz4g>.bpz4.is-off,.hpf-app .bpz4g>.bpz4[aria-disabled="true"]{border-color:#C9D3E0;background:#EEF1F5;color:#7B8696;cursor:not-allowed}
 .hpf-app #bps4 table.gk-bp{--gk-cell-bg:#E9EEF5}
 .hpf-app #bps4 table.gk-bp tbody td{background:#E9EEF5}
 .hpf-app #bps4 table.gk-bp tbody td.gk-bp-lbl{padding:0;background:#D7E0EC;color:var(--hpf-accent,#1D3A5F);font-size:11px;font-weight:700;line-height:1.3;text-align:center;vertical-align:middle;white-space:normal;overflow:visible}
 .hpf-app #bps4 table.gk-bp tbody tr.gk-ph td.fz{color:#6B7280}
 .hpf-app #bps4 .gk-ph-note{font-size:11px;color:#6B7280;padding:2px 6px}
}
@media(forced-colors:active){
 .hpf-app .bp4{border-top-color:ButtonText;background:Canvas}
 .hpf-app .bpz4g>.bpz4{border-color:ButtonText;background:ButtonFace;color:ButtonText}
 .hpf-app .bpz4g>.bpz4.is-off,.hpf-app .bpz4g>.bpz4[aria-disabled="true"]{border-color:GrayText;color:GrayText}
 .hpf-app #bps4 table.gk-bp tbody td{background:Canvas;color:CanvasText}
}
@media print{.hpf-app .bpz4g{display:none!important}}
/* F34 2차: 현금흐름표 구분(g1)과 중분류(g2) 고정 열, 열 문자 줄 같은 위치, 아래 계좌 흐름 표의 같은 고정 열과 합친 칸. 위치 변수는 호스트가 두 표에 넣는다. */
@media screen{
 .hpf-app #t4.x4c :is(td,th)[data-gk-col="g1"],.hpf-app #t4.x4c th[data-gk-colkey="g1"]{position:sticky;left:var(--gk-sl-g1);z-index:7}
 .hpf-app #t4.x4c :is(td,th)[data-gk-col="g2"],.hpf-app #t4.x4c th[data-gk-colkey="g2"]{position:sticky;left:var(--gk-sl-g2);z-index:7}
 .hpf-app #t4.x4c th[data-gk-colkey="item"]{position:sticky;left:var(--gk-sl-item);z-index:7}
 .hpf-app #t4.x4c th[data-gk-colkey="ctot"]{position:sticky;left:var(--gk-sl-ctot);z-index:7}
 .hpf-app #t4.x4c thead :is(th[data-gk-col="g1"],th[data-gk-col="g2"],th[data-gk-colkey="g1"],th[data-gk-colkey="g2"],th[data-gk-colkey="item"],th[data-gk-colkey="ctot"]){z-index:9}
 .hpf-app #bps4 table.gk-bp td.gk-ol{position:sticky;left:var(--gk-sl-ol,0px);z-index:7;padding:0;border:0;background:#E9EEF5}
 .hpf-app #bps4 table.gk-bp td[data-gk-col="rn"]{position:sticky;left:var(--gk-sl-rn);z-index:6}
 .hpf-app #bps4 table.gk-bp td[data-gk-col="g1"]{position:sticky;left:var(--gk-sl-g1);z-index:5}
 .hpf-app #bps4 table.gk-bp td[data-gk-col="g2"]{position:sticky;left:var(--gk-sl-g2);z-index:5}
 .hpf-app #bps4 table.gk-bp td[data-gk-col="item"]{position:sticky;left:var(--gk-sl-item);z-index:4}
 .hpf-app #bps4 table.gk-bp td[data-gk-col="ctot"]{position:sticky;left:var(--gk-sl-ctot);z-index:4}
 .hpf-app #bps4 table.gk-bp :is(td[data-gk-col="g1"],td[data-gk-col="g2"],td[data-gk-col="item"],td[data-gk-col="ctot"]){background:#E9EEF5}
 .hpf-app #bps4 table.gk-bp :is(td[data-gk-col="src"],td[data-gk-col="pre"]){border-right:2px solid var(--gk-rule,#000)}
}
@media(forced-colors:active){
 .hpf-app #bps4 table.gk-bp td.gk-ol,.hpf-app #bps4 table.gk-bp :is(td[data-gk-col="g1"],td[data-gk-col="g2"],td[data-gk-col="item"],td[data-gk-col="ctot"]){background:Canvas}
 .hpf-app #bps4 table.gk-bp :is(td[data-gk-col="src"],td[data-gk-col="pre"]){border-right-color:ButtonText}
}
/* 계좌 흐름(#bps4) 대분류 칸: 계좌 이름 전부 보임. 낱말 중간은 꺾지 않고(keep-all) 이름 끝 '계좌' 앞(wbr)에서만 두 줄로 나눈다. 칸은 여러 줄을 합친 rowspan이라 줄 높이 규칙과 부딪히지 않는다 */
.hpf-app #bps4 table.gk-bp td.gk-g1{white-space:normal;word-break:keep-all;overflow:visible;text-overflow:clip;padding:0 4px;line-height:1.35}
/* D-225: ① 맨 밑 공용 가로 막대(#hs4): 위 표(#g4)는 세로 스크롤만 보이고 가로 막대는 계좌 흐름 아래 전체 영역 맨 밑 하나뿐 ② 위/아래 경계는 굵은 4px 짙은 선 + 위로 퍼지는 옅은 그림자(70%에서도 식별) ③ 아래 전체(계좌 흐름 · 막대) 색톤을 한 단계 짙게 ④ 아래 표 칸 선택 표시(위 표 규칙은 #t4에만 걸려 있다) ⑤ 음수 빨강은 짙은 바탕에서도 4.5:1 이상 */
@media screen{
 .hpf-app .g4w.cf4{overflow-x:hidden}
 .hpf-app #t4 tr.gk-pl4 td.neg4{--gk-stale-fg:#B3261E;color:#B3261E;font-weight:700}
 .hs4{flex:none;height:15px;overflow-x:scroll;overflow-y:hidden;background:#E3EAF4}
 .hs4i{height:1px}
 .hpf-app .bp4{border-top:4px solid var(--hpf-accent,#1D3A5F);background:#E3EAF4;box-shadow:0 -3px 6px -2px rgba(29,58,95,.28)}
 .hpf-app #bps4 table.gk-bp{--gk-cell-bg:#E3EAF4}
 .hpf-app #bps4 table.gk-bp tbody td,.hpf-app #bps4 table.gk-bp td.gk-ol,.hpf-app #bps4 table.gk-bp :is(td[data-gk-col="g1"],td[data-gk-col="g2"],td[data-gk-col="item"],td[data-gk-col="ctot"]){background:#E3EAF4}
 .hpf-app #bps4 table.gk-bp tbody td.gk-bp-lbl{background:#CBD8EA}
 .hpf-app #bps4 table.gk-bp td.neg4{color:#B3261E}
 .hpf-app #bps4 table.gk-bp td.gk-range{box-shadow:inset 0 0 0 9999px rgba(29,58,95,.2)!important}
 .hpf-app #bps4 table.gk-bp td.gk-active{outline:2px solid var(--hpf-accent,#1D3A5F)!important;outline-offset:-2px}
}
@media print{.hs4{display:none!important}}
@media(forced-colors:active){
 .hpf-app .bp4{box-shadow:none}
 .hpf-app #bps4 table.gk-bp tbody td,.hpf-app #bps4 table.gk-bp td.gk-ol,.hpf-app #bps4 table.gk-bp :is(td[data-gk-col="g1"],td[data-gk-col="g2"],td[data-gk-col="item"],td[data-gk-col="ctot"]){background:Canvas}
 .hpf-app #bps4 table.gk-bp td.gk-active{outline-color:Highlight!important}
 .hpf-app #bps4 table.gk-bp td.gk-range{outline:1px solid Highlight;outline-offset:-1px}
}
/* F40: 확대/축소 묶음. 단추는 다른 도구 단추와 같은 규격(아이콘 위, 글자 아래), 묶음 양옆은 세로선, 배율 칸은 폭을 고정하고 %를 붙인다. 끝값의 비활성은 aria-disabled. */
@media screen{
 .hpf-app .gk-zoom{display:inline-flex;flex:none;align-items:stretch;gap:2px;margin:0 4px;padding:0 6px;border-left:1px solid #7B8696;border-right:1px solid #7B8696;white-space:nowrap}
 .hpf-app .gk-zoom>button.gk-tool{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none;gap:2px;min-width:52px;min-height:0;margin:0;padding:5px 8px;border:0;border-radius:3px;background:transparent;color:#1F3864;box-shadow:none;font:inherit;white-space:nowrap;cursor:pointer}
 .hpf-app .gk-zoom>button.gk-tool>span{color:#222;font:inherit}
 .hpf-app .gk-zoom>button.gk-tool:not([aria-disabled="true"]):hover{background:#E3EAF5}
 .hpf-app .gk-zoom>button.gk-tool[aria-disabled="true"]{color:#5F6368;cursor:not-allowed}
 .hpf-app .gk-zoom>button.gk-tool[aria-disabled="true"]>span{color:#5F6368}
 .hpf-app .gk-zoom>button.gk-tool:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px}
 .hpf-app .gk-zoom .gk-ico{flex:none;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
 .hpf-app .gk-zoom-box{display:inline-flex;flex:none;align-items:center;gap:2px;padding:0 4px}
 .hpf-app .gk-zoom-val{box-sizing:border-box;flex:none;width:42px;min-width:42px;height:24px;min-height:0;margin:0;padding:0 4px;border:1px solid #7B8696;border-radius:3px;background:#fff;color:#111;font:inherit;font-variant-numeric:tabular-nums;text-align:right}
 .hpf-app .gk-zoom-val:focus-visible{outline:2px solid var(--hpf-focus);outline-offset:-2px}
 .hpf-app .gk-zoom-pct{flex:none;color:#222;font:inherit;font-weight:400}
}
@media screen and (max-width:1500px){
 .hpf-app .gk-tools[role="toolbar"]>button[data-gk-cmd],.hpf-app .gk-zoom>button.gk-tool{min-width:0;padding:5px 4px}
 .hpf-app .gk-tools-sep{margin:0 4px}
 .hpf-app .gk-zoom{margin:0 2px;padding:0 4px}
}
@media(forced-colors:active){
 .hpf-app .gk-zoom{border-color:ButtonText}
 .hpf-app .gk-zoom>button.gk-tool{border:1px solid ButtonText;background:ButtonFace;color:ButtonText}
 .hpf-app .gk-zoom>button.gk-tool>span{color:inherit}
 .hpf-app .gk-zoom>button.gk-tool[aria-disabled="true"]{color:GrayText;border-color:GrayText}
 .hpf-app .gk-zoom-val{border-color:ButtonText;background:Field;color:FieldText}
 .hpf-app .gk-zoom-pct{color:CanvasText}
}
@media print{.hpf-app .gk-zoom{display:none!important}}
/* F41 보정: 세로로 합친 구분(g1)과 중분류(g2) 칸의 글자는 칸 위쪽에 붙이고, 감쌈 요소(.gk-rs-lbl)가 있으면 스크롤해도 머리글 아래에 머문다. sticky가 동작하도록 칸의 overflow는 보이게 한다. */
@media screen{
 .hpf-app :is(#t4,table.s3-gk) tbody td:is(.gk-g1,.gk-g2){vertical-align:top;padding-top:3px;overflow:visible}
 .hpf-app :is(#t4,table.s3-gk) tbody td:is(.gk-g1,.gk-g2)>.gk-rs-lbl{display:block;position:sticky;top:var(--gk-head-h,64px);padding:0;text-align:center;overflow-wrap:anywhere}
}
/* D-214(목록 9): 자동 분배가 넣은 약정금이면 목표 LTV 칸은 열어 두고, 약정 기준 LTV는 칸 아래 보조 글자로 보인다(3단계 조달 탭 .s3f-cmx, 4단계 자동 분배 창 .cmx4) */
 .hpf-app :is(.s3f-cmx,.cmx4){display:block;margin-top:2px;color:#5F6368;font-size:11px;line-height:1.2;text-align:right;white-space:nowrap}
/* D-245 2단계 설문 팝업 호스트와 요약 페이지(step2-survey.js). 오버레이는 #main 안(.kov와 같은 위치 규칙), 팝업 본문(.sv-bd)은 .s3-root라서 입력 부품 CSS를 그대로 쓴다. */
@media screen{
 .sv-ov{position:fixed;inset:0;top:var(--kovt,0px);background:rgba(22,33,46,.45);display:flex;align-items:flex-start;justify-content:center;padding-top:16px;z-index:40}
 .hpf-input .hpf-main:has([data-sv-ov]){isolation:auto}
 .sv-pop{width:min(1000px,calc(100vw - 48px));max-height:min(720px,calc(100dvh - var(--kovt,0px) - 40px));background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 20px 60px rgba(22,33,46,.35);display:flex;flex-direction:column}
 .sv-pop:focus,.hpf-app .sv-pop:focus-visible{outline:none}
 .sv-hd{background:var(--navy);color:#fff;padding:10px 12px 10px 18px;display:flex;align-items:center;gap:10px;flex-shrink:0}
 .sv-hd b{flex:1;min-width:0;font-size:14px;font-weight:600;line-height:1.5}
 .sv-hd .x{background:none;border:0;color:#fff;font-size:20px;cursor:pointer;line-height:1;min-width:36px;min-height:36px;border-radius:6px}
 .sv-hd .x:hover{background:#1F3350}
 .sv-bd{padding:16px 20px;overflow:auto;background:var(--ground);min-height:0;flex:1}
 .sv-ft{display:flex;gap:8px;padding:10px 18px;border-top:1px solid var(--line);align-items:center;background:#fff;flex-shrink:0}
 .sv-ft .sp{flex:1}
 .sv-err{padding:12px;color:var(--errtx)}
 .sv-head{margin:0 0 12px;font-size:14px;line-height:1.6}
 .sv-t td.n{white-space:nowrap}
 .sv-u{color:var(--sub);font-size:12px}
 .sv-bdg,.sv-st{display:inline-block;padding:2px 8px;border-radius:3px;font-size:11.5px;line-height:1.5;white-space:nowrap}
 .sv-bdg.is-u,.sv-st.is-ok{background:#E3F0E3;color:#1E6B2E}
 .sv-bdg.is-l{background:#E8E6F7;color:#4A3F9C}
 .sv-bdg.is-a{background:#FDEFD2;color:#8A5A00}
 .sv-bdg.is-r{background:#D9EAF7;color:#1B5E9A}
 .sv-st.is-skip{background:#FFF2CC;color:#5A4520}
 .sv-st.is-req{background:#FDE3E1;color:#B3261E;font-weight:700}
}
@media(forced-colors:active){
 .sv-bdg,.sv-st{border:1px solid ButtonText;background:Canvas;color:CanvasText}
 .sv-pop{border:1px solid ButtonText}
 .sv-hd{background:ButtonFace;color:ButtonText}
}
@media print{.sv-ov{display:none!important}}
