:root{--navy:#00492c;--bg:#f4f6f9;--line:#d9dee6;--mut:#6b7686;--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}
nav{background:#fff;border-bottom:3px solid var(--navy);color:var(--navy);display:flex;align-items:center;gap:2px;padding:0 20px;height:56px}
nav a{color:#3a4a42;text-decoration:none;padding:18px 12px;font-weight:600}nav a:hover{color:var(--navy);background:#eaf3ee}nav a.on{color:var(--navy);box-shadow:inset 0 -3px 0 var(--navy)}
nav .brand{padding:0 22px 0 0;display:flex;align-items:center}nav .brand:hover{background:none}nav .brand img{height:22px;display:block}nav .sp{flex:1}nav .who{font-size:12px;color:var(--mut)}
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:var(--mut);display:block}.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,nav,.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:0;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}

/* ===== 모바일(폰) 화면 ===== */
nav{overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch}
nav::-webkit-scrollbar{display:none}
nav a,nav .who{flex:none;white-space:nowrap}
@media (max-width:768px){
 body{font-size:13px}
 nav{padding:0 10px;height:48px;gap:0}
 nav a{padding:14px 9px;font-size:13px}
 nav .brand{padding:0 12px 0 0}nav .brand img{height:18px}
 nav .sp{flex:0 0 12px}
 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:880px;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: 메뉴 묶음(드롭다운) · 원가집계 스크롤 */
.dd{position:relative;flex:none}
.dd>button{background:none;color:#3a4a42;font-weight:600;padding:18px 12px;border:0;border-radius:0;font-size:14px}
.dd>button:hover,.dd.open>button{color:var(--navy);background:#eaf3ee}.dd>button.on{color:var(--navy);box-shadow:inset 0 -3px 0 var(--navy)}
.ddm{display:none;position:absolute;top:100%;left:0;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}
.dd.open .ddm{display:block}.ddm a{display:block;padding:10px 14px}
@media(min-width:769px){nav{overflow:visible;white-space:normal;flex-wrap:wrap;height:auto;min-height:56px}nav a{padding:18px 11px}}
@media(max-width:768px){.dd>button{display:none}.ddm{display:contents}.dd{display:contents}}
.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}
