:root{--navy:#00492c;--bg:#f4f6f9;--line:#d9dee6;--mut:#4a5565;--neg:#c0392b;--pos:#1a7f4b}
*{box-sizing:border-box}body{margin:0;font-family:"Malgun Gothic","Apple SD Gothic Neo",sans-serif;font-size:14px;background:var(--bg);color:#1c2530}
main{padding:20px;max-width:1500px;margin:0 auto}
h1{font-size:20px;margin:0 0 14px}h2{font-size:15px;margin:22px 0 8px}
.card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:14px 16px;margin-bottom:16px}
.bar{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin-bottom:14px}
.bar label{display:flex;flex-direction:column;font-size:12px;color:var(--mut);gap:3px}
select,input[type=text],input[type=password],input[type=number],input[type=month],input[type=file]{padding:7px 9px;border:1px solid #b9c2ce;border-radius:5px;font-size:14px;background:#fff}
button,.btn{background:var(--navy);color:#fff;border:0;border-radius:5px;padding:8px 14px;font-size:14px;cursor:pointer;text-decoration:none;display:inline-block}
.btn.sec{background:#fff;color:var(--navy);border:1px solid var(--navy)}.btn.red{background:var(--neg)}.btn.sm{padding:3px 9px;font-size:12px}
table{border-collapse:collapse;width:100%;background:#fff}th,td{border:1px solid var(--line);padding:6px 8px;white-space:nowrap}
th{background:#e3efe8;font-weight:600;text-align:center}td{text-align:center}td.n{text-align:right;font-variant-numeric:tabular-nums}
tr.tot td{background:#eef6f1;font-weight:700}tr.sub td{background:#fafbfd;color:#3d4a5c}
td.neg{color:var(--neg)}.scroll{overflow-x:auto}
.kpi{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:14px}.kpi div{background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px 18px;min-width:180px}
.kpi small{color:#3d4a5c;display:block;font-size:13px;font-weight:600;margin-bottom:2px}.kpi b{font-size:20px}
.flash{background:#fff7dd;border:1px solid #ecd58a;padding:9px 14px;border-radius:6px;margin-bottom:12px}
.note{color:var(--mut);font-size:12px;margin:6px 0}
form.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
form.grid label{display:flex;flex-direction:column;font-size:12px;color:var(--mut);gap:3px}form.grid input,form.grid select{width:100%}
.login{max-width:360px;margin:9vh auto 0;padding:26px 26px 20px}.login .logo{display:block;width:230px;max-width:100%;margin:0 auto 6px}.login h1{text-align:center;font-size:15px;color:var(--mut);font-weight:600;margin:0 0 18px}.login input{width:100%;margin-bottom:10px}
.rephead{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid var(--navy);padding-bottom:8px;margin-bottom:12px}.rephead img{height:26px}.rephead span{color:var(--mut);font-size:12px}
.pager a{margin-right:6px}
@media print{h1,header.top,aside.side,.bar,.shell>.cont>.bar,.bar,.noprint,.flash,.btn,button{display:none!important}body{background:#fff;font-size:10px}main{padding:0;max-width:none}
 th,td{padding:2px 4px}.card{border:0;padding:0}@page{size:A4 landscape;margin:10mm}}

tr.grp td{background:#dfeee6;color:var(--navy);font-weight:700;text-align:center}
.savebar{position:sticky;top:var(--hh);z-index:5;background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 14px;margin-bottom:12px;display:flex;align-items:center;gap:14px;justify-content:space-between}
.savebar button:disabled{background:#b9c2ce;cursor:not-allowed}
.multi{font-weight:600}
input.money{text-align:right}

/* ===== 모바일(폰) 화면 ===== */
@media (max-width:768px){
 body{font-size:13px}
 main{padding:12px 10px}
 h1{font-size:17px}
 .card{padding:10px 10px;border-radius:6px}
 .kpi{gap:8px}.kpi div{flex:1 1 calc(50% - 8px);min-width:0;padding:10px 12px}.kpi b{font-size:16px;word-break:break-all}
 .bar{gap:6px}.bar label{flex:1 1 40%}.bar select,.bar input{width:100%}
 select,input[type=text],input[type=password],input[type=number],input[type=month],input[type=file]{font-size:16px}
 button,.btn{padding:9px 12px}
 table{display:block;overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}
 .scroll table{display:table}
 th,td{padding:5px 6px;font-size:12px}
 .scroll th:first-child,.scroll td:first-child{position:sticky;left:0;background:#fff;z-index:1;box-shadow:1px 0 0 var(--line)}
 .scroll th:first-child{background:#e3efe8}
 .savebar{flex-wrap:wrap;gap:8px}
 form.grid{grid-template-columns:1fr}
 .login{margin-top:5vh;padding:20px 16px}
}
@media (max-width:768px){.rephead{flex-wrap:wrap;gap:4px}.rephead img{height:20px}}

/* ===== v12: 소계 강조 / 금액 클릭 팝업 ===== */
tr.gsub td{background:#dfeee6;font-weight:700;color:var(--navy);border-top:2px solid #9bbfa9}
tr.dsub td{background:#cfe6da;font-weight:700;color:var(--navy);border-top:2px solid #7fae93;font-size:14px}
a.amt{color:#1d4f8f;text-decoration:underline dotted;cursor:pointer}a.amt:hover{background:#eaf2fb}
sup.nf{color:#e07a00;font-size:9px;margin-left:2px}
.notepop{position:fixed;inset:0;background:rgba(15,25,40,.45);z-index:50;display:flex;align-items:center;justify-content:center;padding:16px}
.notepop[hidden]{display:none}
.np-box{background:#fff;border-radius:10px;max-width:1060px;width:100%;max-height:80vh;overflow:auto;padding:18px 18px 14px;position:relative;text-align:left}
.np-x{position:absolute;right:8px;top:6px;background:transparent;color:#555;font-size:22px;padding:2px 10px}
.np-t{margin-top:10px}.np-t td.npn{text-align:left;white-space:normal;min-width:160px}
.dsum td,.dsum th{font-size:14px}
td.lft{text-align:left}td.ind1{padding-left:22px}td.ind2{padding-left:44px;color:#3d4a5c}a.midtog{color:var(--navy);text-decoration:none;font-weight:600}a.midtog:hover{text-decoration:underline}a.midtog .car{display:inline-block;width:14px;color:#6b7a90}
tr.drow[hidden]{display:none}
/* v13: 월별 실적 / 원가집계 */
td.nm{text-align:left;vertical-align:middle;font-weight:700;color:var(--navy);min-width:170px}td.nm a.dtog{color:var(--navy);text-decoration:none}
th.curm{background:#cfe6da}tr.site td{background:#fff}tr.site td.nm{font-weight:500;color:#3d4a5c}
.cs table{font-size:12.5px}.cs th,.cs td{padding:4px 7px}.cs .stk1{position:sticky;left:0;background:#f4f8f5;z-index:2;min-width:84px}.cs .stk2{position:sticky;left:84px;background:#f4f8f5;z-index:2;min-width:120px}
.cs th.stk1,.cs th.stk2{background:#e3efe8;z-index:3}.cs th.csub,.cs td.csubv{background:#eef6f1;font-weight:700}

/* v13: 메뉴 묶음(드롭다운) · 원가집계 스크롤 */
.scroll.vs{max-height:calc(100vh - 210px);overflow:auto}
.scroll.vs th{position:sticky;top:0;z-index:4}
.cs.vs .hr2 th{top:27px}.cs th{height:27px;box-sizing:border-box;line-height:17px}
.cs.vs th.stk1,.cs.vs th.stk2{z-index:6}
.cs.vs th[rowspan]{z-index:5}
.chk{display:flex;gap:12px;align-items:flex-start;padding:10px 4px;border-bottom:1px solid var(--line)}
.chk .st{flex:none;width:92px;text-align:center;font-weight:700;border-radius:14px;padding:3px 8px;font-size:12px}
.st.ok{background:#e2f3e8;color:#1a7f4b}.st.warn{background:#fff1d6;color:#a35f00}.st.info{background:#e8eef7;color:#37597f}.st.todo{background:#f3e3e1;color:#b03a2e}
.chk .bd{flex:1}.chk .bd small{color:var(--mut)}.chk .ac{flex:none;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}

.card.scroll.vs,.card.scroll.cs{padding:0;overflow:auto}
.scroll.vs th:first-child,.scroll.vs td:first-child{background-clip:padding-box}

td.neg a,td.neg a.amt,.kpi b.neg{color:var(--neg)}
.sg{display:inline-block;padding:1px 9px;border-radius:10px;font-size:12px;font-weight:700;white-space:nowrap}
.sg.red{background:#f6dcd8;color:#a8281b}.sg.yellow{background:#fdf0c9;color:#8a6200}.sg.green{background:#dcf1e4;color:#1a7f4b}.sg.none{background:#eceff3;color:#6b7686}
.pbar{position:relative;height:10px;background:#e8ecef;border-radius:5px;min-width:120px}
.pbar i{position:absolute;left:0;top:0;bottom:0;background:#4f9d78;border-radius:5px}.pbar i.ov{background:var(--neg)}
.pbar b{position:absolute;top:-3px;bottom:-3px;width:2px;background:#222}
.bt input.money{width:180px;text-align:right}.bt td{padding:3px 8px}
.planbox{display:flex;flex-wrap:wrap;gap:6px 10px}.planbox label{font-size:12px;color:var(--mut)}.planbox input{display:block;width:62px;text-align:right}

.cs a.cstog{color:inherit;text-decoration:none;font-weight:700;cursor:pointer}.cs tr.csgrp td.stk1{cursor:pointer}
.cs tr[hidden]{display:none}
table td.neg,tr.dsub td.neg,tr.tot td.neg,tr.sub td.neg,tr.site td.neg{color:var(--neg)}

tr.csmid td{font-weight:600}a.csmid,a.cstog{color:var(--navy);text-decoration:none}tr.csmid td.stk1,tr.csmid td.stk2{background:#f6faf7}

.adjdot{color:#1f6fb5;font-size:10px;margin-left:2px;cursor:help;font-weight:700}
td.ind3{padding-left:66px;color:#3d4a5c}a.mntog{color:var(--navy);text-decoration:none}a.mntog:hover{text-decoration:underline}a.mntog .car{display:inline-block;width:14px;color:#6b7a90}

td.wrap{white-space:normal;word-break:break-word;overflow-wrap:anywhere;min-width:220px;max-width:420px;text-align:left}

.cs .stk3{position:sticky;left:204px;z-index:2;min-width:104px;background:#eef6f1;box-shadow:2px 0 0 #c9d8ce}.cs th.stk3{background:#e3efe8;z-index:3}.cs.vs th.stk3{z-index:6}

tr:target>td{background:#fff3b0!important;animation:hlfade 3s ease-out 1}@keyframes hlfade{from{background:#ffe066}to{background:#fff3b0}}
a.ic{display:inline-block;text-decoration:none;color:#5b6b60;border:1px solid #cfd8d2;border-radius:4px;padding:0 5px;font-size:12px;line-height:18px;margin-left:2px}a.ic:hover{background:#eaf3ee;color:var(--navy)}.cs_site,.cs_acct{white-space:normal}

/* ===== v60: 상단 분류 + 왼쪽 메뉴 ===== */
:root{--hh:60px;--sw:216px;--sline:#e3e8ec}
header.top{height:var(--hh);background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:stretch;padding:0 24px;position:sticky;top:0;z-index:30}
header.top .brand{display:flex;align-items:center;padding-right:20px}header.top .brand img{height:22px;display:block}
header.top .sp{flex:1}
nav.tm{display:flex;gap:6px;align-items:stretch}
nav.tm>a{display:flex;align-items:center;padding:0 20px;color:#3a4a42;text-decoration:none;font-weight:700;font-size:15px;border-bottom:3px solid transparent;margin-bottom:-1px;white-space:nowrap}
nav.tm>a:hover{background:#eef5f1;color:var(--navy)}nav.tm>a.on{color:var(--navy);border-bottom-color:var(--navy)}
.um{position:relative;display:flex;align-items:center}
.um>button{background:none;color:#1c2530;border:1px solid var(--line);border-radius:20px;padding:5px 12px 5px 6px;display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px}
.um>button:hover{background:#f3f7f5}
.um .av{width:26px;height:26px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.um .un small{color:var(--mut);margin-left:6px;font-size:11px}
.um .umm{display:none;position:absolute;right:0;top:50px;background:#fff;border:1px solid var(--line);border-top:3px solid var(--navy);min-width:170px;box-shadow:0 6px 16px rgba(0,0,0,.14);z-index:60}
.um.open .umm{display:block}.um .umm a{display:block;padding:10px 14px;color:#1c2530;text-decoration:none}.um .umm a:hover{background:#eaf3ee}
.shell{display:flex;align-items:flex-start}
.cont{flex:1;min-width:0}
aside.side{width:var(--sw);flex:none;background:#fff;border-right:1px solid var(--sline);position:sticky;top:var(--hh);height:calc(100vh - var(--hh));overflow-y:auto;padding:8px 0 20px}
.side .pane{display:none}.side .pane.show{display:block}
.side .gt{font-size:12px;letter-spacing:.06em;color:#8a97a0;padding:14px 20px 6px;font-weight:700}
.side a{display:block;padding:9px 20px;color:#3a4a42;text-decoration:none;font-weight:600;border-left:3px solid transparent}
.side a:hover{background:#eef5f1;color:var(--navy)}.side a.on{background:#e3f1e9;color:var(--navy);border-left-color:var(--navy)}
.side a.sub{padding-left:38px;font-weight:500;font-size:13px;color:#5d6b64}.side a.sub.on{color:var(--navy);font-weight:700}
html.col aside.side{display:none}
.cont>.bar{height:40px;display:flex;align-items:center;padding:0 24px;background:#fff;border-bottom:1px solid var(--line)}
.tog{align-self:center;background:none;color:var(--navy);border:1px solid var(--line);border-radius:6px;width:32px;height:32px;padding:0;margin-right:22px;cursor:pointer;font-size:16px}.tog:hover{background:#eef5f1}
main{padding:24px 32px;max-width:1560px;margin:0 auto}
@media(max-width:800px){
 header.top{padding:0 10px;height:52px;overflow-x:auto}:root{--hh:52px}
 header.top .brand{padding-right:12px}header.top .brand img{height:18px}
 nav.tm>a{padding:0 12px;font-size:14px}.um .un{display:none}
 aside.side{display:none;position:fixed;left:0;top:var(--hh);bottom:0;height:auto;z-index:40;box-shadow:4px 0 16px rgba(0,0,0,.18)}
 html.mopen aside.side,html.col.mopen aside.side{display:block}
 .cont>.bar{padding:0 10px}main{padding:12px 10px}}
.ph{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 14px}.ph h1{margin:0}.phr{display:flex;gap:8px}
.ptabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:0 0 16px}.ptabs a{padding:9px 18px;text-decoration:none;color:#3a4a42;font-weight:600;border-bottom:3px solid transparent;margin-bottom:-1px}.ptabs a:hover{background:#eef5f1;color:var(--navy)}.ptabs a.on{color:var(--navy);border-bottom-color:var(--navy)}
details.fine{margin:2px 0 10px}details.fine>summary{cursor:pointer;color:var(--mut);font-size:12.5px;list-style:none}details.fine>summary::before{content:"▸ ";color:#8a97a0}details.fine[open]>summary::before{content:"▾ "}details.fine>p{margin:6px 0 0}
.card{border-radius:10px}.card h2{font-size:16px}
.side .gt2{font-size:11px;color:#8a97a0;padding:12px 20px 4px;font-weight:700;border-top:1px solid var(--sline);margin-top:8px}.side .pane>.gt+.gt2{border-top:0;margin-top:0}

/* ===== v61: 표 스타일 A안 (사업부 띠 · 소계 · 합계) ===== */
table.ts tr.grp td{background:#00492c;color:#fff;font-weight:700;font-size:15px;text-align:left;padding:9px 12px;cursor:pointer;user-select:none;border-bottom:0}
table.ts tr.grp .car{display:inline-block;width:18px;transition:transform .15s}table.ts tr.grp.c .car{transform:rotate(-90deg)}
table.ts tr.dsub td{background:#e3f1e9;font-weight:700;color:var(--navy);border-top:1px solid #9bbfa9;font-size:14px}
table.ts tr.tot td{background:#00492c;color:#fff;font-weight:800;border-top:3px double #7fae93}
table.ts tr.dsub td.neg{color:#c0392b}table.ts tr.tot td.neg{color:#ffb4a8}
table.ts td:first-child{text-align:left}table.ts tr.r td:first-child{padding-left:28px}
#pt tr.dsub td{background:#e3f1e9;font-weight:700;color:var(--navy);border-top:1px solid #9bbfa9}
#pt tr.dsub td.nm{background:#00492c;color:#fff;font-size:15px;border-top:0}#pt tr.dsub td.nm a.dtog{color:#fff}#pt tr.dsub td.nm .car{color:#fff}
#pt tr.tot td{background:#00492c;color:#fff;font-weight:800}#pt tr.tot td.nm{font-size:15px;color:#fff}#pt tr.tot td.neg{color:#ffb4a8}
#pt tr.dsub td.neg{color:#c0392b}
@media print{table.ts tr.grp td,table.ts tr.tot td,#pt tr.dsub td.nm,#pt tr.tot td{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

/* ---- 예상(전망) ---- */
.fcm-key{font-size:11px;font-weight:700;color:#b7791f;margin-left:2px}
th .fcm-key{color:#ffd88a}
#pt td.fcm{font-style:italic;box-shadow:inset 0 -2px 0 #e8b64c}
#pt td.fcb2{background:#fff7e6}#pt tr.tot td.fcb2,#pt tr.dsub td.fcb2{background:#fff7e6;color:#1f3a5f}
.kpi .fcb{border-top:3px solid #e8b64c}
table.fg{border-collapse:collapse;width:100%}
table.fg th,table.fg td{padding:3px 6px;border-bottom:1px solid #e3eae6;white-space:nowrap}
table.fg input.money{width:100%;min-width:96px;padding:4px 6px;text-align:right;margin:0}
table.fg tr.gd td{background:#00492c;color:#fff;font-weight:800;padding:6px 10px}
table.fg td.nm{font-weight:700;vertical-align:top;background:#f6faf8;border-right:1px solid #e3eae6}
table.fg tr.fs td{border-top:2px solid #9bbfa9}
table.fg tr.pf td{background:#f1f7f3;font-weight:700;border-bottom:2px solid #9bbfa9}
table.fg td.refc,table.fg th.refc{background:#f4f4f2;color:#6b756f}
table.fg td.rt{font-weight:700}
table.fg tr.tt td{background:#e3f1e9;font-weight:700;color:var(--navy)}
table.cmp{border-collapse:collapse;width:100%}table.cmp th,table.cmp td{padding:6px 10px;border-bottom:1px solid #e3eae6;white-space:nowrap}
table.cmp tr.b td{font-weight:700;background:#f1f7f3}
table.cmp tr.dsub td{background:#e3f1e9;font-weight:700;color:var(--navy)}table.cmp tr.dsub td.nm{background:#00492c;color:#fff}
table.cmp tr.tot td{background:#00492c;color:#fff;font-weight:800}table.cmp tr.tot td.neg{color:#ffb4a8}

.side a{display:flex;align-items:center;gap:10px}.side a .ni{width:18px;height:18px;flex:none;fill:none;stroke:#6b7a72;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.side a.on .ni,.side a:hover .ni{stroke:var(--navy)}

/* 예상 입력: 표 고정 레이아웃(글자 바뀔 때마다 표 전체를 다시 계산하지 않도록) */
table.fg{table-layout:fixed}table.fg th:nth-child(1){width:140px}table.fg th:nth-child(2){width:96px}table.fg th.refc{width:120px}table.fg th:last-child{width:120px}

/* 예상 입력: 표 안에서 스크롤하고 머리글(월 제목줄)은 항상 보이게 고정, 매출과 원가 사이에 구분선 */
.fgbox{max-height:calc(100vh - 190px);overflow:auto;padding:0}
table.fg th{position:sticky;top:0;z-index:3;background:#e3efe8;box-shadow:0 1px 0 #9bbfa9}
table.fg tr.fs td:not(.nm){border-bottom:2px solid #5f9b7c}
table.fg{border-collapse:separate;border-spacing:0}table.fg th:nth-child(2){width:170px}

/* v86 예상 입력 표 정리 (A안: 크림) */
table.fg th{box-shadow:none;border-bottom:1px solid #b7cfc2;color:#1c4a35}
table.fg tr.fs td{border-top:2px solid #9bbfa9}
table.fg tr.fs td:not(.nm){border-bottom:1px solid #eadfc0}
table.fg tr.sl td:not(.nm):not(.refc){background:#fbf7ec}
table.fg tr.sl td.refc{background:#f4f1e8}
table.fg tr.sl input.money{background:#fffdf6;border-color:#dccfa6}
table.fg tr.pf td{background:#eef5f0;color:#064e2b;border-bottom:0}
table.fg tr.pf td.refc{background:#eef2ee}
table.fg .sgm{display:inline-block;width:8px;height:8px;border-radius:2px;background:#c9a54a;margin-right:6px;vertical-align:middle}
table.fg td.it{text-align:left}
table.fg td{border-left:0;border-right:0}table.fg td.nm{border-right:1px solid #e3eae6}
/* v87 현장명이 길면 줄바꿈 (항목 칸과 겹침 방지) */
table.fg td.nm{white-space:normal;overflow-wrap:anywhere;word-break:keep-all;line-height:1.35;padding-top:8px}

/* v88 예상 입력 칸 X(비우기) */
.fgbox{position:relative}
#xclr{display:none;position:absolute;z-index:5;width:17px;height:17px;padding:0;border-radius:50%;border:1px solid #c98a8a;background:#fff;color:#b23b3b;font-size:13px;line-height:14px;text-align:center;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.2)}
#xclr:hover{background:#b23b3b;color:#fff;border-color:#b23b3b}

/* v89 월별 실적: 연한 숲색 + 예상월 크림 + 틀 고정 */
#pt th{background:#dcebe2;color:#1c4a35;border-bottom:1px solid #b7cfc2}
#pt tr.tot td{background:#e3efe8;color:#064e2b;font-weight:800}#pt tr.tot td.nm{color:#064e2b}#pt tr.tot td.neg{color:#c0392b}
#pt tr.dsub td{background:#f4f8f5;color:#1c4a35;border-top:1px solid #b7cfc2}
#pt tr.dsub td.nm{background:#f4f8f5;color:#064e2b;border-top:1px solid #b7cfc2}#pt tr.dsub td.nm a.dtog,#pt tr.dsub td.nm .car{color:#064e2b}
#pt td.fcm,#pt tr.tot td.fcm,#pt tr.dsub td.fcm{background:#fbf7ec}
#pt tr.tot td.fcm{background:#f3ead2}
#pt td.fcb2,#pt tr.tot td.fcb2,#pt tr.dsub td.fcb2{background:#fbf7ec;color:#064e2b}
th .fcm-key{display:inline-block;margin-left:4px;padding:0 6px;border-radius:9px;background:#c9742a;color:#fff;font-size:11px;font-weight:700;line-height:16px}
#pt td.nm,#pt td.it{position:sticky;z-index:2;background:#fff}
#pt td.nm{left:0;min-width:170px;max-width:170px;box-shadow:inset -1px 0 0 #e3eae6}
#pt td.it{left:170px;min-width:84px;box-shadow:2px 0 0 #c9d8ce}
#pt tr.tot td.nm,#pt tr.tot td.it{background:#e3efe8}
#pt tr.dsub td.nm,#pt tr.dsub td.it{background:#f4f8f5}
#pt th.stk0,#pt th.stk1p{position:sticky;z-index:7;background:#dcebe2}
#pt th.stk0{left:0}#pt th.stk1p{left:170px;min-width:84px;box-shadow:2px 0 0 #c9d8ce}
table.fg td.neg,table.fg tr.pf td.neg,table.fg tr.tt td.neg{color:#c0392b}

/* v90 사이드바: 평소엔 아이콘만(접힘), 마우스를 올리면 펼침. ☰ 버튼으로 항상 펼침 고정 */
@media (min-width:801px){
html:not(.pin) aside.side{width:60px;overflow-x:hidden;transition:width .15s ease,margin .15s ease}
html:not(.pin) aside.side.sx{width:var(--sw);margin-right:calc(60px - var(--sw));z-index:35;box-shadow:4px 0 14px rgba(0,0,0,.12);overflow-y:auto}
html:not(.pin) aside.side:not(.sx) a{font-size:0;gap:0;padding-left:20px;padding-right:0}
html:not(.pin) aside.side:not(.sx) a:not(:has(.ni)){display:none}
html:not(.pin) aside.side:not(.sx) .gt,html:not(.pin) aside.side:not(.sx) .gt2{font-size:0;padding:5px 0;margin:0;border-top:0}
html:not(.pin) aside.side:not(.sx) .gt{border-bottom:1px solid var(--sline);margin:0 12px 4px}
}
#pt tr.hl td{background:#fff3c4!important;transition:background .3s}
#dfk:hover{border-color:#c0392b}
#dfp .scroll{max-height:280px;overflow:auto}#dfp a.dfg{color:#064e2b;font-weight:700;text-decoration:underline dotted}#dfp th{position:sticky;top:0}
.prr{display:flex;align-items:center;gap:6px}

.subs{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch}.subs .subt{align-self:center;color:#064e2b;margin-right:4px}
.chip{display:flex;flex-direction:column;padding:6px 12px;border:1px solid #dfe5e1;border-radius:8px;background:#fff;text-decoration:none;color:#1c2530;min-width:130px}
.chip small{color:#667}.chip b{font-size:16px;text-align:right}.chip:hover{border-color:#9bbfa9;background:#f4f8f5}.chip.on{background:#e3efe8;border-color:#5f9b7c}
.chip.tt{background:#e3efe8;border-color:#b7cfc2;color:#064e2b}.chip.tt small{color:#1c4a35}
/* v94 일괄 입력: 계정·현장 칸 너비 확대, 선택하면 더 넓게 */
#grid td[data-col=acct] input[type=text]{width:300px!important;transition:width .12s}
#grid td[data-col=acct] input[type=text]:focus{width:460px!important;position:relative;z-index:6;background:#fff}
#grid td[data-col=site] input[type=text]{width:170px!important;transition:width .12s}
#grid td[data-col=site] input[type=text]:focus{width:320px!important;position:relative;z-index:6;background:#fff}
/* v99 원가 조회 줄 안 수정 */
tr.ied td{background:#fbf7ec;vertical-align:top}
tr.ied input[type=text],tr.ied input:not([type]),tr.ied input[type=month]{padding:3px 5px;font-size:13px;box-sizing:border-box}
tr.iedone td{background:#e7f4ec;transition:background 1.5s}

/* v104 안내문구: ⓘ 도움말, 자세히 접기 */
.tip{position:relative;display:inline-block;margin-left:4px;width:16px;height:16px;line-height:16px;text-align:center;border-radius:50%;background:#e3f1e9;color:#00492c;font-size:11px;font-weight:700;cursor:help;vertical-align:middle;font-style:normal;white-space:normal}
.tip>span{white-space:pre-line;display:none;position:fixed;left:0;top:0;width:260px;background:#25312b;color:#fff;font-weight:400;font-size:12px;line-height:1.5;padding:8px 10px;border-radius:6px;z-index:30;text-align:left;box-shadow:0 4px 14px rgba(0,0,0,.2)}
.tip.on>span{display:block}
details.more{margin:0 0 10px}
details.more>summary{cursor:pointer;color:#00492c;font-weight:700;list-style:none;display:inline-block;font-size:13px}
details.more>summary::-webkit-details-marker{display:none}
details.more>summary::before{content:"▸ "}
details.more[open]>summary::before{content:"▾ "}
details.more .in{background:#f7faf8;border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin-top:6px;color:#33413a;font-size:13px;line-height:1.6}
details.more .in p{margin:0 0 6px}details.more .in p:last-child{margin:0}
.warn1{color:var(--neg);font-weight:700;margin:6px 0;font-size:13px}
@media print{.tip,details.more{display:none!important}}
.qbtn{display:flex;gap:6px;align-items:end;padding-bottom:1px}
#sumtbl th:first-child,#sumtbl td:first-child{position:sticky;left:0;z-index:2;background:#fff;box-shadow:2px 0 0 #c9d8ce;min-width:90px}
#sumtbl th:first-child{background:#e3efe8;z-index:3}
#sumtbl tr.tot td:first-child{background:#eef6f1}
.card.scroll.sumw{padding:0}
th.yc{background:#cfe5d8!important;color:#00492c}td.yc{background:#e3f1e9!important;font-weight:700}

td.cedit{background:#fbf7ec;padding:2px 4px}td.cedit input[type=text],td.cedit input[type=month],td.cedit input:not([type]){padding:3px 5px;font-size:13px}
td.cerr{background:#fdecea!important;outline:1px solid #e5a5a0}
#cfoot{font-size:12px;color:#777}

.topgrid{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}.tg-l{flex:1 1 560px;min-width:0}.tg-l .kpi{flex-wrap:wrap}
.cvbox{flex:1.1 1 430px;min-width:0;margin:0 0 8px;padding:8px 12px}.cvh{display:flex;gap:10px;align-items:center;font-size:14px}
.cvp{background:#eaf2fb;border-radius:12px;padding:1px 10px;font-size:13px}.cvp.over{background:#fdecea;color:#9b1c1c;font-weight:700}
.cvl{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;margin:3px 0}
@media print{.topgrid{display:block}.cvbox{break-inside:avoid;max-width:560px}}
/* 연 합계(전망) 칸의 음수도 빨간색 (칸 색 지정이 음수 색을 덮어쓰던 문제) */
#pt td.fcb2.neg,#pt tr.tot td.fcb2.neg,#pt tr.dsub td.fcb2.neg,#pt td.fcm.neg,#pt tr.tot td.fcm.neg,#pt tr.dsub td.fcm.neg{color:#c0392b}

#ct th.dtog a.dpt{color:inherit;text-decoration:none;cursor:pointer;display:inline-block}#ct th.dtog a.dpt:hover{text-decoration:underline}

a.vld{color:inherit;text-decoration:underline dotted;cursor:pointer}a.vld:hover{color:#00492c;text-decoration:underline}

.sg.blue{background:#dbe9f8;color:#1f5f9f}
header.top .brand .homeic{margin-left:10px;color:#00492c;opacity:.75}header.top .brand:hover .homeic{opacity:1}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* v114 사이드바 ☰ 는 사이드바 맨 위, 홈은 상단 메뉴 첫 탭(아이콘), 표가 넓은 화면은 폭 제한 해제 */
.stg{display:flex;align-items:center;gap:10px;padding:2px 14px 8px;margin-bottom:4px;border-bottom:1px solid var(--sline);white-space:nowrap}
.stg .tog{margin:0;flex:none}.stg .stl{font-size:13px;color:#5d6b64;font-weight:600}
html.pin .stg .tog{background:#e3f1e9;border-color:var(--navy)}
html:not(.pin) aside.side:not(.sx) .stl{display:none}
header.top .tgm{display:none}
nav.tm a.homet{display:flex;align-items:center;justify-content:center;padding:0 16px}nav.tm a.homet svg{display:block}
main.wide{max-width:none}
@media(max-width:800px){header.top .tgm{display:inline-block;margin:0 8px 0 0}.stg{display:none}}

a.ad{color:inherit;text-decoration:underline dotted;cursor:pointer}a.ad:hover{color:#00492c}

.topgrid{display:block}.tg-l{flex:none}
