/* 냉방기솔루션_SS 기본 스타일시트 — v496에서 index.html 블록0을 분리(제자리 링크 교체라 적용 순서 불변).
   ⚠ 나머지 20개 인라인 <style> 블록은 JS 주입 CSS와 79개 셀렉터가 겹쳐, 옮기면 우선순위가 뒤집히므로 의도적으로 index.html에 유지.
   앞으로 새 전역 CSS는 이 파일 끝에 추가할 것. */

*{box-sizing:border-box;margin:0;padding:0;}
/* v108: 당겨서 새로고침·브라우저 좌우스와이프 네비게이션 차단 (작성내용 유실 방지) */
html,body{overscroll-behavior-x:none;overscroll-behavior-y:contain;}
/* v109: 키보드 열림(입력 중) — 입력칸이 항상 키보드 위에 보이도록 */
/* 1.227.22(사장님 «너무 많이 올라간다는 핸드폰들이 있다»): 52vh 고정 여백은 폰마다 과했다 —
   키보드는 기종마다 35~45%인데 52%를 덧대면 남는 공간만큼 브라우저 자체 스크롤이 더 올린다.
   실측값(--ss-kb, v263에서 이미 재고 있음)에 여유 24px만 더한다. 못 재는 기종만 종전 52vh. */
body.ss-kb main{padding-bottom:calc(var(--ss-kb, 52vh) + 24px) !important;}
body.ss-kb #ssbnav, body.ss-kb #adminBottombar, body.ss-kb #ss-fab-io{display:none !important;}
/* v113: 측정 판정 — 기준 이탈 시 빨강/주황 (입력됨 녹색보다 우선) */
#panel-input .field.jbad .unit-row{border-color:var(--c-red) !important;background:#fef2f2 !important;box-shadow:0 0 0 2px rgba(220,38,38,.13) !important;}
#panel-input .field.jbad .unit-row input{color:#b91c1c !important;font-weight:800;}
#panel-input .field.jw2 .unit-row{border-color:var(--c-amber) !important;background:#fff8ed !important;}
#panel-input .field.jok .unit-row{border-color:#086A46 !important;background:#F2FBF6 !important;} /* 1.337.15(사장님): 판정된 칸은 정상도 초록으로 답한다 */
/* v410(D2): 3상 묶음·게이지 칸의 기준 초과 빨강 — ID 선택자+!important라 .w7-fill(입력됨 초록)을 항상 이김 */
#panel-input .w7-cell.jbad{border-color:var(--c-red) !important;background:#fef2f2 !important;}
#panel-input .w7-cell.jbad input{color:#b91c1c !important;font-weight:800;}
#panel-input .w7-cell.jw2{border-color:var(--c-amber) !important;background:#fff8ed !important;}
#panel-input .w7-cell.jok{border-color:#086A46 !important;background:#F2FBF6 !important;} /* 1.337.15 */
#panel-input .w6-grow.jbad .w6-val input,#panel-input .w6-grow.jbad input{color:var(--c-red) !important;font-weight:800;}
#panel-input .w6-grow.jw2 .w6-val input,#panel-input .w6-grow.jw2 input{color:var(--c-amber) !important;font-weight:800;}
#panel-input .jnote{font-size:var(--fs-11);font-weight:800;margin-left:4px;}
/* v119: 팀원 입력 수신 반짝임 */
#panel-input .ld-flash{box-shadow:0 0 0 3px rgba(0,165,200,.45) !important;border-color:var(--ci-sky) !important;transition:box-shadow .5s;}
/* v128: AI 채팅 — 앱바·하단바에 가리지 않게 최상위 전체화면 + 안전영역 */
.ai-chat-panel{z-index:12050 !important;height:100dvh;}
.ai-chat-overlay{z-index:12040 !important;}
.ai-chat-header{padding-top:calc(14px + env(safe-area-inset-top,0px)) !important;}
.ai-chat-input-row{padding-bottom:calc(12px + env(safe-area-inset-bottom,0px)) !important;}
/* v147/148: 대표값 4번째 칸 — 한 줄 4칸 그리드 */
.g4{grid-template-columns:repeat(4,1fr) !important;gap:var(--gap-3);}
.g4 .field label{font-size:var(--fs-105);letter-spacing:-.2px;white-space:nowrap;overflow:hidden;}
.g4 .field .unit-row input{height:48px;box-sizing:border-box;padding:var(--pad-1) var(--pad-2);font-size:var(--fs-16);text-align:center;}
.g4 .ir2000{font-size:var(--fs-10);padding:var(--pad-3) var(--pad-1);}
.rep-f{grid-column:auto;background:#f0f7fc;border:1.5px dashed var(--ci-sky);border-radius:var(--r-xl);padding:var(--pad-2) var(--pad-2) var(--pad-3);}
.rep-f label{color:var(--ci-blue) !important;font-weight:800;font-size:var(--fs-10);}
.rep-f .repauto{font-size:var(--fs-11);color:var(--ci-sky);font-weight:700;margin-left:1px;}
.rep-f .unit-row input{font-weight:800;}
/* v168: CSV 내보내기 버튼은 서버 계정에서만 표시 */
body:not(.ss-server-acct) .ss-srv-csv{display:none !important;}
/* v110: 직전 회차 값 힌트/경고 */
#panel-input input.pv-has::placeholder,#panel-input textarea.pv-has::placeholder{color:var(--c-gray4);font-weight:700;opacity:1;}
#panel-input .pvnote{margin-left:6px;font-size:var(--fs-11);font-weight:800;}
#panel-input .pvwarn{border-color:var(--c-red) !important;box-shadow:0 0 0 2px rgba(220,38,38,.14) !important;}
#panel-input .pvwarn2{border-color:var(--c-amber) !important;box-shadow:0 0 0 2px rgba(217,119,6,.14) !important;}
/* ㉒(2026-10-14): 세 상끼리·전회차와 크게 다른 값 — 노란 테두리 + «소수점 확인»(js/field-ux.js __ss상오타모으기) · 칸 바탕색(판정)은 그대로 두고 테두리만 */
#panel-input input.pdwarn:not(.pvwarn):not(.pvwarn2),#panel-input .w7-cell input.pdwarn:not(.pvwarn):not(.pvwarn2){border-color:#e0a800 !important;box-shadow:0 0 0 3px rgba(240,180,0,.45) !important;}
#panel-input .pdnote{margin-left:6px;font-size:var(--fs-11);font-weight:800;color:#a16207;white-space:nowrap;}
body.ss-dark #panel-input .pdnote{color:#facc15;}
#panel-input input.sjwarn:not(.pvwarn):not(.pvwarn2),#panel-input .w7-cell input.sjwarn:not(.pvwarn):not(.pvwarn2),#panel-input select.sjwarn{border-color:#e0a800 !important;box-shadow:0 0 0 3px rgba(240,180,0,.45) !important;}
#panel-input .sjnote{margin-left:6px;font-size:var(--fs-11);font-weight:800;color:#a16207;white-space:nowrap;}
body.ss-dark #panel-input .sjnote{color:#facc15;}
:root{
  /* SANGSANG E&S CI */
  --ci-blue:#1a5fa8;      /* 아이콘 진파랑 */
  --ci-sky:#00a5c8;       /* 아이콘 하늘파랑 / 슬로건 */

  /* 화이트톤 테마 */
  --bg:#f4f6f9;
  --surface:#ffffff;
  --surface2:#f0f3f7;
  --border:#d8dfe8;
  --accent:#1a5fa8;       /* CI 진파랑 → 주요 포인트 */
  --accent2:#00a5c8;      /* CI 하늘파랑 → 보조 포인트 */
  --green:#16a34a;
  --warn:#d97706;
  --danger:#dc2626;
  --text:#1e2a3a;
  --muted:#6b7a90;
  --r:10px;
  --mono:'Courier New',monospace;
}
body{font-family:'Segoe UI',system-ui,sans-serif;font-size:18px;background:var(--bg);color:var(--text);min-height:100vh;}
header{
  background:linear-gradient(135deg,var(--ci-blue) 0%,#1e6fbf 60%,var(--ci-sky) 100%);
  border-bottom:none;
  padding:var(--pad-4) var(--pad-7);
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--gap-2) 10px;
  position:sticky;top:0;z-index:100;min-height:56px;box-sizing:border-box;
  box-shadow:0 2px 12px rgba(26,95,168,.25);
}
.logo{display:flex;align-items:center;gap:var(--gap-5);min-width:0;flex:1 1 auto;}
.logo-ci{display:flex;align-items:center;gap:0;}
.logo-ci-box{
  width:38px;height:38px;
  background:#fff;
  border-radius:var(--r-sm);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 1px 4px rgba(0,0,0,.15);
  overflow:hidden;
  flex-shrink:0;
}
/* SVG CI 마크 (S자 겹침) */
.logo-ci-svg{ width:28px;height:28px; }
.logo-text-wrap{display:flex;flex-direction:column;gap:1px;min-width:0;overflow:hidden;}
.logo-text{font-size:var(--fs-15);font-weight:800;color:#fff;letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.logo-sub{font-size:var(--fs-10);color:rgba(255,255,255,.75);margin-top:0;letter-spacing:.2px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hdate{font-size:var(--fs-12);color:rgba(255,255,255,.8);font-family:var(--mono);flex-shrink:0;}
.header-actions{display:flex;align-items:center;gap:var(--gap-2);flex-shrink:0;}
@media(max-width:480px){
  .logo-sub{display:none;}
  .logo-text{font-size:var(--fs-14);}
  .hdate{display:none;}
  header{padding:var(--pad-4) var(--pad-5);}
}
.tabs{
  display:flex;
  background:var(--surface);
  border-bottom:2px solid var(--border);
  padding:0 var(--pad-5);
  overflow-x:auto;
  position:relative;z-index:99;gap:2px;
  box-shadow:0 1px 4px rgba(0,0,0,.06);
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.tabs::-webkit-scrollbar{height:3px;}
.tabs::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}
.tab{
  padding:var(--pad-6) var(--pad-7);font-size:var(--fs-13);font-weight:600;
  color:var(--muted);cursor:pointer;
  border-bottom:3px solid transparent;
  transition:all .2s;user-select:none;white-space:nowrap;
  border-radius:6px 6px 0 0;margin-top:4px;
}
.tab:hover:not(.on){color:var(--accent);background:rgba(26,95,168,.06);}
/* 탭별 색상 */
.tab-input.on{color:var(--ci-blue);border-bottom-color:var(--ci-blue);background:rgba(26,95,168,.08);}
.tab-list.on{color:var(--green);border-bottom-color:var(--green);background:rgba(22,163,74,.08);}
.tab-alert.on{color:var(--warn);border-bottom-color:var(--warn);background:rgba(217,119,6,.08);}
.tab-diag.on{color:var(--c-purple);border-bottom-color:var(--c-purple);background:rgba(124,58,237,.08);}
.tab-rasheet.on{color:var(--danger);border-bottom-color:var(--danger);background:rgba(220,38,38,.08);}
.tab-raexcel.on{color:var(--danger);border-bottom-color:var(--danger);background:rgba(220,38,38,.08);}
.tab-excel.on{color:var(--green);border-bottom-color:var(--green);background:rgba(22,163,74,.08);}
.tab-irlist.on{color:var(--danger);border-bottom-color:var(--danger);background:rgba(220,38,38,.08);}
.tab-irstat.on{color:var(--c-purple);border-bottom-color:var(--c-purple);background:rgba(124,58,237,.08);}
.tab-voc.on{color:var(--ci-sky);border-bottom-color:var(--ci-sky);background:rgba(0,165,200,.08);}
.tab-vocstat.on{color:var(--c-green);border-bottom-color:var(--c-green);background:rgba(22,163,74,.08);}
.tab-daily.on{color:var(--ci-blue);border-bottom-color:var(--ci-blue);background:rgba(26,95,168,.08);}
.tab-filter.on{color:var(--c-purple);border-bottom-color:var(--c-purple);background:rgba(124,58,237,.08);}
.tab-filterhist.on{color:var(--c-purple);border-bottom-color:var(--c-purple);background:rgba(124,58,237,.08);}
main{padding:var(--pad-9);max-width:960px;width:100%;margin:0 auto;}
/* v174: PC(데스크톱)에서는 넓게 펼쳐 보기 좋게 — 모바일/태블릿(≤820)은 그대로 */
@media(min-width:821px){
  main{max-width:var(--pc-w-1340);padding:var(--pad-10) var(--pad-12);}
  .sshome-wrap{max-width:var(--pc-w-1040) !important;}
}
@media(min-width:1500px){ main{max-width:1500px;} }
.panel{display:none;}.panel.on{display:block;}

.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:var(--pad-9);margin-bottom:14px;box-shadow:0 1px 4px rgba(0,0,0,.05);}
.ctitle{font-size:var(--fs-15);font-weight:700;color:var(--ci-blue);text-transform:uppercase;letter-spacing:.8px;margin-bottom:14px;display:flex;align-items:center;gap:var(--gap-4);}
.reg-toggle{cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}
.reg-toggle .reg-arrow{margin-left:auto;font-size:var(--fs-12);color:var(--muted);transition:transform .15s ease}
.reg-toggle.open .reg-arrow{transform:rotate(90deg)}
.reg-toggle .reg-hint{font-size:var(--fs-11);color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0}
.ctitle::after{content:'';flex:1;height:1px;background:var(--border);}

.g2{display:grid;grid-template-columns:1fr 1fr;gap:11px;}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:11px;}
/* v454(사장님): 추가 정보 단답칸(냉매·압축기·RT·위상·전압)은 모바일에서도 가로 2개씩 — 길이가 긴 제조사·모델·전원점만 한 줄 */
.addl-g2{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap-5)}
.addl-g1{display:grid;grid-template-columns:1fr;gap:var(--gap-5);margin-top:10px}
.addl-g2 select,.addl-g2 input,.addl-g1 input{font-size:var(--fs-16)}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;}
.s2{grid-column:span 2;}.s3{grid-column:span 3;}.s4{grid-column:span 4;}
.field{display:flex;flex-direction:column;gap:var(--gap-1);}
label{font-size:var(--fs-15);font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;}
/* v155: 입력란을 설명란과 구분되게 — 연한 파랑 바탕 + 진한 테두리 */
input,select,textarea{background:#f6faff;border:1.5px solid #b9cde4;border-radius:7px;color:var(--text);font-size:var(--fs-16);padding:var(--pad-5) var(--pad-7);outline:none;transition:border-color .2s;font-family:inherit;width:100%;}
input:focus,select:focus,textarea:focus{border-color:var(--ci-blue);box-shadow:0 0 0 2px rgba(26,95,168,.12);}
textarea{resize:vertical;min-height:56px;}
select option{background:#fff;color:var(--text);}
input[type=number],input[data-ssdec]{font-family:var(--mono);}

/* 육안검사 체크 */
.vis-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap-2);}
.vchk{display:flex;align-items:center;gap:var(--gap-3);background:#f8fafc;border:1px solid var(--border);border-radius:6px;padding:var(--pad-4) var(--pad-5);cursor:pointer;transition:border-color .15s;text-transform:none;letter-spacing:0;font-weight:500;color:var(--text);user-select:none;-webkit-tap-highlight-color:transparent;}
.vchk:hover{border-color:var(--ci-blue);}
.vchk input[type=checkbox]{width:14px;height:14px;flex-shrink:0;accent-color:var(--green);}
.vchk span{font-size:var(--fs-16);}

/* 실내/실외 플로팅 전환 버튼 (측정 화면, 모바일) */
#ss-fab-io{position:fixed;right:10px;top:52%;transform:translateY(-50%);z-index:640;display:flex;flex-direction:column;gap:var(--gap-3);max-height:calc(100vh - 150px);overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
#ss-fab-io::-webkit-scrollbar{display:none}
#ss-fab-io button{flex:0 0 auto;width:46px;height:46px;border-radius:50%;border:1.5px solid var(--border,var(--c-line));background:rgba(255,255,255,.93);box-shadow:0 4px 14px rgba(18,35,58,.18);font-size:18px;line-height:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:var(--c-gray2);font-weight:800;cursor:pointer;-webkit-tap-highlight-color:transparent;padding:0}
#ss-fab-io button small{font-weight:800;letter-spacing:-0.3px}   /* 1.337.286: font-size:9px 는 js/input-hooks.js 의 #ss-fab-css(var(--fs-10)) 가 이겨 죽어 있던 값 — 지움(실측 11.5px). scan9 S83 */
#ss-fab-io button.on{border-color:var(--c-blue);background:var(--c-blue);color:#fff;box-shadow:0 4px 14px rgba(26,95,168,.35)}
/* v155: 기준치 초과(spec out) 값이 있는 구역 버튼은 빨간 표시 */
#ss-fab-io button.bad{border-color:var(--c-red);color:var(--c-red);background:#fff5f5}
#ss-fab-io button.warn{border-color:#9C5B06;color:#B45309;background:#FFF8EE} /* v774 */
#ss-fab-io button.on.bad{border-color:var(--c-red);background:var(--c-red);color:#fff;box-shadow:0 4px 14px rgba(220,38,38,.35)}
/* v491: 추가 팬 입력 블록 (팬 여러 개 → 엑셀 최악값) */
.xfan-wrap{margin-top:6px}
.xfan{border:1.5px dashed #b9c8dc;border-radius:var(--r-xl);padding:var(--pad-5);margin-top:8px;background:rgba(79,142,247,.04)}
.xfan-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.xfan-head b{font-size:var(--fs-13);color:var(--c-blue);font-weight:800}
.xfan-del{border:1px solid #e3b3b3;background:#fff5f5;color:#c0392b;border-radius:var(--r-sm);font-size:var(--fs-12);font-weight:800;padding:var(--pad-3) var(--pad-5);cursor:pointer}
.xfan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap-3)}
.xfan-add{width:100%;margin-top:8px;padding:var(--pad-6);border:1.5px dashed #8fb2e8;border-radius:var(--r-xl);background:#eef4fd;color:var(--c-blue);font-size:var(--fs-135);font-weight:800;cursor:pointer;-webkit-tap-highlight-color:transparent}
.xfan-add:active{background:var(--c-blue);color:#fff;border-color:var(--c-blue)}
@media (max-width:820px){ .xfan-grid{gap:var(--gap-2)} }
/* v155: 대수 원터치 칩 */
.unit-quick{display:flex;gap:5px;margin-top:8px}
.unit-quick button{width:34px;height:30px;border-radius:var(--r-sm);border:1px solid var(--border);background:#fff;color:var(--muted);font-size:var(--fs-14);font-weight:800;cursor:pointer;padding:0}
.unit-quick button:active{background:var(--ci-blue);color:#fff;border-color:var(--ci-blue)}
/* 계측 섹션 */
.meas-section{background:#f8fafc;border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--pad-7);margin-bottom:10px;}
.meas-title{font-size:var(--fs-15);font-weight:700;color:var(--ci-blue);margin-bottom:10px;display:flex;align-items:center;gap:var(--gap-2);}
.unit-row{display:flex;gap:var(--gap-2);align-items:center;}
.unit-row input{flex:1;}
.ubadge{background:#e8eef5;color:var(--muted);border-radius:5px;padding:var(--pad-3) var(--pad-6);font-size:var(--fs-15);font-weight:600;font-family:var(--mono);white-space:nowrap;}
.crit{font-size:var(--fs-14);color:var(--muted);font-weight:400;margin-left:4px;}

/* 종합판정 */
.orow{display:flex;gap:var(--gap-4);}
.obtn{flex:1;padding:var(--pad-6) var(--pad-3);border-radius:var(--r-sm);border:1px solid var(--border);background:#f8fafc;color:var(--muted);font-size:var(--fs-17);font-weight:700;cursor:pointer;transition:all .2s;text-align:center;}
.o-정상{background:rgba(56,201,122,.15);border-color:var(--green);color:var(--green);}
.o-주의{background:rgba(247,169,79,.15);border-color:var(--warn);color:var(--warn);}
.o-불량{background:rgba(247,95,95,.15);border-color:var(--danger);color:var(--danger);}

/* 서버 계정 전용 업로드 UI: 서버 외 계정에게 숨김 (v154: 업로드는 서버 계정 전담) */
body:not(.role-server) .admin-up{display:none !important;}
/* v159: 백업 도구(JSON 복원·과거 합산)는 서버 허브로 이관 — 패널 안 원래 버튼은 전부 숨김 (입력 요소는 허브에서 재사용) */
.admin-tool{display:none !important;}
/* 파일 업로드 영역 */
.upload-zone{border:2px dashed var(--border);border-radius:var(--r);padding:var(--pad-10);text-align:center;cursor:pointer;transition:border-color .2s;position:relative;background:#f8fafc;}
.upload-zone:hover{border-color:var(--ci-blue);}
.upload-zone.loaded{border-color:var(--green);background:rgba(56,201,122,.05);}
.upload-zone input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;}
.upload-icon{font-size:28px;margin-bottom:8px;}
.upload-text{font-size:var(--fs-13);font-weight:600;}
.upload-sub{font-size:var(--fs-11);color:var(--muted);margin-top:4px;}
.upload-ok{font-size:var(--fs-12);color:var(--green);font-weight:600;margin-top:6px;}

/* 버튼 */
.brow{display:flex;gap:9px;margin-top:4px;flex-wrap:wrap;}
.btn{padding:var(--pad-6) var(--pad-10);border-radius:var(--r-sm);border:none;font-size:var(--fs-15);font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:5px;}
.btn-p{background:var(--ci-blue);color:#fff;}.btn-p:hover{background:#154d8a;transform:translateY(-1px);}
.btn-s{background:#fff;color:var(--text);border:1px solid var(--border);}.btn-s:hover{border-color:var(--ci-blue);color:var(--ci-blue);}
.btn-g{background:var(--green);color:#fff;}.btn-g:hover{background:#15803d;transform:translateY(-1px);}
.btn-d{background:transparent;color:var(--danger);border:1px solid var(--border);font-size:var(--fs-15);padding:var(--pad-4) var(--pad-7);}.btn-d:hover{border-color:var(--danger);background:rgba(247,95,95,.1);}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important;}

/* Stats */
.sbar{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:14px;}
.sc{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:var(--pad-6);box-shadow:0 1px 3px rgba(0,0,0,.04);}
.sl{font-size:var(--fs-15);color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:3px;}
.sv{font-size:32px;font-weight:700;font-family:var(--mono);}
.sv-b{color:var(--accent);}.sv-g{color:var(--green);}.sv-y{color:var(--warn);}.sv-r{color:var(--danger);}

/* Table */
.tw{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.05);}
.th{padding:var(--pad-7) var(--pad-8);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:9px;flex-wrap:wrap;}
.th h3{font-size:var(--fs-13);font-weight:700;}
.si{background:#fff;border:1px solid var(--border);border-radius:7px;color:var(--text);font-size:var(--fs-12);padding:var(--pad-3) var(--pad-5);outline:none;width:180px;}
.si:focus{border-color:var(--ci-blue);}
table{width:100%;border-collapse:collapse;font-size:var(--fs-16);}
th{background:#f0f4f8;padding:var(--pad-6) var(--pad-7);text-align:left;font-size:var(--fs-13);font-weight:700;color:var(--ci-blue);text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;border-bottom:2px solid var(--border);}
td{padding:var(--pad-6) var(--pad-7);border-top:1px solid var(--border);vertical-align:middle;font-size:var(--fs-16);}
tr:hover td{background:rgba(26,95,168,.03);}
.badge{display:inline-block;padding:var(--pad-1) var(--pad-4);border-radius:20px;font-size:var(--fs-10);font-weight:700;}
.b-정상{background:rgba(56,201,122,.15);color:var(--green);}
.b-주의{background:rgba(247,169,79,.15);color:var(--warn);}
.b-불량{background:rgba(247,95,95,.15);color:var(--danger);}
.empty{text-align:center;padding:44px;color:var(--muted);font-size:var(--fs-15);}

/* 엑셀 탭 안내 */
.info-box{background:rgba(79,142,247,.07);border:1px solid rgba(79,142,247,.3);border-radius:var(--r-sm);padding:var(--pad-7) var(--pad-8);margin-bottom:14px;font-size:var(--fs-16);line-height:1.7;color:var(--text);}
.info-box b{color:var(--accent);}
.step-list{list-style:none;counter-reset:step;}
.step-list li{counter-increment:step;padding:var(--pad-3) 0 var(--pad-3) var(--pad-11);position:relative;border-bottom:1px solid var(--border);}
.step-list li:last-child{border-bottom:none;}
.step-list li::before{content:counter(step);position:absolute;left:0;top:6px;width:22px;height:22px;border-radius:50%;background:var(--accent);color:#fff;font-size:var(--fs-11);font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;}

/* Toast */

/* 기준값 배지 */
.crit-box{display:inline-flex;align-items:center;gap:5px;background:rgba(26,95,168,.08);border:1px solid rgba(26,95,168,.25);border-radius:6px;padding:var(--pad-2) var(--pad-5);font-size:var(--fs-12);color:var(--ci-blue);font-weight:600;margin-top:4px;}
.crit-box.warn{background:rgba(247,169,79,.1);border-color:rgba(247,169,79,.4);color:var(--warn);}
.crit-box.danger{background:rgba(247,95,95,.1);border-color:rgba(247,95,95,.4);color:var(--danger);}
.val-wrap{display:flex;flex-direction:column;gap:var(--gap-1);}
/* 초과 추적 탭 */
.alert-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap-5);margin-bottom:14px;}
.alert-stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:var(--pad-7);box-shadow:0 1px 3px rgba(0,0,0,.04);}
.alert-stat.red{border-color:rgba(247,95,95,.5);background:rgba(247,95,95,.05);}
.alert-stat.yellow{border-color:rgba(247,169,79,.5);background:rgba(247,169,79,.05);}
.alert-stat.green{border-color:rgba(56,201,122,.5);background:rgba(56,201,122,.05);}
.alert-item{background:#f8fafc;border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--pad-7);margin-bottom:10px;}
.alert-item.crit{border-left:4px solid var(--danger);}
.alert-item.warn{border-left:4px solid var(--warn);}
.alert-meta{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--gap-2);margin-bottom:10px;}
.alert-site{font-weight:700;font-size:var(--fs-15);}
.alert-date{font-size:var(--fs-12);color:var(--muted);}
.alert-fields{display:flex;flex-wrap:wrap;gap:var(--gap-4);}
.alert-field{background:#f4f6f9;border-radius:6px;padding:var(--pad-4) var(--pad-6);font-size:var(--fs-13);border:1px solid var(--border);}
.alert-field.over{border-color:var(--danger);background:rgba(247,95,95,.06);}
.alert-field.near{border-color:var(--warn);background:rgba(247,169,79,.06);}
.alert-label{font-size:var(--fs-11);color:var(--muted);margin-bottom:3px;}
.alert-val{font-family:var(--mono);font-weight:700;font-size:var(--fs-15);}
.alert-val.over{color:var(--danger);}
.alert-val.near{color:var(--warn);}
.alert-std{font-size:var(--fs-11);color:var(--muted);margin-top:2px;}
.filter-row{display:flex;gap:var(--gap-5);flex-wrap:wrap;margin-bottom:14px;align-items:flex-end;}
/* 위험성평가 체크시트 */
.ra-item{
  background:#f8fafc;border:1px solid var(--border);border-radius:var(--r-md);
  padding:var(--pad-7) var(--pad-8);margin-bottom:10px;
}
.ra-item.starred{border-left:4px solid var(--warn);}
.ra-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--gap-5);margin-bottom:8px;}
.ra-no{
  display:inline-flex;align-items:center;justify-content:center;
  width:24px;height:24px;border-radius:50%;background:var(--accent);
  color:#fff;font-size:var(--fs-12);font-weight:700;flex-shrink:0;margin-right:8px;
}
.ra-title{font-size:var(--fs-14);font-weight:700;display:flex;align-items:center;flex:1;}
.ra-star{color:var(--warn);margin-right:4px;}
.ra-detail{font-size:var(--fs-12);color:var(--muted);line-height:1.7;white-space:pre-line;margin:8px 0 8px 32px;}
.ra-bad{font-size:var(--fs-12);color:var(--danger);background:rgba(247,95,95,.08);border-radius:6px;padding:var(--pad-4) var(--pad-5);margin:8px 0 8px 32px;white-space:pre-line;line-height:1.7;}
.ra-judge{display:flex;gap:var(--gap-2);margin-left:32px;max-width:280px;}
.ra-jbtn{
  flex:1;padding:var(--pad-4) var(--pad-2);border-radius:6px;border:1px solid var(--border);
  background:#f4f6f9;color:var(--muted);font-size:var(--fs-13);font-weight:700;
  cursor:pointer;transition:all .15s;text-align:center;
}
.ra-jbtn:hover{border-color:var(--ci-blue);color:var(--text);}
.ra-jbtn.sel-O{background:rgba(56,201,122,.15);border-color:var(--green);color:var(--green);}
.ra-jbtn.sel-X{background:rgba(247,95,95,.15);border-color:var(--danger);color:var(--danger);}
.ra-jbtn.sel-NA{background:rgba(136,144,168,.15);border-color:var(--muted);color:var(--muted);}
.ra-note{margin:8px 0 0 32px;}
.ra-note input{font-size:var(--fs-13);}
.ra-section-label{
  font-size:var(--fs-11);font-weight:700;color:var(--accent);text-transform:uppercase;
  letter-spacing:.5px;margin:18px 0 10px;display:flex;align-items:center;gap:var(--gap-4);color:var(--ci-blue);
}
.ra-section-label:first-child{margin-top:0;}
.ra-section-label::after{content:'';flex:1;height:1px;background:var(--border);}
/* 인터뷰 항목 */
.ra-iv-q{font-size:var(--fs-14);font-weight:700;margin-bottom:6px;}
.ra-iv-a{font-size:var(--fs-12);color:var(--muted);background:#f4f6f9;border-radius:6px;padding:var(--pad-5) var(--pad-6);line-height:1.7;white-space:pre-line;margin-bottom:8px;}

.unit-btn{width:34px;height:34px;border-radius:var(--r-sm);border:1px solid var(--border);background:#fff;color:var(--text);font-size:18px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;}
.unit-btn:hover{border-color:var(--ci-blue);color:var(--ci-blue);background:rgba(26,95,168,.08);}
.sheet-unit-title{font-size:var(--fs-16);font-weight:700;padding:var(--pad-5) var(--pad-7);border-radius:var(--r-sm);margin-bottom:12px;display:inline-block;}
.sheet-in{background:rgba(56,201,122,.1);color:#4ade80;}
.sheet-out{background:rgba(79,142,247,.1);color:#60a5fa;}
.prog-wrap{margin-bottom:16px;}
.prog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.prog-round{font-size:var(--fs-15);font-weight:700;color:var(--text);}
.prog-pct{font-size:var(--fs-15);font-weight:700;font-family:var(--mono);}
.prog-bar-bg{height:22px;background:#e8eef5;border-radius:11px;overflow:hidden;border:1px solid var(--border);position:relative;}
.prog-bar-fill{height:100%;border-radius:11px;transition:width .5s ease;display:flex;align-items:center;justify-content:flex-end;padding-right:10px;}
.prog-bar-label{font-size:var(--fs-12);font-weight:700;color:#fff;white-space:nowrap;}
.prog-detail{display:flex;gap:14px;margin-top:6px;flex-wrap:wrap;}
.prog-d{font-size:var(--fs-12);color:var(--muted);}
.prog-d b{font-weight:700;}
.prog-sites{display:flex;gap:var(--gap-4);margin-top:8px;flex-wrap:wrap;}
.prog-site-chip{font-size:var(--fs-12);padding:var(--pad-2) var(--pad-5);border-radius:20px;border:1px solid var(--border);background:#e8eef5;color:var(--muted);}
.prog-site-chip.done{border-color:var(--green);color:var(--green);background:rgba(56,201,122,.1);}
.prog-site-chip.partial{border-color:var(--warn);color:var(--warn);background:rgba(247,169,79,.1);}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(70px);opacity:0;visibility:hidden;background:#fff;border:2px solid var(--border);color:var(--text);padding:var(--pad-6) var(--pad-10);border-radius:30px;font-size:var(--fs-16);font-weight:600;box-shadow:0 8px 32px rgba(26,95,168,.15);z-index:999;transition:transform .3s,opacity .3s,visibility .3s,bottom .2s;pointer-events:none;
  /* 1.337.120(사장님 «이거 알림이 이렇게 뜨는데 보기 깔끔하게»): 긴 글이 네 줄로 터지고 아래 단추를 덮던 것 */
  /* ⚠ left:50% 인 고정 상자는 <b>오른쪽 절반</b>만 자리로 쳐서 폭이 반토막 난다(390px 화면에서 195px).
     그래서 짧은 글도 서너 줄로 터졌다 → width:max-content 로 글자 폭을 먼저 잡고 max-width 로 묶는다. */
  width:max-content;max-width:min(92vw,420px);box-sizing:border-box;text-align:center;line-height:1.5;word-break:keep-all;}
/* 점검 입력 화면에서는 아래 [이전/다음/판정] 바 <b>위</b>에 뜬다 — 실측 높이(--ss-savebar-h)를 쓴다 */
body.ss-nin .toast{bottom:calc(var(--ss-savebar-h,73px) + 16px + env(safe-area-inset-bottom,0px));}
body.has-admin-bottombar .toast{bottom:78px;}
/* ══ Q113(2026-10-06 김원준님 «앱 사용자들이 쓸 때 앱 하부에 알람이 너무 크게 나오는데 줄일 순 없나? 불편하다네») ══
   폰(PC 화면 lch-pc 가 아닐 때)에서만 작게 — 글자 16px·굵기 600·테두리 2px·긴 글은 서너 줄로 터지던 것.
   → 글자 13px · 얇은 테두리 · 폭 조금 좁게 · 최대 두 줄(넘으면 … — 누르면 자세히 보는 안내(onClick)는 종전대로 누름). 자리(bottom)는 안 건드린다. */
body:not(.lch-pc) .toast{font-size:13px;font-weight:600;line-height:1.4;padding:7px 14px;border-width:1px;max-width:min(86vw,360px);box-shadow:0 4px 14px rgba(26,95,168,.12);
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow:clip;overflow-clip-margin:content-box;}   /* 셋째 줄이 아래 여백(padding)에 비치지 않게 글 상자에서 자른다(overflow:hidden 은 여백까지 보임) */

/* 관리자 하단 탭바 */
.admin-bottombar{
  position:fixed;bottom:0;left:0;right:0;z-index:500;
  background:#fff;border-top:1px solid var(--border);
  display:flex;box-shadow:0 -2px 12px rgba(0,0,0,.08);
  padding-bottom:env(safe-area-inset-bottom,0);
}
.admin-bb-item{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;padding:var(--pad-5) var(--pad-1) var(--pad-4);cursor:pointer;color:var(--muted);user-select:none;
  font-size:var(--fs-11);font-weight:600;transition:color .15s;position:relative;
}
.admin-bb-item .bb-icon{font-size:19px;line-height:1;}
.admin-bb-item.on{color:var(--ci-blue);}
.admin-bb-item.on::before{content:'';position:absolute;top:0;left:18%;right:18%;height:2.5px;background:var(--ci-blue);border-radius:0 0 3px 3px;}
.admin-bb-badge{position:absolute;top:4px;right:22%;background:var(--danger);color:#fff;font-size:10px;font-weight:700;border-radius:var(--r-sm);min-width:14px;height:14px;display:flex;align-items:center;justify-content:center;padding:0 var(--pad-2);}

/* 관리자 서브메뉴 시트 */
.admin-submenu-overlay{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:599;display:none;}
.admin-submenu-overlay.show{display:block;}
.admin-submenu{
  position:fixed;left:0;right:0;bottom:0;z-index:600;background:#fff;border-radius:16px 16px 0 0;
  box-shadow:0 -8px 32px rgba(0,0,0,.18);padding:10px 14px calc(14px + env(safe-area-inset-bottom,0));
  transform:translateY(110%);transition:transform .25s ease;
}
.admin-submenu.show{transform:translateY(0);}
.admin-submenu-handle{width:36px;height:4px;background:var(--border);border-radius:3px;margin:4px auto 10px;}
.admin-submenu-title{font-size:var(--fs-13);font-weight:700;color:var(--muted);margin-bottom:8px;padding:0 var(--pad-2);}
.admin-submenu-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap-5);}
.admin-submenu-btn{
  background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-xl);
  padding:var(--pad-8) var(--pad-4);display:flex;flex-direction:column;align-items:center;gap:var(--gap-2);
  cursor:pointer;transition:all .15s;color:var(--text);font-size:var(--fs-12);font-weight:600;text-align:center;
}
.admin-submenu-btn:active{transform:scale(.96);}
.admin-submenu-btn .sm-icon{font-size:26px;}
body.has-admin-bottombar main{padding-bottom:78px;}

/* 상상AI 챗봇 */
.ai-chat-overlay{position:fixed;inset:0;background:rgba(10,30,50,.4);z-index:899;display:none;}
.ai-chat-overlay.show{display:block;}
.ai-chat-panel{
  position:fixed;right:0;bottom:0;top:0;z-index:900;
  width:100%;max-width:420px;background:#f4f8fb;
  display:flex;flex-direction:column;
  box-shadow:-8px 0 32px rgba(0,0,0,.18);
  transform:translateX(100%);transition:transform .28s ease;
}
.ai-chat-panel.show{transform:translateX(0);}
.ai-chat-header{
  background:linear-gradient(135deg,var(--c-blue) 0%,var(--c-cyan) 100%);
  padding:var(--pad-8) var(--pad-8);display:flex;align-items:center;justify-content:space-between;
  flex-shrink:0;box-shadow:0 2px 10px rgba(0,0,0,.12);
}
.ai-chat-title{display:flex;align-items:center;gap:var(--gap-5);}
.ai-chat-avatar{font-size:26px;background:rgba(255,255,255,.2);border-radius:50%;width:42px;height:42px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.ai-chat-title-main{font-size:var(--fs-15);font-weight:800;color:#fff;}
.ai-chat-title-sub{font-size:var(--fs-11);color:rgba(255,255,255,.8);margin-top:1px;}
.ai-chat-clear-btn,.ai-chat-close-btn{
  background:rgba(255,255,255,.2);border:none;color:#fff;border-radius:var(--r-sm);
  width:30px;height:30px;font-size:var(--fs-14);cursor:pointer;display:flex;align-items:center;justify-content:center;
}
.ai-chat-body{flex:1;overflow-y:auto;padding:var(--pad-8);display:flex;flex-direction:column;gap:var(--gap-5);}
.ai-chat-msg{display:flex;}
.ai-chat-msg-bot{justify-content:flex-start;}
.ai-chat-msg-user{justify-content:flex-end;}
.ai-chat-bubble{
  max-width:82%;padding:var(--pad-6) var(--pad-7);border-radius:var(--r-2xl);font-size:var(--fs-135);line-height:1.6;white-space:pre-wrap;
}
.ai-chat-msg-bot .ai-chat-bubble{background:#fff;color:#1e2a3a;border:1px solid #e0e7ef;border-top-left-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.04);}
.ai-chat-msg-user .ai-chat-bubble{background:var(--c-blue);color:#fff;border-top-right-radius:4px;}
.ai-fb-wrap{display:flex;gap:var(--gap-2);margin-top:4px;margin-left:2px;}
.ai-fb-btn{background:#fff;border:1px solid #e0e7ef;border-radius:var(--r-2xl);width:30px;height:26px;font-size:var(--fs-13);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;opacity:.65;}
.ai-fb-btn:hover{opacity:1;transform:scale(1.08);}
.ai-fb-btn.on-up{background:#f0fdf4;border-color:#86efac;opacity:1;}
.ai-fb-btn.on-down{background:#fef2f2;border-color:#fca5a5;opacity:1;}
.ai-chat-suggestions{display:flex;flex-wrap:wrap;gap:var(--gap-2);margin-top:2px;}
.ai-chat-suggest-chip{
  background:#fff;border:1px solid #cfe0ee;color:var(--c-blue);border-radius:16px;
  padding:var(--pad-4) var(--pad-7);font-size:var(--fs-12);font-weight:600;cursor:pointer;transition:background .15s;
}
.ai-chat-suggest-chip:hover{background:#eaf3fb;}
.ai-chat-typing{display:flex;gap:var(--gap-1);padding:var(--pad-7) var(--pad-8);}
.ai-chat-typing span{width:6px;height:6px;border-radius:50%;background:#9bb4cc;animation:ai-typing-bounce 1.2s infinite ease-in-out;}
.ai-chat-typing span:nth-child(2){animation-delay:.15s;}
.ai-chat-typing span:nth-child(3){animation-delay:.3s;}
@keyframes ai-typing-bounce{0%,60%,100%{transform:translateY(0);opacity:.5;}30%{transform:translateY(-5px);opacity:1;}}
.ai-chat-input-row{
  display:flex;gap:var(--gap-4);padding:var(--pad-6) var(--pad-7);background:#fff;border-top:1px solid #e0e7ef;flex-shrink:0;
  padding-bottom:calc(12px + env(safe-area-inset-bottom,0));
}
.ai-chat-input-row input{
  flex:1;border:1px solid #d8dfe8;border-radius:22px;padding:var(--pad-5) var(--pad-8);font-size:var(--fs-135);outline:none;background:#f4f8fb;
}
.ai-chat-input-row input:focus{border-color:var(--c-blue);background:#fff;}
#ai-chat-send-btn{
  width:40px;height:40px;border-radius:50%;border:none;background:var(--c-blue);color:#fff;font-size:var(--fs-16);cursor:pointer;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s;
}
#ai-chat-send-btn:hover{background:#154d8a;}
#ai-chat-send-btn:disabled{opacity:.5;cursor:not-allowed;}
@media(max-width:480px){
  .ai-chat-panel{max-width:100%;}
}

.toast.show{transform:translateX(-50%) translateY(0);opacity:1;visibility:visible;}
.toast.ok{border-color:var(--green);background:#f0fdf4;}.toast.err{border-color:var(--danger);background:#fef2f2;}
.inp-bad{border-color:var(--c-red) !important;background:#fff5f5 !important;box-shadow:0 0 0 2px rgba(220,38,38,.15) !important;}
.inp-warn{border-color:#9C5B06 !important;background:#FFF8EE !important;box-shadow:0 0 0 2px rgba(232,138,28,.16) !important;} /* v774: 주의(정상 밖·불량 경계 안) */
.inp-ok{border-color:#086A46 !important;background:#F2FBF6 !important;} /* 1.337.15(사장님): 판정 있는 칸은 정상도 초록으로 답한다(절연·권선 등 — 무응답과 구분) */
/* 1.337.295(UI 아이디어 26 · 사장님 «다크모드에서 깜빡거리는 현상이 많다» · «가장 깜빡이는 곳은 점검 입력칸»): 위 세 판정 class 는 입력칸 자체에 밝은 배경을 !important 로 준다.
   다크에서는 값을 넣어 class 가 붙을 때마다 밝은 칸이 한 번 그려진 뒤 dark-fix 가 어둡게 덧칠했다 — 그 순간이 「칸이 번쩍임」. 1.337.279 는 감싸는 칸(.w7-cell)만 토큰으로 바꿨고 입력칸 자체는 남았다.
   → 다크 값을 미리 정해 두어 처음부터 어둡게 그려진다(판정 뜻은 그대로 — 같은 --j-* 토큰). scan9 S164 */
body.ss-dark .inp-bad{background:var(--j-bd-bg) !important}
body.ss-dark .inp-warn{background:var(--j-wa-bg) !important}
body.ss-dark .inp-ok{background:var(--j-ok-bg) !important}

@media(max-width:600px){
  .g2,.g3,.g4{grid-template-columns:1fr;}
  .s2,.s3,.s4{grid-column:span 1;}
  .vis-grid{grid-template-columns:1fr;}
  .sbar{grid-template-columns:1fr 1fr;}
}
.dr-team-card{background:#f8fafc;border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--pad-6);}
.dr-team-title{font-size:var(--fs-13);font-weight:700;margin-bottom:8px;}
.dr-work-section{border:1px solid var(--border);border-radius:var(--r-lg);margin-bottom:10px;overflow:hidden;}

/* 시퀀스 실험실 */
.seq-scenario-btn{display:flex;align-items:center;gap:12px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--pad-6) var(--pad-7);cursor:pointer;transition:all .15s;text-align:left;}
.seq-scenario-btn:active{transform:scale(.98);}
.seq-scenario-btn .ssc-icon{font-size:24px;flex-shrink:0;}
.seq-scenario-btn .ssc-title{font-size:var(--fs-14);font-weight:700;color:var(--text);}
.seq-scenario-btn .ssc-desc{font-size:var(--fs-115);color:var(--muted);margin-top:2px;}
.seq-scenario-btn .ssc-diff{flex-shrink:0;font-size:var(--fs-10);font-weight:700;padding:var(--pad-2) var(--pad-4);border-radius:var(--r-lg);white-space:nowrap;}
.seq-part{
  position:absolute;background:#1a2c44;border:1.5px solid #2f4664;border-radius:var(--r-sm);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:#cfe0f5;font-size:var(--fs-105);font-weight:700;text-align:center;padding:var(--pad-2);
  box-shadow:0 2px 6px rgba(0,0,0,.3);user-select:none;
}
.seq-part .sp-icon{font-size:var(--fs-17);line-height:1;margin-bottom:2px;}
.seq-part.energized{background:#234d2e;border-color:#3fae5c;box-shadow:0 0 12px rgba(63,174,92,.5);}
.seq-part.tripped{background:#4d2323;border-color:#c0392b;box-shadow:0 0 12px rgba(192,57,43,.5);}
.seq-terminal{
  position:absolute;width:14px;height:14px;border-radius:50%;
  background:#5b7a9e;border:2px solid #0e1f33;cursor:pointer;
  transform:translate(-50%,-50%);z-index:5;transition:all .15s;
}
.seq-terminal:hover{background:#7fa3c9;transform:translate(-50%,-50%) scale(1.25);}
.seq-terminal.selected{background:#fbbf24;box-shadow:0 0 0 4px rgba(251,191,36,.35);}
.seq-terminal.connected{background:#3fae5c;}
.seq-terminal.energized-term{background:#fde047;box-shadow:0 0 8px rgba(253,224,71,.8);}
.seq-label{position:absolute;color:#8aa3c2;font-size:var(--fs-11);font-weight:600;pointer-events:none;white-space:nowrap;}

.dr-work-header{background:#f0f4f8;padding:var(--pad-5) var(--pad-7);font-size:var(--fs-14);font-weight:700;display:flex;align-items:center;gap:var(--gap-4);}
.dr-work-body{padding:var(--pad-6);}
.dr-entry{display:flex;gap:var(--gap-4);margin-bottom:6px;align-items:flex-start;}
.dr-entry textarea{flex:1;min-height:54px;resize:vertical;}
.dr-add-btn{background:#f0f4f8;border:1px dashed var(--border);color:var(--muted);border-radius:var(--r-sm);padding:var(--pad-3) var(--pad-7);cursor:pointer;font-size:var(--fs-13);width:100%;margin-top:4px;}
.dr-add-btn:hover{border-color:var(--ci-blue);color:var(--ci-blue);}
/* 1.337.285: 여기 있던 「현장 모바일 터치영역 확대」 블록(640px · 단추 44px+padding · 입력칸 16px)은 index.html <style id="ss-v162"> 의 820px 블록과 같은 규칙이 둘이던 것 — 그쪽 한 곳으로 합쳤다. 입력칸 16px 는 index.html 4461 의 15px!important 에 져서 원래 죽어 있었다. scan9 S82 */

/* ══════════════════════════════════════════════════════════════════
   v763 — 장갑 낀 손으로 누르기 어려운 작은 버튼
   실측(폰 412px)으로 잡힌 자리 —
     일일보고      u            25×21   "‹ ›" 달 이동
     종합 상황판    span.ov1-link 50×14   "VOC 4건" · "미조치 불합리 35건"
     필터 교체 일정  b.al-c       57×16   "지연 1379" 상태 칩
     일일보고      span.td      44×25   "오늘"
   글자·칸 크기를 키우면 배치가 밀립니다.
   → **보이지 않는 누름 면적만** 40×40 으로 넓힙니다(모양은 그대로).
   ⚠ 폰에서만 적용합니다. PC 는 마우스라 지금도 문제없습니다.
   ══════════════════════════════════════════════════════════════════ */
@media (max-width:820px){
  u[onclick], span.ov1-link, b.al-c, span.td, div.dy-d{ position:relative }
  u[onclick]::after, span.ov1-link::after, b.al-c::after, span.td::after, div.dy-d::after{
    content:''; position:absolute; left:50%; top:50%;
    transform:translate(-50%,-50%);
    width:100%; min-width:40px; height:100%; min-height:var(--tap-small);
    pointer-events:auto;
  }
}

/* ══ v775(사장님 "커서 따라가다가 너무 위로 올라가 적으면 다시 제위치") ══
   키보드 [다음]으로 칸을 옮길 때 브라우저 기본 스크롤이 고정 헤더(파란 점검 헤더·단계바)를 모르고
   칸을 화면 맨 위(헤더 뒤)까지 끌어올렸다가, 타이핑 순간 커서 위치로 되돌아와 화면이 출렁였습니다.
   scroll-margin 으로 "이만큼 여백을 두고 멈춰라"를 브라우저에 알려줍니다 — 스크롤 코드 추가 없음. */
@media (max-width:820px){
  #panel-input input, #panel-input select, #panel-input textarea{
    scroll-margin-top:150px; scroll-margin-bottom:130px;
  }
}

/* 1.186.0: 0으로 채워진 측정칸 — 판정 색(inp-bad/inp-warn)과 부딴히지 않게 테두리가 아니라 outline 으로 표시한다 */
.ss-zero-chk{ outline:2px dashed #f59e0b; outline-offset:-2px; }

/* ══════════════════════════════════════════════════════════════
   1.244.0 — 장갑 낀 손 터치 (사장님 «현장에서 장갑을 끼고 해야하는거 알지??»)
   실제 폰 화면(390×844·터치)으로 재어 보니 장갑 기준(48px)에 못 미치는 단추가 있었습니다.
     · 톱니 36 · 뒤로/닫기 38 · 유닛 ＋／－ 38 · 편집 40 · 탭 칩 45 · 홈/로그아웃 높이 38
   단추를 키우면 화면 배치가 깨지므로, <b>보이는 크기는 그대로 두고 누르는 면적만</b> 48×48로 넓힙니다.
   (투명한 영역을 가운데에 덧대는 방식 — 모양·간격 변화 없음)
   ══════════════════════════════════════════════════════════════ */
.lch-gear, .nin-back, .nin-x, .unit-btn, .nsc-back,
.lch-top button, .nsc-segc button, .nsc-sub button, .pk-chip{
  position:relative;
}
.lch-gear::after, .nin-back::after, .nin-x::after, .unit-btn::after, .nsc-back::after,
.lch-top button::after, .nsc-segc button::after, .nsc-sub button::after, .pk-chip::after{
  content:''; position:absolute; left:50%; top:50%;
  width:48px; height:48px; transform:translate(-50%,-50%);
  /* 보이지 않고, 자리도 차지하지 않으며, 오직 누르는 면적만 넓힌다 */
  background:transparent; pointer-events:auto; z-index:2;   /* 옆 요소보다 위에 두어야 실제로 눌린다 */
}
/* 세로로 딱 걸치던 것들 — 46·47px → 48px (한두 픽셀이라 배치는 그대로) */
.nin-next, #nsc-q, #ss-health-open, #ss-health-x,
#f_date, #f_insp, #f_round, #f_sitekey, #f_line, #f_place, #f_site, #f_kind,
#f_refrigerant, #f_comptype, #f_compcnt, #f_compmodel, #f_rt, #f_phase, #f_voltage,
#f_maker, #f_model_in, #f_model_out, #f_powersrc, #f_temp_now, #f_temp_set,
.meas-section input, .meas-section select{
  min-height:48px;
}
/* ══════════════════════════════════════════════════════════════
   1.298.0 — 사장님 원칙 ⑨ 「장갑 기준 48px」이 <b>화면에서는 안 먹고 있었습니다</b>
   ══════════════════════════════════════════════════════════════
   실기기(폰 390×844)에서 <b>「48px 손가락이 닿으면 실제로 눌리는가」</b>로 재 봤습니다.
   위에 만들어 둔 48×48 누름판(::after)은 <b>제대로 붙어 있었습니다</b> — 그런데
   단추 자신의 <b>overflow:hidden</b>(글자가 길면 …으로 줄이려고 넣은 것)이 <b>그 판을 잘라내고</b> 있었습니다.
   그래서 점검 입력·필터 선택의 탭 칩은 <b>여전히 44px</b>이었습니다. 만들었는데 안 먹던 것입니다.
   → ㉮ 자르는 일은 <b>안쪽 글자(span.segt)</b>가 맡고, 단추는 누름판을 안 자릅니다(보이는 크기 그대로).
     ㉯ 누름판이 없는 <b>현장 화면(카드 화면 #ss-nsc)</b>의 단추·칸은 <b>48px로 올립니다</b>.
     ㉰ 사장님 지시대로 <b>관리 목록 화면(.lsc-chip · 전화 링크)은 44px 그대로</b> 둡니다 —
        장갑은 현장에서 끼는 것이고, 인사 관리 27곳을 키우면 한 화면에 안 들어갑니다. */
/* ⚠ 뒤 규칙에 지지 않게 — index.html 안쪽 <style>이 이 파일보다 <b>나중에</b> 실려서
   같은 힘(.sitechip)으로는 그쪽 44px가 이깁니다(인수인계 「CSS가 뒤 규칙에 짐」 그대로).
   그래서 힘을 한 단계 올려 적습니다. */
#ss-nsc button, #ss-nsc select,
#ss-nsc input:not([type=checkbox]):not([type=radio]),
.sitechip.sitechip,
#ss-lsc .lsc-body > button{ min-height:48px; }   /* 필터 진행도 등 「… 열기 →」 전폭 단추 — 47px로 1px 모자랐습니다 */
/* 탭 칩만은 보이는 크기를 유지하고 <b>누름판</b>으로 넓힌다(위 ::after 규칙이 살아나도록 자르지 않는다) */
#ss-nsc .nsc-segc button{ min-height:44px; overflow:visible; }   /* 보이는 크기는 종전 그대로 44px — 누르는 면적만 48px */
#ss-nsc .nsc-segc button>.segt{ display:block; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* 장갑으로 누를 때 옆 단추가 같이 눌리지 않게 — 붙어 있는 단추 사이 최소 간격 */
.nsc-segc{ gap:8px; }
.nsc-sub{ gap:8px; flex-wrap:wrap; overflow-x:visible; }   /* 1.244.0: 사업장·건물 칩은 아래로 줄바꿈 */

/* 예외: .dt(「8월 20일 목요일 · 판」)는 <b>정보 표시줄</b>입니다 — 단추가 아니므로 넓히지 않습니다.
   넓히면 위쪽 이름줄을 덮어 오히려 눌러야 할 것이 안 눌립니다. */

/* ══ 1.248.0 — 한 달 달력(일정) · 장갑 기준 48px · 점 두 줄 11px ══ */
.ssc-wrap{padding:0 0 8px}
.ssc-hd{display:flex;align-items:center;gap:10px;padding:6px 12px 2px}
.ssc-hd b{flex:1;text-align:center;white-space:nowrap;font-size:17px;font-weight:800;color:var(--c-ink)}
.ssc-nav{width:48px;height:48px;border:1.5px solid #D5DDE6;background:#fff;border-radius:12px;font-size:20px;font-weight:800;color:#4A5563}
.ssc-seg{display:flex;gap:8px;padding:10px 12px 2px}
.ssc-seg button{flex:1;min-height:48px;border:1.5px solid #D5DDE6;background:#fff;border-radius:12px;font-size:14px;font-weight:800;color:#4A5563}
.ssc-seg button.on{background:#1B4F8F;border-color:#1B4F8F;color:#fff}
.ssc-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;padding:10px 6px 2px}
.ssc-dow span{text-align:center;font-size:11px;font-weight:800;color:#647080}
/* 1.248.2(사장님): 토요일 파랑 · 일요일 빨강 */
.ssc-dow span.sun{color:#C23A2B}.ssc-dow span.sat{color:#2D6FD6}
/* 1.248.1: 390px 화면에서 칸이 44px로 줄어 장갑 기준에 미달했습니다 —
   좌우 여백 12→6, 칸 사이 4→3으로 줄여 칸을 48px로 확보합니다(7×48+6×3=354 ≤ 378). */
/* 10-26 Q352(김원준님 폰 사진 «일 칸이 왼쪽 밖으로»): 화면 몸 여백(좌우 16)이 생긴 뒤로 360 폭의 판은 328px 인데 «칸 48px 바닥»이 354px 를 요구해
   몸이 가로로 밀렸다(일 칸·탭 왼쪽·범례가 잘림 · 요일 머리(1fr)와 날짜 칸(48px 바닥)이 어긋남). 바닥을 0 으로 — 360 에서 칸 44px(장갑 기준 그대로) · 요일 머리와 같은 줄. */
.ssc-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;padding:0 6px}
@media (max-width:380px){ .ssc-grid,.ssc-dow{gap:2px} .ssc-grid{padding:0 4px} .ssc-dow{padding-left:4px;padding-right:4px} }   /* 360 폭에서도 칸 44px — 요일 머리와 같은 간격 */
@media (max-width:380px){ .ssc-hd{gap:6px;padding-left:6px;padding-right:6px} }   /* 11-02 큰 글자·좁은 폭(쪽 확대 240): 머리 간격을 줄여 ‹ › 단추가 «년 월»을 안 가림 */
.ssc-c{height:66px;min-width:0;border:1px solid #E6EBF1;background:#fff;border-radius:11px;position:relative;
  display:flex;flex-direction:column;align-items:center;padding-top:6px}
.ssc-c .n{font-size:14px;font-weight:800;line-height:1;color:#1B2430}
.ssc-c.off{background:#F7F9FB;border-color:#EEF1F5;height:66px}
.ssc-c.sun .n{color:#C23A2B}
.ssc-c.sat .n{color:#2D6FD6}
.ssc-c.sun,.ssc-c.sat{background:#FCFDFE}
.ssc-c.today .n{color:#1766C2}
.ssc-c.today::after{content:'';position:absolute;top:5px;right:6px;width:6px;height:6px;border-radius:50%;background:#1766C2}
.ssc-c.on{border:2px solid #1766C2;background:#EAF1FB}
.ssc-c .mk{position:absolute;bottom:8px;left:0;right:0;display:grid;grid-template-columns:repeat(3,11px);gap:3px;justify-content:center}
.ssc-c .mk i{width:11px;height:11px;border-radius:50%;display:block}
/* 10-26 Q353: 작업 일정(손으로 넣은 일)은 마름모 — 작업번호 일정 점(동그라미)과 한눈에 가름 */
.ssc-c .mk i.ws,.ssc-lg i.ws{border-radius:2px;transform:rotate(45deg) scale(.82)}
.ssc-lg{display:flex;flex-wrap:wrap;gap:6px 11px;padding:12px 14px 0;font-size:11px;font-weight:800;color:#4A5563;align-items:center}
.ssc-lg em{display:inline-flex;align-items:center;gap:5px;font-style:normal}
.ssc-lg i{width:11px;height:11px;border-radius:50%;display:inline-block}
.ssc-det{margin:12px 12px 4px;background:#fff;border:1px solid #E6EBF1;border-radius:16px;overflow:hidden}
.ssc-det h3{margin:0;padding:12px 14px 8px;font-size:15px;font-weight:800}
.ssc-dtab-w{overflow-x:auto;padding:0 12px 10px}   /* 10-27 Q371: 연간 줄 날짜표 */
.ssc-dtab{width:100%;border-collapse:collapse;font-size:13px}
.ssc-dtab th,.ssc-dtab td{padding:6px 8px;border-bottom:1px solid #E5E9EF;text-align:left;white-space:nowrap}
.ssc-dtab th{color:#5F6B79;font-weight:700}
.ssc-dtab .late{color:#C23A2B;font-weight:700}
.ssc-dtab .early{color:#9C5B06;font-weight:700}
.ssc-dtab small{color:#8B95A5}
.ssc-det h3.ssc-fold{min-height:44px;box-sizing:border-box;padding:12px 14px;display:flex;align-items:center;user-select:none}   /* 10-27 Q370: 연간 사업장 머리 — 눌러 접고 펴기(손가락 44) */
.ssc-row{display:flex;align-items:center;gap:10px;min-height:56px;padding:8px 14px;border-top:1px solid #F1F4F8}
.ssc-row .tg{height:34px;padding:0 11px;border-radius:9px;display:flex;align-items:center;font-size:12px;font-weight:800;color:#fff}
/* 10-26 Q342: 연간 설비 줄의 까닭 배지 — 위 팀 표와 같은 꼴 · 여럿이면 세로로 쌓아 이름 칸을 덜 먹음 */
.ssc-sub2 .tgs{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:0 0 auto}
.ssc-sub2 .tg{height:28px;padding:0 9px;border-radius:9px;display:flex;align-items:center;font-size:12px;font-weight:800;color:#fff;white-space:nowrap}
body.ss-dark .ssc-sub2 .tg{color:#14181F}   /* 다크의 밝은 빨강·주황 위엔 어두운 글 */
.ssc-sub2 .ssc-act{display:flex;align-items:center;gap:8px;flex:0 0 auto}
@media (max-width:480px){ .ssc-yr .ssc-sub2{padding-left:12px;gap:8px} .ssc-yr .ssc-sub2 .ssc-act{flex-direction:column;align-items:flex-end;gap:6px} }   /* 폰: 연간 설비 줄은 들여쓰기 60→12 — 고르기·배지·고치기 사이에 이름 칸이 남게 */
.ssc-row .nm{font-size:14px;font-weight:700;min-width:0;overflow-wrap:anywhere}
.ssc-row .tgs{display:flex;flex-direction:column;gap:3px;flex-shrink:0}
.ssc-row .tgs .tg{height:20px;padding:0 7px;border-radius:6px;font-size:11px}
.ssc-row .tg-more{background:#64748B}
.ssc-row .qt{margin-left:auto;font-size:14px;font-weight:800;color:#4A5563}
.ssc-empty{padding:16px 14px;text-align:center;color:#9AA5B1;font-weight:700;font-size:13px}

/* ══════════════════════════════════════════════════════════════
   1.249.0 — 목록 화면(LSC) 공용 부품을 장갑 기준으로
   판정 기준 화면을 실측하니 작은 것들이 그 화면 고유가 아니라
   <b>LSC를 쓰는 모든 화면이 공유하는 부품</b>이었습니다 —
     · 뒤로 단추 38×44  · 검색칸 높이 44  · 칩 높이 35  · 탭 높이 40
   한 군데를 고치면 목록 화면 전부가 함께 좋아집니다.
   보이는 크기는 그대로 두고 <b>누르는 면적만</b> 넓히거나, 한두 픽셀만 키웁니다.
   ══════════════════════════════════════════════════════════════ */
.lsc-back{ position:relative; }
.lsc-back::after{
  content:''; position:absolute; left:50%; top:50%;
  width:48px; height:48px; transform:translate(-50%,-50%); background:transparent; z-index:2;
}
#lsc-q, .lsc-q{ min-height:48px; }
.lsc-chip{ min-height:44px; display:inline-flex; align-items:center; }
.lsc-chips{ gap:8px; padding-bottom:8px; }
/* 칩·탭은 글자가 짧아 폭이 좁을 수 있다 — 누르는 면적만 세로로 넓힌다 */
.lsc-chip::after, .lsc-tab::after, .lsc-tabs span::after{
  content:''; position:absolute; left:0; right:0; top:50%;
  height:48px; transform:translateY(-50%); z-index:1;
}
.lsc-chip, .lsc-tab, .lsc-tabs span{ position:relative; }
/* 머리의 [수정] 같은 동작 단추 */
.lsc-head button, .lsc-act{ min-height:48px; }
/* 1.249.1 — 판정 기준 화면의 갈래 칩(crit-tabs)도 같은 규칙으로.
   높이 35px이라 장갑으로 위아래가 빗나갔습니다(실측 3/4). 보이는 크기는 그대로, 누르는 면적만 48px. */
.crit-tabs{ gap:8px; }
.crit-tabs span{ position:relative; }
/* 1.249.2: 덧대는 방식이 안 먹었습니다 — 칩 줄이 가로 스크롤이라 넘친 부분이 잘렸습니다.
   그래서 칩 자체를 48px로 키웁니다(탭이라 커져도 자연스럽습니다). */
.crit-tabs span{ min-height:48px; display:inline-flex; align-items:center; }

/* 1.249.2 — 불합리·VOC 분석: 눌러서 펼치는 줄이 29px이라 장갑으로 빗나갔습니다(실측 2/4) */
#ss-lsc .an-wide [onclick], #ss-lsc .lsc-info [onclick]{ min-height:48px; display:flex; align-items:center; }
/* 1.249.3: 48px 줄이 서로 붙어 있으면 장갑으로 옆 줄이 눌립니다 — 줄 사이 최소 간격 */
#ss-lsc .an-wide [onclick], #ss-lsc .lsc-info [onclick]{ margin-bottom:4px; }
/* 1.250.0 — 판정 기준 갈래 접기 */
.crit-sec{ display:flex; align-items:center; gap:6px; min-height:48px; cursor:pointer; }
.crit-sec .ar{ color:#9AA5B1; font-size:12px; width:14px; display:inline-block; }

/* 1.251.0 — 큰 카드 접기(공용) */
.ssfold{ position:relative; }
.ssfold-hd{ display:flex; align-items:center; gap:8px; min-height:48px; cursor:pointer;
  font-size:14px; font-weight:800; color:#333D4B; }
.ssfold-hd .ssfold-ar{ color:#9AA5B1; font-size:12px; width:14px; }
/* 접힘: 카드 안이 요소가 아니라 <b>직접 글자</b>인 경우가 있어 자식 감추기로는 안 됩니다.
   카드 <b>자체 높이를 제목 한 줄로 제한</b>합니다(구조와 무관하게 확실히 접힙니다). */
.ssfold{ max-height:52px; overflow:hidden; padding-top:0; padding-bottom:0; }
.ssfold.ssfold-open{ max-height:none; overflow:visible; }
/* Q180(10-09 김원준님 캡처 · 분석 «현장별·팀별» 머리 위치): .lsc-info 의 위·아래 여백이 위 .ssfold 여백 0 을 이겨(같은 세기 · 뒤에 실림)
   접힌 카드(높이 52px)에서 48px 머리가 16px 아래로 밀려 제목이 잘려 보였다 → 접힌 것만 더 세게 */
.lsc-info.ssfold:not(.ssfold-open){ padding-top:2px; padding-bottom:2px; }

/* ══ 1.253.0 — 제원 그룹 제목을 장갑 기준으로 ══
   실기기 시험에서 제원 탭의 그룹 제목이 <b>29px</b>로 나왔습니다(장갑 기준 48px 미달).
   1.242.0에서 「눌러도 안 펼쳐지던 것」은 고쳤지만 <b>높이는 그대로</b>였습니다 —
   펼칠 수는 있게 됐는데 <b>손가락이 닿기 어려운</b> 상태였습니다. */
.w13-grp{ min-height:48px; }
#panel-input .w13-grp{ min-height:48px; }

/* ══ 1.254.0 — 육안 점검 네 단계 · 색은 PCB 제어와 통일 ══
   미점검(표시 없음) → 양호(초록) → 불량(빨강) → 해당없음(회색) → 미점검
   종전에는 「양호」에 표시가 없어 <b>미점검과 구분되지 않았습니다</b>. */
/* 1.275.0: 1.254.0의 <b>연한 초록</b>은 폐지 — 사장님 «누르면 전체 녹색·글자 흰색».
   같은 대상에 규칙이 둘이면 <b>뒤에 오는 것이 이기므로</b> 옛 규칙을 남겨두면 헷갈립니다. */

/* 1.262.0 — 자료 출처 표시(우측 위, 작게) */
.ss-srcmark, #nsc-src{
  margin-left:auto; padding-left:8px; white-space:nowrap;
  font-size:var(--fs-11); font-weight:800; color:rgba(255,255,255,.72);
}
.lsc-ht .ss-srcmark, .nsc-head #nsc-src{ align-self:center; }
#nsc-src:empty{ display:none; }

/* 1.265.0 — 관리 현황판 · 기간 지정 */
.ssrg{ padding:2px 0 6px }
.ssrg-row{ display:flex; gap:8px; align-items:flex-end; flex-wrap:wrap }
.ssrg-row label{ display:flex; flex-direction:column; gap:3px; font-size:var(--fs-11); font-weight:800; color:#647080 }
/* 1.265.1: 날짜 칸이 브라우저 기본 높이(44px)로 눌려 장갑 기준에 못 미쳤습니다 — 높이를 못 박습니다 */
.ssrg-row input[type="date"]{ height:48px!important; min-height:48px!important; box-sizing:border-box;
  min-width:132px; border:1.5px solid #D5DDE6; border-radius:12px; background:#fff;
  font-size:var(--fs-13); font-weight:800; color:#333D4B; padding:0 10px; -webkit-appearance:none; appearance:none }
.ssrg-nav{ min-height:48px; min-width:72px; padding:0 12px; border:1.5px solid #D5DDE6; border-radius:12px; background:#fff;
  font-size:var(--fs-13); font-weight:800; color:#4A5563 }
.ssrg-sub{ margin-top:8px; font-size:var(--fs-12); font-weight:700; color:#5F6B79 }
.ssrg-reset{ min-height:48px; padding:0 10px; border:1px solid #D5DDE6; border-radius:10px; background:#F7F9FB;
  font-size:var(--fs-12); font-weight:800; color:#4A5563; margin-left:4px }
.ssrg-kpi{ display:flex; gap:8px; margin-top:12px; flex-wrap:wrap }
.ssrg-kpi>div{ flex:1; min-width:96px; background:#fff; border:1px solid #E6EBF1; border-radius:14px; padding:12px 10px; text-align:center }
.ssrg-kpi b{ display:block; font-size:22px; font-weight:800; color:#1766C2 }
.ssrg-kpi s{ display:block; text-decoration:none; font-size:var(--fs-12); font-weight:700; color:#5F6B79; margin-top:2px }

/* 1.266.0 — 달력 상세: 건물명 + 눌러서 펼치기 */
.ssc-row.ssc-tap{ cursor:pointer }
.ssc-row .ar{ margin-left:8px; color:#9AA5B1; font-size:12px; width:14px; text-align:center }
.ssc-row.on{ background:#F4F8FE }
.ssc-sub2{ display:flex; align-items:center; gap:10px; min-height:48px; padding:6px 14px 6px 60px;
  border-top:1px solid #F1F4F8; font-size:var(--fs-13); font-weight:700; color:#4A5563; cursor:pointer }
.ssc-sub2.plain{ cursor:default }
.ssc-sub2 .nm{ flex:1; min-width:0 }
.ssc-sub2 .qt{ font-weight:800; color:#1766C2; white-space:nowrap }
.ssc-sub2.back{ color:#1766C2; font-weight:800; padding-left:24px }
/* 10-21 달력 «연간»(js/launcher.js ssLscCalY) — 김원준님 «디자인은 지금 앱처럼»: 배지·고치기·판은 지금 달력·휴가 부품(.ssc-seg · .ssc-nav · .ssc-det · .tc-sheet · .tc-fl) 그대로.
   더한 것은 이 한 가지 — 기대/계획/수행이 어긋난 설비 줄 물들임(ssc- 집안에 하나) */
.ssc-sub2.bad{ background:#FFF8F6 }
body.ss-dark .ssc-sub2.bad{ background:#2A2020 }
/* ══ 생김새 통일 2단계(2026-10-21) — 폰 작업 일정 .ssc-* 의 다크 ══
   위 .ssc-* 는 바탕·테두리·글을 hex 로 적었고 body.ss-dark 규칙이 0곳이라 다크는 dark-fix 실행 보정에만 기댔다.
   라이트는 한 글자도 안 바꾸고, 다크만 바탕과 글을 «함께» 토큰으로(바탕만 바꾸면 #1B2430 글이 묻힌다).
   ⚠ 아래 일반 규칙(body.ss-dark .ssc-seg button · .ssc-c .n · .ssc-dow span)은 무게가 위 .on·.sun·.sat·.today 보다 커서
     그 갈래를 다크에도 다시 적는다 — 빠지면 고른 알약·일요일 빨강·오늘 파랑이 다크에서 사라진다. */
body.ss-dark .ssc-nav,body.ss-dark .ssc-seg button{background:var(--surface);border-color:var(--c-line);color:var(--c-ink)}
body.ss-dark .ssc-seg button.on{background:#1B4F8F;border-color:#4e96e0;color:#fff}
body.ss-dark .ssc-dow span{color:var(--c-gray6)}
body.ss-dark .ssc-dow span.sun{color:var(--c-red)}body.ss-dark .ssc-dow span.sat{color:var(--c-blue2)}
body.ss-dark .ssc-c{background:var(--surface);border-color:var(--c-line2)}
body.ss-dark .ssc-c .n{color:var(--c-ink)}
body.ss-dark .ssc-c.off{background:var(--c-bg2);border-color:var(--c-line2)}
body.ss-dark .ssc-c.sun,body.ss-dark .ssc-c.sat{background:var(--surface)}
body.ss-dark .ssc-c.sun .n{color:var(--c-red)}
body.ss-dark .ssc-c.sat .n,body.ss-dark .ssc-c.today .n{color:var(--c-blue2)}
body.ss-dark .ssc-c.today::after{background:var(--c-blue2)}
body.ss-dark .ssc-c.on{border-color:var(--c-blue2);background:var(--c-bg-blue)}
body.ss-dark .ssc-lg{color:var(--c-gray6)}
body.ss-dark .ssc-det{background:var(--surface);border-color:var(--c-line2);color:var(--c-ink)}
body.ss-dark .ssc-row{border-top-color:var(--c-line2)}
body.ss-dark .ssc-row .qt{color:var(--c-gray6)}
body.ss-dark .ssc-row .ar,body.ss-dark .ssc-empty{color:var(--c-gray6)}
body.ss-dark .ssc-row.on{background:var(--c-bg-blue)}
body.ss-dark .ssc-sub2{border-top-color:var(--c-line2);color:var(--c-gray6)}
body.ss-dark .ssc-sub2 .qt,body.ss-dark .ssc-sub2.back{color:var(--c-blue2)}

/* 1.268.0 — 불합리·VOC 정렬 기준 칩 */
/* 1.279.0: 전용 클래스로 — 「#rpick-render .pk-chips{display:none}」에 같이 숨겨지던 것 */
.rp-sort{ display:flex!important; gap:8px; padding:2px 0 10px; flex-wrap:wrap }
#rpick-render .rp-sort{ display:flex!important }
.rp-sort .pk-chip{ min-height:44px; display:inline-flex; align-items:center; position:relative;
  padding:0 12px; border:1.5px solid #D5DDE6; border-radius:999px; background:#fff;
  font-size:var(--fs-12); font-weight:800; color:#4A5563 }
.rp-sort .pk-chip.on{ border-color:#1766C2; background:#1766C2; color:#fff }
.rp-sort .pk-chip::after{ content:''; position:absolute; left:0; right:0; top:50%; height:48px; transform:translateY(-50%) }

/* 1.269.0 — 조직도 전화번호 */
.og-tel{ margin-left:8px; min-height:44px; display:inline-flex; align-items:center; padding:0 8px;
  font-size:var(--fs-12); font-weight:800; color:#1766C2; text-decoration:none; white-space:nowrap; position:relative }
.og-tel::after{ content:''; position:absolute; left:0; right:0; top:50%; height:48px; transform:translateY(-50%) }

/* 1.273.0 — 월간·연간 화면의 날짜 조절 줄 */
.ssrg-bar{ display:flex; align-items:center; gap:8px; margin:0 0 12px }
.ssrg-bar .ssrg-lab{ flex:1; min-width:0; text-align:center }
.ssrg-bar .ssrg-lab b{ display:block; font-size:var(--fs-15); font-weight:800; color:#333D4B }
.ssrg-bar .ssrg-lab s{ display:block; text-decoration:none; font-size:var(--fs-11); font-weight:700; color:#647080; margin-top:2px }

/* ══ 1.275.0 — 육안 점검 색을 PCB 제어와 똑같이 ══
   사장님 «누르면 전체 녹색·글자 흰색 / 불량이면 전체 빨간색·흰 글자 /
          N/A면 회색·흰 글자 / 미점검이면 흰색·검은 글자 — 전부 일괄 통일»
   종전에는 <b>글자만</b> 색이 바뀌어 멀리서 상태가 안 보였습니다.
   ※ index.html 의 옛 규칙보다 뒤에 오므로 이 규칙이 이깁니다(같은 !important 무게에서 나중이 이김). */
#panel-input .vchk{
  border:2px solid var(--border)!important; background:#fff!important; color:#333D4B!important;
  font-weight:800; transition:background .12s, color .12s, border-color .12s;
}
#panel-input .vchk.w7-ok{  border-color:#159a58!important; background:#159a58!important; color:#fff!important; }
#panel-input .vchk.w7-bad{ border-color:#e23d3d!important; background:#e23d3d!important; color:#fff!important; }
#panel-input .vchk.w7-na{  border-color:#94a3b8!important; background:#94a3b8!important; color:#fff!important; }
#panel-input .vchk.w7-ok span, #panel-input .vchk.w7-bad span, #panel-input .vchk.w7-na span{ color:#fff!important; }
/* 지난값(참고)은 흐리게 — 색이 진해져도 읽히게 */
#panel-input .vchk.w7-ok .vprev, #panel-input .vchk.w7-bad .vprev, #panel-input .vchk.w7-na .vprev,
#panel-input .vchk.w7-ok .pv-chk, #panel-input .vchk.w7-bad .pv-chk, #panel-input .vchk.w7-na .pv-chk{
  color:rgba(255,255,255,.82)!important;
}

/* ══ 1.275.0 — 육안 점검 색을 PCB 제어와 똑같이 ══
   사장님: 「누르면 전체 녹색·글자 흰색 / 불량이면 전체 빨강·흰 글자 /
   N/A면 회색·흰 글자 / 미점검이면 흰 바탕·검은 글자」
   종전에는 글자 색만 바뀌어 현장에서 상태가 잘 안 보였습니다. PCB 제어와 같은 규칙으로 통일합니다. */
#panel-input .vchk{ background:#fff!important; color:#333D4B!important; border-color:#D5DDE6!important; }
#panel-input .vchk.w7-ok{  background:#159a58!important; border-color:#159a58!important; color:#fff!important; }
#panel-input .vchk.w7-bad{ background:#e23d3d!important; border-color:#e23d3d!important; color:#fff!important; }
#panel-input .vchk.w7-na{  background:#94a3b8!important; border-color:#94a3b8!important; color:#fff!important; }
/* 안쪽 글자도 함께 (span 이 따로 색을 갖고 있었습니다) */
#panel-input .vchk.w7-ok span, #panel-input .vchk.w7-bad span, #panel-input .vchk.w7-na span{ color:#fff!important; }
#panel-input .vchk.w7-bad span::before{ color:#fff!important; }
#panel-input .vchk.w7-na span::before{  color:#fff!important; }

/* 1.285.0 — 위젯의 핵심 숫자 */
.pcd-wg .pcd-num{ margin-left:auto; font-size:20px; font-weight:800; white-space:nowrap; line-height:1 }
.pcd-wg .pcd-num i{ font-style:normal; font-size:var(--fs-11); font-weight:700; color:#647080; margin-left:2px }

/* 1.288.0 — 인사 관리 카드의 인사 정보 줄 */
.lsc-card .meta .mp{ display:inline-flex; align-items:center; min-height:28px; padding:0 8px; margin:2px 6px 2px 0;
  border-radius:8px; background:#F4F6F8; font-size:var(--fs-11); font-weight:700; color:#5A6675 }
.lsc-card .meta .mp.tel{ background:#EAF2FD; color:#1766C2; text-decoration:none; min-height:44px }
.lsc-card .meta .mp.b{ background:#FFF4E2; color:#8A4B0F }

/* 10-26 Q360①: 서버 콘솔 «원본에 안 들어간 칸» 접힌 표(js/data-folders.js __ss원본건너뜀표) — 폰은 날짜·파일·칸 한 줄 + 까닭 둘째 줄 · 700 넘으면 네 칸 */
.ss-sk details{border-top:1px solid var(--c-line2)}
.ss-sk summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:minmax(78px,auto) 1fr auto;gap:2px 10px;align-items:baseline;padding:8px 2px;min-height:44px;box-sizing:border-box}
.ss-sk summary::-webkit-details-marker{display:none}
.ss-sk .w{grid-column:1/-1;font-size:var(--fs-12);color:var(--c-gray6);font-weight:600}
.ss-sk .n{font-weight:800;white-space:nowrap}
.ss-sk .d{font-size:var(--fs-12);font-weight:700;color:var(--c-gray6);white-space:nowrap}
.ss-sk .r{color:#C0392B}
.ss-sk .r .n,.ss-sk .r .f{color:#C0392B}
.ss-sk .f{font-weight:700;min-width:0;overflow-wrap:anywhere}
.ss-sk .hd .hw{display:none}
.ss-sk .dt{padding:2px 2px 10px;font-size:var(--fs-12);color:var(--c-gray6)}
.ss-sk .hd{display:grid;grid-template-columns:minmax(78px,auto) 1fr auto;gap:10px;font-size:var(--fs-11);font-weight:800;color:var(--c-gray6);padding:2px}@media (min-width:700px){.ss-sk summary,.ss-sk .hd{grid-template-columns:150px minmax(160px,1fr) 70px 2fr}
.ss-sk .w{grid-column:auto}
.ss-sk .hd .hw{display:inline}}
