/* FNA Smart HACCP · 스마트해썹 웹 포털 스타일 */
/* 팔레트 → tokens.css (--fna-*) 로 이동. 자체 팔레트 블록(--primary·--bg·…)은 제거됨 */
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--fna-font-family);background:var(--fna-bg);color:var(--fna-text);font-size:var(--fna-font-size-base);line-height:1.45}
button{font-family:inherit;cursor:pointer;border:none;border-radius:var(--fna-radius-sm);font-size:var(--fna-font-size-md);font-weight:700}
button:disabled{opacity:.45;cursor:default}
input,select,textarea{font-family:inherit;font-size:var(--fna-font-size-base);padding:8px 12px;border:1px solid var(--fna-border);border-radius:var(--fna-radius-sm);background:var(--fna-surface);color:var(--fna-text)}
textarea{width:100%;resize:vertical;min-height:72px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--fna-primary);outline-offset:-1px}
input[type=checkbox]{width:17px;height:17px;padding:0;vertical-align:middle;accent-color:var(--fna-primary)}
a{color:var(--fna-primary);text-decoration:none}
a:hover{text-decoration:underline}

.btn{background:var(--fna-primary);color:var(--fna-primary-on);padding:9px 16px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-align:center;border-radius:var(--fna-radius-sm);transition:background .15s}
.btn:hover{background:var(--fna-primary-dark);text-decoration:none}
.btn.ghost{background:var(--fna-surface-container);color:var(--fna-primary)}
.btn.ghost:hover{background:var(--fna-surface-high)}
.btn.danger{background:var(--fna-error-container);color:var(--fna-error)}
.btn.danger:hover{background:var(--fna-danger-container)}
.btn.pass{background:var(--fna-success-text);color:var(--fna-text-inverse)}
.btn.pass:hover{background:var(--fna-success-on-container)}
.btn.review{background:var(--fna-review);color:var(--fna-text-inverse)}
.btn.sm{padding:5px 10px;font-size:var(--fna-font-size-sm);border-radius:var(--fna-radius-xs)}

table{width:100%;border-collapse:collapse;background:var(--fna-surface)}
th{font-size:var(--fna-font-size-sm);color:var(--fna-text-muted);text-align:left;padding:10px 12px;border-bottom:2px solid var(--fna-border);white-space:nowrap;background:var(--fna-surface-low)}
td{padding:10px 12px;border-bottom:1px solid var(--fna-border);vertical-align:middle}
tr:last-child td{border-bottom:none}
tr.off td{color:var(--fna-text-muted);background:var(--fna-surface-low)}
tr.bad td{background:var(--fna-error-container)}

.card{background:var(--fna-surface);border:1px solid var(--fna-border);border-radius:var(--fna-radius-lg);overflow:hidden;margin-bottom:18px;box-shadow:var(--fna-shadow-card)}
.card h3{font-size:var(--fna-font-size-base);padding:14px 18px;border-bottom:1px solid var(--fna-border);display:flex;align-items:center;gap:var(--fna-space-sm);flex-wrap:wrap;background:var(--fna-surface)}
.card .body{padding:18px}
.card .scroll{overflow-x:auto}

.badge{display:inline-block;padding:3px 10px;border-radius:var(--fna-radius-pill);font-size:var(--fna-font-size-xs);font-weight:700;white-space:nowrap}
.badge.on{background:var(--fna-success-container);color:var(--fna-success-text)}
.badge.off{background:var(--fna-neutral-container);color:var(--fna-text-muted)}
.badge.warn{background:var(--fna-error-container);color:var(--fna-error)}
.badge.req{background:var(--fna-warning-container);color:var(--fna-warning-text)}
.badge.rev{background:var(--fna-review-container);color:var(--fna-review)}
.badge.info{background:var(--fna-surface-container);color:var(--fna-primary)}
.muted{color:var(--fna-text-muted);font-size:var(--fna-font-size-sm)}
.row{display:flex;gap:var(--fna-space-sm);flex-wrap:wrap;align-items:center}
.spacer{flex:1}
.hidden{display:none!important}
.nowrap{white-space:nowrap}
.num{text-align:right;font-variant-numeric:tabular-nums}

/* 로그인 */
#login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at center, var(--fna-brand-navy) 0%, var(--fna-side-bg) 100%)}
#login .panel{width:360px;background:var(--fna-surface);border:1px solid var(--fna-border);border-radius:var(--fna-radius-xl);padding:34px;display:flex;flex-direction:column;gap:13px;box-shadow:var(--fna-shadow-modal)}
#login p{text-align:center;color:var(--fna-text-muted);font-size:var(--fna-font-size-md);margin-bottom:6px}
.logo-h{height:68px;display:block;margin:0 auto 6px}
.login-sublinks{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:8px;font-size:var(--fna-font-size-sm)}
.backlink{font-size:var(--fna-font-size-sm);color:var(--fna-text-muted)}

/* 앱 레이아웃 */
#app{display:flex;min-height:100vh;align-items:stretch}
#side{width:240px;flex:0 0 240px;background:var(--fna-side-bg);color:var(--fna-side-text);display:flex;flex-direction:column;gap:var(--fna-space-md);padding:18px 14px;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;align-items:center;gap:10px;padding:2px 6px 6px;color:var(--fna-side-strong)}
.brand span{display:block;font-size:var(--fna-font-size-md);font-weight:900;letter-spacing:.06em;color:var(--fna-side-strong)}
.brand .subbrand{font-size:var(--fna-font-size-xs);color:var(--fna-side-muted);font-weight:600;letter-spacing:.02em}
.logo-box{display:block;background:#fff;border-radius:var(--fna-radius-sm);padding:4px 6px;flex:0 0 auto}
.logo-box img{height:36px;display:block}

.side-selects{background:var(--fna-side-surface);border:1px solid var(--fna-side-line);border-radius:var(--fna-radius-md);padding:10px;display:flex;flex-direction:column;gap:var(--fna-space-xs)}
.side-label{font-size:var(--fna-font-size-xs);font-weight:800;letter-spacing:.08em;color:var(--fna-side-muted);text-transform:uppercase}
#side select{width:100%;background:var(--fna-side-hover);border:1px solid var(--fna-side-line);color:var(--fna-side-text);font-size:var(--fna-font-size-md);border-radius:var(--fna-radius-xs);padding:6px 8px}

#nav{display:flex;flex-direction:column;gap:2px;margin-top:4px}
/* 묶음(접힘) — 관제 웹 사이드바와 같은 구조 */
.side-links{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;padding:6px 8px;background:var(--fna-side-surface);border:1px solid var(--fna-side-line);border-radius:var(--fna-radius-md);margin-bottom:6px}
.side-links .side-label{width:100%}
.side-links a{color:var(--fna-side-info);font-size:var(--fna-font-size-sm);font-weight:700;text-decoration:none;padding:2px 6px;border-radius:var(--fna-radius-xs)}
.side-links a:hover{background:var(--fna-side-hover);color:var(--fna-side-strong)}
#topbar .crumb{font-size:var(--fna-font-size-md);font-weight:700;color:var(--fna-text-muted);display:flex;align-items:center;min-width:0}
#topbar .crumb a{color:var(--fna-text)}
#topbar .crumb .crumb-detail{color:var(--fna-primary)}
body.senior-mode #topbar .crumb{font-size:var(--fna-font-size-lg)}
.navlabel{font-size:var(--fna-font-size-xs);font-weight:800;letter-spacing:.14em;color:var(--fna-side-muted);padding:10px 10px 4px;text-transform:uppercase}
#nav button:where(:not(.nav-label)){display:flex;align-items:center;gap:9px;background:none;color:var(--fna-side-text);padding:10px 12px;border-radius:var(--fna-radius-sm);text-align:left;font-size:var(--fna-font-size-md);font-weight:700;transition:all .15s}
#nav button:where(:not(.nav-label)):hover{background:var(--fna-side-hover);color:var(--fna-side-strong)}
#nav button.active{background:var(--fna-primary);color:var(--fna-side-strong);box-shadow:var(--fna-shadow-raised)}
#nav button .nav-ico{font-size:var(--fna-font-size-lg);width:20px;display:inline-block;text-align:center}

.sidefoot{margin-top:auto;display:flex;flex-direction:column;gap:10px;font-size:var(--fna-font-size-sm);color:var(--fna-side-muted);padding-top:14px;border-top:1px solid var(--fna-side-line)}
.cs-quick{background:var(--fna-side-surface);border:1px solid var(--fna-side-line);border-radius:var(--fna-radius-md);padding:10px 12px;font-size:var(--fna-font-size-xs);display:flex;flex-direction:column;gap:3px}
.cs-quick b{color:var(--fna-side-text);font-size:var(--fna-font-size-xs)}
.cs-tel{color:var(--fna-side-info);font-size:var(--fna-font-size-base);font-weight:900;text-decoration:none}
.backbtn{width:100%;background:var(--fna-side-hover)!important;color:var(--fna-side-info)!important;border:1px solid var(--fna-side-line)}

#content{flex:1;min-width:0;display:flex;flex-direction:column}
#topbar{background:var(--fna-surface);border-bottom:1px solid var(--fna-border);padding:0 24px;display:flex;align-items:center;gap:14px;height:56px;position:sticky;top:0;z-index:10}
#topbar h2{font-size:var(--fna-font-size-xl);font-weight:800;letter-spacing:-0.2px}
.top-tools{display:flex;align-items:center;gap:var(--fna-space-sm)}
.v-line{width:1px;height:18px;background:var(--fna-border);margin:0 4px}
.fac-pill{background:var(--fna-surface-container);color:var(--fna-primary);padding:4px 10px;border-radius:var(--fna-radius-pill);font-size:var(--fna-font-size-sm);font-weight:800}
main{max-width:1360px;width:100%;margin:0 auto;padding:24px}

/* 요약 카드 */
.sumrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--fna-space-md);margin-bottom:18px}
.sumcard{background:var(--fna-surface);border:1px solid var(--fna-border);border-radius:var(--fna-radius-lg);padding:16px 20px;box-shadow:var(--fna-shadow-card)}
.sumcard .n{font-size:var(--fna-font-size-4xl);font-weight:900;line-height:1.2;margin-bottom:2px}
.sumcard .t{font-size:var(--fna-font-size-sm);color:var(--fna-text-muted);font-weight:700}
.sumcard.crit .n{color:var(--fna-error)} .sumcard.warn .n{color:var(--fna-warning-text)}
.sumcard.info .n{color:var(--fna-primary)} .sumcard.okall .n{color:var(--fna-success-text)}

/* 센서 그리드 */
.sensor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;margin-top:12px}
.sensor-card{background:var(--fna-surface);border:1.5px solid var(--fna-border);border-radius:var(--fna-radius-lg);padding:16px;box-shadow:var(--fna-shadow-card);transition:transform .15s,box-shadow .15s}
.sensor-card:hover{transform:translateY(-2px);box-shadow:var(--fna-shadow-raised)}
.sensor-card.dev{border-color:var(--fna-error);background:var(--fna-error-container)}
.sensor-card.warn{border-color:var(--fna-border);background:var(--fna-surface-low)}
.sensor-card.caution{border-color:var(--fna-warning-text);background:var(--fna-warning-container)}
.sensor-card.ok{border-color:var(--fna-success-text)}
.sensor-header{display:flex;justify-content:space-between;align-items:flex-start}
.sensor-header h4{font-size:var(--fna-font-size-lg);font-weight:800;color:var(--fna-text)}
.sensor-zone{font-size:var(--fna-font-size-xs);color:var(--fna-text-muted);margin-top:2px}
.sensor-body{display:flex;align-items:baseline;justify-content:space-between;margin:12px 0 6px}
.temp-val{font-size:var(--fna-font-size-4xl);font-weight:900;letter-spacing:-0.5px}
.temp-unit{font-size:var(--fna-font-size-lg);font-weight:700;color:var(--fna-text-muted);margin-left:2px}
.sensor-range-track{width:100%;height:8px;background:var(--fna-surface-container);border-radius:var(--fna-radius-pill);overflow:hidden;margin:6px 0 10px}
.sensor-range-fill{height:100%;background:var(--fna-success);border-radius:var(--fna-radius-pill);transition:width .3s ease}
.sensor-footer{display:flex;justify-content:space-between;align-items:center;font-size:var(--fna-font-size-xs);color:var(--fna-text-muted);padding-top:8px;border-top:1px solid var(--fna-border)}

/* 대시보드 2분할 (위젯 + 캘린더) */
.dashboard-split{display:grid;grid-template-columns:1fr 350px;gap:18px;margin-top:16px}
@media(max-width:1060px){.dashboard-split{grid-template-columns:1fr}}

/* 캘린더 & 할 일 위젯 */
.cal-card{background:var(--fna-surface);border:1px solid var(--fna-border);border-radius:var(--fna-radius-lg);overflow:hidden;box-shadow:var(--fna-shadow-card)}
.cal-header{padding:14px 16px;border-bottom:1px solid var(--fna-border);display:flex;justify-content:space-between;align-items:center}
.cal-table{width:100%;text-align:center;border-collapse:separate;border-spacing:3px;padding:8px}
.cal-table th{text-align:center;font-size:var(--fna-font-size-xs);padding:6px;color:var(--fna-text-muted);background:none;border-bottom:none}
.cal-table td{padding:7px 3px;border-radius:var(--fna-radius-sm);font-weight:700;font-size:var(--fna-font-size-sm);cursor:pointer;border:none}
.cal-table td:hover{background:var(--fna-surface-container)}
.cal-table td.today{background:var(--fna-primary);color:var(--fna-primary-on)}
.cal-table td.has-dot{position:relative}
.cal-table td.has-dot::after{content:'';display:block;width:4px;height:4px;background:var(--fna-success);border-radius:50%;margin:2px auto 0}

.todo-list{display:flex;flex-direction:column}
.todo-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--fna-border);gap:10px}
.todo-item:last-child{border-bottom:none}
.todo-info{flex:1;min-width:0}
.todo-title{font-size:var(--fna-font-size-md);font-weight:700;color:var(--fna-text);margin-bottom:2px}
.todo-sub{font-size:var(--fna-font-size-xs);color:var(--fna-text-muted)}

/* 긴급 알림 배너 */
.alert-banner{background:var(--fna-error-container);border:1.5px solid var(--fna-error);border-radius:var(--fna-radius-md);padding:12px 18px;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px;color:var(--fna-danger-on-container)}
.alert-banner b{font-size:var(--fna-font-size-base);display:flex;align-items:center;gap:6px}

/* 지원 및 A/S 배너 */
.support-bar{background:linear-gradient(135deg, var(--fna-side-bg), var(--fna-side-hover));color:var(--fna-side-strong);border-radius:var(--fna-radius-lg);padding:16px 22px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;margin-top:22px}
.support-bar b{font-size:var(--fna-font-size-lg);color:var(--fna-side-strong)}
.support-bar p{font-size:var(--fna-font-size-sm);color:var(--fna-side-muted);margin-top:2px}
.support-tel{font-size:var(--fna-font-size-2xl);font-weight:900;color:var(--fna-side-info)!important;text-decoration:none}

/* 결재선 & 서명 */
.dochead{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.dochead .title{flex:1;min-width:260px}
.dochead .title .big{font-size:var(--fna-font-size-2xl);font-weight:900;margin-bottom:6px}
.signline{display:flex;border:1px solid var(--fna-border);border-radius:var(--fna-radius-md);overflow:hidden}
.signline .cell{width:124px;border-left:1px solid var(--fna-border);text-align:center;background:var(--fna-surface)}
.signline .cell:first-child{border-left:none}
.signline .t{font-size:var(--fna-font-size-xs);font-weight:800;color:var(--fna-text-muted);background:var(--fna-surface-low);padding:5px 0;border-bottom:1px solid var(--fna-border)}
.signline .s{height:58px;display:flex;align-items:center;justify-content:center}
.signline .s img{max-height:52px;max-width:114px;object-fit:contain}
.signline .n{font-size:var(--fna-font-size-sm);font-weight:700;padding:3px 4px 0}
.signline .d{font-size:var(--fna-font-size-xs);color:var(--fna-text-muted);padding:0 4px 6px;min-height:18px}
.rejectbox{margin-top:12px;background:var(--fna-error-container);border-radius:var(--fna-radius-md);padding:10px 14px;font-size:var(--fna-font-size-md);color:var(--fna-error)}

/* 전자 서명 모달 */
#sig-modal{position:fixed;inset:0;background:var(--fna-overlay);display:flex;align-items:center;justify-content:center;z-index:80}
.sig-card{background:#fff;border-radius:var(--fna-radius-lg);padding:22px 24px;width:480px;max-width:95vw;box-shadow:var(--fna-shadow-modal)}
.sig-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.canvas-wrap{border:2px dashed var(--fna-border-strong);border-radius:var(--fna-radius-md);background:var(--fna-surface-low);margin:14px 0;touch-action:none;display:flex;justify-content:center}
#sig-canvas{background:#fff;border-radius:var(--fna-radius-md);cursor:crosshair}

/* 기본 모달 */
#modal{position:fixed;inset:0;background:var(--fna-overlay);display:flex;align-items:center;justify-content:center;z-index:70}
#modal .mcard{background:var(--fna-surface);border-radius:var(--fna-radius-lg);padding:20px 22px;width:520px;max-width:94vw;max-height:88vh;overflow:auto}
#modal h3{font-size:var(--fna-font-size-lg);margin-bottom:12px}
#modal #m-body{display:flex;flex-direction:column;gap:var(--fna-space-md);font-size:var(--fna-font-size-md)}
#modal #m-body input,#modal #m-body select,#modal #m-body textarea{width:100%}
.mfoot{margin-top:16px}

/* 토스트 */
#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:var(--fna-text);color:var(--fna-side-strong);padding:12px 24px;border-radius:var(--fna-radius-md);font-size:var(--fna-font-size-md);font-weight:700;opacity:0;transition:opacity .25s;pointer-events:none;z-index:99;white-space:pre-line;box-shadow:var(--fna-shadow-toast)}
#toast.show{opacity:1}
#toast.err{background:var(--fna-error)}

/* 폼 요소 */
.formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--fna-space-md);align-items:end}
label.f{display:flex;flex-direction:column;gap:var(--fna-space-xs);font-size:var(--fna-font-size-sm);color:var(--fna-text-muted);font-weight:700}
.seg{display:inline-flex;border:1px solid var(--fna-border);border-radius:var(--fna-radius-sm);overflow:hidden}
.seg button{background:var(--fna-surface);color:var(--fna-text-muted);border-radius:0;padding:8px 14px}
.seg button.on{background:var(--fna-primary);color:var(--fna-primary-on)}
.empty{padding:30px;text-align:center;color:var(--fna-text-muted)}
.off-note{padding:40px;text-align:center;color:var(--fna-text-muted);background:var(--fna-surface);border:1px dashed var(--fna-border);border-radius:var(--fna-radius-lg)}

/* ============================================================ */
/* 👓 시니어 / 고령자 친화 큰글씨 모드 (Senior Mode)           */
/* ============================================================ */
body.senior-mode{font-size:var(--fna-font-size-xl)}
body.senior-mode button{font-size:var(--fna-font-size-lg);padding:12px 18px}
body.senior-mode .btn.sm{padding:8px 14px;font-size:var(--fna-font-size-base)}
body.senior-mode input,body.senior-mode select,body.senior-mode textarea{font-size:var(--fna-font-size-lg);padding:10px 14px}
body.senior-mode #nav button:where(:not(.nav-label)){font-size:var(--fna-font-size-lg);padding:13px 14px}
body.senior-mode #nav .nav-label{padding:13px 14px 4px}
body.senior-mode .sumcard .n{font-size:var(--fna-font-size-metric)}
body.senior-mode .sumcard .t{font-size:var(--fna-font-size-base)}
body.senior-mode .temp-val{font-size:var(--fna-font-size-metric)}
body.senior-mode .temp-unit{font-size:var(--fna-font-size-2xl)}
body.senior-mode .sensor-header h4{font-size:var(--fna-font-size-xl)}
body.senior-mode .badge{font-size:var(--fna-font-size-md);padding:4px 12px}
body.senior-mode #topbar{height:66px}
body.senior-mode #topbar h2{font-size:var(--fna-font-size-2xl)}
body.senior-mode .cal-table th{font-size:var(--fna-font-size-md)}
body.senior-mode .cal-table td{font-size:var(--fna-font-size-lg);padding:10px 4px}
body.senior-mode .todo-title{font-size:var(--fna-font-size-lg)}

/* 기준정보·설정 화면 (v4): 메뉴 하위 항목(종류별 개수), 체크 묶음, 설정 표, 이력 내용 */
#nav button.sub{padding:8px 12px 8px 30px;font-size:var(--fna-font-size-sm)}
#nav button.sub .nav-ico{font-size:var(--fna-font-size-md);width:18px}
#nav .nav-cnt{margin-left:auto;font-size:var(--fna-font-size-xs);color:var(--fna-side-text);opacity:.75;font-weight:600}
#nav button.active .nav-cnt{color:inherit;opacity:1}
.fbox{display:flex;flex-direction:column;gap:var(--fna-space-xs);font-size:var(--fna-font-size-sm);color:var(--fna-text-muted);font-weight:700}
.chk{display:inline-flex;align-items:center;gap:4px;font-weight:600;color:var(--fna-text);font-size:var(--fna-font-size-sm);white-space:nowrap}
.seg button small{font-weight:600;opacity:.8;font-size:var(--fna-font-size-xs)}
.seg{max-width:100%;overflow-x:auto}
.seg button{white-space:nowrap}
table.kv td{vertical-align:top}
table.kv td input:not([type=time]),table.kv td select,table.kv td textarea{width:100%;min-width:180px}
table.kv td textarea{min-height:56px}
.detail-json{white-space:pre-wrap;word-break:break-all;font-family:var(--fna-font-family-mono,ui-monospace,monospace);font-size:var(--fna-font-size-xs);max-width:440px;max-height:220px;overflow:auto;color:var(--fna-text-muted)}
details summary{cursor:pointer;color:var(--fna-primary)}
#modal .formgrid{grid-template-columns:1fr 1fr}
@media (max-width: 480px){#modal .formgrid{grid-template-columns:1fr}}

/* 인쇄 */
@media print{
  #side,#topbar,#tabstrip,#toast,#modal,#sig-modal,.support-bar,.noprint,button{display:none!important}
  body{background:var(--fna-surface)} main{padding:0;max-width:none} .card{break-inside:avoid;border-color:#bbb;box-shadow:none}
}

/* ── 모바일·태블릿 세로(≤860px): 사이드바는 드로어, 표는 가로 스크롤 — 관제 웹(style.css)의 rail/드로어 규칙과 같은 패턴 ── */
@media (max-width: 860px) {
  #app { display: block; }
  #side { position: fixed; left: 0; top: 0; bottom: 0; height: 100vh; width: min(280px, 84vw); z-index: 60;
    transform: translateX(-100%); transition: transform .2s ease; box-shadow: none; }
  body.side-open #side { transform: none; box-shadow: var(--fna-shadow-modal, 0 8px 24px rgba(10,16,40,.35)); }
  #side-veil { display: none; position: fixed; inset: 0; background: var(--fna-overlay); z-index: 55; }
  body.side-open #side-veil { display: block; }
  #sidebar-toggle { display: inline-flex !important; }
  #topbar { padding: 0 12px; gap: 8px; height: auto; min-height: 56px; flex-wrap: wrap; }
  #topbar h2 { font-size: var(--fna-font-size-lg); }
  #main { padding: 12px !important; }
  .card h3 { padding: 12px 14px; }
  .scroll, .card .body, .card { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .scroll table { min-width: 560px; }
  table { table-layout: auto; }
  .dashboard-split, .left-col, .right-col { min-width: 0; }
  .signline { flex-wrap: wrap; }
  .signline .cell { flex: 1 1 33%; }
  .formgrid { grid-template-columns: 1fr 1fr; }
  .sumrow { grid-template-columns: 1fr 1fr; }
  .support-bar, .alert-banner { flex-direction: column; align-items: flex-start; }
  #modal .panel, #sig-modal .panel { width: calc(100vw - 24px) !important; max-width: none; }
}
@media (max-width: 480px) {
  .formgrid, .sumrow { grid-template-columns: 1fr; }
  .top-tools .v-line, .top-tools .fac-pill { display: none; }
}

/* ── 사업장(공장) 정보: 일지 머리의 상호·로고, 설정 화면 로고 칸, 등록 서명 보기 ── */
.docorg{display:flex;align-items:center;gap:12px;padding-bottom:12px;margin-bottom:14px;border-bottom:1px solid var(--fna-border)}
.docorg img{max-height:44px;max-width:160px;object-fit:contain}
.docorg b{display:block;font-size:var(--fna-font-size-lg)}
.docorg small{display:block;color:var(--fna-text-muted);font-size:var(--fna-font-size-sm)}
.logobox{width:180px;height:72px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--fna-border);border-radius:var(--fna-radius-md);background:var(--fna-surface-low)}
.logobox img{max-width:164px;max-height:60px;object-fit:contain}
.sigview{display:flex;align-items:center;justify-content:center;min-height:120px;border:1px solid var(--fna-border);border-radius:var(--fna-radius-md);background:var(--fna-surface);margin-bottom:10px}
.sigview img{max-width:100%;max-height:160px}
/* 로트번호 규칙 편집: 조각 한 줄 */
.lr-token{flex-wrap:nowrap;padding:6px 0;border-bottom:1px solid var(--fna-border)}
.lr-token:last-child{border-bottom:0}

.mono{font-family:var(--fna-font-family-mono,ui-monospace,monospace)}
