*{box-sizing:border-box}body{margin:0;font-family:-apple-system,"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",sans-serif;background:#f4f6f9;color:#1f2937;font-size:16px}
a{color:#1f4e79;text-decoration:none}a:hover{text-decoration:underline}
.layout{display:flex;min-height:100vh}
.side{width:220px;background:#1f2a3a;color:#cbd5e1;padding:18px 0;flex-shrink:0}
.side .brand{color:#fff;font-weight:700;font-size:18px;padding:0 20px 18px}
.side .brand small{display:block;font-weight:400;font-size:12px;color:#94a3b8}
.side .cat{padding:10px 20px;color:#fff;font-weight:600;display:block}
.side .cat.active{background:#2c3b52}
.side .sub a{display:block;padding:7px 20px 7px 40px;color:#cbd5e1;font-size:15px}
.side .sub a.on{color:#fff;background:#34465f;font-weight:600}
.side .add{padding:14px 20px;color:#64748b;font-size:12px}
.side form{padding:10px 20px}
.main{flex:1;padding:24px 32px;max-width:1200px}
.top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
h1{font-size:22px;margin:0}h2{font-size:17px;margin:24px 0 10px}
.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap;line-height:1.4;vertical-align:middle}
.b-test{background:#dbeafe;color:#1e40af}.b-real{background:#fee2e2;color:#b91c1c}
.b-ok{background:#dcfce7;color:#166534}.b-err{background:#fee2e2;color:#b91c1c}.b-run{background:#fef3c7;color:#92400e}.b-none{background:#e5e7eb;color:#4b5563}
.card{background:#fff;border-radius:10px;box-shadow:0 1px 3px rgba(0,0,0,.08);padding:18px 20px;margin-bottom:16px}
table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:9px 10px;border-bottom:1px solid #e5e7eb;text-align:left;font-size:15px;vertical-align:top}
th{background:#f8fafc;color:#475569;font-weight:600}
.num{text-align:right;font-variant-numeric:tabular-nums}
.btn{display:inline-block;border:0;border-radius:7px;padding:8px 14px;font-size:15px;cursor:pointer;background:#1f4e79;color:#fff;font-family:inherit}
.btn.gray{background:#e5e7eb;color:#111}.btn.red{background:#b91c1c}.btn.sm{padding:5px 10px;font-size:13px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.flash{padding:12px 16px;border-radius:8px;margin-bottom:16px;white-space:pre-line}
.flash.ok{background:#dcfce7;color:#166534}.flash.err{background:#fee2e2;color:#991b1b}
.warn{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;padding:10px 14px;border-radius:8px;margin-bottom:14px}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px}
label{display:block;font-size:14px;color:#475569;margin-bottom:4px}
input[type=text],input[type=number],input[type=email],input[type=password],select{width:100%;padding:8px 10px;border:1px solid #cbd5e1;border-radius:7px;font-size:15px;font-family:inherit}
.req::after{content:" *";color:#b91c1c}
.month-head{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.month-head .t{font-size:18px;font-weight:700;min-width:120px}
.chk{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.chk input{width:18px;height:18px}
.muted{color:#6b7280;font-size:14px}
.login{max-width:360px;margin:12vh auto}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.tile{background:#fff;border-radius:10px;padding:20px;box-shadow:0 1px 3px rgba(0,0,0,.08);display:block;color:inherit}
.tile .i{font-size:28px}.tile .n{font-size:17px;font-weight:700;margin-top:6px}
.scroll{overflow-x:auto;margin:12px 0}
table.year th,table.year td{padding:6px 6px;font-size:12.5px;text-align:center;border-right:1px solid #eef0f3}
table.year .co{text-align:left;min-width:120px;position:sticky;left:0;background:#fff}
table.year th.co{background:#f8fafc}
table.year .now{background:#f0f7ff}
table.year .tot{background:#f8fafc;white-space:nowrap}
table.year tr.sum td{background:#f8fafc;font-size:12px}
.ck{display:flex;align-items:center;gap:3px;justify-content:flex-start;font-size:12px;margin:2px 0;cursor:pointer;color:#374151;white-space:nowrap}
.ck input{width:15px;height:15px;margin:0}
.ck.p input{accent-color:#15803d}.ck.i input{accent-color:#1f4e79}
.tag{display:inline-block;font-size:10px;font-weight:700;border-radius:4px;padding:0 4px;line-height:15px}
.t-auto{background:#dbeafe;color:#1e40af}.t-man{background:#fef3c7;color:#92400e}
.pick summary{cursor:pointer;padding:6px 0}.pick h3{font-size:14px;margin:6px 0}
.pickrow{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid #f1f5f9}
.pickrow form,.inline{display:inline}.inline input[type=text],.inline select{width:auto;min-width:180px}
.main:has(.dash){max-width:1500px}
table.year th,table.year td{padding:5px 4px}
table.year .co{min-width:110px}
.nbadge{display:inline-block;min-width:20px;padding:0 6px;border-radius:999px;background:#ef4444;color:#fff;font-size:12px;line-height:20px;text-align:center;margin-left:6px}
.alerts{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}
.alert{border-radius:10px;padding:12px 16px;border:1px solid;background:#fff}
.a-urgent{border-color:#fca5a5;background:#fef2f2}.a-warn{border-color:#fcd34d;background:#fffbeb}.a-info{border-color:#bfdbfe;background:#eff6ff}
.a-none{border-color:#e5e7eb;color:#6b7280;font-size:13px;padding:8px 14px}
.a-head{font-size:15px}.a-icon{margin-right:6px}.a-text{font-size:13px;color:#4b5563;margin:4px 0 6px}
.a-tbl{width:auto;background:transparent;margin:4px 0}.a-tbl th,.a-tbl td{padding:3px 14px 3px 0;border:0;background:transparent;font-size:13px}
.a-act{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}.a-act form{display:inline}
.gauge{height:10px;background:#e5e7eb;border-radius:999px;overflow:hidden;min-width:120px}
.gauge>i{display:block;height:100%;border-radius:999px}
.g-green>i{background:#22c55e}.g-yellow>i{background:#eab308}.g-red>i{background:#ef4444}.g-done>i{background:#94a3b8}
.dday{font-weight:700;font-size:13px}.dday.g-green{color:#15803d}.dday.g-yellow{color:#a16207}.dday.g-red{color:#b91c1c}

/* 날짜 고르기: [연도] [월] [일] 큰 버튼 + 큰 버튼 판 (전체 공통) */
.dp{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
.dp-btn{min-height:46px;padding:8px 14px;font-size:17px;font-family:inherit;border:1px solid #cbd5e1;border-radius:9px;background:#fff;cursor:pointer;color:#0f172a}
.dp-btn:hover,.dp-btn:focus{border-color:#1f4e79;background:#f0f6fc;outline:none}
.dp-btn.empty{color:#94a3b8}
.dp-y{min-width:96px}.dp-m{min-width:70px}.dp-d{min-width:70px}.dp-dom{min-width:130px}
.dp-clr{border:none;background:none;color:#94a3b8;font-size:18px;cursor:pointer;padding:6px}
.dp-clr:hover{color:#b91c1c}
.dp-pop{position:absolute;z-index:1000;background:#fff;border:1px solid #cbd5e1;border-radius:12px;box-shadow:0 12px 32px rgba(15,23,42,.22);padding:12px;min-width:300px;max-width:96vw}
.dp-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:16px}
.dp-head b{flex:1}
.dp-nav,.dp-x{border:1px solid #e2e8f0;background:#f8fafc;border-radius:8px;padding:6px 10px;font-size:14px;cursor:pointer;font-family:inherit}
.dp-grid{display:grid;gap:6px}
.dp-grid button{min-width:52px;min-height:50px;font-size:17px;font-family:inherit;border:1px solid #e2e8f0;border-radius:9px;background:#f8fafc;cursor:pointer}
.dp-grid button:hover:not(:disabled),.dp-grid button:focus{background:#dbeafe;border-color:#1f4e79;outline:none}
.dp-grid button.sel{background:#1f4e79;color:#fff;border-color:#1f4e79;font-weight:700}
.dp-grid button.wide{grid-column:span 2}
.dp-grid button:disabled{opacity:.35;cursor:not-allowed}
/* 대시보드 현황 카드: 머리줄을 누르면 접기/펼치기 */
.card-head{cursor:pointer;user-select:none}
.cardtoggle{border:none;background:none;padding:4px 6px;font:inherit;cursor:pointer;display:inline-flex;gap:6px;align-items:center;border-radius:8px}
.cardtoggle:hover{background:#f1f5f9}
.cardtoggle .caret{font-size:18px;color:#1f4e79;width:18px}
.legend{margin:6px 0 8px}
table.year.recent th,table.year.recent td{font-size:14px;padding:8px 10px}
table.year.recent .cell{min-width:150px}
/* 탭 (바로빌 상태: 내 사업자 고르기) */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 14px;border-bottom:2px solid #e2e8f0}
.tab{padding:10px 16px;border:1px solid #e2e8f0;border-bottom:none;border-radius:10px 10px 0 0;background:#f8fafc;color:#334155;text-decoration:none;font-size:15px;margin-bottom:-2px}
.tab:hover{background:#eef4fb}
.tab.on{background:#fff;color:#1f4e79;font-weight:700;border-color:#1f4e79;border-bottom:2px solid #fff}

/* 부동산: 큰 글씨 (계약 목록 + 추가/수정 + 재계약) */
.re-page table th,.re-page table td{font-size:17px;padding:14px 12px;vertical-align:middle}
.re-page table th{font-size:15px;color:#334155}
.re-page .muted{font-size:15px}
.re-page label{font-size:16px;color:#334155;margin:4px 0 6px}
.re-page input[type=text],.re-page select{font-size:17px;padding:11px 12px;min-height:46px}
.re-page form.card h2{font-size:21px}
.re-page .btn{font-size:16px;padding:10px 16px}.re-page .btn.sm{font-size:15px;padding:7px 12px}
.re-page .gauge{height:16px;min-width:160px}
.re-page .dday{font-size:17px}
.re-page .grid{gap:16px 20px}
.auto-end{display:inline-flex;gap:6px;align-items:center;margin-left:8px;flex-wrap:wrap}
/* 부동산 계약 폼: 한 줄에 하나씩 위→아래 (시작일·만료일만 나란히) */
.re-form{display:flex;flex-direction:column;align-items:flex-start;gap:14px;max-width:760px}
.re-form .f{width:100%}
.re-form .f > input[type=text],.re-form .f > select{max-width:520px}
.re-form .pair{display:flex;gap:28px;flex-wrap:wrap;align-items:flex-start}
.re-form .pair > div{flex:0 1 auto}
.re-form.renew{min-width:min(560px,90vw);max-width:none;text-align:left}
.re-page .addr{font-size:15px;color:#475569;margin-top:2px}
.re-page td.no,.re-page th.no{width:54px;text-align:center;color:#64748b;font-variant-numeric:tabular-nums;font-weight:700}
.re-form .auto-end{display:flex;margin:6px 0 0}
.re-page .dday,.re-page td.num{white-space:nowrap}
.re-page table td{padding:12px 10px}
.main:has(.re-page){max-width:none}
.renew-row td{background:#f8fafc}.renew-box{border:1px solid #cbd5e1;border-radius:12px;background:#fff;padding:16px 20px;max-width:820px}
.re-form.renew{min-width:0;margin-top:10px}

/* ---- 표 반응형: 글자가 한 글자씩 세로로 꺾이지 않게 ---- */
.main{min-width:0}
th,td{word-break:keep-all;overflow-wrap:normal}
th{white-space:nowrap}
.nowrap{white-space:nowrap}

.tscroll.card{padding:0}
.tscroll>table{min-width:100%}

td.num,th.num{white-space:nowrap}
.one{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}
/* 부동산 목록 */

table.re-list td.nm{min-width:190px;max-width:300px}
table.re-list td.nm b{white-space:nowrap}
.re-page .addr,.re-dash .addr{font-size:14px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px}
.kind{display:inline-block;padding:3px 9px;border-radius:999px;font-size:14px;font-weight:700;white-space:nowrap}
.k-reg{background:#e0f2fe;color:#075985}.k-shop{background:#fef3c7;color:#92400e}
td.acts{white-space:nowrap}
td.acts .btn,td.acts form{margin:0 2px}
.btn.ic{padding:6px 9px;font-size:15px;line-height:1}
.gwrap{display:flex;align-items:center;gap:10px;min-width:260px}
.gwrap .gauge{flex:1}
.dday{white-space:nowrap}
table.re-dash td.nm{min-width:170px}
table.re-dash .gwrap{min-width:300px}
table.year td.co{white-space:nowrap}
.b-expired{background:#fee2e2;color:#b91c1c;border:1px solid #fca5a5;margin-left:4px;vertical-align:middle}
.b-out{background:#f1f5f9;color:#334155}.b-renew{background:#e0f2fe;color:#075985}

/* 홈 아래 메뉴 바로가기: 작게 */
.tiles{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.tiles .tile{width:132px;padding:10px 12px;display:flex;align-items:center;gap:8px;border-radius:10px;min-height:0}
.tiles .tile .i{font-size:20px;line-height:1}
.tiles .tile .n{font-size:14px;font-weight:700;margin:0;white-space:nowrap}
.tiles .tile .muted{display:none}
.chkbtn .nbadge{margin-left:4px}

.done-on{margin-top:6px}.done-on .dp-btn{min-height:36px;font-size:14px;padding:4px 8px}.done-on .dp-y{min-width:70px}.done-on .dp-m,.done-on .dp-d{min-width:48px}
.order-dlg{border:none;border-radius:14px;padding:16px 18px;min-width:340px;max-width:92vw;box-shadow:0 20px 50px rgba(15,23,42,.3)}
.order-dlg::backdrop{background:rgba(15,23,42,.35)}
.dlg-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.dlg-head b{font-size:17px}.dlg-head .dp-x{margin-left:auto}
.order-dlg .pickrow{gap:16px;padding:6px 0}.order-dlg .pickrow form{display:inline}

/* ===== 1.3.2: 옆으로 스크롤 없이 창 너비에 맞추기 ===== */
.tscroll,.scroll{overflow:visible;max-width:100%}
table{table-layout:auto;width:100%}
td{overflow-wrap:anywhere;word-break:keep-all}
.small-note{font-size:13px;margin:0 0 12px;line-height:1.5}
table.re-list td.nm{min-width:0;max-width:none}
.re-page .addr{max-width:none;white-space:normal;word-break:keep-all}
td.c-ten .ph{display:block}
@media (max-width:1240px){
  .side{width:170px}.side .sub a{padding-left:28px}
  .main{padding:18px 16px}
  /* 부동산 목록 → 줄마다 카드 */
  table.re-list,table.re-list tbody{display:block}
  table.re-list tr.thead{display:none}
  table.re-list tr[id^="c"]{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:
     "no nm kind" "no per per" "no prog prog" "no money money" "no acts acts";
     gap:4px 12px;padding:12px 14px;border-bottom:1px solid #e5e7eb;align-items:center}
  table.re-list tr[id^="c"] td{display:block;border:0;padding:0}
  table.re-list .c-no{grid-area:no;align-self:start;padding-top:2px}
  table.re-list .c-nm{grid-area:nm}
  table.re-list .c-kind{grid-area:kind;justify-self:end}
  table.re-list .c-per{grid-area:per;font-size:15px;color:#475569}
  table.re-list .c-per .br-wide{display:none}
  table.re-list .c-prog{grid-area:prog}
  table.re-list .c-dep,table.re-list .c-rent,table.re-list .c-ten{display:inline-block !important;margin-right:18px;text-align:left;font-size:16px}
  table.re-list tr[id^="c"]{grid-template-areas:"no nm kind" "no per per" "no prog prog" "no dep dep" "no rent rent" "no ten ten" "no acts acts"}
  table.re-list .c-dep{grid-area:dep}table.re-list .c-rent{grid-area:rent}table.re-list .c-ten{grid-area:ten}
  table.re-list .c-acts{grid-area:acts;justify-self:end}
  table.re-list [data-l]::before{content:attr(data-l) " ";color:#64748b;font-size:14px;margin-right:4px}
  table.re-list td.c-ten .ph{display:inline;margin-left:8px}
  table.re-list tr.renew-row{display:block}table.re-list tr.renew-row[hidden]{display:none}
  table.re-list tr.renew-row td{display:block;padding:8px 10px}
  table.re-list tr.renew-row td:first-child{display:none}
  .gwrap{min-width:0}
  /* 다른 표들 → 칸마다 '머리글: 값' 카드 */
  table.stack,table.stack tbody{display:block}
  table.stack tr.thead{display:none}
  table.stack tr{display:flex;flex-wrap:wrap;gap:4px 16px;padding:10px 12px;border-bottom:1px solid #e5e7eb}
  table.stack td{display:block;border:0;padding:2px 0;flex:0 1 auto;min-width:0}
  table.stack td[data-l]::before{content:attr(data-l);display:block;font-size:12px;color:#64748b}
  table.stack td[colspan]{flex-basis:100%}
}
/* 대시보드 12개월 표: 창이 좁으면 회사마다 카드(달 칸이 줄바꿈) */
@media (max-width:1500px){
  table.year.full,table.year.full tbody{display:block}
  table.year.full tr.thead{display:none}
  table.year.full tr{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0;border-bottom:2px solid #e2e8f0}
  table.year.full td{border:1px solid #f1f5f9;text-align:left;padding:6px 8px}
  table.year.full td.co,table.year.full tr.sum td.co{grid-column:1/-1;position:static;background:#f8fafc}
  table.year.full td.tot{grid-column:1/-1;text-align:right}
  table.year.full td[data-l]::before{content:attr(data-l);display:block;font-size:12px;font-weight:700;color:#1f4e79}
  table.year.full td.tot::before{display:inline !important;margin-right:8px}
  table.year.full td.tot br{display:none}
}
@media (max-width:1000px){
  table.year.recent,table.year.recent tbody{display:block}
  table.year.recent tr.thead{display:none}
  table.year.recent tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:2px solid #e2e8f0}
  table.year.recent td{border:1px solid #f1f5f9;text-align:left;padding:8px}
  table.year.recent td.co{grid-column:1/-1;background:#f8fafc}
  table.year.recent td.tot{grid-column:1/-1;text-align:right}
  table.year.recent td.tot br{display:none}
  table.year.recent td[data-l]::before{content:attr(data-l);display:block;font-size:12px;font-weight:700;color:#1f4e79}
  table.year.recent .cell{min-width:0}
}
form.card[hidden]{display:none}
/* 월별 현황: 표 하나 */
.biztabs{margin-top:0}
table.months tr.mrow{cursor:pointer}
table.months tr.mrow:hover td{background:#f8fafc}
table.months tr.cur td{background:#eff6ff}
table.months tr.cur td.mm{box-shadow:inset 4px 0 0 #1f4e79}
table.months tr.off td{color:#9ca3af}
table.months tr.off .badge{opacity:.6}
table.months td{vertical-align:middle;white-space:nowrap}
table.months td.acts{text-align:right}
table.months .inl{display:inline}
table.months input[type=checkbox]{width:18px;height:18px}
table.months tr.drow td{background:#fafafa;padding:8px 14px 14px}
table.months table.inner td,table.months table.inner th{font-size:14px;white-space:normal}
@media (max-width:1240px){table.months td,table.months th{padding:8px 6px;font-size:14px}}
.bizbtns{display:flex;flex-wrap:wrap;gap:10px;margin:4px 0 14px}
.bizbtn{display:inline-flex;align-items:center;gap:8px;padding:12px 18px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;color:#1f2937;font-weight:700;text-decoration:none;font-size:16px}
.bizbtn:hover{border-color:#1f4e79;background:#f0f6fc}.bizbtn.on{border-color:#1f4e79;background:#1f4e79;color:#fff}
.bizbtn .caret{font-size:13px;opacity:.8}
@media (min-width:1241px){
  table.re-list .gwrap{min-width:150px;gap:6px}
  table.re-list .dday{font-size:15px}
  table.re-list td.acts{white-space:normal;min-width:170px}
  table.re-list td.acts .btn{margin:2px}
  table.re-list td,table.re-list th{padding:12px 8px}
  table.re-list td.c-per{font-size:15px}
}
.keyform{margin:12px 0;padding:12px;border:1px dashed #cbd5e1;border-radius:10px}.keyform[hidden]{display:none}.modebox{margin-top:16px}
@media (min-width:1241px){
  table.re-list .gwrap{flex-direction:column;align-items:stretch;gap:3px;min-width:130px}
  table.re-list .gwrap .dday{font-size:14px}
  table.re-list td.acts{min-width:0;max-width:190px}
  table.re-list td,table.re-list th{padding:10px 6px;font-size:16px}
  table.re-list td.nm b{white-space:normal}
}
.side .sub .sn{color:#7c8ba1;font-variant-numeric:tabular-nums;margin-right:2px}.side .sub a.help{color:#93c5fd}.side .sub a.on .sn{color:#cbd5e1}
.helpdoc h2{margin:22px 0 6px;font-size:19px}.helpdoc p{line-height:1.8;font-size:17px;margin:4px 0}
.side .cathead{display:flex;align-items:center}.side .cathead .cat{flex:1}
.side .gear{background:none;border:none;color:#7c8ba1;cursor:pointer;font-size:15px;padding:6px 12px 6px 4px}.side .gear:hover{color:#fff}
.side .brandrow{display:flex;align-items:flex-start;justify-content:space-between;padding-right:8px}
.prefdlg{border:none;border-radius:12px;padding:14px 16px;min-width:280px;box-shadow:0 20px 50px rgba(15,23,42,.3)}
.prefdlg::backdrop{background:rgba(15,23,42,.3)}
.prefdlg .pickrow{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:5px 0;border-bottom:1px solid #f1f5f9}
.prefdlg .pickrow form{display:inline}
.subtabs{display:flex;gap:6px;margin:0 0 14px}.stab{padding:9px 16px;border-radius:999px;background:#eef2f7;color:#334155;text-decoration:none;font-weight:700}
.stab.on{background:#1f4e79;color:#fff}table.kv th{width:110px;color:#64748b;font-weight:600;white-space:nowrap}table.kv td,table.kv th{font-size:16px}
.tag.t-err{background:#fee2e2;color:#b91c1c}.tag.t-man{background:#ede9fe;color:#6d28d9}
.filt{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 12px}.filt select{width:auto;min-width:110px}
table.hist td,table.hist th{word-break:keep-all}
@media (max-width:900px){table.hist thead{display:none}table.hist tr{display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;padding:10px 12px;border-bottom:1px solid #e5e7eb}
table.hist td{border:0;padding:0;display:block}table.hist td.num{text-align:left}}
.aspbox{margin:0 0 14px;padding:12px;border:1px dashed #cbd5e1;border-radius:10px}.aspbox select{max-width:260px}
.tag.t-sale{background:#dcfce7;color:#166534}.tag.t-buy{background:#ffedd5;color:#9a3412}.tag.t-hx{background:#e0f2fe;color:#075985}.tag.t-hub{background:#f1f5f9;color:#334155}
.hxbox{margin:0 0 12px}.hxbox .ups{margin-top:10px}.hxbox .ups table{margin:8px 0}
.asplinks{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}
.csrow{display:flex;gap:6px;align-items:center}.csrow input{flex:1;min-width:0}
.price{font-size:.85em;margin-left:6px;white-space:nowrap}
/* 내 사업자 고르기: 버튼 하나 + 누르면 목록 */
.bizpick{position:relative;display:inline-block;margin:0 0 12px}
.bizpick-btn{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px;min-height:52px;padding:10px 18px;font-size:1.3rem;border:2px solid #2563eb;border-radius:12px;background:#fff;color:#1e3a8a;user-select:none}
.bizpick-btn::-webkit-details-marker{display:none}
.bizpick-btn b{font-weight:800}
.bizpick-btn .arrow{font-size:1.1rem;color:#2563eb;transition:transform .15s}
.bizpick[open] .arrow{transform:rotate(180deg)}
.bizpick-list{position:absolute;z-index:30;top:calc(100% + 6px);left:0;min-width:100%;max-width:90vw;background:#fff;border:1px solid #cbd5e1;border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.15);padding:6px}
.bizpick-item{display:block;padding:14px 16px;font-size:1.15rem;font-weight:700;color:#111827;text-decoration:none;border-radius:8px;white-space:nowrap}
.bizpick-item:hover{background:#eff6ff}.bizpick-item.on{background:#dbeafe;color:#1e3a8a}
.bizpick-item .muted{font-weight:400;font-size:.9rem}
details.ups{margin:0 0 12px;padding:10px 14px}details.ups>summary{cursor:pointer;font-size:1.05rem;padding:4px 0}details.ups table{margin:8px 0}
.dlg-foot{display:flex;justify-content:space-between;align-items:center;margin-top:12px;gap:8px}
.toast{position:fixed;top:18px;right:18px;z-index:100;background:#166534;color:#fff;padding:14px 22px;border-radius:12px;font-size:1.1rem;font-weight:700;box-shadow:0 8px 24px rgba(0,0,0,.2);transition:opacity .4s}
.toast.gone{opacity:0;pointer-events:none}
.biztable tr.bizrow{cursor:pointer}.biztable tr.bizrow:hover{background:#f8fafc}.biztable tr.bizrow.open{background:#eff6ff}
.biztable tr.bizedit>td{background:#f8fafc;padding:14px}.biztable .bn{font-variant-numeric:tabular-nums}
.ferr{color:#b91c1c;font-size:.9rem;margin-top:3px;font-weight:600}input.bad-in{border-color:#dc2626;background:#fef2f2}
.rowfoot{display:flex;justify-content:space-between;align-items:center;margin-top:12px;gap:8px}
@media (max-width:900px){.biztable thead{display:none}.biztable tr.bizrow{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:8px 0;border-bottom:1px solid #e5e7eb}.biztable tr.bizrow td{border:0;padding:2px 6px}.biztable tr.bizedit,.biztable tr.bizedit>td{display:block}}
.form-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}
.recentbox{border:1px solid #e2e8f0;border-radius:10px;padding:8px 10px;margin-bottom:12px;background:#f8fafc}
table.mini{width:100%;font-size:.95rem}table.mini td,table.mini th{padding:6px 8px}
.recent-row{cursor:pointer}.recent-row:hover,.recent-row:focus{background:#eff6ff;outline:none}
.lockbiz{padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;background:#f1f5f9;font-size:1.05rem}
.linkbtn{background:none;border:0;color:#2563eb;cursor:pointer;padding:4px 0;font-size:.95rem}
.detail{margin-top:4px}.detail table.kv{font-size:.92rem}
.f.amt{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}.f.amt .amt-col{display:flex;flex-direction:column;gap:8px;width:260px}.f.amt .amt-col input{width:100%}.f.amt .amt-qty{flex:0 0 auto}.total-out{font-size:1.2rem;font-weight:800;padding:4px 0}
.monthtag{display:flex;flex-direction:column;gap:6px}.itemprev{color:#1e3a8a}
/* 부동산 계약 목록: 어느 창 크기에서도 같은 카드 (폭 고정) */
.re-page{max-width:520px}
.re-page .top{max-width:520px}
.re-cards{display:flex;flex-direction:column;gap:12px;width:100%;max-width:520px}
.re-card{width:100%;box-sizing:border-box;padding:14px 16px;margin:0}
.rc-head{display:grid;grid-template-columns:34px 1fr auto;gap:8px;align-items:start}
.rc-head .no{font-weight:800;color:#64748b;padding-top:2px}
.rc-head .nm b{font-size:1.1rem}.rc-head .addr{font-size:.9rem;color:#475569;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:330px}
.rc-kv{display:grid;grid-template-columns:34px 64px 1fr;row-gap:4px;margin:10px 0 0;align-items:center}
.rc-kv dt{grid-column:2;color:#64748b;font-size:.92rem;margin:0;white-space:nowrap}
.rc-kv dd{grid-column:3;margin:0;min-width:0}
.rc-kv dd.num{text-align:left;font-variant-numeric:tabular-nums}
.rc-kv .gwrap{display:flex;align-items:center;gap:8px}.rc-kv .gauge{flex:1;min-width:120px}
.rc-hist{margin:8px 0 0 34px}
.re-card .acts{display:flex;flex-wrap:nowrap;gap:6px;margin:12px 0 0 34px;white-space:nowrap}
.re-card .acts form{display:inline}
.re-card .renew-box{margin:10px 0 0 34px}
/* 홈: 회사마다 작은 카드 (폭 고정, 창 크기와 상관없이 같은 모양) */
.dcards{display:grid;grid-template-columns:repeat(auto-fill,520px);gap:12px;margin-top:10px}
.dcard{width:520px;box-sizing:border-box;border:1px solid #e2e8f0;border-radius:12px;padding:12px 14px;background:#fff}
.dcard .dc-head{margin-bottom:6px}.dcard .dc-head b{font-size:1.05rem}
.dcard .mrow{display:grid;grid-template-columns:130px 1fr 1fr;align-items:center;gap:6px;padding:6px 8px;border-radius:8px}
.dcard .mrow.now{background:#eff6ff;outline:2px solid #bfdbfe}
.dcard .mlab{font-weight:700}.dcard .nowtag{font-size:.75rem;color:#1d4ed8;font-weight:600}
.dcard .dc-sum{margin-top:6px;font-size:.92rem}.dcard.sum{background:#f8fafc}
.re-dashwrap .re-cards{max-width:520px}
@media (max-width:600px){.dcards{grid-template-columns:1fr}.dcard{width:100%}}
/* 발행 폼(수동·자동 같음): 좁은 한 줄 기둥, 모든 칸 같은 폭·좌우 끝 맞춤 */
.issue-form{box-sizing:border-box}
/* 발행 폼(수동·자동 같음): '거래처 추가'와 같은 모양 — 큰 흰 카드, 2칸 격자, 이름은 칸 위 */
.issue-form .igrid{margin-bottom:14px}
.issue-form .igrid>.f{margin:0;min-width:0}.issue-form .igrid>.full{grid-column:1/-1}
.issue-form .igrid label{display:block;font-size:16px;margin:0 0 6px}
.issue-form .igrid input:not([type=checkbox]),.issue-form .igrid select,.issue-form .lockbiz{width:100%!important;box-sizing:border-box;max-width:none!important;margin:0}
.issue-form input,.issue-form select,.issue-form .lockbiz,.issue-form textarea{font-size:17px}
.issue-form .lockbiz{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:9px 10px}
.issue-form .linkbtn{display:inline-block;margin-top:4px}.issue-form .linkbtn:focus{outline:none}.issue-form .linkbtn:focus-visible{text-decoration:underline}
.issue-form .monthtag label.chk{display:inline-flex;gap:6px;align-items:center}
.issue-form .monthtag .nowrap{display:flex;gap:6px;align-items:center;margin-top:6px}.issue-form .monthtag .nowrap input{flex:1}
.issue-form .monthtag .pair{display:grid;grid-template-columns:auto 1fr auto;gap:6px;align-items:center}
.issue-form .monthtag .pair label{margin:0}
.issue-form .recentbox table.mini{font-size:.9rem}
.issue-form .detail{font-size:.9rem}
.issue-form .total-out{padding:6px 0;font-size:1.3rem}
.issue-form .dp{display:grid;grid-template-columns:2fr 1fr 1fr 32px;gap:8px;width:100%}.issue-form .dp .dp-btn{width:100%}
.issue-form .dp-dom{width:100%;text-align:left}
@media (max-width:700px){.issue-form .igrid{grid-template-columns:1fr}}
/* 홈 현황: 거래처 카드 (바깥 큰 칸과 구분되는 그림자·배경), 누르면 올해 12개월 */
.dcards .dcard{background:#eef5fd;border:1px solid #cfe0f3;box-shadow:0 2px 8px rgba(15,23,42,.08);border-radius:14px;padding:14px 16px;min-height:230px;cursor:pointer;transition:box-shadow .15s,border-color .15s}
.dcards .dcard:hover{border-color:#93c5fd;box-shadow:0 4px 14px rgba(30,64,175,.12)}.dcards .dcard:focus{outline:none}.dcards .dcard:focus-visible{outline:2px solid #93c5fd}
.dcard .dc-head{display:flex;align-items:baseline;gap:6px}.dcard .dc-arrow{margin-left:auto;color:#64748b;transition:transform .2s}
.dcard.open12 .dc-arrow{transform:rotate(180deg)}
.dcard.open12{min-height:0}.dcard .dc-year .mrow{padding:8px 10px;font-size:1.04rem}
.dcard label.ck{cursor:pointer;display:inline-flex;align-items:center;gap:6px}
/* 예쁜 초록 체크 */
.dcard input[type=checkbox]{appearance:none;-webkit-appearance:none;width:22px;height:22px;margin:0;border:2px solid #cbd5e1;border-radius:7px;background:#fff;position:relative;cursor:pointer;transition:background .18s,border-color .18s,transform .12s;flex:0 0 auto}
.dcard input[type=checkbox]::after{content:"";position:absolute;left:6px;top:2px;width:6px;height:11px;border:solid #fff;border-width:0 3px 3px 0;transform:rotate(45deg) scale(0);transition:transform .18s cubic-bezier(.3,1.6,.5,1)}
.dcard input[type=checkbox]:checked{background:#22c55e;border-color:#16a34a}
.dcard input[type=checkbox]:checked::after{transform:rotate(45deg) scale(1)}
.dcard input[type=checkbox]:active{transform:scale(.9)}
.dcard input[type=checkbox]:disabled{opacity:.6}

.issue-form .monthtag select,.issue-form .monthtag .pair select{width:auto!important}
.issue-form .monthtag .nowrap input[name=month_suffix]{width:90px!important;flex:0 0 90px}
/* 안쪽 카드는 옅은 파랑 (바깥 흰 칸과 구분) — 홈 현황·부동산 */
.re-card.card{background:#eef5fd;border:1px solid #cfe0f3;box-shadow:0 2px 8px rgba(15,23,42,.08)}
.dcard .mrow.now{background:#dbeafe}
/* 체크포인트: 큰 흰 카드(거래처 추가처럼 꽉 찬 폭), 할 일 제목 다 보임, 누르면 그 줄 아래에 열림 */
.chk-page .top,.chk-page .small-note{max-width:none}
.chk-wrap{display:block}
.chk-side{display:none!important}
.chk-wrap .ck-detail{display:block}.chk-wrap .ck-detail[hidden]{display:none!important}
.chk-group{padding:16px 20px}
.ck-line{grid-template-columns:30px 170px 1fr auto}
.ck-title{white-space:normal;overflow:visible;text-overflow:clip;word-break:keep-all}
.ck-detail{background:#f8fafc;border-radius:8px;margin:2px 0 8px 36px;padding:10px 14px}
.main:has(.chk-page){max-width:1200px}
/* 부동산 체크포인트: 할 일 하나 = 한 줄, 누르면 그 줄 아래에 자세히 */
.re-page.chk-page{max-width:none}
.chk-group{margin:0 0 14px}.cg-head{margin:2px 4px 8px;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.cg-only{margin-left:auto;font-size:14px}
.ck-line{display:grid;grid-template-columns:30px 170px 1fr auto;align-items:center;gap:8px;padding:9px 8px;border-radius:8px;cursor:pointer;font-size:16px}
.ck-line:hover,.ck-line.sel{background:#eff6ff}.ck-line:focus{outline:none}.ck-line:focus-visible{outline:2px solid #93c5fd}
.ck-line .ck-box input{width:20px;height:20px;margin:0}.ck-line .ck-box form{margin:0}
.ck-due{white-space:nowrap;font-variant-numeric:tabular-nums}.ck-due .dday{font-size:14px!important;margin-left:4px}
.ck-title{font-weight:600}
.ck-fine{font-size:12px;padding:2px 6px;white-space:nowrap}
.ck-item+.ck-item{border-top:1px solid #f1f5f9}
.ck-item.done .ck-line{opacity:.55}
.ck-detail p{margin:4px 0 8px}
.ck-kv{display:grid;grid-template-columns:7em minmax(0,1fr);gap:2px 12px;margin:0 0 8px;align-items:center}.ck-kv dt{color:#64748b;white-space:nowrap;margin:0;min-height:28px;display:flex;align-items:center}.ck-kv dd{margin:0;color:#1f2937;min-width:0;min-height:28px;display:flex;align-items:center;flex-wrap:wrap;gap:0 6px;overflow-wrap:anywhere}.ck-kv dd .badge{line-height:1.4}
@media (max-width:640px){.ck-line{grid-template-columns:30px 1fr auto}.ck-due{grid-column:2}.ck-title{grid-column:2/-1}}
/* 부동산 카드: 폭 고정, 창이 넓어지면 칸이 늘어남 */
.main:has(.re-page .re-cards){max-width:none}
.re-page:has(.re-cards){max-width:none}
.re-page .re-cards{display:grid;grid-template-columns:520px;max-width:none;width:auto}
@media (min-width:1300px){.re-page .re-cards{grid-template-columns:repeat(2,520px)}.re-page:has(.re-cards) .top{max-width:1052px}}
@media (min-width:1850px){.re-page .re-cards{grid-template-columns:repeat(3,520px)}.re-page:has(.re-cards) .top{max-width:1584px}}
@media (max-width:700px){.re-page .re-cards{grid-template-columns:1fr}}
.re-page:has(.re-cards)>*:not(.re-cards):not(.top){max-width:520px}

.aspuse-row{margin:0 0 12px}
.aspuse{display:inline-block;padding:8px 14px;border-radius:999px;font-size:16px;border:2px solid #1f4e79;background:#eff6ff;color:#1f4e79}
.aspuse.test{border-color:#2563eb}.aspuse.real{border-color:#b91c1c;background:#fef2f2;color:#991b1b}
.dc-biz{font-size:12px;margin-left:6px;white-space:nowrap}
/* 입력칸 이름(라벨): 크고 굵고 진하게 — 허브 모든 폼 (체크박스·라디오 글자는 그대로) */
label{font-size:15px;font-weight:700;color:#111827}
.issue-form .igrid label{font-size:16px;font-weight:700;color:#111827}
label.chk,label:has(>input[type=checkbox]),label:has(>input[type=radio]),.dcard label,.ck-box label{font-weight:400;color:inherit;font-size:inherit}
.issue-form .igrid label .req,label .req{color:#dc2626}
/* 넓은 화면: 본문을 가운데로 (양옆 여백 같게). 반 화면이면 지금처럼 꽉 채움. 사이드바는 왼쪽 그대로 */
.main{margin-left:auto;margin-right:auto;width:100%;box-sizing:border-box}
.main:has(.re-page),.main:has(.re-page .re-cards){max-width:1650px}
/* 수정발행 */
.amend-codes{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 14px}
.amend-code{display:flex!important;gap:8px;align-items:flex-start;border:1px solid #e2e8f0;border-radius:10px;padding:10px 12px;cursor:pointer}
.amend-code:has(input:checked){border-color:#2563eb;background:#eff6ff}
.amend-code.off{opacity:.5;cursor:not-allowed}
@media (max-width:700px){.amend-codes{grid-template-columns:1fr}}
.amend-docs .neg{color:#b91c1c}.t-amend{background:#fef3c7;color:#92400e}.amend-of{margin-top:4px}
.amend-btn{margin-top:6px}
.am-f[hidden]{display:none!important}
/* 홈 카드: + 거래처 추가 / ✕ 빼기 */
.dc-add{display:inline-block;position:relative;margin-right:6px}.dc-add>summary{list-style:none;cursor:pointer}.dc-add>summary::-webkit-details-marker{display:none}
.dc-add-box{position:absolute;right:0;top:110%;z-index:20;background:#fff;border:1px solid #cbd5e1;border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.15);padding:12px;width:320px}
.dc-add-box select{width:100%;margin:4px 0 8px}
.dc-del{margin:0 0 0 6px;display:inline}.dc-x{border:0;background:transparent;color:#94a3b8;font-size:15px;cursor:pointer;padding:0 4px;line-height:1}.dc-x:hover{color:#dc2626}
.key-warn{color:#b91c1c;font-weight:700;margin-top:4px}
/* 발행 카드 = 거래처 등록 카드처럼 본문 폭 꽉 (넓은 화면은 가운데 본문 폭까지) */
.re-form.issue-form,.issue-form{max-width:none!important;width:100%}
.re-form.issue-form{align-items:stretch}.issue-form>.igrid,.issue-form>.form-head,.issue-form>.recentbox{width:100%;box-sizing:border-box}
/* 저장 공통 틀: 카드 오른쪽 아래 [저장하기] 하나 */
.save-bar{display:flex;align-items:center;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid #eef2f7;width:100%;box-sizing:border-box}
.save-bar .save-left{margin-right:auto;display:flex;gap:8px}.save-bar .save-note{margin-right:8px}
.save-bar .savebtn{min-width:110px;font-weight:700}
form.saveform.is-dirty .save-bar .savebtn{box-shadow:0 0 0 3px #bfdbfe}
form.saveform.is-dirty .save-bar::before{content:'바뀐 게 있어요';color:#b45309;font-size:13px;order:1;margin-left:auto}
form.saveform.is-dirty .save-bar .save-left{margin-right:0}
form.saveform.is-dirty .save-bar .savebtn{order:2}
.toast.toast-err{background:#fee2e2!important;color:#b91c1c!important;border:1px solid #fca5a5}

.txtbtns{margin-top:4px;font-size:13px}.txtbtn{color:#2563eb;text-decoration:none;font-weight:600}.txtbtn:hover{text-decoration:underline}.cancel-btn{color:#b91c1c}.err-text{color:#b91c1c}

/* 체크포인트: 완료해도 안 숨김 — 초록 ✓ + 완료일, 그룹 맨 아래 흐리게 */
.ck-item.done .ck-line{opacity:.6}.ck-item.done .ck-title{text-decoration:line-through;text-decoration-color:#94a3b8}
.ck-donetag{display:inline-block;background:#dcfce7;color:#15803d;font-weight:700;font-size:12px;border-radius:999px;padding:1px 8px;white-space:nowrap;animation:ckpop .25s ease-out}
@keyframes ckpop{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}
.ck-box input[type=checkbox]{accent-color:#16a34a;width:18px;height:18px}

.kindf{display:inline-flex;align-items:center;gap:4px;margin:0 4px;font-weight:600;white-space:nowrap}
tr.hrow{cursor:pointer}tr.hrow:hover td{background:#f8fafc}tr.hdetail td{background:#f8fafc;font-size:13px}
td .txtbtns{margin-left:6px;white-space:nowrap}td .txtbtns .txtbtn+.txtbtn{margin-left:6px}
/* v1.3.6 홈: 최근 거래 10곳 — 작고 크기 고정, 연파랑 */
.dcards.r10{grid-template-columns:repeat(auto-fill,340px);align-items:start}
.dcards .dcard.r10{width:340px;min-height:150px;padding:12px 14px}
.dcard.r10 .dc-head{flex-wrap:nowrap;overflow:hidden}.dcard.r10 .dc-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px}
.dc-sum10{display:grid;gap:5px;margin-top:6px;font-size:15px}.dc-sum10 .k{display:inline-block;min-width:68px;color:#475569;font-weight:700}
.dc-sum10 .ok{color:#15803d;font-weight:700}.dc-sum10 .no{color:#b45309}
.dcard.r10 .dc-rows{margin-top:8px;border-top:1px solid #cfe0f3;padding-top:6px;cursor:default}
.dcard.r10 .mrow{grid-template-columns:90px 1fr 1fr;padding:4px 6px}
@media (max-width:600px){.dcards.r10{grid-template-columns:1fr}.dcards .dcard.r10{width:100%}}

/* v1.3.8 모드 (사업자마다) */
.modecard .modeseg{display:flex;gap:12px;flex-wrap:wrap;margin:6px 0 10px}
.modeseg .seg{position:relative;cursor:pointer}
.modeseg .seg input{position:absolute;opacity:0;pointer-events:none}
.modeseg .seg span{display:inline-block;min-width:120px;text-align:center;padding:14px 26px;border-radius:12px;border:3px solid #cbd5e1;background:#fff;color:#475569;font-size:22px;font-weight:800}
.modeseg .seg-real input:checked+span{border-color:#b91c1c;background:#fef2f2;color:#b91c1c}
.modeseg .seg-test input:checked+span{border-color:#2563eb;background:#eff6ff;color:#1d4ed8}
.modeseg .seg input:focus-visible+span{outline:3px solid #f59e0b;outline-offset:2px}
.modeview{font-size:22px}.modeview.real{color:#b91c1c}.modeview.test{color:#1d4ed8}
/* v1.3.9: 모드 표시 = 'OK'와 같은 한 줄 알약 (운영 빨강 · 테스트 파랑) */
.mode-tag{white-space:nowrap}
.biztable td,.biztable th{vertical-align:middle}
.biztable .c-pill{white-space:nowrap;min-width:64px}
.biztable .c-no{white-space:nowrap;min-width:48px}

/* v1.3.8 발행 금액: 왼쪽 단가·공급가액·세액(이름 옆 칸) / 오른쪽 합계(크게) + 작성일자 */
.issue-form .amtbox{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:14px 28px;align-items:start;padding:14px;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc}
.issue-form .amtbox .amt-left{display:flex;flex-direction:column;gap:10px}
.issue-form .amtbox .amt-row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:10px;align-items:center}
.issue-form .amtbox .amt-row label{margin:0;font-weight:700}
.issue-form .amtbox .amt-row input{text-align:right}
.issue-form .amtbox .amt-right{display:flex;flex-direction:column;gap:14px}
.issue-form .amtbox .amt-total label{margin:0 0 2px}
.issue-form .amtbox .total-out{font-size:2rem;font-weight:900;line-height:1.2;padding:2px 0;color:#0f172a}
@media (max-width:700px){.issue-form .amtbox{grid-template-columns:1fr}.issue-form .amtbox .amt-row{grid-template-columns:120px minmax(0,1fr)}}

/* v1.3.9 모드: 접힌 한 줄 (기본 접힘) */
details.modecard{margin:0 0 12px;padding:8px 14px;border:1px solid #e2e8f0;border-radius:10px;background:#fff}
details.modecard>summary{cursor:pointer;font-size:17px;font-weight:700;list-style:none}
details.modecard>summary::-webkit-details-marker{display:none}
details.modecard>summary::before{content:"▶ ";font-size:13px;color:#64748b}
details.modecard[open]>summary::before{content:"▼ "}
details.modecard.real .modeval{color:#b91c1c}details.modecard.test .modeval{color:#1d4ed8}
details.modecard[open]{padding-bottom:12px}
details.modecard .modeseg{margin:10px 0 6px;gap:8px}
details.modecard .modeseg .seg span{min-width:72px;padding:6px 14px;font-size:16px;border-width:2px;border-radius:8px}

/* v1.3.9 발행 금액: 폼과 같은 2칸 격자 (안쪽 회색 상자 없음) — 칸 오른쪽 끝이 위 칸들과 딱 맞게 */
.issue-form .amt-left{display:flex;flex-direction:column;gap:10px}
.issue-form .amt-left .amt-row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:10px;align-items:center}
.issue-form .amt-left .amt-row label{margin:0;font-weight:700}
.issue-form .amt-left .amt-row input{text-align:right}
.issue-form .amt-right{display:flex;flex-direction:column;gap:12px}
.issue-form .amt-right .amt-total label{margin:0 0 2px}
.issue-form .amt-right .total-out{font-size:2rem;font-weight:900;line-height:1.2;padding:0;color:#0f172a}
@media (max-width:700px){.issue-form .igrid-spacer{display:none}.issue-form .amt-left .amt-row{grid-template-columns:120px minmax(0,1fr)}}

.issue-form .form-msg{margin:12px 0 0;font-weight:700}

/* v1.3.9: 기록 → 전자세금계산서 보기 (파란 테두리 표준 양식) */
.einv-tools{display:flex;justify-content:flex-end;margin:4px 0 6px}
.einv-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:12px;width:0;min-width:100%}
.einv{position:relative;min-width:760px;max-width:980px;background:#fff;color:#111827;font-size:13px}
.einv-nts{text-align:right;margin:0 0 4px;font-size:12.5px}
.einv-t{width:100%;border-collapse:collapse;table-layout:fixed;border:2px solid #1d4ed8;border-top-width:0;margin:0}
.einv-t:first-of-type{border-top-width:2px}
.einv-t th,.einv-t td{border:1px solid #93c5fd;padding:5px 6px;vertical-align:middle;word-break:keep-all;overflow-wrap:anywhere;line-height:1.35}
.einv-t th{background:#eff6ff;color:#1e3a8a;font-weight:600;text-align:center}
.einv-t td.c{text-align:center}.einv-t td.num{text-align:right;font-variant-numeric:tabular-nums}
.einv .einv-t td.einv-title{font-size:24px;font-weight:800;color:#1d4ed8;text-align:center;letter-spacing:2px;padding:10px}
.einv-sub{color:#1d4ed8;text-align:center}
.einv-side{width:28px;color:#1d4ed8;line-height:1.25!important}
.einv-items tr.blank td{height:26px}
.einv .einv-t td.einv-say{text-align:left;font-size:14px;padding-left:14px}
.einv-stamp{position:absolute;right:14px;bottom:4px;width:92px;height:92px;border:3px solid;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(-12deg);opacity:.85;font-weight:800;pointer-events:none;background:rgba(255,255,255,.55)}
.einv-stamp span{font-size:17px}.einv-stamp small{font-size:11px;font-weight:700}
.einv-stamp.s-ok{color:#dc2626;border-color:#dc2626}.einv-stamp.s-err{color:#b91c1c;border-color:#b91c1c}
.einv-stamp.s-run{color:#b45309;border-color:#b45309}.einv-stamp.s-gray{color:#6b7280;border-color:#6b7280}
@media print{
  @page{size:A4 portrait;margin:8mm}
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.print-one *{visibility:hidden!important}
  body.print-one .einv.printing,body.print-one .einv.printing *{visibility:visible!important}
  body.print-one .einv.printing{position:absolute;left:0;top:0;min-width:0;width:194mm;max-width:none;break-inside:avoid}
  body.print-one .einv-wrap{overflow:visible;width:auto;min-width:0;max-height:none}
  body.print-one tr.hdetail[hidden]{display:table-row}
}

/* v1.3.9: 매월 자동발행 목록 — 한 줄, 줄바꿈 없음, 카드보다 넓어지지 않음 */
.schlist{padding:4px 0;max-width:100%;min-width:0;box-sizing:border-box;overflow-x:auto}
.sch-row{display:grid;grid-template-columns:minmax(70px,1.1fr) minmax(90px,2fr) minmax(88px,auto) minmax(72px,auto) auto 22px;gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid #e5e7eb}
.sch-row>*{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sch-head{font-weight:700;color:#475569;font-size:13px;background:#f8fafc;padding-top:8px;padding-bottom:8px}
.sch-item-row{cursor:pointer}.sch-item-row:hover{background:#f8fafc}.sch-item-row[aria-expanded="true"]{background:#eff6ff}
.sch-item-row.off{color:#6b7280}
.sch-item small{display:block;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sch-amt{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
.sch-toggle{margin:0;overflow:visible}.sch-toggle .btn{white-space:nowrap}
.sch-row .caret{color:#475569;font-size:20px;line-height:1;text-align:center;overflow:visible}
.sch-detail{padding:10px 18px 14px;background:#f8fafc;border-bottom:1px solid #e5e7eb}
.sch-detail dd{overflow-wrap:anywhere}
.sch-acts{display:flex;gap:8px;margin-top:8px}.sch-acts form{margin:0}
.sch-empty{padding:12px 14px}
@media (max-width:560px){.sch-row{grid-template-columns:minmax(0,1fr) auto 22px}.sch-row>.sch-item,.sch-row>.sch-day,.sch-head>span:nth-child(2),.sch-head>span:nth-child(4){display:none}.sch-row>.sch-toggle{grid-column:auto}}
.hist td[data-l="작성일자"],.hist td[data-l="발급일자"],.hist td[data-l="전송일자"],.hist th{white-space:nowrap}
.biztable td[data-l="사업자번호"],.biztable td[data-l="대표자"]{white-space:nowrap}

/* v1.3.9: 품목 옵션 한 줄 */
.issue-form .monthtag .mt-line{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;min-width:0}
.issue-form .monthtag .mt-line select{width:auto!important;flex:0 0 auto}
.issue-form .monthtag .mt-month{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;white-space:nowrap}
.issue-form .monthtag .mt-suffix{width:64px!important;flex:0 0 64px}
.issue-form .monthtag .mt-sep{color:#94a3b8}
.issue-form .monthtag .mt-extra-l{margin:0;white-space:nowrap;flex:0 0 auto}
.issue-form .monthtag .mt-extra{flex:1 1 auto;min-width:60px;width:auto!important}

/* v1.4.0: 지난 알림 보기 */
.a-hist{font-size:13px;color:#4b5563;margin-top:-4px;padding:0 4px}
.a-none{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}
.a-none>.a-hist{margin:0;padding:0;flex:1 1 auto;text-align:right}
.a-none>.a-hist[open]{flex-basis:100%}
.a-hist-list,.a-h-empty{text-align:left}
.a-h-empty{margin:6px 0 0}
.a-hist>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:4px;color:#6b7280;padding:2px 0}
.a-hist>summary::-webkit-details-marker{display:none}
.a-hist[open]>summary .caret{transform:rotate(180deg)}
.a-hist .caret{display:inline-block;font-size:12px;transition:transform .15s}
.a-hist-list{list-style:none;margin:6px 0 0;padding:8px 12px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;max-height:320px;overflow:auto}
.a-h{padding:6px 0;border-bottom:1px solid #f1f5f9;display:flex;flex-wrap:wrap;gap:4px 6px;align-items:baseline}
.a-h:last-child{border-bottom:0}
.a-h-when{margin-left:auto;white-space:nowrap}
.a-h-open{color:#b45309}

/* v1.4.1: 업태/종목 줄 (홈택스처럼) */
.bk-wrap{container-type:inline-size}
.bk-line{display:grid;grid-template-columns:auto minmax(48px,1fr) auto auto minmax(48px,1.2fr);gap:6px;align-items:center}
.bk-line-b{grid-template-columns:auto minmax(48px,1fr) auto minmax(48px,1.2fr)}
.bk-l{color:#64748b;font-size:.9rem;white-space:nowrap}
.bk-box{display:block;min-width:0;height:38px;line-height:36px;padding:0 8px;border:1px solid #cbd5e1;border-radius:8px;background:#f1f5f9;color:#1f2937;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box}
.bk-ctl{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.bk-tag{font-size:.75rem;padding:1px 6px;background:#e0f2fe;color:#075985}.bk-tag.sub{background:#fef3c7;color:#92400e}
.bk-swap{white-space:nowrap}

/* v1.4.1: 품목 | 품목 일자 · 수량 */
.item-right{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:0 12px;align-items:end}
.item-right label{white-space:nowrap}
.idate-line{display:flex;align-items:center;gap:6px}
.idate-m{white-space:nowrap;color:#1f2937}
.idate-sel{min-width:0;flex:1}

/* v1.4.1: 피드백 */
.side-foot{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin:14px 0 0;padding:0 20px}
.side-link{color:#cbd5e1;text-decoration:none;font-size:.92rem}.side-link.on,.side-link:hover{color:#fff}
.fbdlg{width:min(460px,92vw)}.fbform{display:flex;flex-direction:column;gap:6px}.fbform textarea{width:100%;box-sizing:border-box;resize:vertical}
.fb-msg{color:#b91c1c;min-height:1.2em}
.fb-item{padding:10px 0;border-bottom:1px solid #eef2f7}.fb-item:last-child{border-bottom:0}.fb-item.unread .fb-body{font-weight:600}
.fb-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.fb-acts{margin-left:auto;display:flex;gap:6px}.fb-acts form{margin:0}
.fb-body{margin-top:6px;white-space:pre-wrap;overflow-wrap:anywhere;color:#1f2937}
.bk-swap{padding:4px 8px}
/* v1.4.1: 사업자번호 칸도 다른 칸과 같은 폭 — [상태 조회]는 라벨 줄 오른쪽 */
.lbl-row{display:flex;align-items:center;gap:8px;margin-bottom:4px}.lbl-row .btn{padding:0 8px;line-height:1.5;font-size:.78rem;margin:-8px 0}.lbl-row .lbl-act{margin-top:-8px;margin-bottom:-8px}.lbl-row label{margin:0}.lbl-row .lbl-act{margin-left:auto;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}

/* v1.4.2: 수정발행 날짜 칸 = 다른 칸 (높이·모서리·글자) */
.amend-form .dp{grid-template-columns:2fr 1fr 1fr auto}.amend-form .dp .dp-btn{min-height:0;height:43px;padding:0 10px;font-size:17px;border-radius:7px;box-sizing:border-box}
.amend-form .igrid select{height:43px;box-sizing:border-box}
/* v1.4.2: 거래처 추가/수정 — 라벨은 칸 왼쪽 같은 줄 (라벨 폭 7em 고정, 모든 칸 왼쪽·오른쪽 끝 맞춤) */
.bform .grid > div{display:grid;grid-template-columns:7em minmax(0,1fr);column-gap:8px;align-items:center;align-content:start}
.bform .grid > div > label,.bform .lbl-row label{margin:0;white-space:nowrap;grid-column:1;grid-row:1}
.bform .grid > div > input,.bform #biz-no{grid-column:2;grid-row:1;width:100%;box-sizing:border-box}
.bform .lbl-row{display:contents}
.bform .lbl-row .lbl-act{grid-column:2;grid-row:2;justify-self:end;margin:4px 0 0}
.bform #cs-out{grid-column:2;grid-row:3}
.bform .grid{container-type:inline-size}
@container (max-width:560px){.bform .grid > div{grid-template-columns:5em minmax(0,1fr);column-gap:6px}.bform .grid > div > label,.bform .lbl-row label{font-size:.85rem}}
@container (max-width:360px){.bform .grid > div{display:block}.bform .lbl-row{display:flex}.bform .grid > div > label{display:block;margin-bottom:4px}}
/* v1.4.3: [상태 조회]·요금은 사업자번호 칸 위 제목 줄 오른쪽 (줄 안 늘어남) */
.bform .grid > div:has(#biz-no){position:relative}
.bform .lbl-row .lbl-act{position:absolute;grid-area:auto;right:0;bottom:calc(100% + 8px);margin:0}
.bform #cs-out:empty{display:none}
@container (max-width:360px){.bform .lbl-row{flex-wrap:wrap}.bform .lbl-row .lbl-act{position:static;margin-left:auto}}
/* v1.4.4: 업태·종목 칸을 누르면 목록 (주/부N) */
.bk-line,.bk-line-b{grid-template-columns:auto minmax(0,1fr) auto minmax(0,1.2fr)}
.issue-form .igrid select.bk-sel,select.bk-sel{min-width:0;width:100%!important;height:38px;padding:0 26px 0 8px;font-size:15px;border:1px solid #cbd5e1;border-radius:8px;background-color:#fff;color:#1f2937;cursor:pointer;text-overflow:ellipsis;box-sizing:border-box}
select.bk-sel:hover,select.bk-sel:focus{border-color:#1f4e79}
/* v1.4.4: 내 사업자 부업태 여러 줄 */
.sublist,.subrow{display:contents}.sub-add{grid-column:1/-1;display:flex;align-items:center;gap:8px}
.sub-lbl{margin-bottom:0}.sub-lbl label{margin:0}
.sub-del,.bt-del{margin-left:auto;border:none;background:none;color:#94a3b8;font-size:14px;line-height:1;padding:2px 6px;border-radius:6px;cursor:pointer}
.sub-del:hover,.bt-del:hover{color:#b91c1c;background:#fee2e2}
/* v1.4.4: 거래처 업태/종목 여러 줄 (라벨 왼쪽 그대로) */
.bform .grid > div.bt-row{display:contents}
.bform .bt-row > div{display:grid;grid-template-columns:7em minmax(0,1fr);column-gap:8px;align-items:center;align-content:start}
.bform .bt-row > div > label{margin:0;white-space:nowrap;grid-column:1;grid-row:1;display:flex;align-items:center;gap:2px}
.bform .bt-row > div > input{grid-column:2;grid-row:1;width:100%;box-sizing:border-box}
.bform .bt-del{margin-left:2px}
.bt-plus{border:1px solid #cbd5e1;background:#fff;color:#1f4e79;font-size:11px;font-weight:600;line-height:1.4;padding:1px 5px;border-radius:6px;cursor:pointer;margin-left:2px;vertical-align:1px}
.bt-plus:hover{background:#f0f6fc;border-color:#1f4e79}.bt-plus:disabled{opacity:.5;cursor:default}
@container (max-width:560px){.bform .bt-row > div{grid-template-columns:5em minmax(0,1fr);column-gap:6px}}
@container (max-width:360px){.bform .bt-row > div{display:block}}
/* v1.4.4: 목록 [수정][삭제] 한 줄 */
td.acts2{white-space:nowrap;flex:none;margin-left:auto}.actbtns{display:flex;gap:6px;align-items:center;flex-wrap:nowrap}.actbtns form{display:inline;margin:0}
.actbtns .btn.sm{padding:4px 10px;font-size:.8rem;line-height:1.3;border-radius:7px}
.btn.b-edit{background:#fff;color:#1f4e79;border:1px solid #9fb8d3}.btn.b-edit:hover{background:#f0f6fc}
.btn.b-del{background:#fff;color:#b91c1c;border:1px solid #fecaca}.btn.b-del:hover{background:#fef2f2}
/* v1.4.4: 업태·종목 목록 (칸 누르면 뜸) */
.bk-dd{position:relative;display:block;min-width:0}
.bk-dd select.bk-native{position:absolute;opacity:0;pointer-events:none;width:1px!important;height:1px;left:0;top:0}
.bk-ddb{display:flex;align-items:center;gap:6px;width:100%;min-width:0;height:38px;padding:0 8px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#1f2937;font:inherit;font-size:15px;cursor:pointer;text-align:left;box-sizing:border-box}
.bk-ddb:hover,.bk-ddb:focus{border-color:#1f4e79;outline:none}.bk-ddb:disabled{cursor:default;background:#f1f5f9}
.bk-ddb .bk-ddt{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bk-ddb .caret{color:#64748b;font-size:12px}
.bk-ddb .bk-tag:empty{display:none}
.bk-menu{position:absolute;z-index:50;left:0;top:calc(100% + 4px);min-width:100%;width:max-content;max-width:min(440px,80vw);max-height:300px;overflow:auto;background:#fff;border:1px solid #cbd5e1;border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.15);padding:4px}
.bk-buy .bk-menu,.bk-line .bk-dd:last-child .bk-menu{left:auto;right:0}
.bk-opt{display:flex;align-items:flex-start;gap:8px;width:100%;padding:8px 10px;border:none;background:none;border-radius:7px;font:inherit;font-size:15px;color:#1f2937;text-align:left;cursor:pointer;white-space:normal;line-height:1.4}
.bk-opt:hover,.bk-opt:focus{background:#f0f6fc;outline:none}.bk-opt.on{background:#e0f2fe;font-weight:600}
.bk-opt .bk-tag{flex:none;margin-top:1px}
.bform .grid > div[hidden]{display:none}
.sub-lbl{margin-bottom:4px;min-height:0}.sub-lbl .sub-del{margin-top:-6px;margin-bottom:-6px}
/* v1.4.5: ✕ 는 칸과 같은 줄 오른쪽 (칸 + ✕ = 다른 칸 오른쪽 끝) */
.x-in{display:flex;gap:6px;align-items:stretch;min-width:0}.x-in input{flex:1;min-width:0;width:auto!important}
.x-in .x-del{flex:none;margin:0;width:auto;aspect-ratio:1;min-width:34px;padding:0;display:flex;align-items:center;justify-content:center;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#94a3b8;font-size:14px}
.x-in .x-del:hover{color:#b91c1c;background:#fef2f2;border-color:#fecaca}
.bform .bt-row > div > .x-in{grid-column:2;grid-row:1}

/* ===== v1.4.5: 허브 공통 — 라벨은 칸 왼쪽 같은 줄 ('라벨 [칸]', 단가 줄처럼) =====
   폼(또는 칸 묶음)에 class="lf" 만 붙이면: 라벨 폭 고정(--lw, 한 줄), 칸은 그만큼 줄고 왼쪽·오른쪽 끝이 다 맞아요.
   칸 아래 안내·오류·상세보기는 칸 시작 위치에 맞춰요. 새 폼도 class="lf" 로 똑같이 */
.lf{--lw:150px}
.lf :is(.igrid > .f, .grid > div, .subrow > div, .re-form > .f, .pair > div, .aspbox > .asp-f, form > .f, .fbform > .f):has(> label:first-child),
.lf:is(.re-form) > .f:has(> label:first-child){display:grid;grid-template-columns:var(--lw) minmax(0,1fr);column-gap:10px;row-gap:4px;align-items:center;align-content:start;margin-bottom:0}
.lf :is(.igrid > .f, .grid > div, .subrow > div, .re-form > .f, .pair > div, .aspbox > .asp-f, form > .f, .fbform > .f):has(> label:first-child) > *,
.lf:is(.re-form) > .f:has(> label:first-child) > *{grid-column:2;min-width:0}
.lf :is(.igrid > .f, .grid > div, .subrow > div, .re-form > .f, .pair > div, .aspbox > .asp-f, form > .f, .fbform > .f) > label:first-child,
.lf:is(.re-form) > .f > label:first-child{grid-column:1;grid-row:1;margin:0!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.lf .ferr,.lf .detail{grid-column:2}
.lf .linkbtn{justify-self:start;padding-left:0}
/* 폼마다 라벨 폭 */
.lf.amend-form{--lw:150px}
.bizform.lf{--lw:7.6em}
.lf-re{--lw:8.4em}
.fbform.lf{--lw:3.4em}.fbform.lf > .f{margin-bottom:10px!important}.fbform.lf .fb-bodyf{align-items:start!important}.fbform.lf .fb-bodyf > label{padding-top:8px}
.lf-login{--lw:5em}.lf-login > .f{margin-bottom:12px!important}
.lf-key{--lw:max-content}
/* 발행 폼: 단가 줄과 같은 폭, 업태·종목 줄은 칸 두 개만 */
.issue-form.lf .amt-left .amt-row{grid-template-columns:var(--lw) minmax(0,1fr)}
.issue-form.lf .bk-l{display:none}
/* v1.4.6: 업태·종목은 늘 좌우 한 줄(반반), 긴 이름은 칸에서 … + title·펼친 목록에 전체 */
.lf .bk-line,.lf .bk-line-b{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:6px;row-gap:0}.lf .bk-l{display:none}
.issue-form.lf .amt-right .total-out{font-size:1.6rem;line-height:43px}
.issue-form.lf .amt-right{align-self:start}
.issue-form.lf .item-right{grid-template-columns:var(--lw) minmax(0,1fr)}
.issue-form.lf .sch-start .muted{grid-column:1/-1}
.issue-form.lf .monthtag{align-items:start!important}.issue-form.lf .monthtag > label{padding-top:2px}
.issue-form.lf .dp{min-width:0}.issue-form.lf .dp .dp-btn{min-width:0!important;padding-left:6px;padding-right:6px}.issue-form.lf .dp-clr{padding:4px}
/* 내 사업자: ASP 줄도 같은 2칸 격자 */
.bizform.lf .aspbox{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px}.bizform.lf .aspbox > .aspf{grid-column:1/-1}
.bizform.lf .aspbox{margin-left:-13px;margin-right:-13px}
.bizform.lf .aspbox select{max-width:none}
.issue-form.lf .dp{grid-template-columns:2fr 1fr 1fr 22px;gap:6px}.issue-form.lf .dp .dp-btn{white-space:nowrap;font-size:16px;padding:0 4px;min-height:0;height:43px;box-sizing:border-box}
/* v1.4.7: 품목 일자 [월 ▾][일 ▾] = 위 업태 칸 폭 (오른쪽 반은 비움) */
.lf .idate-line{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;width:calc((100% - 6px) / 2);min-width:0}
.lf .idate-line select{min-width:0;width:100%;appearance:none;-webkit-appearance:none;height:43px;box-sizing:border-box;padding:0 13px 0 5px!important;font-size:15px;text-overflow:ellipsis;white-space:nowrap;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M0 0l4 5 4-5z' fill='%2364748b'/%3E%3C/svg%3E") no-repeat right 4px center}
/* v1.4.7: 업태·종목 펼친 목록 = 그 칸 폭 그대로 (긴 이름은 안에서 줄바꿈) */
.bk-menu{width:100%;min-width:0;max-width:none;box-sizing:border-box}.bk-buy .bk-menu,.bk-line .bk-dd:last-child .bk-menu{left:0;right:auto}
.bk-menu .bk-opt{align-items:center;white-space:nowrap}.bk-menu .bk-opt .bk-ddt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
/* v1.4.7: 임대 계약서 파일 */
.re-files{display:flex;flex-direction:column;gap:6px;min-width:0}
.re-file{display:flex;align-items:center;gap:8px;min-width:0}.re-file > a:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.re-file .x-del{flex:none;width:34px;height:34px;padding:0;display:flex;align-items:center;justify-content:center;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#94a3b8;font-size:14px;cursor:pointer}
.re-file .x-del:hover{color:#b91c1c;background:#fef2f2;border-color:#fecaca}
.re-slots{display:flex;flex-direction:column;gap:6px}.re-slot input[type=file]{padding:6px;font-size:14px}
.re-file-add{display:flex;align-items:center;gap:8px}.lf-re .re-files-f{align-items:start}.lf-re .re-files-f > label{padding-top:10px}
.clip{font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap}
/* ===== v1.4.7: 본문은 가운데, 폭은 허브 공통(1200px) — 반화면·전체화면 같음 ===== */
.main,.main:has(.re-page),.main:has(.re-page .re-cards){max-width:1200px;margin-left:auto;margin-right:auto;width:100%;box-sizing:border-box}
/* 임대 계약 목록: 한 줄에 카드 하나, 본문 폭 그대로 길고 낮게 */
.re-page,.re-page:has(.re-cards){max-width:none}
.re-page:has(.re-cards) .top,.re-page:has(.re-cards)>*:not(.re-cards):not(.top){max-width:none}
.re-page .re-cards{display:flex;flex-direction:column;gap:12px;max-width:none;width:100%}
.re-page .re-card{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:20px;row-gap:8px;align-items:center;padding:14px 18px}
.re-page .re-card > *{grid-column:1/-1;min-width:0}
.re-page .re-card .rc-head{grid-template-columns:34px minmax(0,1fr) auto;align-items:center}
.re-page .re-card .rc-head .nm{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:12px;row-gap:2px;min-width:0}
.re-page .re-card .rc-head .addr{max-width:none;margin:0}
.re-page .re-card .rc-kv{grid-column:1;display:grid;grid-template-rows:auto auto;grid-auto-flow:column;grid-template-columns:minmax(0,1.5fr) minmax(0,1.7fr) minmax(0,.9fr) minmax(0,.8fr) minmax(0,1.1fr);column-gap:16px;row-gap:2px;margin:0 0 0 42px;align-items:center}
.re-page .re-card .rc-kv dt,.re-page .re-card .rc-kv dd{grid-column:auto}
.re-page .re-card .rc-kv dd{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.re-page .re-card .rc-kv dd.c-prog{overflow:visible}
.re-page .re-card .rc-kv .gauge{min-width:60px}
.re-page .re-card .acts{grid-column:2;grid-row:2;margin:0;align-self:end}
.re-page .re-card .rc-hist,.re-page .re-card .renew-box{margin-left:42px}
@media (max-width:860px){.re-page .re-card .rc-kv{grid-template-rows:none;grid-auto-flow:row;grid-template-columns:64px 1fr;margin-left:0}.re-page .re-card .acts{grid-column:1/-1;grid-row:auto}}
/* v1.4.7: 카드 = 윗줄 [번호 물건명 📎 주소 종류 | 버튼들], 아랫줄 기간·진행·보증금·월세·임차인 (넓으면 한 줄, 좁으면 두 줄) */
.re-page .re-card .rc-head{grid-column:1;grid-row:1}
.re-page .re-card .acts{grid-column:2;grid-row:1;align-self:center}
.re-page .re-card .rc-kv{grid-column:1/-1;grid-row:2;display:flex;flex-wrap:wrap;column-gap:22px;row-gap:6px;margin:0 0 0 42px;grid-template-columns:none;grid-template-rows:none}
.re-page .re-card .rc-kv .kv{display:flex;align-items:center;gap:8px;min-width:0;flex:0 1 auto}
.re-page .re-card .rc-kv .kv dt{grid-column:auto;color:#64748b;font-size:.9rem;white-space:nowrap}
.re-page .re-card .rc-kv .kv dd{grid-column:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.re-page .re-card .rc-kv .k-prog{flex:1 1 260px;max-width:380px}.re-page .re-card .rc-kv .k-prog dd{flex:1;overflow:visible}
.re-page .re-card .rc-kv .k-prog .gauge{min-width:80px}
.re-page .re-card .rc-kv .k-ten dd{max-width:260px}
@media (max-width:860px){.re-page .re-card .acts{grid-column:1/-1;grid-row:3}.re-page .re-card .rc-kv{margin-left:0}}
.re-page .re-card .rc-kv .k-per{flex:0 0 360px}.re-page .re-card .rc-kv .k-prog{flex:1 1 calc(100% - 400px);max-width:none}
@media (max-width:860px){.re-page .re-card .rc-kv .k-per,.re-page .re-card .rc-kv .k-prog{flex:1 1 100%}}
.lf-re .re-files-f{align-items:start!important}.re-page .re-files{max-width:520px}
/* v1.4.8: 스케줄러 표시 */
.brand small.schedtag{display:block;margin-top:2px;font-size:11px;font-weight:600}.schedtag.on{color:#86efac}.schedtag.off{color:#fca5a5}.brand small.sitenote{display:block;font-size:11px;color:#cbd5e1}
/* v1.4.8: 허브 전체 — 칸 안 글자(숫자·예시 글 포함)는 모두 왼쪽 정렬. 년/월/일 칸도 */
input,select,textarea,input::placeholder,textarea::placeholder{text-align:left!important}
.dp-btn,.dp-dom,.bk-ddb{text-align:left!important;justify-content:flex-start}
/* v1.4.9: 기록 — 원본 + 수정/취소(↳) 한 묶음, 오류 숨김 */
table.hist tbody.bundle.multi{background:#f8fafc;outline:1px solid #dbe3ee;outline-offset:-1px}
table.hist tbody.bundle.multi tr.orig td{border-bottom-color:#e8edf4}
table.hist tr.kid td{font-size:.95em;background:#f3f6fa}
table.hist tr.kid td[data-l="거래처"]{padding-left:22px}
.kid-mk{color:#64748b;font-weight:700}
.badge.b-amend{background:#ede9fe;color:#5b21b6;border:0;cursor:pointer;font:inherit;font-size:12px}
.badge.b-cancel{background:#fee2e2;color:#991b1b}
.txtbtn.cancel-btn{background:none;border:0;color:#b91c1c;cursor:pointer;font:inherit;font-size:12px;text-decoration:underline;padding:0 0 0 8px}
.cxdlg{max-width:440px}.cxdlg p{margin:8px 0}
.wait4{color:#b45309}
.side .cat .cn{color:#94a3b8;font-weight:600;font-size:.82em;margin-right:1px}
/* v1.4.9: 03-세금납부 */
.pay-page{max-width:1000px;margin:0 auto}
.pay-btns{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-top:10px}
.pay-btn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 14px;text-align:left;white-space:normal}
.pay-btn .small{opacity:.85;font-weight:400}
.lf-pay{--lw:110px;max-width:560px}
.lf-pay > .f{display:grid;grid-template-columns:var(--lw) minmax(0,1fr);column-gap:10px;align-items:center;margin-bottom:10px}
.pay-list .filt{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.pay-tbl td.one{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* v1.4.9: 왼쪽 맨 아래 동진 창고 */

/* v1.4.10: 기록 — 발행취소 줄 = 거래처·품목·금액에 얇은 빨간 취소선, 줄 글자는 살짝 흐리게 (배지는 그대로 잘 보이게) */
tr.hrow.st-cancel>td{color:#6b7280}
tr.hrow.st-cancel .strk{text-decoration:line-through;text-decoration-color:#dc2626;text-decoration-thickness:1.5px;color:#6b7280}
tr.hrow.st-cancel .badge,tr.hrow.st-cancel .txtbtn{opacity:1;text-decoration:none}
/* v1.4.10: 기록 자세히 — 오른쪽 위 세로 버튼 (수정발행하기 → 발행취소 → 인쇄), 같은 너비 */
.einv-tools{flex-direction:column;align-items:flex-end;gap:6px}
.einv-tools>.btn{width:128px;box-sizing:border-box;justify-content:center;text-align:center;margin:0}
.einv-tools .btn.cancel-btn{color:#fff}
/* v1.4.10: 사이드바 머리글 펼치기/접기 · 📦 동진 창고 링크/화면 */
.side .cat-tog{position:relative}.side .cat .cat-car{position:absolute;left:7px;top:13px;color:#94a3b8;font-size:9px;line-height:1}
.wh-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;max-width:980px;grid-auto-rows:1fr}
@media (max-width:1100px){.wh-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.wh-cards{grid-template-columns:1fr}}
.wh-card{display:flex;flex-direction:column;gap:8px;padding:16px 18px;margin:0;min-height:150px;box-sizing:border-box}
.wh-top{display:flex;align-items:center;gap:10px;min-width:0}
.wh-ic{font-size:26px;line-height:1;flex-shrink:0}
.wh-name{font-weight:700;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.wh-ver{flex-shrink:0}
.wh-desc{color:#64748b;font-size:13.5px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:keep-all}
.wh-act{margin-top:auto;display:flex;align-items:center;gap:8px}.wh-act .btn{white-space:nowrap}
.wh-page{max-width:720px}.wh-dl{margin:14px 0}.wh-ins{padding-left:20px;line-height:1.7}
/* v1.5.1: 회원가입 · 관리자 · 둘러보기 */
.signup .hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.login-signup{text-align:center;margin:12px 0 0}
.side .whoami{display:block;margin-top:4px;color:#cbd5e1}
.badge.b-admin{background:#fde68a;color:#78350f}
.side .adm-cat{margin-top:10px;border-top:1px solid rgba(148,163,184,.25);padding-top:4px}
.ro-banner{background:#fef3c7;color:#78350f;border:1px solid #fcd34d;border-radius:10px;padding:8px 12px;margin:0 0 12px;font-size:14px}
.ro-block{max-width:620px}
.acc-cnt{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;max-width:760px;margin-bottom:8px}
.acc-c{margin:0;padding:12px 14px;display:flex;flex-direction:column;gap:2px}.acc-c .k{color:#64748b;font-size:13px}.acc-c b{font-size:22px}
.acc-c.hot{border:2px solid #f59e0b}
.acc-tbl td,.acc-tbl th{white-space:nowrap}.acc-act{display:flex;gap:6px}.acc-act form{margin:0}
tr.acc-pend{background:#fffbeb}
/* v1.5.1: 왼쪽 메뉴 아래 묶음(🔒 관리자 · 📦 동진 창고 · 피드백 · 로그아웃)은 화면 맨 아래에 붙어요 */
.side{display:flex;flex-direction:column;position:sticky;top:0;height:100vh;max-height:100vh;overflow-y:auto;box-sizing:border-box}
.side-bottom{margin-top:auto;padding-top:14px;border-top:1px solid rgba(148,163,184,.2)}
.side .cat.wh-link{margin:0;font-size:inherit;color:#fff}
.side .cat:hover{background:#2c3b52}
.side .side-bottom .side-foot{margin-top:6px}
.side .side-bottom .adm-cat{margin-top:0;border-top:0;padding-top:0}
@media (max-width:1240px){.side .cathead .cat,.side .cat.wh-link{padding:10px 6px 10px 16px;font-size:15px;white-space:nowrap}.side .cat .cat-car{left:5px}}
/* v1.5.0: 발행 전 미리보기 (홈택스 모양) */
details.livepv{margin:10px 0 12px;border:1px solid #e2e8f0;border-radius:10px;background:#fff;min-width:0;max-width:100%}
details.livepv>summary{cursor:pointer;padding:10px 14px;font-weight:700;list-style:none}details.livepv>summary::-webkit-details-marker{display:none}
.lpv-wrap{overflow-x:auto;padding:0 12px 12px;max-width:100%;box-sizing:border-box}
.lpv-body{min-width:720px}
.lpv-doc{margin-top:8px;font-size:12.5px;color:#111827}.lpv-doc+.lpv-doc{margin-top:18px}
.lpv-t{width:100%;border-collapse:collapse;table-layout:fixed;margin:0;border:2px solid #475569;border-top-width:0}
.lpv-t.lpv-head{border-top-width:2px}
.lpv-t th,.lpv-t td{border:1px solid #cbd5e1;padding:4px 6px;line-height:1.35;word-break:keep-all;overflow-wrap:anywhere;text-align:left;vertical-align:middle}
.lpv-t th{background:#f1f5f9;font-weight:600;text-align:center}
.lpv-t th.sup{background:#fde8ec;color:#9f1239}.lpv-t th.buy{background:#e0ecff;color:#1e3a8a}
.lpv-side.sup{background:#fbd5dd!important}.lpv-side.buy{background:#cfe0ff!important}
.lpv-t td.num{text-align:right;font-variant-numeric:tabular-nums}.lpv-t td.c{text-align:center}
.lpv-title{text-align:center!important;font-size:19px;font-weight:800;letter-spacing:2px;padding:8px!important}
.lpv-say{text-align:center!important;width:30%}
.lpv-mod{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:8px;padding:6px 10px;margin-bottom:6px}
.lpv-doc.neg .num{color:#b91c1c}
.lpv-err{background:#fef2f2;color:#b91c1c;border-radius:8px;padding:8px 10px;margin-top:8px}
/* v1.5.2: 서버 사용량 */
.su-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:980px}
.su-c{margin:0;padding:14px 16px;min-width:0}.su-wide{max-width:980px;margin-top:12px}
.su-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px}.su-h.su-sub{margin:12px 0 6px;font-size:14px;color:#475569}
.su-p{font-weight:800;font-size:18px;font-variant-numeric:tabular-nums}.su-p.green{color:#15803d}.su-p.yellow{color:#b45309}.su-p.red{color:#b91c1c}
.su-bar{height:12px;background:#e5e7eb;border-radius:999px;overflow:hidden}
.su-fill{display:block;height:100%;border-radius:999px}.su-fill.green{background:#22c55e}.su-fill.yellow{background:#f59e0b}.su-fill.red{background:#ef4444}
.su-k{margin-top:6px;font-size:13.5px;color:#334155}.su-svc td,.su-svc th{white-space:nowrap}.su-warn{max-width:980px}
/* v1.5.2: 부동산 12개월 표 · 홈 이번 달 임대 */
.re-page .re-card{cursor:pointer}.re-page .re-card input,.re-page .re-card .ry{cursor:auto}
.ry-open{margin-top:8px}.ry-box{margin-top:10px;border-top:1px solid #e5e7eb;padding-top:10px}
.ry-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}.ry-y{font-size:16px}
.ry-sum{margin-left:6px}.ry-dash{margin-left:auto;display:flex;align-items:center;gap:4px;font-size:13.5px}
.ry-t{width:100%;table-layout:fixed}.ry-t th:nth-child(1){width:70px}.ry-t th:nth-child(2){width:90px}.ry-t th:nth-child(3){width:46px}
.ry-t th:nth-child(4){width:132px}.ry-t th:nth-child(5){width:150px}/*1.5.2*/.ry-t td{text-align:left;vertical-align:middle}.ry-t td.num{text-align:right}
.ry-t input[type=text],.ry-t input[type=date]{width:100%;box-sizing:border-box;text-align:left;padding:3px 6px}
.ry-t tr.ry-off td{background:#f3f4f6;color:#9ca3af}.ry-t tr.ry-now td{background:#eff6ff}.ry-hint{display:inline-block;color:#b45309}
.rm-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.rm-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid #e5e7eb;border-radius:8px;text-decoration:none;color:inherit}
.rm-row:hover{background:#f8fafc}.rm-nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rm-st{font-weight:700;font-size:13.5px;padding:2px 8px;border-radius:999px}.rm-st.ok{background:#dcfce7;color:#166534}.rm-st.no{background:#fef3c7;color:#92400e}
.wh-dl{display:flex;align-items:center;gap:10px;flex-wrap:wrap;position:relative}
.wh-toast{flex-basis:100%;margin-top:6px;background:#1f2937;color:#fff;padding:10px 14px;border-radius:10px;font-size:14.5px;font-weight:600;box-shadow:0 4px 14px rgba(0,0,0,.18)}
.ry-t td{padding-top:4px;padding-bottom:4px}.ry-t input[type=text],.ry-t input[type=date]{height:30px;min-height:0;font-size:13.5px}
/* v1.5.4: 왼쪽 메뉴 줄 맞춤 — 모든 머리 줄 = [▸ 자리][아이콘 칸][글자 칸] 같은 x */
.side{--cx:20px;--ci:26px}
.side .cat,.side .cathead .cat,.side .cat.wh-link{display:flex;align-items:center;padding:10px 8px 10px var(--cx);white-space:nowrap;position:relative}
.side .cat .ci{flex:0 0 var(--ci);width:var(--ci);text-align:left;line-height:1}
.side .cat .ct{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.side .cat .cat-car{position:absolute;left:calc(var(--cx) - 13px);top:50%;transform:translateY(-50%)}
.side .sub a{padding-left:calc(var(--cx) + var(--ci))}
.side .cat.fb-link{font-weight:500;color:#cbd5e1;font-size:.95em;padding-top:8px;padding-bottom:8px}.side .cat.fb-link.active,.side .cat.fb-link:hover{color:#fff}
.side .side-bottom .side-foot{padding:0 0 0 var(--cx);margin-top:8px}
.side-bottom > form{padding-left:var(--cx);margin-top:8px}
@media (max-width:1240px){.side{--cx:16px;--ci:24px}.side .cathead .cat,.side .cat.wh-link,.side .cat{padding:10px 6px 10px var(--cx);font-size:15px}.side .cat .cat-car{left:calc(var(--cx) - 12px)}.side .sub a{padding-left:calc(var(--cx) + var(--ci))}}
.wh-cards{margin-top:14px}
.flash.warn.wh-ss{background:#fffbeb;border:1px solid #fcd34d;color:#78350f;margin:12px 0 0;white-space:normal}

/* v1.5.5: 입금일 = 년·월·일 세 칸, 입금☑ 오른쪽 · 큰 초록 체크 */
.ry-t th:nth-child(1){width:68px}.ry-t th:nth-child(2){width:96px}.ry-t th:nth-child(3){width:236px}.ry-t th:nth-child(4){width:58px}.ry-t th:nth-child(5){width:118px}
.ry-t th.ry-ck,.ry-t td.ry-ck{text-align:center;white-space:nowrap}
.ry-ymd{display:flex;align-items:center;gap:2px;white-space:nowrap}
.ry-ymd select{height:30px;min-height:0;padding:2px 4px;font-size:13.5px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;text-align:left;cursor:pointer}
.ry-ymd .ry-y{width:66px}.ry-ymd .ry-m,.ry-ymd .ry-d{width:48px}.ry-ymd .u{font-size:12.5px;color:#64748b;margin:0 3px 0 1px}
.ry-t input.gck{appearance:none;-webkit-appearance:none;width:23px;height:23px;margin:0;border:2px solid #94a3b8;border-radius:6px;background:#fff;cursor:pointer;
  display:inline-grid;place-content:center;vertical-align:middle;transition:background .12s,border-color .12s}
.ry-t input.gck::after{content:"";width:6px;height:11px;border:solid #fff;border-width:0 3px 3px 0;transform:rotate(45deg) scale(0);margin-top:-3px;transition:transform .12s}
.ry-t input.gck:checked{background:#16a34a;border-color:#16a34a}.ry-t input.gck:checked::after{transform:rotate(45deg) scale(1)}
.ry-t input.gck:hover:not(:disabled){border-color:#16a34a}.ry-t input.gck:focus-visible{outline:3px solid #86efac;outline-offset:1px}
.ry-t input.gck:disabled{background:#e5e7eb;border-color:#d1d5db;cursor:default}
.ry-t tr.ry-off .ry-ymd select{background:#f3f4f6;color:#9ca3af;cursor:default}
.ry-hint{white-space:nowrap;margin-left:4px}
.ry-t th:nth-child(1){width:96px}.ry-t th:nth-child(2){width:104px}.ry-t td:first-child{white-space:nowrap}.ry-t td:first-child .badge{font-size:11px;padding:1px 6px;margin-left:2px}
.wh-note{color:#94a3b8;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:-4px}
/* v1.5.7: 왼쪽 메뉴 — 머리 줄 번호 없앰, 하위 줄 = [번호 칸 고정][글자 칸] (길면 글자 칸 안에서만 줄바꿈), ⚙ 자리 고정 */
.side{--sn:36px}
.side .cathead .gear{flex:0 0 34px;width:34px;padding:6px 0;text-align:center}
.side .sub a{display:grid;grid-template-columns:var(--sn) minmax(0,1fr);align-items:baseline;padding:7px 10px 7px calc(var(--cx) + var(--ci));line-height:1.35}
.side .sub .sn{margin:0;font-variant-numeric:tabular-nums;white-space:nowrap}
.side .sub a{word-break:keep-all;overflow-wrap:anywhere}
@media (max-width:1240px){.side{--sn:32px}.side .sub a{font-size:14px;padding-right:6px}}
.wh-act .btn.wh-b{min-width:112px;text-align:center;justify-content:center}
.side .cathead:has(> .cat.active){background:#2c3b52}.side .cat,.side .cat:hover,.side .sub a:hover{text-decoration:none}
