:root{--primary:#003087;--primary-h:#003FA8;--primary-l:#E6EEFF;--cta:#FF6600;--danger:#CC0A1E;--success:#00854A;--cost:#00854A;--warn:#E08800;--g50:#F7F9FC;--g100:#EEF2F8;--g200:#D8E2EE;--g300:#B5C5D8;--g400:#7F98B4;--g500:#5A7490;--g600:#3D5570;--g700:#273D56;--g800:#16273C;--surface:#fff;--sh-sm:0 2px 8px rgba(0,48,135,.07);--sh-md:0 4px 16px rgba(0,48,135,.10);--r:8px;--r-lg:12px;--r-xl:16px;--nav-h:62px;--hd-h:54px;}
*{box-sizing:border-box;margin:0;padding:0;}
html{font-size:16px;}
body{font-family:'Apple SD Gothic Neo','Malgun Gothic','Noto Sans KR',system-ui,sans-serif;background:var(--g100);color:var(--g800);line-height:1.5;-webkit-text-size-adjust:100%;overflow-x:hidden;}
.app-header{height:auto;min-height:var(--hd-h);background:var(--primary);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:7px 16px;position:sticky;top:0;z-index:100;box-shadow:0 2px 8px rgba(0,0,0,.2);}
.hd-left{display:flex;align-items:center;gap:10px;flex:1;min-width:0;}
.hd-logo{display:flex;align-items:center;gap:8px;cursor:pointer;}
.hd-logo img{width:28px;height:28px;border-radius:5px;object-fit:contain;background:#fff;padding:2px;flex-shrink:0;}
.hd-logo-name{font-size:.9rem;font-weight:900;color:#fff;letter-spacing:-.3px;}
.hd-proj-bar{display:none;width:100%;font-size:.7rem;font-weight:600;color:rgba(255,255,255,.7);padding:3px 2px 1px;border-top:1px solid rgba(255,255,255,.15);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hd-right{display:flex;align-items:center;gap:6px;}
@media(max-width:480px){.hd-btn{padding:0 7px;font-size:.68rem;height:30px;}.hd-user-name{max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}}
.hd-user-name{font-size:.78rem;color:rgba(255,255,255,.85);}
.hd-btn{height:34px;border-radius:var(--r);border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.15);color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 10px;font-size:.72rem;font-weight:600;transition:background .15s;white-space:nowrap;}
.hd-btn:hover{background:rgba(255,255,255,.3);}
.hd-btn.icon-only{width:34px;height:34px;padding:0;}
.app-content{min-height:calc(100vh - var(--hd-h) - 48px);}
/* 상단 탭 내비 */
.top-nav{background:var(--surface);border-bottom:2px solid var(--g200);display:none;padding:0 16px;box-shadow:0 1px 4px rgba(0,0,0,.06);position:sticky;top:var(--header-h,var(--hd-h));z-index:99;}
.top-nav-item{display:inline-flex;align-items:center;gap:6px;padding:11px 16px;cursor:pointer;color:var(--g500);border:none;background:none;font-size:.82rem;font-weight:700;border-bottom:3px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s;white-space:nowrap;}
.top-nav-item:hover{color:var(--primary);}
.top-nav-item.active{color:var(--primary);border-bottom-color:var(--primary);}
/* 아이콘: 모든 탭 동일 크기 20×20, stroke 2.5로 굵게 */
.top-nav-item svg{width:20px;height:20px;flex-shrink:0;stroke-width:2.5;}
.top-nav-item.active svg{stroke:var(--primary);}
/* 모바일에서도 텍스트 유지, 아이콘+텍스트 세로 배치로 공간 확보 */
@media(max-width:480px){
  .top-nav-item{flex-direction:column;gap:3px;padding:8px 12px;font-size:.68rem;}
  .top-nav-item svg{width:22px;height:22px;}
}
.screen{display:none;}.screen.active{display:block;}
#screen-projects{min-height:100vh;background:var(--g50);}
.proj-hero{background:linear-gradient(135deg,#FFF8F4 0%,#FFEDE0 100%);padding:7px 0;border-bottom:1.5px solid #FFD4A8;}
.proj-hero-in{max-width:600px;margin:0 auto;padding:0 20px;}
@media(min-width:900px){.proj-hero-in{margin:0;}}
.btn-hero-new{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:var(--r);background:var(--cta);border:none;color:#fff;font-size:.79rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:background .15s;}
.btn-hero-new:hover{background:#E55A00;}
.proj-list{padding:20px;display:grid;grid-template-columns:1fr;gap:12px;max-width:600px;margin:0 auto;}
@media(min-width:900px){.proj-list{margin:0;}}
@media(min-width:600px){.proj-list{grid-template-columns:1fr 1fr;}}
.proj-card{position:relative;background:var(--surface);border-radius:var(--r-lg);cursor:pointer;box-shadow:var(--sh-sm);border:2px solid transparent;transition:border-color .2s,box-shadow .2s,transform .2s;overflow:hidden;min-height:200px;display:flex;flex-direction:column;justify-content:space-between;}
.proj-card:hover{border-color:var(--primary);box-shadow:var(--sh-md);transform:translateY(-2px);}
.proj-card-bg{position:absolute;inset:0;background-size:cover;background-position:top center;pointer-events:none;}
.proj-card-fade{position:absolute;inset:0;background:linear-gradient(to bottom,transparent 20%,var(--surface) 85%);pointer-events:none;}
.proj-card-top{position:relative;z-index:2;padding:12px 14px 0;}
.proj-card-bottom{position:relative;z-index:2;padding:0 14px 12px;}
.proj-name{font-size:.92rem;font-weight:800;color:var(--g800);margin-bottom:3px;line-height:1.3;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff,0 0 6px #fff;}
.proj-client{font-size:.76rem;font-weight:700;color:var(--g600);margin-bottom:10px;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff,0 0 4px #fff;}
.proj-badge{display:inline-block;padding:2px 9px;border-radius:10px;font-size:.68rem;font-weight:700;background:var(--success);color:#fff;}
.proj-actions-bar{display:flex;gap:6px;padding-top:8px;border-top:1px solid var(--g200);}
.proj-act-btn{flex:1;padding:6px 4px;border-radius:var(--r);border:1px solid var(--g200);background:rgba(255,255,255,.92);font-size:.74rem;font-weight:600;cursor:pointer;color:var(--g600);text-align:center;transition:background .12s,color .12s;backdrop-filter:blur(6px);}
.proj-act-btn:hover{background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.1);}
.proj-act-btn.del{color:var(--danger);border-color:rgba(220,53,69,.25);}
.proj-act-btn.del:hover{background:#fff0f0;}
/* 나가기 확인 모달 */
#exit-confirm{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:9999;align-items:center;justify-content:center;}
#exit-confirm.show{display:flex;}
#exit-confirm .box{background:#fff;border-radius:var(--r-xl);padding:28px 24px;max-width:320px;width:90%;text-align:center;box-shadow:0 8px 40px rgba(0,0,0,.25);}
#exit-confirm .box p{font-size:.95rem;font-weight:600;color:var(--g800);margin-bottom:20px;line-height:1.5;}
#exit-confirm .btns{display:flex;gap:10px;justify-content:center;}
#exit-confirm .btns button{padding:9px 24px;border-radius:var(--r);border:none;font:inherit;font-size:.88rem;font-weight:700;cursor:pointer;}
#exit-confirm .btns .yes{background:var(--danger);color:#fff;}
#exit-confirm .btns .no{background:var(--g100);color:var(--g700);}
.tab-content{padding:16px;max-width:900px;margin:0 auto;}
@media(min-width:900px){.tab-content{margin:0;}}
.card{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-sm);padding:16px;margin-bottom:14px;}
.card-title{font-size:.85rem;font-weight:700;color:var(--g600);margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;}
.myjob-greeting{background:linear-gradient(135deg,var(--primary) 0%,#0055CC 100%);border-radius:var(--r-lg);padding:20px;color:#fff;margin-bottom:14px;}
.greeting-name{font-size:1.15rem;font-weight:800;margin-bottom:3px;}
.greeting-date{font-size:.8rem;opacity:.8;}
.greeting-proj{margin-top:10px;background:rgba(255,255,255,.15);border-radius:7px;padding:8px 12px;font-size:.82rem;}
.task-list{list-style:none;}
.task-item{display:flex;align-items:center;gap:11px;padding:9px 0;border-bottom:1px solid var(--g100);}
.task-item:last-child{border-bottom:none;}
.task-dot{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.65rem;}
.task-dot.done{background:var(--success);color:#fff;}
.task-dot.pending{background:#FFF8E1;border:2px solid var(--warn);color:var(--warn);font-weight:700;}
.task-dot.todo{background:var(--g100);border:2px solid var(--g300);color:var(--g400);}
.task-text{flex:1;font-size:.85rem;color:var(--g700);}
.task-action{font-size:.74rem;color:var(--primary);font-weight:600;cursor:pointer;white-space:nowrap;}
.progress-hero{background:linear-gradient(135deg,var(--primary) 0%,#0055CC 100%);border-radius:var(--r-lg);padding:20px;color:#fff;margin-bottom:14px;}
.ph-label{font-size:.78rem;opacity:.8;margin-bottom:5px;}
.ph-value{font-size:2.4rem;font-weight:900;}
.ph-sub{font-size:.78rem;opacity:.7;margin-top:3px;}
.ph-bar-wrap{height:9px;background:rgba(255,255,255,.2);border-radius:5px;margin-top:12px;overflow:hidden;}
.ph-bar-fill{height:100%;background:#fff;border-radius:5px;transition:width .8s ease;}
.kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;}
@media(min-width:600px){.kpi-grid{grid-template-columns:repeat(4,1fr);}}
.kpi-card{background:var(--surface);border-radius:var(--r-lg);padding:13px;box-shadow:var(--sh-sm);text-align:center;}
.kpi-label{font-size:.72rem;color:var(--g400);margin-bottom:3px;}
.kpi-value{font-size:1.25rem;font-weight:800;color:var(--g800);}
.kpi-unit{font-size:.68rem;color:var(--g400);}
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}
table.dtbl{width:100%;border-collapse:collapse;font-size:.8rem;min-width:340px;}
.dtbl th{background:var(--g50);padding:8px 10px;text-align:left;color:var(--g500);font-weight:600;border-bottom:2px solid var(--g200);white-space:nowrap;}
.dtbl td{padding:8px 10px;border-bottom:1px solid var(--g100);}
.dtbl tr:last-child td{border-bottom:none;}
.dtbl tr:hover td{background:var(--g50);}
.mini-bar-wrap{height:5px;background:var(--g100);border-radius:3px;min-width:60px;overflow:hidden;margin-top:3px;}
.mini-bar{height:100%;border-radius:3px;}
/* ── 문서관리 탭 ── */
.doc-filter-bar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px;}
.doc-filter-btn{padding:6px 13px;border-radius:20px;font-size:.77rem;font-weight:600;cursor:pointer;border:1.5px solid var(--g200);background:var(--surface);color:var(--g600);transition:all .15s;}
.doc-filter-btn.active{background:var(--primary);border-color:var(--primary);color:#fff;}
.doc-filter-btn:hover:not(.active){border-color:var(--primary);color:var(--primary);}
.doc-group-hd{font-size:.72rem;font-weight:700;color:var(--g400);letter-spacing:.06em;text-transform:uppercase;padding:14px 4px 6px;border-bottom:1px solid var(--g100);margin-bottom:4px;}
.doc-row{display:flex;align-items:center;gap:10px;padding:10px 8px;border-radius:var(--r);transition:background .1s;border-left:3px solid transparent;}
.doc-row:hover{background:var(--g50);}
.doc-row.my-doc{border-left-color:var(--primary);}
.doc-row.my-doc.done{border-left-color:var(--success);}
.doc-row-no{font-size:.72rem;color:var(--g400);font-weight:600;min-width:22px;text-align:center;}
.doc-row-info{flex:1;min-width:0;}
.doc-row-name{font-size:.84rem;font-weight:600;color:var(--g800);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.doc-row.done .doc-row-name{color:var(--g400);text-decoration:line-through;}
.doc-row-meta{font-size:.72rem;color:var(--g400);margin-top:2px;display:flex;align-items:center;gap:5px;}
.doc-row-right{display:flex;align-items:center;gap:6px;flex-shrink:0;}
.duty-primary{background:#E6EEFF;color:var(--primary);font-size:.68rem;font-weight:700;padding:2px 6px;border-radius:10px;}
.duty-secondary{background:#F3EEFF;color:#7C3AED;font-size:.68rem;font-weight:700;padding:2px 6px;border-radius:10px;}
.duty-review{background:#FEF3C7;color:#92400E;font-size:.68rem;font-weight:700;padding:2px 6px;border-radius:10px;}
.doc-status{font-size:.72rem;font-weight:600;padding:3px 8px;border-radius:10px;}
.doc-status.done{background:#D1FAE5;color:#065F46;}
.doc-status.pending{background:#FEF2F2;color:#991B1B;}
.doc-check-btn{width:28px;height:28px;border-radius:50%;border:2px solid var(--g200);background:var(--surface);color:var(--g400);cursor:pointer;font-size:.8rem;display:flex;align-items:center;justify-content:center;transition:all .15s;font-weight:700;}
.doc-check-btn:hover{border-color:var(--primary);color:var(--primary);}
.doc-check-btn.done{background:#D1FAE5;border-color:var(--success);color:#065F46;}
/* ── 달력 (오늘할일) ── */
.cal-card{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-sm);overflow:hidden;margin-bottom:14px;}
.cal-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--g100);}
.cal-month-label{font-size:.95rem;font-weight:800;color:var(--g800);}
.cal-nav-btn{width:32px;height:32px;border:none;background:var(--g50);border-radius:var(--r);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--g600);transition:background .1s;}
.cal-nav-btn:hover:not(:disabled){background:var(--g100);}
.cal-nav-btn:disabled{opacity:.3;cursor:default;}
.cal-dow-row{display:grid;grid-template-columns:repeat(7,1fr);background:var(--g50);border-bottom:1px solid var(--g100);}
.cal-dow-row>div{padding:6px 0;text-align:center;font-size:.66rem;font-weight:700;color:var(--g400);}
.cal-dow-row>div:first-child{color:var(--danger);}
.cal-dow-row>div:last-child{color:#7C3AED;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);}
.cal-day{min-height:70px;padding:4px 3px;border-right:1px solid var(--g100);border-bottom:1px solid var(--g100);cursor:pointer;transition:background .1s;box-sizing:border-box;}
.cal-day:nth-child(7n){border-right:none;}
.cal-day:hover{background:var(--primary-l);}
.cal-day.empty{background:var(--g50);cursor:default;pointer-events:none;}
.cal-day.selected{background:var(--primary-l);}
.cal-day.all-done{background:#F0FDF4;}
.cal-day.has-pending{background:#FFFBEB;}
.cal-day.out-range{background:var(--g50);cursor:default;pointer-events:none;}
.cal-day.out-range .cal-day-num{color:var(--g200);}
.cal-day.today .cal-day-num{background:var(--primary);color:#fff;border-radius:50%;width:22px;height:22px;display:flex;align-items:center;justify-content:center;margin:0 auto 2px;}
.cal-day-num{font-size:.78rem;font-weight:700;color:var(--g700);text-align:center;margin-bottom:2px;line-height:22px;}
.cal-dots{display:flex;flex-direction:column;gap:1px;padding:0 1px;}
.cal-dot-lbl{font-size:.5rem;font-weight:700;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cal-detail{border-top:1px solid var(--g100);padding:12px 14px;}
.cal-detail-hd{font-size:.82rem;font-weight:700;color:var(--g600);margin-bottom:10px;display:flex;align-items:center;gap:8px;}
.task-grp-hd{list-style:none;display:flex;align-items:center;justify-content:space-between;padding:4px 10px;margin:8px 0 2px;border-radius:7px;font-size:.73rem;font-weight:800;cursor:pointer;user-select:none;}
.task-grp-hd .grp-chevron{font-size:.7rem;transition:transform .18s;flex-shrink:0;margin-left:4px;}
.task-grp-body{overflow:hidden;transition:max-height .2s ease;}
.task-grp-body.collapsed{max-height:0 !important;}
.task-overdue{background:#FEF2F2;color:#DC2626;font-size:.62rem;padding:1px 6px;border-radius:8px;font-weight:700;white-space:nowrap;flex-shrink:0;}
/* ── 착공신고서 양식 (인쇄 전용 모달 – 평소 숨김) ── */
#cform-modal{display:none;}
.cform-paper{background:#fff;font-family:'맑은 고딕','Malgun Gothic',sans-serif;font-size:8pt;position:relative;}
.cform-paper table{border-collapse:collapse;width:100%;table-layout:fixed;}
.cform-paper td,.cform-paper th{border:1px solid #000;padding:3px 4px;vertical-align:middle;font-size:7.5pt;word-break:break-all;}
.cform-paper .lbl{background:#F5F5F5;font-weight:600;font-size:7pt;text-align:center;white-space:nowrap;}
.cform-paper .val{background:#fff;}
.cform-paper input[type=text]{width:100%;border:none;outline:none;background:transparent;font-family:inherit;font-size:7.5pt;min-width:0;}
.cform-paper input[type=checkbox]{margin:0 1px;}
.cform-paper select{border:none;outline:none;background:transparent;font-family:inherit;font-size:7.5pt;width:100%;}
.cform-title-row{text-align:center;font-size:18pt;font-weight:700;padding:6px 0;}
.cform-law{font-size:7pt;color:#333;}
.cform-notice{font-size:6.5pt;color:#555;padding:3px 0;}
.cform-sign-row{display:flex;justify-content:flex-end;gap:8px;margin-top:8px;font-size:8pt;}
/* ── 2줄 툴바 ── */
.cform-toolbar{position:sticky;top:0;background:#fff;border-bottom:1px solid #E5E7EB;z-index:10;display:flex;flex-direction:column;}
.cftb-row1,.cftb-row2{display:flex;align-items:center;gap:6px;padding:7px 14px;flex-wrap:wrap;}
.cftb-row2{border-top:1px solid #F3F4F6;background:#F8FAFC;padding:5px 14px;}
.cftb-left{display:flex;align-items:center;gap:6px;flex:1;flex-wrap:wrap;}
.cftb-right{display:flex;align-items:center;gap:6px;}
/* ── 인쇄 미리보기 오버레이 ── */
#pv-overlay{position:fixed;inset:0;z-index:9999;background:#52525B;overflow-y:auto;display:none;}
#pv-bar{position:sticky;top:0;z-index:1;background:#3F3F46;display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 16px;box-shadow:0 2px 8px rgba(0,0,0,.4);}
#pv-scroll{padding:24px 20px 40px;display:flex;flex-direction:column;align-items:center;}
#pv-a4{width:210mm;min-height:297mm;background:#fff;padding:15mm;box-shadow:0 4px 28px rgba(0,0,0,.45);}
/* 스크롤 영역 전부 펼치기 */
#pv-a4 *{overflow:visible!important;max-height:none!important;}
#pv-a4 table{width:100%;}
@media print{
  body>*:not(#pv-overlay){display:none!important;}
  #pv-overlay{position:static!important;background:#fff!important;overflow:visible!important;display:block!important;}
  #pv-bar{display:none!important;}
  #pv-scroll{padding:0!important;display:block!important;}
  #pv-a4{width:100%!important;min-height:auto!important;padding:0!important;box-shadow:none!important;}
  #pv-a4 *{overflow:visible!important;max-height:none!important;}
  .cform-toolbar{display:none!important;}
  #cf-preview-notice{display:none!important;}
  @page{size:A4 portrait;margin:15mm;}
  .doc-detail{display:block!important;}
}
/* ── 문서 행 + 아코디언 (착공·준공 그룹) ── */
.doc-card-grid{display:grid;grid-template-columns:1fr;gap:4px;padding:8px 10px;}
.doc-card{background:#FAFBFE;border:1.5px solid var(--g200);border-radius:var(--r);overflow:hidden;transition:border-color .15s;border-left:3px solid var(--g200);}
.doc-card:hover{border-color:var(--g300);}
.doc-card.wip{border-left-color:var(--warn);}
.doc-card.done{border-left-color:var(--success);}
/* 헤더 행 */
.doc-card-row1{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:default;}
.doc-card-no{font-size:.63rem;color:var(--g400);font-weight:700;flex-shrink:0;}
.doc-card-name{font-size:.8rem;font-weight:700;color:var(--g800);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.doc-card.done .doc-card-name{color:var(--g400);text-decoration:line-through;}
.doc-card-type{font-size:.6rem;color:var(--g500);background:var(--g100);padding:2px 5px;border-radius:6px;white-space:nowrap;flex-shrink:0;}
.doc-card-status{padding:3px 8px;border-radius:8px;font-size:.67rem;font-weight:700;cursor:pointer;border:none;transition:all .15s;white-space:nowrap;flex-shrink:0;}
.doc-card-status.done{background:#D1FAE5;color:#065F46;}
.doc-card-status.wip{background:#FEF3C7;color:#92400E;}
.doc-card-status.pending{background:#FEF2F2;color:#991B1B;}
.doc-card-badges{display:flex;align-items:center;gap:3px;flex-shrink:0;overflow:hidden;}
/* 상세보기 버튼 */
.doc-detail-btn{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border:1.5px solid var(--g300);background:#fff;border-radius:6px;font-size:.72rem;color:var(--g600);cursor:pointer;white-space:nowrap;flex-shrink:0;font-weight:600;transition:all .15s;}
.doc-detail-btn:hover{background:#EEF2FF;border-color:var(--primary);color:var(--primary);}
.doc-detail-btn.active{background:#EEF2FF;border-color:var(--primary);color:var(--primary);}
/* 아코디언 상세 */
.doc-detail{display:none;border-top:1.5px solid var(--g200);background:#fff;}
.doc-detail.open{display:block;}
/* ── 아코디언 (문서 그룹) ── */
.acc-group{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-sm);margin-bottom:8px;overflow:hidden;}
.acc-hd{display:flex;align-items:center;gap:10px;padding:13px 14px;cursor:pointer;user-select:none;transition:background .1s;}
.acc-hd:hover{background:var(--g50);}
.acc-ico{width:34px;height:34px;border-radius:var(--r);display:flex;align-items:center;justify-content:center;font-size:1.1rem;flex-shrink:0;}
.acc-title{flex:1;font-size:.88rem;font-weight:700;color:var(--g800);}
.acc-stats{font-size:.72rem;color:var(--g500);margin-right:2px;}
.acc-chev{transition:transform .2s;color:var(--g300);flex-shrink:0;}
.acc-group.open .acc-chev{transform:rotate(90deg);}
.acc-body{display:none;border-top:1px solid var(--g100);}
.acc-group.open .acc-body{display:block;}
/* 문서역할설정 전용 아코디언 */
.drole-acc{border:1px solid #E5E7EB!important;transition:border-color .15s;}
.drole-acc.open{border-color:#FFD0A0!important;}
.drole-hd{background:#F3F4F6!important;transition:background .15s;}
.drole-acc.open .drole-hd{background:#FFF3E0!important;}
.drole-hd:hover{background:#EAEBEE!important;}
.drole-acc.open .drole-hd:hover{background:#FFE9C8!important;}
.acc-action-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 14px;background:var(--g50);border-bottom:1px solid var(--g100);}
.acc-doc-list{padding:4px 8px 8px;}
/* ── 기존 문서 출력 버튼 ── */
.doc-btns{display:flex;gap:5px;flex-wrap:wrap;}
.doc-date-inp{border:1.5px solid var(--g200);border-radius:var(--r);padding:6px 10px;font-size:.8rem;color:var(--g700);background:var(--g50);outline:none;flex:1;min-width:120px;}
.doc-date-inp:focus{border-color:var(--primary);background:#fff;}
.dbtn{padding:4px 7px;border-radius:6px;font-size:.68rem;font-weight:600;cursor:pointer;border:1.5px solid;transition:all .15s;white-space:nowrap;display:inline-flex;align-items:center;gap:3px;}
.dbtn.pv{background:var(--primary-l);border-color:var(--primary);color:var(--primary);}
.dbtn.pv:hover{background:var(--primary);color:#fff;}
.dbtn.xl{background:#E8F5E9;border-color:var(--success);color:var(--success);}
.dbtn.xl:hover{background:var(--success);color:#fff;}
.dbtn.pr{background:var(--g50);border-color:var(--g300);color:var(--g600);}
.dbtn.pr:hover{background:var(--g700);color:#fff;border-color:var(--g700);}
.settings-menu{display:grid;gap:10px;}
.settings-item{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-sm);padding:15px;display:flex;align-items:center;gap:13px;cursor:pointer;transition:all .15s;border:1.5px solid transparent;}
.settings-item:hover{border-color:var(--primary);}
.settings-icon{width:42px;height:42px;border-radius:var(--r);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.settings-icon svg{width:22px;height:22px;stroke-width:2.5;}
.settings-title{font-size:.88rem;font-weight:700;color:var(--g800);}
.settings-desc{font-size:.75rem;color:var(--g500);margin-top:2px;}
.settings-arrow{color:var(--g300);margin-left:auto;flex-shrink:0;}
.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:10px;font-size:.7rem;font-weight:700;}
.bs{background:#E6F4EE;color:var(--success);}.bw{background:#FFF8E1;color:var(--warn);}.bd{background:#FDEAED;color:var(--danger);}.bp{background:var(--primary-l);color:var(--primary);}
.empty{text-align:center;padding:36px 20px;color:var(--g400);}.empty p{font-size:.875rem;}
.toast-wrap{position:fixed;bottom:calc(var(--nav-h)+14px);left:50%;transform:translateX(-50%);z-index:10001;display:flex;flex-direction:column;gap:7px;pointer-events:none;align-items:center;}
.toast{background:var(--g800);color:#fff;border-radius:20px;padding:9px 18px;font-size:.82rem;white-space:nowrap;animation:tin .2s ease;}
.toast.ok{background:var(--success);}.toast.err{background:var(--danger);}
@keyframes tin{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}
/* 헤더 관리 버튼 */
.hd-admin-btn{position:relative;}
/* 승인 대기 깜빡임: 흰색 ↔ 주황 2색 교차 */
@keyframes admin-blink{
  0%,49%{background:rgba(255,255,255,.15);color:#fff;border-color:rgba(255,255,255,.3);box-shadow:none;}
  50%,100%{background:var(--cta);color:#fff;border-color:var(--cta-h);box-shadow:0 0 8px rgba(255,102,0,.6);}
}
.hd-admin-btn.blinking{animation:admin-blink 1s ease-in-out infinite;}
.hd-admin-btn.blinking:hover{animation:none;background:rgba(255,255,255,.3);}

/* 관리 패널 탭 */
.admin-tabs{display:flex;border-bottom:2px solid var(--g100);margin:-16px -16px 16px;}
.admin-tab{flex:1;padding:11px 8px;text-align:center;font-size:.82rem;font-weight:600;cursor:pointer;color:var(--g400);border-bottom:3px solid transparent;margin-bottom:-2px;transition:all .15s;}
.admin-tab.active{color:var(--primary);border-bottom-color:var(--primary);}
.admin-tab-pane{display:none;}.admin-tab-pane.active{display:block;}
.pg-box{border:1.5px solid var(--g200);border-radius:var(--r-lg);margin-bottom:10px;overflow:hidden;}
.pg-hd{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;cursor:pointer;background:var(--g50);user-select:none;transition:background .12s;}
.pg-hd:hover{background:var(--g100);}
.pg-hd-left{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow:hidden;}
.pg-hd .pg-name{font-size:.88rem;font-weight:700;color:var(--g800);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pg-hd .pg-cnt{font-size:.74rem;color:var(--g500);background:var(--g200);border-radius:10px;padding:1px 8px;}
.pg-hd .pg-arrow{font-size:.72rem;color:var(--g400);transition:transform .2s;display:inline-block;}
.pg-hd.open .pg-arrow{transform:rotate(180deg);}
.pg-body{padding:10px;border-top:1px solid var(--g200);}
.pg-body.collapsed{display:none;}

/* 상태 뱃지 */
.status-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:10px;font-size:.72rem;font-weight:600;}
.chip-active{background:#E6F4EE;color:var(--success);}
.chip-pending{background:#FFF8E1;color:var(--warn);}
.chip-inactive{background:var(--g100);color:var(--g400);}

/* 인라인 액션 행 */
.action-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.action-row .fs{flex:1;min-width:100px;padding:5px 8px;font-size:.78rem;}
.btn-xs{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;font-size:.74rem;font-weight:600;cursor:pointer;border-radius:var(--r);border:1px solid;transition:all .15s;}
.btn-xs.approve{background:#E6F4EE;border-color:var(--success);color:var(--success);}
.btn-xs.approve:hover{background:var(--success);color:#fff;}
.btn-xs.reject{background:#FDEAED;border-color:var(--danger);color:var(--danger);}
.btn-xs.reject:hover{background:var(--danger);color:#fff;}
.btn-xs.remove{background:var(--g50);border-color:var(--g300);color:var(--g500);}
.btn-xs.remove:hover{background:var(--danger);border-color:var(--danger);color:#fff;}
.btn-xs.add{background:var(--primary-l);border-color:var(--primary);color:var(--primary);}
.btn-xs.add:hover{background:var(--primary);color:#fff;}
.sep{height:1px;background:var(--g100);margin:12px 0;}

.panel-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:200;}
.panel-overlay.open{display:block;}
.side-panel{position:absolute;right:0;top:0;bottom:0;width:min(520px,100vw);background:var(--surface);display:flex;flex-direction:column;box-shadow:-4px 0 20px rgba(0,0,0,.15);}
.panel-hd{padding:14px 18px;border-bottom:1px solid var(--g100);display:flex;align-items:center;justify-content:space-between;background:var(--surface);}
.panel-title{font-size:.95rem;font-weight:700;color:var(--g800);}
.panel-close{width:30px;height:30px;border:none;background:var(--g100);border-radius:var(--r);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--g500);}
.panel-body{flex:1;overflow-y:auto;padding:16px;}
.fg{margin-bottom:13px;}.fl{font-size:.78rem;font-weight:600;color:var(--g600);margin-bottom:4px;display:block;}
.fi,.fs,.ft{width:100%;border:1.5px solid var(--g200);border-radius:var(--r);padding:8px 11px;font-size:.85rem;color:var(--g800);background:var(--g50);outline:none;font-family:inherit;transition:border-color .15s;}
.fi:focus,.fs:focus,.ft:focus{border-color:var(--primary);background:#fff;}
.ft{resize:vertical;min-height:76px;}
.btn{padding:9px 18px;border-radius:var(--r);font-size:.85rem;font-weight:600;cursor:pointer;border:none;transition:all .15s;}
.btn-p{background:var(--primary);color:#fff;}.btn-p:hover{background:var(--primary-h);}
.btn-g{background:var(--g100);color:var(--g600);}.btn-g:hover{background:var(--g200);}
.btn-sm{padding:6px 13px;font-size:.78rem;}.btn-block{width:100%;}
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:250;overflow-y:auto;padding:20px;align-items:flex-start;justify-content:center;}
.modal-overlay.open{display:flex;}
.modal{background:var(--surface);border-radius:var(--r-lg);width:100%;max-width:780px;margin:auto;overflow:hidden;}
.modal-hd{padding:14px 18px;border-bottom:1px solid var(--g100);display:flex;align-items:center;justify-content:space-between;}
.modal-title{font-size:.95rem;font-weight:700;}
.modal-close{background:none;border:none;cursor:pointer;color:var(--g400);padding:4px;}
.modal-body{padding:18px;}
.modal-ft{padding:12px 18px;border-top:1px solid var(--g100);display:flex;gap:8px;justify-content:flex-end;}
.ld::after{content:'';animation:ld 1.2s infinite;}
@keyframes ld{0%,20%{content:'';}40%{content:'.';}60%{content:'..';}80%,100%{content:'...';}}
@keyframes spin{to{transform:rotate(360deg)}}
/* ── 프로젝트 생성 아코디언 ─────────────────────────────────── */
.np-acrd{border:1.5px solid var(--g200);border-radius:var(--r);margin-bottom:13px;overflow:hidden;}
.np-acrd summary{list-style:none;padding:9px 13px;font-size:.82rem;font-weight:700;color:var(--primary);cursor:pointer;display:flex;align-items:center;gap:6px;user-select:none;background:var(--g50);}
.np-acrd summary::-webkit-details-marker{display:none;}
.np-acrd summary::before{content:'▶';font-size:.62rem;transition:transform .15s;color:var(--g400);margin-right:2px;}
.np-acrd[open] summary::before{transform:rotate(90deg);}
.np-acrd-body{padding:12px 13px 6px;border-top:1.5px solid var(--g200);}
/* ── 원가항목 테이블 인라인 입력 ── */
.ci-inp{width:100%;padding:4px 6px;border:1.5px solid var(--g200);border-radius:4px;font:inherit;font-size:.79rem;background:#fff;box-sizing:border-box;}
.ci-inp:focus{outline:none;border-color:var(--primary);}
.ci-inp:disabled{background:var(--g50);color:var(--g400);}
.ci-inp-r{text-align:right;}
#np-cost-table th{background:var(--g50);font-size:.76rem;font-weight:700;color:var(--g600);padding:5px 7px;text-align:left;white-space:nowrap;}
#np-cost-table th:nth-child(2),#np-cost-table th:nth-child(3){text-align:right;}
#np-cost-table td{padding:3px 4px;vertical-align:middle;}
#np-cost-table tbody tr:hover{background:var(--g50);}
#np-cost-table tfoot td{border-top:1.5px solid var(--g200);}
.fg-row{display:flex;gap:10px;}.fg-row .fg{flex:1;}
@keyframes docFocus{0%{box-shadow:0 0 0 0 rgba(0,48,135,.5);}50%{box-shadow:0 0 0 4px rgba(0,48,135,.35);}100%{box-shadow:0 0 0 0 rgba(0,48,135,0);}}
.doc-card.focus-highlight{animation:docFocus 1.6s ease forwards;}
/* ── 법인카드 일일 입력 모달 ──────────────────────────────────── */
.cdm-row{background:var(--g50);border-radius:10px;padding:10px 12px;margin-bottom:8px;border:1px solid var(--g200);}
.cdm-row-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}
.cdm-row-info{flex:1;min-width:0;}
.cdm-row-vendor{font-weight:700;font-size:.88rem;color:var(--g800);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cdm-row-meta{font-size:.75rem;color:var(--g500);margin-top:1px;}
.cdm-row-amt{font-size:.9rem;color:var(--primary);font-weight:800;margin-top:3px;}
.cdm-row-actions{display:flex;flex-direction:column;gap:4px;flex-shrink:0;}
.cdm-row-btn{font-size:.72rem;padding:3px 10px;border-radius:6px;cursor:pointer;font-weight:600;white-space:nowrap;}
.cdm-rcp-list{margin-top:6px;padding-top:6px;border-top:1px solid var(--g100);}
.cdm-rcp-item{display:flex;align-items:center;gap:6px;margin-bottom:3px;}
.cdm-rcp-link{font-size:.72rem;color:var(--primary);text-decoration:none;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cdm-rcp-del{font-size:.7rem;color:var(--danger);background:none;border:none;cursor:pointer;flex-shrink:0;padding:0 2px;}
.cdm-form{background:var(--primary-l);border-radius:10px;padding:12px 14px;border:1.5px dashed var(--primary);margin-bottom:8px;}
.cdm-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.cdm-form-full{grid-column:1/-1;}
.cdm-form-label{font-size:.73rem;color:var(--g600);display:block;margin-bottom:3px;font-weight:600;}
.cdm-date-nav{display:flex;align-items:center;gap:10px;justify-content:center;margin-top:8px;}
.cdm-date-nav button{width:32px;height:32px;border-radius:50%;border:1.5px solid var(--g200);background:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--g600);flex-shrink:0;}
.cdm-date-nav button:hover{background:var(--g100);}
.cdm-date-input{flex:1;max-width:160px;padding:5px 8px;border:1.5px solid var(--g200);border-radius:var(--r);font:inherit;font-size:.85rem;text-align:center;}
/* ── 공용 아코디언 박스 ── */
.cpacc{border:1px solid var(--g200);border-radius:7px;margin-bottom:6px;overflow:hidden}
.cpacc summary{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;font-weight:700;cursor:pointer;list-style:none;user-select:none;gap:6px}
.cpacc summary::-webkit-details-marker{display:none}
.cpacc summary::before{content:'▸';flex-shrink:0;transition:transform .18s;font-size:.72rem;opacity:.6}
.cpacc[open]>summary::before{transform:rotate(90deg)}
.cpacc .cpab{padding:4px 8px 8px}
.cpl1>summary{background:var(--primary);color:#fff;font-size:.85rem;border-radius:6px 6px 0 0;padding:10px 12px}
.cpl1>summary::before{color:rgba(255,255,255,.7)}
.cpl1 .cpamt{color:#fff;font-size:.82rem}
.cpl2>summary{background:var(--g50);font-size:.8rem;color:var(--g800)}
.cpl2 .cpamt{color:var(--cost);font-size:.78rem}
.cpl3>summary{background:var(--g100);font-size:.76rem;color:var(--g700);padding:6px 10px}
.cpl3 .cpamt{color:var(--g600);font-size:.74rem}
.cpdr{display:flex;align-items:center;gap:4px;padding:3px 4px 3px 10px;font-size:.75rem;border-bottom:1px solid var(--g50)}
.cpdr:last-child{border-bottom:none}
.cpdl{flex:1;min-width:0;color:var(--g700)}
.cpdv{text-align:right;flex-shrink:0;font-size:.74rem;color:var(--g700);min-width:60px}
.cpinp{width:80px;border:1.5px solid var(--g200);border-radius:4px;padding:2px 5px;font-size:.73rem;text-align:right;flex-shrink:0}
.cprate{background:var(--g50);border-radius:3px;margin-bottom:1px}
.cpd-sum{display:flex;justify-content:space-between;padding:4px 10px 2px;font-size:.74rem;border-top:1px dashed var(--g200);margin-top:2px}
