
:root{--navy:#071426;--navy2:#0b1d33;--blue:#2563eb;--green:#34d399;--cyan:#22d3ee;--text:#0f172a;--muted:#64748b;--line:#e2e8f0;--bg:#f3f6fb;--card:#fff;--red:#dc2626}
*{box-sizing:border-box}body{margin:0;font-family:Arial,'Noto Sans KR',sans-serif;background:var(--bg);color:var(--text)}button,input,select,textarea{font-family:inherit}
.hidden{display:none!important}.app{display:flex;min-height:100vh}.sidebar{width:285px;background:linear-gradient(180deg,#061224,#0b1d33);color:white;padding:22px 14px;display:flex;flex-direction:column}
.brand{text-align:center;padding:12px 8px 20px}.brand-icon{width:112px;height:112px;margin:0 auto 16px;border-radius:34px;background:linear-gradient(145deg,#102441,#071426);box-shadow:0 20px 45px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;position:relative}.brand-icon.big{width:132px;height:132px;border-radius:38px}
.mark{width:72px;height:72px;position:relative}.mark.small{width:72px;height:72px}.mark:before{content:"";position:absolute;inset:0;border:13px solid transparent;border-left-color:#42e6b2;border-top-color:#42e6b2;border-bottom-color:#19c7e7;border-radius:8px 0 30px 30px}.drop{position:absolute;left:24px;top:20px;width:30px;height:42px;background:linear-gradient(180deg,#22d3ee,#0ea5e9);border-radius:50% 50% 50% 50%/60% 60% 40% 40%;box-shadow:0 8px 20px rgba(34,211,238,.35)}
.brand h1,.auth-card h1,.setup-card h1{font-size:30px;line-height:1.05;margin:0;font-weight:900;letter-spacing:-1px}.brand h1 span,.auth-card h1 span,.setup-card h1 span,.mobileLogo strong span{color:#5eead4}.brand p{color:#cbd5e1;font-size:13px;line-height:1.55;margin:10px 0 0}
.nav button{width:100%;border:0;background:transparent;color:#cbd5e1;padding:14px 16px;border-radius:14px;text-align:left;font-size:15px;font-weight:700;margin:3px 0;cursor:pointer}.nav button.active,.nav button:hover{background:#2563eb;color:white}
.sitebox{margin-top:auto;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:18px}.sitebox small{color:#94a3b8}.sitebox strong{display:block;margin:8px 0 12px}.sitebox p{display:flex;justify-content:space-between;font-size:14px}
.bar{height:8px;background:#e2e8f0;border-radius:99px;overflow:hidden}.sitebox .bar{background:#233348}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--green),var(--blue))}
.main{flex:1;min-width:0}header{height:82px;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:5}.menuBtn{display:none;border:1px solid var(--line);background:white;border-radius:12px;padding:10px;font-size:20px}header h2{margin:0;font-size:25px;letter-spacing:-.5px}header p{margin:5px 0 0;color:var(--muted);font-size:14px}.topActions{display:flex;gap:10px;align-items:center}.pill{border:1px solid var(--line);background:white;border-radius:14px;padding:11px 14px;font-size:14px}.primary{border:0;background:#2563eb;color:white;border-radius:14px;padding:12px 16px;font-weight:800;cursor:pointer}.danger{border:0;background:#ef4444;color:white;border-radius:14px;padding:12px 16px;font-weight:800;cursor:pointer}.ghost{border:1px solid var(--line);background:white;color:#0f172a;border-radius:14px;padding:12px 16px;font-weight:800;cursor:pointer}.full{width:100%;margin-top:10px}
.content{padding:26px;overflow:auto}.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}.card{background:white;border:1px solid var(--line);border-radius:20px;box-shadow:0 10px 30px rgba(15,23,42,.04)}.stat{padding:21px}.stat small{color:var(--muted);font-weight:700}.stat h3{font-size:31px;margin:16px 0 8px}.stat p{font-size:13px;color:var(--muted);margin:0 0 15px}.grid{display:grid;grid-template-columns:1.1fr 1.4fr .9fr;gap:16px;margin-top:16px}.grid.two{grid-template-columns:1fr 1fr}.card h3{font-size:17px;margin:0;padding:18px 20px;border-bottom:1px solid var(--line)}.rows{padding:18px 20px}.proc{display:grid;grid-template-columns:28px 1fr 78px 48px;gap:10px;align-items:center;font-size:14px;margin:14px 0}.num{width:24px;height:24px;border-radius:50%;background:#f1f5f9;display:flex;align-items:center;justify-content:center;color:#64748b;font-size:12px}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{color:#64748b;background:#f8fafc;text-align:left;font-size:12px}td,th{padding:14px;border-bottom:1px solid var(--line)}td:last-child,th:last-child{text-align:right}.badge{border-radius:999px;padding:6px 10px;font-size:12px;font-weight:800}.완료,.done{background:#ecfdf5;color:#047857}.진행중,.doing{background:#eff6ff;color:#1d4ed8}.지연,.delay{background:#fef2f2;color:#dc2626}.대기,.wait{background:#f1f5f9;color:#475569}
.page{display:none}.page.active{display:block}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.page-head h2{margin:0}.page-head p{margin:6px 0 0;color:var(--muted)}.form{padding:22px}.form h3{padding:0 0 16px;border:0}.form label{display:block;margin-top:13px;margin-bottom:8px;font-weight:800}.form input,.form select,.form textarea,.setup-card input,.auth-card input{width:100%;border:1px solid var(--line);border-radius:14px;padding:13px;font-size:15px;background:white}.form textarea,.setup-card textarea{min-height:90px}.list{padding:14px}.list-item{border:1px solid var(--line);border-radius:16px;padding:15px;margin-bottom:12px;background:#fff}.list-item h4{margin:0 0 6px}.list-item p{margin:0 0 10px;color:var(--muted);font-size:13px}.list-actions{display:flex;gap:8px;justify-content:flex-end}.smallbtn{border:1px solid var(--line);background:white;border-radius:10px;padding:8px 10px;cursor:pointer}.photo-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:15px}.photo-card{border:1px solid var(--line);border-radius:16px;padding:10px}.photo-card img{width:100%;height:160px;object-fit:cover;border-radius:12px}.photo-card p{font-size:13px;color:var(--muted)}.narrow{max-width:560px}
.auth-screen,.setup-screen{min-height:100vh;background:radial-gradient(circle at 50% 10%,#102441,#071426 55%,#030712);display:flex;align-items:center;justify-content:center;padding:24px}.auth-card,.setup-card{width:min(460px,100%);background:rgba(255,255,255,.97);border-radius:28px;padding:28px;box-shadow:0 30px 80px rgba(0,0,0,.35);text-align:center}.auth-card p,.setup-card p{color:#64748b}.auth-card label,.setup-card label{text-align:left;display:block;margin:14px 0 8px;font-weight:800}.tabs{display:grid;grid-template-columns:1fr 1fr;background:#f1f5f9;border-radius:14px;padding:4px;margin:18px 0}.tabs button{border:0;background:transparent;border-radius:11px;padding:11px;font-weight:800;cursor:pointer}.tabs button.active{background:white;box-shadow:0 4px 12px rgba(15,23,42,.08)}.notice{background:#f8fafc;border:1px solid #e2e8f0;border-radius:16px;padding:14px;color:#475569;text-align:left;font-size:14px;line-height:1.5}details{text-align:left;margin-top:14px;color:#475569}
#toast{position:fixed;right:20px;bottom:20px;background:#0f172a;color:white;padding:14px 16px;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.25);z-index:99;display:none}.mobileLogo{display:none}
@media(max-width:1100px){.stats{grid-template-columns:repeat(2,1fr)}.grid,.grid.two{grid-template-columns:1fr}.topActions{display:none}}
@media(max-width:760px){.app{display:block}.sidebar{position:fixed;inset:0 auto 0 0;z-index:20;transform:translateX(-100%);transition:.25s}.sidebar.open{transform:none}.main{width:100%}.menuBtn{display:block}header{height:auto;padding:14px 16px;gap:12px}.content{padding:16px}.stats{grid-template-columns:1fr}.brand-icon{width:94px;height:94px}.brand h1{font-size:25px}.mobileLogo{display:flex;align-items:center;gap:10px;margin-bottom:14px}.mobileLogo .smallIcon{width:48px;height:48px;border-radius:15px;background:linear-gradient(145deg,#102441,#071426);display:flex;align-items:center;justify-content:center;overflow:hidden}.mobileLogo strong{font-size:22px}.proc{grid-template-columns:24px 1fr 64px 42px;font-size:12px}td,th{padding:10px}.card{border-radius:16px}.photo-list{grid-template-columns:1fr}}


/* v6 dashboard auto-calculation enhancements */
.status-card{margin-top:16px}
.status-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:18px 20px}
.mini-status{border-radius:16px;padding:16px;text-align:center;border:1px solid var(--line)}
.mini-status b{display:block;font-size:28px;margin-bottom:6px}
.mini-status span{font-weight:800;font-size:13px}
.mini-status.wait{background:#f8fafc;color:#475569}
.mini-status.doing{background:#eff6ff;color:#1d4ed8}
.mini-status.done{background:#ecfdf5;color:#047857}
.mini-status.delay{background:#fef2f2;color:#dc2626}
.proc.enhanced{grid-template-columns:28px 1fr 70px 48px;align-items:center}
.proc.enhanced small{display:block;margin:6px 0 8px;color:#64748b;font-size:12px;font-weight:600}
@media(max-width:760px){.status-summary{grid-template-columns:repeat(2,1fr)}}


/* EcoTech ERP v7 */
.mt{margin-top:16px}
.grid.three{grid-template-columns:repeat(3,1fr)}
.role-box{margin:0 8px 14px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08);border-radius:18px;padding:14px}
.role-box small{display:block;color:#94a3b8;margin-bottom:5px}
.role-box strong{display:block;font-size:20px}
.role-box span{display:block;color:#cbd5e1;font-size:12px;margin-top:5px}
.hint{font-size:13px;color:#64748b;line-height:1.5}
.worker-shell{display:flex;justify-content:center}
.phone-ui{width:min(420px,100%);background:#071426;color:white;border-radius:34px;padding:22px;box-shadow:0 24px 60px rgba(15,23,42,.25)}
.phone-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}
.brand-mini{display:flex;align-items:center;gap:10px}
.phone-head span{background:#10b981;color:white;border-radius:999px;padding:7px 11px;font-weight:800;font-size:12px}
.phone-ui h2{margin:0 0 6px;font-size:26px}
.phone-ui p{color:#cbd5e1;margin-top:0}
.mobile-card{background:white;color:#0f172a;border-radius:24px;padding:18px;margin-top:16px}
.mobile-card label{display:block;font-weight:800;margin-top:12px;margin-bottom:7px}
.mobile-card input,.mobile-card select,.mobile-card textarea{width:100%;border:1px solid #e2e8f0;border-radius:14px;padding:12px;font-size:15px}
.mobile-card textarea{min-height:80px}
.my-work-item{border-bottom:1px solid #e2e8f0;padding:10px 0;font-size:14px}
.my-work-item:last-child{border-bottom:0}
.smallIcon{width:42px;height:42px;border-radius:14px;background:linear-gradient(145deg,#102441,#071426);display:flex;align-items:center;justify-content:center;overflow:hidden}
.smallIcon .mark{transform:scale(.36)}
.plan-delay{color:#dc2626;font-weight:900}
.plan-ok{color:#047857;font-weight:900}
@media(max-width:1100px){.grid.three{grid-template-columns:1fr}}


/* EcoTech ERP v8 - user/permission management */
.user-guide{margin-bottom:16px}
.role-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:18px 20px}
.role-cards div{border:1px solid var(--line);border-radius:16px;padding:16px;background:#f8fafc}
.role-cards b{display:block;margin-bottom:8px;font-size:16px}
.role-cards span{display:block;color:#64748b;font-size:13px;line-height:1.45}
.badge.role-owner{background:#fef3c7;color:#92400e}
.badge.role-manager{background:#eff6ff;color:#1d4ed8}
.badge.role-worker{background:#ecfdf5;color:#047857}
.notice.small{font-size:13px;margin-top:14px}
@media(max-width:900px){.role-cards{grid-template-columns:1fr}}


/* EcoTech ERP v8.1 */
.small-full{width:100%;margin-top:10px;padding:9px 12px;border-radius:12px;font-size:13px}
.photo-card .danger{background:#ef4444;color:white;border:0;font-weight:800;cursor:pointer}


/* EcoTech ERP v8.2 - work quantity progress */
.work-progress-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:18px 20px}
.work-progress-summary div{background:#f8fafc;border:1px solid var(--line);border-radius:16px;padding:16px;text-align:center}
.work-progress-summary small{display:block;color:#64748b;font-weight:800;margin-bottom:8px}
.work-progress-summary b{font-size:28px}
.bar.big{height:14px}
@media(max-width:760px){.work-progress-summary{grid-template-columns:1fr}}


/* EcoTech ERP v9 - partner permission & photo date grouping */
.badge.role-partner{background:#f5f3ff;color:#6d28d9}
.photo-filter{display:flex;gap:10px;align-items:end;padding:14px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.photo-filter label{font-weight:800;font-size:13px;color:#475569;display:block;width:100%}
.photo-filter select{min-width:180px;border:1px solid var(--line);border-radius:12px;padding:10px;background:white}
.photo-date-group{grid-column:1/-1;margin-bottom:22px}
.photo-date-group h4{font-size:18px;margin:0 0 12px;padding:10px 12px;background:#f8fafc;border-radius:12px;border:1px solid var(--line)}
.photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.photo-list.grouped{display:block}
@media(max-width:760px){.photo-grid{grid-template-columns:1fr}}


/* EcoTech ERP v10 - approval workflow */
.badge.approval-pending{background:#fef3c7;color:#92400e}
.badge.approval-approved{background:#ecfdf5;color:#047857}
.badge.approval-rejected{background:#fef2f2;color:#dc2626}


/* EcoTech ERP v10.3 - mobile sidebar scroll/fix patch */
@media (max-width: 900px) {
  html, body {
    max-width: 100%;
    overflow-x: hidden;
  }

  .app {
    width: 100%;
    overflow-x: hidden;
  }

  .sidebar {
    position: fixed !important;
    top: 0;
    left: 0;
    width: min(86vw, 360px) !important;
    height: 100dvh !important;
    max-height: 100dvh !important;
    z-index: 9999;
    transform: translateX(-105%);
    transition: transform .25s ease;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch;
    padding-bottom: calc(120px + env(safe-area-inset-bottom));
    overscroll-behavior: contain;
  }

  .sidebar.open {
    transform: translateX(0);
  }

  .sidebar .brand {
    padding-top: max(22px, env(safe-area-inset-top));
  }

  .nav {
    padding-bottom: 80px;
  }

  .nav button {
    min-height: 54px;
    flex-shrink: 0;
  }

  .sitebox {
    margin-bottom: 80px;
  }

  .main {
    width: 100% !important;
    margin-left: 0 !important;
    overflow-x: hidden;
  }

  .content {
    overflow-x: hidden;
  }

  header {
    position: sticky;
    top: 0;
    z-index: 100;
  }

  .menuBtn {
    display: inline-flex !important;
  }
}

/* very small mobile */
@media (max-width: 480px) {
  .sidebar {
    width: 88vw !important;
  }

  .brand h1 {
    font-size: 30px;
  }

  .nav button {
    font-size: 17px;
  }
}


/* EcoTech ERP v10.5 - permission restrictions */
body.role-partner #sites .form,
body.role-partner #lines .form,
body.role-partner #plans .form,
body.role-partner #siteWorkScopes .form,
body.role-partner #daily .form,
body.role-partner #workerMobile .mobile-card:first-of-type,
body.role-partner #photos .form:not(#defectRequestFormCard),
body.role-partner .smallbtn,
body.role-partner .small-full,
body.role-partner button.danger {
  display: none !important;
}

body.role-partner #sites .card:first-child::after,
body.role-partner #lines .card:first-child::after,
body.role-partner #plans .card:first-child::after,
body.role-partner #photos .card:first-child::after {
  content: "협약사는 조회 전용 권한입니다. 입력, 업로드, 수정, 삭제는 할 수 없습니다.";
  display: block;
  padding: 18px;
  border: 1px solid #e2e8f0;
  border-radius: 16px;
  background: #f8fafc;
  color: #475569;
  font-weight: 800;
}

/* 작업자·협약사의 공정 계획표 및 전체 작업량은 열람 전용 */
body.role-worker #plans .plan-edit-form,
body.role-worker #siteWorkScopes .scope-edit-form,
body.role-partner #plans .plan-edit-form,
body.role-partner #siteWorkScopes .scope-edit-form {
  display: none !important;
}

body.role-worker #plans .grid.two,
body.role-worker #siteWorkScopes .grid.two,
body.role-partner #plans .grid.two,
body.role-partner #siteWorkScopes .grid.two {
  grid-template-columns: 1fr !important;
}

body.role-worker #plans .page-head::after,
body.role-worker #siteWorkScopes .page-head::after,
body.role-partner #plans .page-head::after,
body.role-partner #siteWorkScopes .page-head::after {
  content: "열람 전용 화면입니다. 등록·수정·삭제는 대표와 관리자만 가능합니다.";
  display: block;
  margin-top: 10px;
  padding: 10px 14px;
  border-radius: 12px;
  background: #eff6ff;
  color: #1d4ed8;
  font-weight: 800;
}

/* 작업자의 장비·자재 현황은 열람 전용 */
body.role-worker #inventory .form,
body.role-worker #inventory .inventory-actions {
  display: none !important;
}


/* EcoTech ERP v10.5 - luxury shield droplet logo */
.logo-image-box {
  background: linear-gradient(145deg, #071426, #0d1b2f) !important;
  border: 1px solid rgba(255,255,255,.10);
  box-shadow: 0 18px 48px rgba(0,0,0,.32), inset 0 1px 0 rgba(255,255,255,.08);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}

.logo-image-box img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Sidebar logo slightly larger and cleaner */
.sidebar .brand .brand-icon,
.brand-icon.logo-image-box {
  border-radius: 28px;
}

/* Login logo */
.auth-card .brand-icon.big.logo-image-box {
  width: 132px;
  height: 132px;
  border-radius: 32px;
  margin-inline: auto;
}

/* Sidebar brand icon */
.sidebar .brand .brand-icon.logo-image-box {
  width: 128px;
  height: 128px;
}

/* Smaller mobile treatment */
@media (max-width: 760px) {
  .sidebar .brand .brand-icon.logo-image-box {
    width: 116px;
    height: 116px;
  }
  .auth-card .brand-icon.big.logo-image-box {
    width: 118px;
    height: 118px;
  }
}


/* EcoTech ERP v11.0 - photo display fallback */
.photo-error{
  min-height:160px;
  border:1px dashed #cbd5e1;
  border-radius:12px;
  background:#f8fafc;
  color:#64748b;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:14px;
  font-size:13px;
}


/* EcoTech ERP v11.1 - photo site/date filters */
.photo-filter{
  display:flex;
  gap:12px;
  align-items:flex-end;
  flex-wrap:wrap;
}
.photo-filter > div{
  display:flex;
  flex-direction:column;
  gap:6px;
}
.photo-filter select{
  min-width:180px;
}
@media(max-width:760px){
  .photo-filter > div,
  .photo-filter select,
  .photo-filter button{
    width:100%;
  }
}


/* EcoTech ERP v11.3 - timecard/payroll */
.grid.three{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:16px;
  margin:16px 0;
}
.form.compact{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
}
@media(max-width:900px){
  .grid.three{grid-template-columns:1fr;}
}


/* v11.3.7: left logo works as Home/Dashboard button */
.brand-home{cursor:pointer; user-select:none;}
.brand-home:hover{transform:translateY(-1px); opacity:.96;}
.brand-home:focus{outline:2px solid rgba(46,104,240,.55); outline-offset:6px; border-radius:18px;}

/* EcoTech ERP v11.3.8 - photo delete button always visible in photo card */
.photo-delete-btn{
  display:block !important;
  width:100% !important;
  margin-top:10px;
  padding:10px 12px;
  border:0;
  border-radius:12px;
  background:#ef4444;
  color:#fff;
  font-weight:900;
  cursor:pointer;
  font-size:13px;
}
.photo-delete-btn:hover{filter:brightness(.96);}
body.role-partner .photo-delete-btn{display:none !important;}


/* EcoTech ERP v11.4 - persistent PC/mobile logout */
.sidebar-account{
  margin-top:auto;
  padding:14px 8px max(8px, env(safe-area-inset-bottom));
  border-top:1px solid rgba(255,255,255,.1);
}
.sidebar-user{padding:0 6px 12px;}
.sidebar-user small{display:block;color:#94a3b8;margin-bottom:5px;}
.sidebar-user strong{display:block;color:#fff;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sidebar-user span{display:block;color:#cbd5e1;font-size:12px;margin-top:4px;}
.sidebar-logout{
  width:100%;border:1px solid rgba(248,113,113,.45);background:rgba(239,68,68,.16);
  color:#fecaca;border-radius:14px;padding:12px 14px;font-weight:900;cursor:pointer;
}
.sidebar-logout:hover{background:#ef4444;color:#fff;}
.sidebar-logout:disabled{opacity:.65;cursor:wait;}
@media(max-width:900px){
  .sidebar-account{position:sticky;bottom:0;background:linear-gradient(180deg,rgba(11,29,51,.94),#061224 28%);padding-bottom:max(14px, env(safe-area-inset-bottom));z-index:3;}
  .sidebar .sitebox{margin-bottom:8px;}
}


/* EcoTech ERP v11.5 - 작업일보/PDF */
.check-row{display:flex!important;align-items:center;gap:9px;margin:8px 0 2px}.check-row input{width:auto!important}
.report-preview-wrap{overflow:auto;padding:18px 0 40px}.daily-report-paper{width:210mm;min-height:297mm;margin:0 auto;background:#fff;color:#111827;padding:12mm;box-shadow:0 18px 50px rgba(15,23,42,.16);font-family:"Noto Sans KR","Malgun Gothic",Arial,sans-serif;box-sizing:border-box}.report-letterhead{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:3px solid #0f766e;padding-bottom:12px;margin-bottom:14px}.report-letterhead h1{font-size:27px;margin:0 0 3px;color:#0f172a}.report-letterhead p{margin:0;color:#64748b}.report-date-box{border:1px solid #cbd5e1;min-width:135px;text-align:center}.report-date-box b,.report-date-box span{display:block;padding:7px}.report-date-box b{background:#f1f5f9;border-bottom:1px solid #cbd5e1}.report-info,.report-work-table{width:100%;border-collapse:collapse;font-size:12px}.report-info th,.report-info td,.report-work-table th,.report-work-table td{border:1px solid #cbd5e1;padding:7px;vertical-align:top}.report-info th{width:14%;background:#f8fafc;text-align:left}.report-work-table th{background:#e2e8f0}.report-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.report-kpis>div{border:1px solid #cbd5e1;border-radius:7px;padding:10px;text-align:center}.report-kpis small{display:block;color:#64748b;margin-bottom:5px}.report-kpis b{font-size:18px;color:#0f766e}.report-section-title,.report-notes h2{font-size:15px;margin:18px 0 8px;padding-left:8px;border-left:4px solid #0f766e}.report-notes{border:1px solid #cbd5e1;margin-top:14px;padding:0 12px 10px;min-height:70px}.report-notes p{font-size:12px;line-height:1.65}.report-photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.report-photo-grid figure{margin:0;border:1px solid #cbd5e1;break-inside:avoid;page-break-inside:avoid}.report-photo-grid img{width:100%;height:210px;object-fit:cover;display:block}.report-photo-grid figcaption{font-size:11px;padding:7px;min-height:28px}.report-photo-missing{height:210px;display:flex;align-items:center;justify-content:center;background:#f8fafc;color:#94a3b8}.report-sign{display:flex;justify-content:flex-end;gap:40px;margin-top:25px;padding-top:12px;border-top:1px solid #cbd5e1;font-size:12px}.empty-report{text-align:center;color:#64748b;padding:20px!important}.report-photo-empty{border:1px dashed #cbd5e1}.report-auto-summary{display:grid;gap:10px}.report-auto-summary>div{display:flex;justify-content:space-between;gap:15px;padding:12px;border-radius:10px;background:#f8fafc}.report-auto-summary span{color:#64748b}.report-auto-summary b{text-align:right}.report-summary-card{align-self:start}
@media(max-width:900px){.daily-report-paper{width:100%;min-width:760px}.report-preview-wrap{margin-left:-4px}.report-controls{grid-template-columns:1fr!important}}
@media print{body.printing-report *{visibility:hidden!important}body.printing-report #dailyReportPreview,body.printing-report #dailyReportPreview *{visibility:visible!important}body.printing-report #dailyReportPreview{position:absolute;left:0;top:0;width:210mm;min-height:297mm;margin:0;box-shadow:none;padding:10mm}body.printing-report{background:#fff}.report-photo-grid figure{break-inside:avoid;page-break-inside:avoid}}


/* EcoTech ERP v11.6 - 경비 및 작업일보 비용 집계 */
.expense-stats{margin-top:18px}.expense-stats .stat{min-height:110px}
.report-cost-kpis{grid-template-columns:repeat(3,1fr);margin-top:10px}
.report-cost-kpis .report-total-spend,.report-auto-summary .summary-total{background:#eaf1ff;border-color:#8fb0ff}
.report-auto-summary .summary-total b{color:#1558d6;font-size:1.08em}
@media(max-width:760px){.report-cost-kpis{grid-template-columns:1fr}.expense-stats{grid-template-columns:1fr}}

.negative-cost{color:#d9363e;font-weight:800}.cost-overview{margin:18px 0}.cost-overview .stat strong{font-size:24px}


/* v12.0 장비 및 자재 현황 */
#inventory .notice{margin-bottom:14px}
#inventory .inventory-stats{margin:16px 0}
#inventory table td:nth-child(2){min-width:170px}
#inventory table td:nth-child(4),#inventory table td:nth-child(5){min-width:120px}
@media(max-width:760px){#inventory .grid.three{grid-template-columns:1fr}#inventory .inventory-stats{grid-template-columns:repeat(2,1fr)}}

/* EcoTech ERP v12.1.1 - 현장목록 삭제 버튼 가시성 수정 */
.list-actions .smallbtn.danger{
  background:#ef4444;
  color:#ffffff;
  border:1px solid #ef4444;
}
.list-actions .smallbtn.danger:hover{
  background:#dc2626;
  border-color:#dc2626;
}

/* EcoTech ERP v12.2 - inventory action buttons */
.inventory-actions{display:flex;gap:6px;flex-wrap:wrap;min-width:190px}
.smallbtn.btn-edit{background:#2563eb!important;color:#fff!important;border:1px solid #2563eb!important;font-weight:800}
.smallbtn.btn-move{background:#16a34a!important;color:#fff!important;border:1px solid #16a34a!important;font-weight:800}
.smallbtn.btn-delete{background:#ef4444!important;color:#fff!important;border:1px solid #ef4444!important;font-weight:800}
.asset-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:900;white-space:nowrap}

/* v12.3 사용자별 메뉴 접근권한 */
.permission-editor{margin:18px 0;padding:16px;border:1px solid #dbe3ef;border-radius:16px;background:#f8fafc}
.permission-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}
.permission-head span{display:block;margin-top:4px;color:#64748b;font-size:13px}
.permission-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px}
.permission-item{display:flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid #e2e8f0;border-radius:12px;background:#fff;font-weight:700}
.permission-item input{width:18px;height:18px;margin:0}
@media(max-width:700px){.permission-head{display:block}.permission-actions{justify-content:flex-start;margin-top:10px}.permission-grid{grid-template-columns:1fr}}

/* v12.4 발주처·시공사 로고 */
.site-logo-preview{display:flex;align-items:center;gap:12px;min-height:18px;margin:6px 0 12px}
.site-logo-preview img{max-width:160px;max-height:64px;object-fit:contain;border:1px solid #dbe3ef;border-radius:10px;background:#fff;padding:6px}
.site-logo-pair{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:12px}
.site-logo-unit{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid #e1e7f0;border-radius:12px;background:#fff}
.site-logo-unit img{width:92px;height:46px;object-fit:contain}
.site-logo-unit small{display:block;color:#64748b}
.partner-brand-banner{margin:0 0 18px;padding:14px 18px;border:1px solid #dbe3ef;border-radius:16px;background:#fff;box-shadow:0 8px 24px rgba(15,23,42,.06)}
.partner-brand-inner{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}
.partner-brand-site{font-weight:800;font-size:18px}
.partner-brand-logos{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.partner-brand-logo{display:flex;align-items:center;gap:9px;padding:7px 11px;border-radius:12px;background:#f8fafc}
.partner-brand-logo img{width:88px;height:42px;object-fit:contain}
.partner-brand-logo span{font-weight:700}
@media(max-width:720px){.partner-brand-logo img{width:68px;height:34px}.partner-brand-site{font-size:16px}}


/* EcoTech ERP v12.4.4 - 사진 확대 뷰어 */
.photo-thumb-button{display:block;width:100%;padding:0;border:0;background:transparent;cursor:zoom-in;border-radius:12px;overflow:hidden}
.photo-thumb-button img{display:block;width:100%;height:220px;object-fit:cover;transition:transform .2s ease}
.photo-thumb-button:hover img{transform:scale(1.025)}
.photo-viewer{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;background:rgba(2,6,23,.92);padding:24px}
.photo-viewer.open{display:flex}
.photo-viewer-content{max-width:min(1200px,88vw);max-height:92vh;display:flex;flex-direction:column;align-items:center;gap:10px}
.photo-viewer-content img{display:block;max-width:100%;max-height:82vh;object-fit:contain;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.45)}
.photo-viewer-info{width:100%;display:flex;justify-content:space-between;gap:16px;color:#fff;font-size:14px}
.photo-viewer-close,.photo-viewer-nav{position:absolute;border:0;background:rgba(255,255,255,.14);color:#fff;cursor:pointer;display:grid;place-items:center;backdrop-filter:blur(8px)}
.photo-viewer-close{top:18px;right:20px;width:46px;height:46px;border-radius:50%;font-size:34px;line-height:1}
.photo-viewer-nav{top:50%;transform:translateY(-50%);width:52px;height:72px;border-radius:14px;font-size:52px}
.photo-viewer-nav.prev{left:18px}.photo-viewer-nav.next{right:18px}
.photo-viewer-close:hover,.photo-viewer-nav:hover{background:rgba(255,255,255,.25)}
body.modal-open{overflow:hidden}
@media(max-width:720px){.photo-thumb-button img{height:180px}.photo-viewer{padding:12px}.photo-viewer-content{max-width:94vw}.photo-viewer-content img{max-height:78vh}.photo-viewer-nav{width:42px;height:58px;font-size:42px}.photo-viewer-nav.prev{left:8px}.photo-viewer-nav.next{right:8px}.photo-viewer-info{padding:0 4px;font-size:12px}}


/* EcoScore v12.5 - enterprise branding */
.ecoscore-wordmark{letter-spacing:-1.4px;margin-bottom:2px!important}.ecoscore-wordmark span{color:#11a683}.brand-by{font-size:12px;font-weight:800;letter-spacing:1.6px;text-transform:uppercase;color:#64748b;margin-top:-2px;margin-bottom:10px}.sidebar-by{margin-top:6px;margin-bottom:0;color:#93a4bb}.auth-brand-note{margin:-2px 0 18px;color:#64748b;font-size:13px;line-height:1.55}.auth-screen,.setup-screen{background:radial-gradient(circle at 20% 10%,rgba(17,166,131,.18),transparent 32%),linear-gradient(145deg,#071426 0%,#0d2340 55%,#0a3140 100%)}.auth-card,.setup-card{border:1px solid rgba(255,255,255,.22);box-shadow:0 28px 80px rgba(2,6,23,.35)}.auth-card:before,.setup-card:before{content:"ECOSCORE";display:block;font-size:10px;font-weight:900;letter-spacing:4px;color:#11a683;margin-bottom:10px}.sidebar .brand h1{letter-spacing:-1px}.sidebar .brand h1 span,.mobileLogo strong span{color:#21c49c}.sidebar{background:linear-gradient(180deg,#071426 0%,#0a2036 62%,#071426 100%)}header{border-bottom:1px solid #e5eaf2;background:rgba(255,255,255,.94);backdrop-filter:blur(14px)}#pageTitle{letter-spacing:-.5px}.mobileLogo strong{font-size:17px;letter-spacing:-.5px}


/* EcoScore v12.6 - 오늘의 작업 요청사항 */
.work-notice-card{margin-bottom:18px;border:1px solid #d8e5e1;background:linear-gradient(180deg,#ffffff 0%,#f8fffc 100%)}
.work-notice-title{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.work-notice-title h3{margin:0 0 4px}.work-notice-title p{margin:0;color:#64748b;font-size:13px}
.work-notice-form{padding:14px;margin:12px 0 16px;border:1px solid #cfe5dd;border-radius:14px;background:#f3fbf8}.notice-form-grid{display:grid;grid-template-columns:180px 1fr;gap:12px}.work-notice-form label{display:block;font-size:13px;font-weight:800;color:#334155}.work-notice-form input,.work-notice-form textarea{width:100%;margin-top:6px}.notice-form-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:10px}.notice-important-check{display:flex!important;align-items:center;gap:8px}.notice-important-check input{width:18px!important;margin:0!important}
.work-notice-list{display:grid;gap:10px}.work-notice-item{padding:14px 16px;border:1px solid #e2e8f0;border-radius:14px;background:#fff}.work-notice-item.important{border-color:#f5c451;background:#fffdf4;box-shadow:inset 4px 0 0 #f59e0b}.work-notice-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.work-notice-head>div{display:flex;align-items:center;gap:8px}.work-notice-head time{color:#64748b;font-size:12px;white-space:nowrap}.work-notice-item p{margin:9px 0 0;line-height:1.65;white-space:normal}.notice-pin{display:inline-flex;padding:3px 7px;border-radius:999px;background:#f59e0b;color:#fff;font-size:11px;font-weight:900}.work-notice-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.notice-edit-btn,.notice-delete-btn,.notice-save-btn,.notice-cancel-btn{display:inline-flex;align-items:center;justify-content:center;min-width:72px;min-height:38px;padding:8px 15px;border-radius:10px;font-weight:900;font-size:13px;cursor:pointer;line-height:1;border:1px solid transparent}.notice-edit-btn{background:#e8f2ff!important;border-color:#93c5fd!important;color:#075985!important}.notice-delete-btn{background:#fff1f2!important;border-color:#fda4af!important;color:#be123c!important}.notice-save-btn{background:#087f5b!important;border-color:#087f5b!important;color:#fff!important}.notice-cancel-btn{background:#fff!important;border-color:#cbd5e1!important;color:#475569!important}.notice-submit-actions{display:flex;align-items:center;gap:8px}.notice-edit-btn:hover,.notice-delete-btn:hover,.notice-save-btn:hover,.notice-cancel-btn:hover{filter:brightness(.96);transform:translateY(-1px)}.work-notice-empty{padding:20px;text-align:center;color:#64748b;border:1px dashed #cbd5e1;border-radius:12px}
@media(max-width:700px){.notice-form-grid{grid-template-columns:1fr}.notice-form-actions{align-items:flex-start;flex-direction:column}.notice-submit-actions{width:100%}.notice-submit-actions button{flex:1}.work-notice-head{align-items:flex-start}.work-notice-item{padding:13px}.work-notice-actions{justify-content:stretch}.work-notice-actions button{flex:1}}


/* EcoScore v12.6.4 - mobile brand logo and sidebar logout layout */
.mobileLogo .smallIcon.logo-image-box img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

@media (max-width: 900px) {
  .sidebar {
    overflow: hidden !important;
    padding-bottom: 14px !important;
    display: flex !important;
    flex-direction: column !important;
  }

  .sidebar .brand,
  .sidebar .role-box {
    flex: 0 0 auto;
  }

  .sidebar .nav {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    padding-bottom: 16px;
    -webkit-overflow-scrolling: touch;
  }

  .sidebar .sitebox {
    flex: 0 0 auto;
    margin-bottom: 8px;
  }

  .sidebar-account {
    position: static !important;
    flex: 0 0 auto;
    margin-top: 0;
    background: #061224;
    padding: 12px 8px max(12px, env(safe-area-inset-bottom));
    z-index: 3;
  }
}

/* EcoScore v12.6.5 - restore full mobile sidebar scrolling */
@media (max-width: 900px) {
  .sidebar {
    display: block !important;
    height: 100dvh !important;
    max-height: 100dvh !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-y: contain;
    padding-bottom: max(18px, env(safe-area-inset-bottom)) !important;
  }

  .sidebar .nav {
    display: block;
    overflow: visible !important;
    min-height: auto !important;
    padding-bottom: 14px;
  }

  .sidebar .sitebox {
    margin-bottom: 10px !important;
  }

  .sidebar-account {
    position: static !important;
    margin-top: 0 !important;
    padding: 14px 8px max(18px, env(safe-area-inset-bottom)) !important;
    background: #061224;
  }
}

/* EcoScore v12.6.6 - reliable mobile sidebar touch scrolling */
@media (max-width: 900px) {
  .sidebar {
    box-sizing: border-box !important;
    top: 0 !important;
    bottom: auto !important;
    height: 100svh !important;
    max-height: 100svh !important;
    overflow-y: scroll !important;
    overflow-x: hidden !important;
    touch-action: pan-y !important;
    overscroll-behavior-y: auto !important;
    -webkit-overflow-scrolling: touch !important;
    scrollbar-gutter: stable;
    padding-bottom: calc(28px + env(safe-area-inset-bottom)) !important;
  }

  .sidebar.open {
    pointer-events: auto !important;
  }

  .sidebar > * {
    max-width: 100%;
  }

  .sidebar-account {
    position: static !important;
    margin-top: 12px !important;
    padding-bottom: calc(24px + env(safe-area-inset-bottom)) !important;
  }

  body.modal-open .sidebar {
    overflow-y: scroll !important;
    touch-action: pan-y !important;
  }
}

@supports not (height: 100svh) {
  @media (max-width: 900px) {
    .sidebar {
      height: 100vh !important;
      max-height: 100vh !important;
    }
  }
}

/* v12.6.7 multiple site assignments */
.site-assignment-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  max-height:260px;
  overflow-y:auto;
  padding:10px;
  border:1px solid var(--line,#dbe3ea);
  border-radius:10px;
  background:var(--soft,#f8fafc);
}
.site-assignment-item{
  display:flex;
  align-items:center;
  gap:8px;
  padding:9px 10px;
  border:1px solid var(--line,#dbe3ea);
  border-radius:8px;
  background:#fff;
  cursor:pointer;
}
.site-assignment-item input{width:18px;height:18px;margin:0;flex:0 0 auto;}
.site-assignment-item span{overflow-wrap:anywhere;}
@media(max-width:700px){.site-assignment-grid{grid-template-columns:1fr;max-height:220px;}}

/* v12.6.8 복수 담당 현장 선택 */
.sitebox{margin-top:auto}
.sitebox-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.sitebox-head span{font-size:12px;color:#cbd5e1;background:rgba(255,255,255,.08);padding:3px 8px;border-radius:99px}
.side-site-tabs{display:flex;gap:7px;overflow-x:auto;padding:2px 0 12px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
.side-site-tab{flex:0 0 auto;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:#cbd5e1;border-radius:999px;padding:8px 11px;font-size:12px;font-weight:800;cursor:pointer}
.side-site-tab.active{background:#2563eb;border-color:#60a5fa;color:#fff;box-shadow:0 5px 16px rgba(37,99,235,.28)}
.side-site-empty{font-size:12px;color:#94a3b8;line-height:1.5}
.sitebox-current{border-top:1px solid rgba(255,255,255,.08);padding-top:12px}
@media(max-width:900px){.side-site-tabs{max-width:100%;padding-bottom:14px}.side-site-tab{padding:9px 12px}.sitebox{margin-top:14px}}


/* EcoScore v12.6.9 - click outside sidebar to return to main content */
.sidebar-backdrop{
  display:none;
  position:fixed;
  inset:0;
  border:0;
  padding:0;
  margin:0;
  background:rgba(2,6,23,.38);
  backdrop-filter:blur(1px);
  cursor:pointer;
  z-index:19;
}
@media(max-width:900px){
  .sidebar.open + .sidebar-backdrop{
    display:block;
  }
  .sidebar-backdrop{
    touch-action:manipulation;
    -webkit-tap-highlight-color:transparent;
  }
  body.sidebar-menu-open{
    overflow:hidden;
  }
}


/* v12.7.1 협약사 공동 브랜드 배너 */
.partner-brand-site-wrap{min-width:190px}
.partner-brand-logos{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.partner-brand-logo{min-height:62px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 4px 14px rgba(15,23,42,.05)}
.partner-brand-logo img{width:76px;height:52px;object-fit:contain;border-radius:10px;background:#fff}
.partner-brand-ecoscore span{color:#0f766e;font-size:17px}
.partner-brand-contractor span{font-size:15px}
.partner-brand-plus{font-size:24px;font-weight:800;color:#94a3b8}
.partner-logo-placeholder{width:76px;height:52px;display:flex;align-items:center;justify-content:center;text-align:center;border:1px dashed #cbd5e1;border-radius:10px;color:#94a3b8;font-size:11px;background:#f8fafc}
@media(max-width:720px){
  .partner-brand-inner{align-items:flex-start}
  .partner-brand-logos{width:100%;gap:8px}
  .partner-brand-logo{flex:1;min-width:0;padding:7px 8px}
  .partner-brand-logo img,.partner-logo-placeholder{width:54px;height:40px}
  .partner-brand-plus{font-size:19px}
  .partner-brand-logo span{font-size:13px}
}


/* EcoScore v12.7.3 - compact mobile header and partner notice privacy */
.mobileHeaderBrand{display:none;align-items:center;gap:10px;min-width:0}
.mobileHeaderBrand img{width:38px;height:38px;object-fit:contain;border-radius:10px;background:#fff}
.mobileHeaderBrand strong{font-size:20px;line-height:1;font-weight:900;letter-spacing:-.6px;color:#0f172a;white-space:nowrap}
body.role-partner #workNoticeCard{display:none!important}
@media(max-width:760px){
  header{min-height:72px;height:72px;padding:10px 14px;align-items:center}
  header .desktopPageHeading{display:none!important}
  header .mobileHeaderBrand{display:flex}
  header .menuBtn{flex:0 0 auto}
  header .topActions{margin-left:auto}
  header .topActions .pill,
  header .topActions .primary,
  header .topActions .danger{display:none!important}
  .content{padding-top:14px}
  .mobileLogo{display:none!important}
}

/* EcoScore v12.8.0 premium responsive header */
.ecoscore-topbar{height:96px;padding:0 28px;background:rgba(255,255,255,.97);border-bottom:1px solid #dfe7f0;box-shadow:0 3px 18px rgba(15,23,42,.035);gap:18px}
.header-brand-block{display:flex;align-items:center;gap:14px;min-width:0;margin-right:auto}
.header-brand-logo{width:58px;height:58px;object-fit:contain;border-radius:14px;background:#fff}
.header-brand-copy{display:flex;flex-direction:column;min-width:0}
.header-brand-copy strong{font-size:29px;line-height:1.05;font-weight:900;letter-spacing:-1px;color:#071426;white-space:nowrap}
.header-brand-copy span{margin-top:8px;font-size:15px;color:#718096;white-space:nowrap}
.header-notification-wrap{position:relative;flex:0 0 auto}
.header-notification-btn{position:relative;width:50px;height:50px;border:1px solid #dbe3ef;border-radius:16px;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 18px rgba(15,23,42,.04)}
.header-notification-btn .bell-glyph{font-size:23px;line-height:1}.header-notification-btn .bell-icon{display:none}
.notification-badge{position:absolute;top:-7px;right:-6px;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#0ba37f;color:#fff;font-size:12px;line-height:22px;text-align:center;border:2px solid #fff}
.notification-panel{position:absolute;right:0;top:60px;width:min(340px,85vw);padding:12px;background:#fff;border:1px solid #dbe3ef;border-radius:18px;box-shadow:0 18px 45px rgba(15,23,42,.16);z-index:1000}
.notification-panel h4{margin:0;padding:8px 10px 12px;font-size:17px}.notification-item{padding:12px;border-radius:12px;background:#f7fafc;margin-top:8px;color:#334155;font-size:14px}.notification-item b{display:block;color:#0f172a;margin-bottom:3px}.notification-empty{padding:18px;text-align:center;color:#64748b}
.current-site-strip{height:64px;background:rgba(249,253,252,.98);border-bottom:1px solid #dce8e5;display:flex;align-items:center;padding:0 30px;gap:14px;color:#0f172a;position:sticky;top:96px;z-index:4}
.current-site-pin{color:#0ba37f;font-size:16px}.current-site-strip b{color:#079978;white-space:nowrap}.current-site-divider{width:1px;height:25px;background:#cfd8e3}.current-site-strip select{min-width:0;max-width:720px;flex:1;border:0;background:transparent;font-size:16px;font-weight:700;color:#182033;outline:none;padding:8px 34px 8px 0}
@media(max-width:1100px){.ecoscore-topbar .topActions{display:none}.header-notification-wrap{margin-left:auto}}
@media(max-width:760px){
  .ecoscore-topbar{height:88px;padding:12px 18px;gap:12px}
  .menuBtn{width:58px;height:58px;padding:0;border-radius:17px;font-size:27px;display:inline-flex!important;align-items:center;justify-content:center;flex:0 0 auto}
  .header-brand-block{gap:10px;margin-right:0;flex:1;justify-content:center}
  .header-brand-logo{width:48px;height:48px;border-radius:12px}
  .header-brand-copy strong{font-size:23px;letter-spacing:-.7px}
  .header-brand-copy span{font-size:11px;margin-top:5px}
  .header-notification-btn{width:48px;height:48px;border-radius:16px}
  .current-site-strip{height:58px;top:88px;padding:0 18px;gap:10px}
  .current-site-strip b{font-size:14px}.current-site-strip select{font-size:14px;text-overflow:ellipsis}
  .content{padding-top:18px}
}
@media(max-width:480px){
  .ecoscore-topbar{padding:10px 12px}
  .menuBtn{width:52px;height:52px}
  .header-brand-logo{width:42px;height:42px}
  .header-brand-copy strong{font-size:20px}.header-brand-copy span{font-size:10px}
  .header-notification-btn{width:44px;height:44px}
  .current-site-strip{padding:0 14px}.current-site-divider{display:none}.current-site-strip b{font-size:13px}.current-site-strip select{font-size:13px}
}

/* EcoScore v12.8.1 공지 읽음/알림 */
.notification-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 2px 10px;border-bottom:1px solid #e7ecea}.notification-panel-head h4{margin:0}.notification-panel-head button{border:0;background:transparent;color:#087f5b;font-weight:800;font-size:12px;cursor:pointer}.notification-item{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid #edf1ef;background:#fff;padding:12px 8px;cursor:pointer;border-radius:8px}.notification-item:hover{background:#f3faf7}.notification-item b,.notification-item span{display:block}.notification-item span{margin-top:5px;font-size:12px;color:#66746e;line-height:1.45}.notification-empty small{color:#8a9691}.notice-read-state{display:inline-flex;align-items:center;justify-content:center;padding:2px 7px;border-radius:999px;font-size:10px;font-weight:900;margin-right:6px;vertical-align:1px}.notice-read-state.is-new{background:#e03131;color:#fff}.notice-read-state.is-read{background:#e9efec;color:#617069}.work-notice-item.unread{border-color:#82d3b5;box-shadow:0 0 0 1px rgba(20,146,102,.08)}.work-notice-item.read{opacity:.92}.notice-bottom-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;min-height:28px}.notice-read-stats{font-size:12px;color:#5d6b65;font-weight:700}.work-notice-item.notice-focus{animation:noticeFocus 1.8s ease}@keyframes noticeFocus{0%,100%{box-shadow:0 0 0 0 rgba(17,150,104,0)}35%{box-shadow:0 0 0 5px rgba(17,150,104,.22)}}@media(max-width:640px){.notification-panel{max-width:calc(100vw - 24px);right:-4px}.notice-bottom-row{align-items:flex-end}.notice-read-stats{font-size:11px}}

/* v12.8.2 공지 확인 현황 + 협약사 공동 브랜드 헤더 */
.notice-read-stats{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border:1px solid #b9d7cf;border-radius:999px;background:#effaf6;color:#087b64;font-weight:800;cursor:pointer}
.notice-read-stats:hover{background:#e2f7f0}
.notice-read-modal{position:fixed;inset:0;z-index:10050;background:rgba(5,18,35,.58);display:flex;align-items:center;justify-content:center;padding:18px}
.notice-read-dialog{width:min(720px,100%);max-height:86vh;overflow:auto;background:#fff;border-radius:24px;box-shadow:0 26px 80px rgba(0,0,0,.28);padding:22px}
.notice-read-dialog-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;border-bottom:1px solid #e7edf3;padding-bottom:16px}
.notice-read-dialog-head small{color:#728197}.notice-read-dialog-head h3{margin:4px 0 0;font-size:22px}.notice-read-dialog-head button{border:0;background:#f1f5f9;width:38px;height:38px;border-radius:12px;font-size:25px;cursor:pointer}
.notice-read-summary{display:flex;gap:12px;flex-wrap:wrap;padding:18px 0}.notice-read-summary .summary-pill{padding:10px 14px;border-radius:14px;background:#f3f7fb;font-weight:800}.notice-read-summary .summary-pill.ok{background:#e8f8f1;color:#087b64}.notice-read-summary .summary-pill.wait{background:#fff2e7;color:#9a4d00}
.notice-read-group{margin-top:12px}.notice-read-group h4{margin:0 0 10px}.notice-reader-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:12px 0;border-bottom:1px solid #edf1f5}.notice-reader-row b{display:block}.notice-reader-row small{color:#7a8799}.notice-reader-time{font-size:12px;color:#5d6a7d;white-space:nowrap}.notice-reader-empty{padding:16px;background:#f7f9fb;border-radius:12px;color:#718096}
.header-brand-block.partner-co-brand{gap:9px}.header-brand-block.partner-co-brand .partner-header-logo{width:44px;height:44px;object-fit:contain;border-radius:10px;background:white}.header-brand-block.partner-co-brand .partner-header-plus{font-weight:900;color:#95a2b5}.header-brand-block.partner-co-brand .partner-header-copy{display:flex;flex-direction:column;min-width:0}.header-brand-block.partner-co-brand .partner-header-copy strong{font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-brand-block.partner-co-brand .partner-header-copy span{font-size:11px;color:#728197;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:700px){.notice-read-dialog{padding:17px;border-radius:19px}.notice-reader-row{grid-template-columns:1fr}.notice-reader-time{white-space:normal}.header-brand-block.partner-co-brand .partner-header-logo{width:36px;height:36px}.header-brand-block.partner-co-brand .partner-header-copy strong{font-size:15px;max-width:120px}.header-brand-block.partner-co-brand .partner-header-copy span{font-size:9px;max-width:120px}}

/* v12.8.4 협약사 공동 브랜딩 표시 보강 */
.role-partner .partner-brand-banner{display:block!important}
.partner-card-logo{width:64px;height:64px;object-fit:contain;border-radius:12px;background:#fff;flex:0 0 auto}
.partner-brand-contractor .partner-logo-placeholder,.partner-header-logo.partner-logo-placeholder{align-items:center;justify-content:center;font-weight:800;color:#64748b;border:1px dashed #cbd5e1;background:#f8fafc}
@media(max-width:700px){.partner-card-logo{width:52px;height:52px}.role-partner .partner-brand-banner{margin-top:0}}

/* v12.8.6 협약사 공동 브랜딩 강제 표시 */
body.role-partner #partnerBrandBanner{display:block!important;visibility:visible!important;opacity:1!important;}
body.role-partner #workNoticeCard{display:none!important;}
.partner-brand-logos{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:stretch;gap:12px;}
.partner-brand-logo{min-width:0;}
.partner-brand-logo img{display:block;}
@media(max-width:700px){
  .partner-brand-banner{margin-bottom:18px!important;}
  .partner-brand-logos{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:8px;}
  .partner-brand-logo{padding:12px 9px!important;}
  .partner-brand-logo span{font-size:16px!important;overflow-wrap:anywhere;}
}

/* v12.8.7 공동 브랜딩 직접 렌더링 */
#partnerBrandBanner{position:relative;z-index:2}
body.role-partner #partnerBrandBanner{display:block!important;visibility:visible!important;opacity:1!important;min-height:1px}
body.role-partner #partnerBrandBanner .partner-brand-inner{display:block!important}

/* EcoScore v13.0 canonical partner header */
.v13-header-logo-pair{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.v13-header-logo{width:48px;height:48px;object-fit:contain;border-radius:10px;background:#fff}
.v13-header-plus{font-weight:900;color:#8492a6;font-size:20px}
.header-brand-block.partner-co-brand{display:flex!important;align-items:center;gap:12px;min-width:0}
.header-brand-block.partner-co-brand .partner-header-copy{display:flex;flex-direction:column;min-width:0}
.header-brand-block.partner-co-brand .partner-header-copy strong,.header-brand-block.partner-co-brand .partner-header-copy span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.role-partner #workNoticeCard{display:none!important}
@media(max-width:760px){
  .v13-header-logo{width:38px;height:38px}
  .header-brand-block.partner-co-brand{gap:8px}
  .header-brand-block.partner-co-brand .partner-header-copy strong{font-size:15px}
  .header-brand-block.partner-co-brand .partner-header-copy span{font-size:11px;max-width:190px}
}

/* EcoScore v14.5: top header always shows EcoScore only */
#headerBrandBlock[data-ecoscore-only="true"]{
  display:flex !important;
  align-items:center;
  gap:10px;
  min-width:0;
  cursor:pointer;
}
#headerBrandBlock[data-ecoscore-only="true"] .header-brand-logo{
  width:48px;
  height:48px;
  object-fit:contain;
  flex:0 0 auto;
}
#headerBrandBlock[data-ecoscore-only="true"] .header-brand-copy{
  display:flex;
  flex-direction:column;
  min-width:0;
  line-height:1.15;
}
#headerBrandBlock[data-ecoscore-only="true"] .header-brand-copy strong{
  font-size:22px;
  white-space:nowrap;
}
#headerBrandBlock[data-ecoscore-only="true"] .header-brand-copy span{
  font-size:11px;
  color:#718096;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:280px;
}
@media (max-width:720px){
  #headerBrandBlock[data-ecoscore-only="true"] .header-brand-logo{width:42px;height:42px}
  #headerBrandBlock[data-ecoscore-only="true"] .header-brand-copy strong{font-size:20px}
  #headerBrandBlock[data-ecoscore-only="true"] .header-brand-copy span{max-width:190px;font-size:10px}
}

/* EcoScore v14.6 partner site card: contractor/client logos only */
.partner-brand-external-only .partner-external-brands{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
  align-items:stretch;
  margin-top:14px;
}
.partner-brand-external-only .partner-external-brands.single{
  grid-template-columns:minmax(0,1fr);
}
.partner-external-brand-item{
  min-width:0;
  min-height:112px;
  padding:14px 16px;
  border:1px solid var(--line,#dbe3ee);
  border-radius:18px;
  background:#fff;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:8px;
  text-align:center;
}
.partner-external-brand-item small{font-weight:700;color:#52627a}
.partner-external-brand-item span{font-weight:800;line-height:1.25;overflow-wrap:anywhere}
.partner-external-brand-logo{
  display:block;
  width:auto;
  max-width:100%;
  height:52px;
  object-fit:contain;
}
@media (max-width:560px){
  .partner-brand-external-only .partner-external-brands{gap:10px}
  .partner-external-brand-item{min-height:100px;padding:12px 10px;border-radius:16px}
  .partner-external-brand-logo{height:44px}
}


/* EcoScore v14.8 */
.defect-request-section{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(0,1.4fr);gap:18px;margin-bottom:18px}.section-title-row{display:flex;justify-content:space-between;gap:12px}.section-title-row p{margin:4px 0 12px;color:#64748b}.form-actions,.defect-actions{display:flex;gap:8px;margin-top:12px}.defect-request-list{display:grid;gap:12px}.defect-request-card{border:1px solid #dbe5ef;border-radius:16px;padding:16px;background:#fff}.defect-request-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.defect-request-head h4{margin:5px 0;font-size:18px}.defect-request-head time,.defect-meta{font-size:12px;color:#64748b}.defect-status{display:inline-flex;padding:3px 8px;border-radius:999px;background:#fff3cd;color:#8a5a00;font-size:12px;font-weight:700}.defect-content{margin-top:12px;line-height:1.6}.defect-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin-top:12px}.defect-photo-grid img{width:100%;height:100px;object-fit:cover;border-radius:10px;border:1px solid #e2e8f0}.readonly-note{margin-top:10px;font-size:12px;color:#64748b}.daily-report-readonly-note{margin-bottom:12px}@media(max-width:800px){.defect-request-section{grid-template-columns:1fr}.defect-request-head{flex-direction:column}.defect-request-head time{align-self:flex-end}}


/* EcoScore v14.9 — 협약사 하자요청 작성 폼 활성화 */
body.role-partner #photos #defectRequestFormCard{display:block!important;visibility:visible!important;opacity:1!important;}
body.role-partner #photos #defectRequestFormCard input,
body.role-partner #photos #defectRequestFormCard textarea,
body.role-partner #photos #defectRequestFormCard select,
body.role-partner #photos #defectRequestFormCard button{pointer-events:auto!important;}
body.role-partner #photos #defectRequestFormCard #defectSaveBtn,
body.role-partner #photos #defectRequestFormCard #defectCancelBtn{display:inline-flex!important;}
body.role-partner #photos #defectRequestFormCard #defectCancelBtn[style*="display: none"]{display:none!important;}

/* EcoScore v14.10 — 하자요청 완료/삭제 */
.defect-request-card.is-completed{opacity:.9;border-color:#9bd7bc;background:#f5fff9}
.defect-completed-info{margin-top:14px;padding:12px 14px;border-radius:12px;background:#e9f8ef;color:#17653a;font-size:14px}
.defect-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.defect-actions button.danger{background:#fff0f0;color:#b42318;border:1px solid #f3b7b2}
.defect-actions button.primary{background:#1f9d62;color:white;border:1px solid #1f9d62}


/* EcoScore v14.11 — 작업자 완료 처리 및 처리 메모 */
.defect-completion-editor{margin-top:14px;padding:14px;border:1px solid #cfe0ef;border-radius:12px;background:#f8fbff}
.defect-completion-editor label{display:block;margin-bottom:7px;font-size:13px;font-weight:800;color:#263b53}
.defect-completion-editor textarea{width:100%;min-height:82px;resize:vertical;border:1px solid #cbd8e6;border-radius:10px;padding:10px 12px;background:#fff;color:#172033;font:inherit;box-sizing:border-box}
.defect-completion-editor textarea:focus{outline:2px solid rgba(31,157,98,.18);border-color:#1f9d62}
.defect-completion-note{margin-top:10px;padding-top:10px;border-top:1px solid rgba(23,101,58,.18);line-height:1.55}


/* v14.13 expense receipt attachments */
.receipt-selection{margin-top:8px;font-size:.9rem;line-height:1.45;word-break:break-all}
.receipt-thumb-list{display:flex;flex-wrap:wrap;gap:6px;min-width:90px}
.receipt-thumb{width:48px;height:48px;padding:0;border:1px solid #d8e1ec;border-radius:8px;overflow:hidden;background:#fff;cursor:pointer}
.receipt-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.receipt-thumb:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(15,35,65,.15)}
#expReceipts{padding:12px;background:#fff}

/* v14.14 expense actions */
.expense-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.expense-actions .smallbtn{white-space:nowrap}


/* EcoScore v14.14.1 — expense action buttons visibility */
#expTable th:last-child,#expTable td:last-child{min-width:112px;width:112px;text-align:center;overflow:visible}
#expTable .expense-actions{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:8px;min-width:96px}
#expTable .expense-actions .smallbtn{display:block!important;width:100%;min-width:88px;padding:8px 12px;border:1px solid #b8c8dc;border-radius:8px;background:#eef4fb;color:#10233f!important;font-weight:800;line-height:1.2;visibility:visible!important;opacity:1!important}
#expTable .expense-actions .smallbtn.danger{display:block!important;background:#fff1f1!important;border-color:#ef9a9a!important;color:#c62828!important}
#expTable .expense-actions .smallbtn:hover{filter:brightness(.97)}
