:root{font-family:Pretendard,"Noto Sans KR",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#15253c;background:#f5f8fb;font-synthesis:none;-webkit-font-smoothing:antialiased}
*{box-sizing:border-box}body{margin:0;background:#f5f8fb}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #63c3ab;outline-offset:2px}button:disabled{cursor:wait;opacity:.62}[hidden]{display:none!important}
.loginShell{display:grid;grid-template-columns:minmax(390px,1fr) minmax(380px,.84fr);min-height:100vh;background:#fff}.loginBrand{background:linear-gradient(135deg,#122c43,#114a52 69%,#0a866e);color:#fff;padding:clamp(36px,7vw,112px);display:flex;flex-direction:column;justify-content:center;min-height:580px}.brandMark{font-size:26px;letter-spacing:-1px;text-decoration:none;font-weight:900;align-self:flex-start}.brandMark span{color:#62dfbd;font-size:19px;letter-spacing:1px}.heroTag{margin:70px 0 17px;font-size:11px;letter-spacing:3px;font-weight:750;color:#73e6c8}.loginBrand h1{font-size:clamp(36px,3.4vw,54px);line-height:1.28;margin:0;font-weight:820;letter-spacing:-2px}.loginBrand p{line-height:1.9;font-size:15px;max-width:550px;color:#bfdae0;margin:24px 0}.heroSteps{display:flex;flex-wrap:wrap;gap:9px;margin-top:40px}.heroSteps span{padding:10px 15px;border:1px solid #ffffff48;border-radius:30px;font-size:12px;font-weight:750;color:#d8fbef}.loginCard{align-self:center;justify-self:center;width:min(420px,calc(100% - 52px));background:#fff}.switchLogin{display:flex;border:1px solid #e2e8ed;border-radius:12px;padding:5px;gap:4px;margin:0 0 31px}.switchLogin button{flex:1;padding:13px 8px;border:0;background:transparent;color:#637484;border-radius:9px;font-size:13px;font-weight:700}.switchLogin button.active{color:#076958;background:#e4f7f0}.loginField{display:block;font-size:13px;font-weight:750;margin:0 0 19px;color:#263b4d}.loginField input{display:block;width:100%;height:52px;margin-top:10px;padding:12px 15px;border-radius:11px;border:1px solid #d6e1e8;background:#fff;color:#163043}.loginField input::placeholder{color:#9caab6}.primary{border:1px solid #0d947e;background:#0d947e;color:#fff;border-radius:10px;padding:12px 20px;min-height:43px;font-size:13px;font-weight:800;box-shadow:0 5px 12px rgba(13,148,126,.12)}.primary:hover{background:#087861}.primary.full{width:100%;height:51px;font-size:15px}.quietLink{display:inline-block;margin-top:18px;color:#617789;text-decoration:none;font-size:13px}.quietLink:hover{text-decoration:underline}.hint{font-size:12px;line-height:1.8;color:#8a98a4;margin:22px 0 2px}.notice{padding:14px 16px;border-radius:11px;font-size:13px;line-height:1.7;margin:12px 0}.notice.error{background:#fff0f0;border:1px solid #fecaca;color:#9b2a31}.notice.warn{background:#fff9e7;border:1px solid #f3daa6;color:#94630f}.notice.ok{background:#e8f8f2;border:1px solid #bde9d6;color:#0a6f59}
.appShell{display:grid;grid-template-columns:233px minmax(0,1fr);min-height:100vh}.sideNav{position:sticky;top:0;height:100vh;padding:30px 14px 18px;background:#123044;color:#d0e1e9;display:flex;flex-direction:column;z-index:20}.sideBrand{display:flex;align-items:center;gap:12px;padding:0 12px 36px;text-decoration:none;color:#fff;font-size:19px;font-weight:850;letter-spacing:-.7px}.sideBrand small{display:block;margin-top:3px;letter-spacing:2.2px;font-size:9px;font-weight:800;color:#61cfb7}.logoTile{display:grid;place-items:center;width:37px;height:37px;background:#12a88f;color:#fff;border-radius:11px;font-size:21px;box-shadow:0 4px 15px #0d9b8970}.navGroupTitle{font-size:10px;letter-spacing:2px;font-weight:750;color:#809cab;padding:6px 18px 17px}.sideItem{color:#c9dce4;border:0;background:transparent;border-radius:10px;min-height:46px;display:flex;align-items:center;gap:12px;text-align:left;padding:11px 14px;font-size:13px;font-weight:720;width:100%;text-decoration:none;margin:2px 0}.sideItem:hover{background:#ffffff14;color:#fff}.sideItem.active{background:#147e79;color:#fff}.navIcon{display:inline-flex;justify-content:center;align-items:center;font-weight:800;width:20px;font-size:17px}.sideBottom{margin-top:auto;padding-top:16px;border-top:1px solid #ffffff18}.sideBottom .sideItem{font-size:12px;min-height:38px}.numDot{margin-left:auto;border-radius:30px;background:#f9cf75;color:#483208;padding:2px 7px;font-size:11px;font-weight:800}.workspace{min-width:0}.topBar{height:69px;background:#fff;border-bottom:1px solid #e5edf2;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(19px,3vw,46px);gap:12px}.crumb{letter-spacing:.8px;font-size:12px;font-weight:850;color:#38576b}.crumb span{color:#b6c7d1;margin:0 10px}.topAccount{display:flex;align-items:center;gap:12px;font-size:12px;color:#405a6f}.roleLabel{border:1px solid #c9eae0;background:#effaf5;color:#16816b;border-radius:30px;padding:4px 10px;font-weight:780}.mobileMenu{display:none;border:0;background:transparent;color:#264b62;font-size:22px}.appMain{padding:37px clamp(18px,3vw,46px) 65px;max-width:1800px;margin:0 auto}.pageIntro{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:27px}.eyebrow{color:#0e9a86;font-size:10px;letter-spacing:2.5px;font-weight:850}.pageIntro h1{font-size:clamp(22px,2vw,30px);letter-spacing:-.9px;margin:9px 0 7px}.pageIntro p{font-size:13px;color:#798a9a;line-height:1.7;margin:0}.versionPill,.pill{font-size:11px;font-weight:750;letter-spacing:.3px;color:#1e6d66;background:#e8f7f0;border:1px solid #ceeadd;border-radius:30px;padding:7px 11px;white-space:nowrap}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin:0 0 25px}.statCard{border:1px solid #e4edf2;border-radius:14px;background:#fff;padding:20px 22px;box-shadow:0 2px 9px rgba(24,62,85,.025);display:flex;flex-direction:column;gap:7px}.statCard span{font-size:12px;color:#728696;font-weight:760}.statCard strong{font-size:32px;font-weight:850;letter-spacing:-1px;color:#233e55}.statCard strong.green{color:#159979}.statCard strong.amber{color:#dd9d27}.statCard small{color:#a1aeb8;font-size:11px}.card{background:#fff;border:1px solid #e1ebf1;border-radius:14px;overflow:hidden;box-shadow:0 3px 12px rgba(23,58,80,.028);margin-bottom:22px}.sectionHead{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:24px 25px 19px}.sectionHead h2{font-size:17px;margin:0 0 7px;letter-spacing:-.3px}.sectionHead p{margin:0;color:#8a99a7;font-size:12px;line-height:1.6}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:9px;padding:12px 25px;background:#fafcfd;border-top:1px solid #eff4f7;border-bottom:1px solid #edf2f5}.secondary,.dangerOutline{border:1px solid #d7e4e9;background:#fff;color:#34546a;border-radius:9px;padding:9px 12px;min-height:37px;font-size:12px;font-weight:750}.secondary:hover{background:#eaf6f3;border-color:#a7dfd0;color:#13836c}.dangerOutline{border-color:#f0caca;color:#ad4545}.dangerOutline:hover{background:#fff2f2}.textBtn{border:0;background:transparent;color:#118978;font-size:12px;font-weight:780;padding:8px 3px}.toolSpacer{flex:1}.rowCounter{font-size:12px;color:#768995}.rowCounter b{color:#1e675c}.sheetScroll,.tableScroll{overflow:auto;width:100%;scrollbar-color:#c9d9e0 #f5f8f9}.sheet{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;min-width:1250px;font-size:12px}.sheet thead th{background:#f3f7f9;color:#506776;font-weight:750;white-space:nowrap;padding:13px 8px;text-align:left;border-bottom:1px solid #dae7ed;border-right:1px solid #e7eef2}.sheet thead th:first-child{text-align:center;position:sticky;left:0;z-index:3}.sheet th em{font-style:normal;color:#d36e55}.sheet td{border-bottom:1px solid #eaf0f3;border-right:1px solid #f0f4f7;padding:4px 5px;background:#fff;height:41px}.sheet tr:nth-child(even) td{background:#fcfdfd}.sheet td:first-child{position:sticky;left:0;text-align:center;background:#f4f8fa!important;color:#8c9aa5;font-weight:720;z-index:2}.sheet input{display:block;width:100%;height:32px;min-width:0;border:1px solid transparent;border-radius:5px;padding:5px 7px;color:#264154;background:transparent;font-size:12px}.sheet input:hover{border-color:#d6e8e9;background:#fff}.sheet input:focus{background:#fff;border-color:#28aa96;outline:2px solid #21ac9333}.sheet input[type=date]{padding:5px 3px;font-size:11px}.sheet input::placeholder{color:#b1c0c9}.deleteRow{border:0;background:transparent;color:#acbcc5;width:30px;height:29px;border-radius:7px;font-size:17px}.deleteRow:hover{background:#fff1f1;color:#b24e4e}.sheetFoot{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:19px 25px}.muted{color:#90a0ac;font-size:12px;line-height:1.7}.sheetFoot .primary{min-width:205px}.sheetFoot .primary span{margin-left:17px;font-size:16px}.searchBox,.toolbar select,.noteInput{border:1px solid #d6e3ea;background:#fff;color:#3a576b;border-radius:9px;min-height:38px;padding:8px 11px;font-size:12px}.searchBox{min-width:280px}.smallHelp{font-size:11px;color:#91a1ac;margin-left:auto}.dataTable{width:100%;border-collapse:collapse;font-size:12px;min-width:960px}.dataTable th{text-align:left;background:#f5f8fa;border-bottom:1px solid #e2eaf0;color:#607383;padding:13px 12px;white-space:nowrap;font-weight:780}.dataTable td{padding:13px 12px;border-bottom:1px solid #edf2f5;vertical-align:middle;color:#466174;line-height:1.55;max-width:245px;word-break:break-word}.dataTable tbody tr:hover{background:#fbfdfd}.dataTable td strong{color:#1e3e53;font-size:12px}.tableDim{color:#91a4b0;font-size:11px}.emptyRow{text-align:center!important;padding:48px 16px!important;color:#9cabb4!important}.tag{display:inline-block;border-radius:30px;padding:4px 9px;font-size:11px;font-weight:800;white-space:nowrap}.tag-PENDING{background:#fff3d6;color:#946518}.tag-APPROVED{background:#e7f5ef;color:#108263}.tag-DISPATCHED{background:#e3edfc;color:#285fa4}.tag-RETURNED{background:#eef1f3;color:#67808b}.tag-REJECTED{background:#fff0f0;color:#b45353}.tag-CANCELLED{background:#f3f4f6;color:#919ba3}.smallAction{border:1px solid #cbdde5;border-radius:7px;background:#fff;color:#176b68;padding:6px 10px;font-size:11px;font-weight:760;white-space:nowrap}.assignmentInput{width:100px;border:1px solid #d1e3e7;border-radius:7px;padding:8px 10px;font-size:12px;color:#264a5e}.approvalFoot{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 25px;background:#fafcfd;border-top:1px solid #eef2f5}.noteInput{flex:1;min-width:190px}.approvalBtns{display:flex;gap:10px}.deviceGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(154px,1fr));gap:12px;padding:22px 25px}.deviceCard{border:1px solid #e0e9ed;border-radius:12px;padding:15px;background:#fff}.deviceCard.available{border-color:#c6e9db;background:#fbfffc}.deviceCard.busy{border-color:#d9e4f3;background:#fcfdff}.deviceCard.reserve{border-style:dashed;background:#f8fafb}.deviceNumber{font-weight:850;font-size:21px;color:#234253;letter-spacing:.6px}.deviceBadge{margin:10px 0 0;font-size:11px;font-weight:700}.deviceBadge.available{color:#109179}.deviceBadge.busy{color:#5178a5}.deviceBadge.reserve{color:#a58b58}.deviceNote{margin-top:9px;color:#90a5ae;font-size:10px;line-height:1.55}.toast{margin-bottom:18px;padding:14px 17px;border-radius:11px;background:#e5f8f0;border:1px solid #bfebda;color:#086850;font-size:13px;font-weight:720;position:relative;line-height:1.6}.toast.error{background:#fff0f0;border-color:#f3b9ba;color:#ad4145}.setupCard{text-align:center;max-width:760px;margin:40px auto 0;padding:46px 32px}.setupCard h2{font-size:23px;margin:10px 0}.setupCard p{max-width:550px;color:#768b9d;font-size:14px;line-height:2;margin:12px auto 25px}.setupIcon{margin:0 auto;background:#e1f7ef;color:#0a987d;display:grid;place-items:center;width:60px;height:60px;border-radius:17px;font-size:31px}.setupSafe{font-size:12px;color:#718c9e;margin:22px}.setupSafe a{text-decoration:none;color:#09816c}
@media(max-width:1100px){.appShell{grid-template-columns:190px minmax(0,1fr)}.sideNav{padding-inline:10px}.sideItem{font-size:12px;padding-inline:9px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:790px){.loginShell{grid-template-columns:1fr}.loginBrand{min-height:auto;padding:42px 27px}.heroTag{margin-top:32px}.loginBrand h1{font-size:31px}.heroSteps{margin-top:13px}.loginCard{padding:35px 0 60px}.appShell{display:block}.sideNav{position:fixed;left:0;top:0;width:240px;transform:translateX(-105%);transition:transform .18s ease}.sideNav.open{transform:translateX(0)}.mobileMenu{display:block}.topBar{padding:0 17px}.appMain{padding:24px 14px 45px}.pageIntro{align-items:flex-start;flex-direction:column;gap:10px}.statCard{padding:15px}.statCard strong{font-size:26px}.sectionHead,.toolbar,.sheetFoot,.approvalFoot{padding-left:15px;padding-right:15px}.sectionHead{align-items:flex-start}.sheetFoot,.approvalFoot{flex-wrap:wrap}.sheetFoot .primary{width:100%}.noteInput{width:100%}.approvalBtns{width:100%;justify-content:flex-end}.searchBox{min-width:0;flex:1}.deviceGrid{padding:14px;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.deviceCard{padding:11px}.crumb{font-size:10px}.topAccount{gap:6px;font-size:11px}}@media(max-width:450px){.stats{gap:8px}.statCard{padding:13px}.statCard small{font-size:10px}.statCard span{font-size:11px}.deviceGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.approvalBtns .primary{padding:9px}.roleLabel{display:none}}
/* v2.6 admin additions */
.adminFormGrid{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:10px;align-items:end;margin:14px 0 18px}.adminFormGrid label{font-size:13px;font-weight:700;color:#334155}.adminFormGrid input{display:block;width:100%;margin-top:6px;padding:10px 12px;border:1px solid #cbd5e1;border-radius:9px;background:#fff}.fileButton{display:inline-flex!important;align-items:center;justify-content:center;cursor:pointer}.dataTools{gap:8px;flex-wrap:wrap}.dangerMini{color:#b91c1c;border-color:#fecaca!important}.sideBrand span:last-child{line-height:1.15}.sideBrand small{display:block;font-size:10px;opacity:.7;margin-top:3px}.tableScroll .dataTable{min-width:980px}@media(max-width:900px){.adminFormGrid{grid-template-columns:1fr}.adminFormGrid .primary{width:100%}}
/* v2.7 brand/product dropdown, isolated backup/restore modal and product catalog */
.productInputWrap{display:flex;align-items:center;gap:2px;min-width:0}
.productInputWrap input{flex:1;min-width:0}
.productArrow{flex:0 0 23px;width:23px;height:28px;padding:0;border:1px solid #c9dfe2;background:#f3faf8;color:#207865;border-radius:5px;font-weight:800;cursor:pointer}
.productArrow:hover{background:#daf4ec}
.productPicker{position:fixed;width:330px;max-width:calc(100vw - 16px);max-height:285px;overflow:auto;z-index:120;background:white;box-shadow:0 10px 35px #1a405030;border:1px solid #b5d9cf;border-radius:10px;padding:6px}
.productPicker[hidden]{display:none!important}.pickerHeading{font-size:12px;font-weight:750;padding:10px;color:#1e806b;border-bottom:1px solid #e6efec;background:#f6fcfa}
.pickerOption{display:flex;justify-content:space-between;gap:8px;align-items:center;border:0;border-bottom:1px solid #edf3f0;background:white;width:100%;padding:11px 9px;text-align:left;cursor:pointer;color:#263f4b}
.pickerOption:hover{background:#eaf7f3}.pickerOption small{color:#6e8992;font-size:11px}.pickerEmpty{padding:20px 13px;font-size:12px;color:#7d8d96;line-height:1.6}
.productCard{margin-top:18px}.catalogForm{display:grid;grid-template-columns:1fr 1fr 1.4fr auto;gap:11px;padding:18px 23px;align-items:end}
.catalogForm label{font-size:12px;font-weight:700;color:#436173}.catalogForm input{display:block;margin-top:7px;width:100%;border:1px solid #d2e1e6;border-radius:8px;height:37px;padding:7px 11px;font-size:12px}
.catalogForm .primary{min-height:37px}.modalOverlay{position:fixed;inset:0;z-index:150;background:#102b3c99;display:flex;justify-content:center;align-items:center;padding:20px}
.modalOverlay[hidden]{display:none!important}.modalPanel{background:#fff;max-width:840px;width:100%;max-height:92vh;overflow:auto;border-radius:17px;box-shadow:0 25px 90px #0e2b3440}
.modalHeader{display:flex;justify-content:space-between;gap:15px;padding:23px 28px 16px;border-bottom:1px solid #e6eff1}
.modalHeader h2{font-size:21px;margin:0;color:#234454}.modalHeader p{margin:8px 0 0;color:#68818d;font-size:12px}
.modalClose{background:transparent;border:0;font-size:25px;color:#67858e;cursor:pointer;width:35px;height:35px;border-radius:8px}
.modalClose:hover{background:#f0f5f6}.modalBody{padding:0 25px 26px}.backupSegment{padding:21px 0;border-bottom:1px solid #e8eef2}
.backupSegment h3{font-size:15px;margin:0 0 6px;color:#2b4656}.backupSegment p{font-size:12px;color:#728894;line-height:1.7;margin:0 0 14px}
.backupSegment .primary{font-size:12px}.backupCounter{padding-left:15px;font-weight:750;font-size:12px;color:#1b8c73}
.backupSectionHead{padding:0 0 10px;border:0}.backupListScroll{max-height:270px;border:1px solid #e4edf1;border-radius:9px}.backupListScroll table{min-width:630px}
.backupActions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px}.backupActions button{min-height:37px}.backupActions button:disabled{opacity:.45;cursor:not-allowed}
.backupActions input[type=file]{flex:1;font-size:12px;min-width:180px}.modalBody .notice{margin-top:19px;font-size:12px;line-height:1.8}
@media(max-width:880px){.catalogForm{grid-template-columns:1fr 1fr}.modalPanel{max-height:94vh}.modalBody{padding:0 15px 18px}.modalHeader{padding:20px 17px}}@media(max-width:560px){.catalogForm{grid-template-columns:1fr}.backupActions{align-items:stretch}.backupActions button{width:100%}.modalOverlay{padding:7px}}
/* v2.7 readability and device-status management. These overrides affect /pda only. */
body {font-size:15px;line-height:1.6}
.loginBrand h1{font-size:clamp(39px,3.55vw,58px)}
.brandMark{font-size:29px}.brandMark span{font-size:23px}.heroTag{font-size:13px}
.heroSteps span{font-size:15px;padding:11px 17px}
.loginField{font-size:17px}.loginField input{font-size:17px;height:57px}
.switchLogin button{font-size:17px}.primary.full{font-size:17px;height:55px}
.sideBrand{font-size:21px}.sideBrand small{font-size:12px;letter-spacing:1.2px}
.navGroupTitle{font-size:12px}.sideItem{font-size:15px;min-height:49px}
.sideBottom .sideItem{font-size:14px}.topAccount{font-size:15px}.crumb{font-size:15px}
.pageIntro h1{font-size:clamp(27px,2.4vw,36px)}.pageIntro p{font-size:15px}.eyebrow{font-size:12px}
.versionPill,.pill{font-size:13px}.statCard span{font-size:15px}.statCard small{font-size:13px}
.sectionHead h2{font-size:21px}.sectionHead p{font-size:15px;line-height:1.65}
.secondary,.dangerOutline,.primary,.textBtn{font-size:15px;min-height:42px}
.sheet{min-width:1470px;font-size:14px}.sheet th{font-size:15px}.sheet td{height:48px}
.sheet input{font-size:14px;height:39px;padding:6px 9px}.sheet input[type=date]{font-size:13px}
.sheet td:first-child{font-size:14px}.productArrow{height:35px;width:27px;flex-basis:27px;font-size:18px}
.muted,.rowCounter,.selectionHint{font-size:14px!important}.searchBox,.toolbar select,.noteInput{font-size:14px;min-height:42px}
.dataTable{font-size:14px}.dataTable th{font-size:14px}.dataTable td{font-size:14px}.dataTable td strong{font-size:15px}
.tableDim,.smallHelp{font-size:13px}.tag,.smallAction,.deviceBadge{font-size:13px}
.assignmentInput{font-size:14px}.deviceNumber{font-size:24px}.deviceNote{font-size:13px}
.notice,.toast{font-size:15px}.catalogForm label,.adminFormGrid label,.deviceLabel{font-size:15px}
.catalogForm input,.adminFormGrid input{font-size:15px;min-height:42px}
.modalHeader h2{font-size:23px}.modalHeader p,.backupSegment p,.modalBody .notice{font-size:14px}
.backupSegment h3{font-size:18px}.backupCounter{font-size:15px}.backupActions input[type=file]{font-size:14px}
.pickerHeading{font-size:14px}.pickerOption,.pickerOption small,.pickerEmpty{font-size:14px}
.inventoryTitle{border-top:1px solid #e2ebef;padding:16px 24px 5px;font-size:19px;font-weight:800;color:#234a4b;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.inventoryTitleSecondary{background:#f8fafb;border-top:2px solid #e2ebef;margin-top:9px}
#deviceGridOther{background:#f8fafb}
.deviceCard.storage{border-color:#cbdbe5;background:#f8fbfd}
.deviceCard.repair{border-color:#eed3b8;background:#fffaf5}
.deviceCard.other{border-color:#e0d7e9;background:#fcf9ff}
.deviceBadge.storage{color:#597d91}.deviceBadge.repair{color:#b67738}.deviceBadge.other{color:#8663a4}
.deviceNumberButton{border:0;padding:0;background:transparent;text-align:left;cursor:pointer;color:#146f62;text-decoration:underline;text-underline-offset:3px}
.deviceNumberButton:hover{color:#0a9786}.deviceNumberButton:disabled{color:#61778a;text-decoration:none;opacity:1;cursor:not-allowed}
.devicePanel{max-width:510px}.deviceDetail{font-weight:750;background:#e9f7f3;border-radius:10px;padding:12px 15px}
.deviceLabel{display:block;font-weight:700;margin:16px 0;color:#33586b}
.deviceLabel select,.deviceLabel textarea{display:block;margin-top:7px;width:100%;min-height:45px;padding:10px 12px;border:1px solid #cbdde5;border-radius:10px;color:#244354;font-size:16px;background:white}
.pastPanel{max-width:780px}.pastListScroll{max-height:390px;border:1px solid #e2ebef;border-radius:10px}
.pastListScroll table{min-width:540px}.pastPanel .modalBody{padding-top:16px}.reuseAction{margin-right:6px;font-weight:800}
@media(max-width:1100px){.sideItem{font-size:14px}.appShell{grid-template-columns:206px minmax(0,1fr)}}
@media(max-width:790px){.sideNav{width:258px}.sideItem{font-size:16px}.crumb{font-size:14px}.topAccount{font-size:14px}.loginBrand h1{font-size:35px}.loginField input{font-size:17px}.sectionHead h2{font-size:19px}.statCard span{font-size:13px}.inventoryTitle{padding:15px 14px 5px;font-size:18px}.deviceNumber{font-size:22px}}

/* v2.8 — compact history, fully selectable editable sheet, multi-codes & warnings */
.sheet{min-width:1530px}
.sheet td{position:relative}
.sheet .productInputWrap,.sheet .kindInputWrap,.sheet .dateInputWrap{display:flex;align-items:center;gap:2px;min-width:0;position:relative}
.sheet input[name="product_code"]{text-overflow:ellipsis}
.sheet input[name="start_date"],.sheet input[name="end_date"]{font-size:13px;min-width:75px}
.sheet .productPlus,.sheet .kindArrow,.sheet .dateChoose{flex:0 0 23px;width:23px;height:30px;padding:0;border:1px solid #bfd9d8;border-radius:5px;background:#eff9f6;color:#157765;cursor:pointer;font-size:17px;font-weight:800}
.sheet .productPlus:hover,.sheet .kindArrow:hover,.sheet .dateChoose:hover{background:#d9f1e9}
.sheet .productArrow{flex:0 0 23px;width:23px;height:30px}
.sheet .kindInputWrap input{flex:1;min-width:0}
.sheet .nativeDatePicker{width:1px;min-width:1px;max-width:1px;height:1px;opacity:0;position:absolute;right:11px;bottom:0;border:0;padding:0;pointer-events:none}
.sheet.draggingSheet,.sheet.draggingSheet *{user-select:none!important;-webkit-user-select:none!important}
.sheet td.sheetSelected{background:#ddf7ed!important;box-shadow:inset 0 0 0 1px #5ebca7}
.sheet td.sheetActive{box-shadow:inset 0 0 0 2px #09987f}
.sheet td:has(.duplicateHint:not([hidden])){height:58px;vertical-align:top}
.sheet .duplicateHint{font-size:10px;color:#a3411d;line-height:1.35;background:#fff1dc;border:1px solid #f0d7a6;border-radius:4px;margin:0 0 3px;padding:3px 4px}
.sheet .duplicateHint[hidden]{display:none}
.kindMenu{position:absolute;top:36px;right:4px;z-index:15;display:flex;flex-direction:column;min-width:96px;box-shadow:0 6px 23px #10344922;background:#fff;border:1px solid #bfd8dd;border-radius:8px;overflow:hidden}
.kindMenu button{background:#fff;border:0;padding:11px 14px;cursor:pointer;color:#264a58;text-align:left;font-weight:750}
.kindMenu button:hover{background:#e0f6ee}
.pastPanel{max-width:845px;width:min(96vw,845px)}
.pastPanel .pastListScroll .dataTable{min-width:630px;table-layout:fixed}
.pastPanel .pastListScroll .dataTable th:first-child,.pastPanel .pastListScroll .dataTable td:first-child{width:48px}
.pastPanel .pastListScroll .dataTable th.compactBundle,.pastPanel .pastListScroll .dataTable td.bundleCell{width:107px;max-width:107px;white-space:nowrap;padding-left:8px;padding-right:5px}
.bundleCell strong{display:block;font-size:13px;color:#0f786c}
.bundleCell small{display:inline-block;color:#557982;font-size:11px}
.raisedModal{z-index:205}
.previewPanel{max-width:1170px;width:min(98vw,1170px)}
.previewPanel .previewTable{min-width:1060px}
.previewPanel .previewTable td{overflow-wrap:anywhere;max-width:210px}
.multiPanel{max-width:610px;width:min(96vw,610px)}
.multiCodeRows{display:grid;gap:9px;margin-bottom:16px;max-height:50vh;overflow-y:auto}
.multiCodeRow{display:flex;align-items:center;gap:9px}
.multiCodeRow input{min-width:0;flex:1;min-height:40px;border:1px solid #c9dce3;border-radius:8px;padding:9px 12px;font-size:14px}
.multiCodeRow .secondary{flex:0 0 auto}
@media(max-width:780px){.previewPanel{max-height:94vh}.sheet{font-size:13px}.sheet input{font-size:14px}}

/* v2.9 — expanding multiline product codes, dispatched brand and readable application print */
.sheet td{height:auto;min-height:48px;vertical-align:top}
.sheet .productInputWrap{align-items:flex-start;position:relative}
.sheet textarea[name="product_code"]{display:block;flex:1;width:100%;min-width:0;min-height:38px;max-height:260px;height:38px;line-height:1.32;padding:8px 9px;border:1px solid transparent;border-radius:5px;background:transparent;color:#264154;font:inherit;font-size:14px;resize:vertical;white-space:pre-wrap;overflow-wrap:anywhere;tab-size:4;}
.sheet textarea[name="product_code"]:hover{border-color:#d6e8e9;background:white}
.sheet textarea[name="product_code"]:focus{background:white;border-color:#28aa96;outline:2px solid #21ac9333}
.sheet textarea[name="product_code"]::placeholder{color:#b1c0c9}
.sheet .productPlus,.sheet .productArrow{margin-top:3px}
.sheet tbody tr{height:auto}
.codeLineList{display:flex;flex-direction:column;gap:3px;min-width:0}
.codeLine{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.35;font-weight:700;color:#2c596c}
.previewTable .codeLine{font-weight:600}
.deviceBrand{margin-top:11px;padding:9px 10px;border:1px solid #c1deec;border-radius:8px;background:#eaf5ff;color:#184f78;overflow-wrap:anywhere}
.deviceBrand small{display:block;color:#516d86;font-size:11px;font-weight:750;letter-spacing:-.1px;margin-bottom:4px}
.deviceBrand strong{display:block;font-weight:850;font-size:15px;line-height:1.38}
.printAction{border-color:#acd8ce;background:#ecf8f4;color:#0e7565}
@media(max-width:780px){.sheet textarea[name="product_code"]{font-size:14px}}

/* v3.0: dispatch/return signing views, restricted to /pda/ */
.signatureCard .sectionHead{align-items:center}
.signatureToolbar{display:flex;gap:13px;align-items:center;flex-wrap:wrap}
.signatureToolbar .searchBox{flex:1;min-width:230px}
.signatureField{display:inline-flex;align-items:center;gap:8px;font-size:15px;font-weight:800;color:#37566a}
.signatureField select{min-height:42px;padding:8px 12px;font-size:14px;border-radius:8px;border:1px solid #c9dbe0;background:#fff;color:#244455}
.signatureInstruction{padding:11px 22px;background:#edf8f4;color:#426577;font-size:14px;border-bottom:1px solid #dae9e5}
.signatureTable{min-width:1190px;table-layout:auto}
.signatureTable th,.signatureTable td{padding:13px 10px;font-size:14px;vertical-align:middle;text-align:center}
.signatureTable th{white-space:nowrap}
.signatureTable td:nth-last-child(-n+2){min-width:130px;background:#fbfefd}
.signatureTable input[type=checkbox]{width:18px;height:18px;cursor:pointer}
.signatureBlank{display:block;height:22px;margin:5px 4px;border-bottom:1px dashed #aac4ca}
.signatureTable .signDeviceNumber{font-size:17px;font-weight:900;color:#126a5f}
.signatureFoot{padding:18px 22px;display:flex;align-items:center;gap:18px;justify-content:space-between;flex-wrap:wrap;border-top:1px solid #e5eef0}
.signatureFoot span{color:#526a74;font-size:14px}.signatureFoot button{font-size:16px}
@media(max-width:880px){.signatureToolbar .signatureField{width:100%;justify-content:space-between}.signatureToolbar .signatureField select{flex:1}.signatureFoot button{width:100%}}

/* v3.1 - checkbox-driven batch actions, still compatible with Excel-style rectangular cell selection */
.toolbarDivider{height:23px;border-left:1px solid #c9dbe0;margin:0 3px}
.sheetMasterLabel{display:flex;align-items:center;justify-content:center;gap:5px;font-size:12px;cursor:pointer}
.sheetMasterLabel input,.sheet .rowCheck{appearance:auto!important;-webkit-appearance:checkbox!important;width:17px!important;min-width:17px!important;height:17px!important;min-height:17px!important;padding:0!important;margin:0!important;accent-color:#12947c;cursor:pointer;border:0!important;outline-offset:2px!important}
.sheet .rowNum{display:flex;align-items:center;justify-content:center;gap:7px;min-height:46px;text-align:center;white-space:nowrap}
.sheet .rowNumber{font-weight:800;min-width:17px}
.sheet tr.rowMarked td{background:#edf9f5!important}
.sheet tr.rowMarked td.sheetSelected{background:#c8ede2!important}
.selectedCount{font-size:13px;font-weight:800;color:#18896f;white-space:nowrap}
.deviceSelect{display:flex;align-items:center;gap:5px;color:#597487;font-size:12px;font-weight:750;margin-bottom:8px;cursor:pointer}
.deviceSelect input{width:18px;height:18px;accent-color:#119379;cursor:pointer}
.deviceCard.deviceMarked{outline:2px solid #14a386;background:#eaf9f3!important}
.usageTable{min-width:1350px;table-layout:auto}
.usageTable td,.usageTable th{font-size:13px;vertical-align:top;white-space:normal}
.usageTable th:nth-child(9),.usageTable td:nth-child(9){white-space:nowrap;font-weight:850}
.usagePaging{display:flex;align-items:center;justify-content:flex-end;gap:15px;padding:13px 23px;font-size:13px;color:#546d7a;border-top:1px solid #ebf1f2}
.usagePaging button:disabled{opacity:.4;cursor:not-allowed}
@media(max-width:840px){.sheetMasterLabel{flex-direction:column;gap:1px}.toolbarDivider{display:none}.selectedCount{width:100%}}

/* v3.2 approval-sheet grouping / physical-device copying */
.approvalGroupTable th,.approvalGroupTable td{padding:15px 14px;font-size:15px;vertical-align:middle}
.approvalGroupRow{cursor:pointer;transition:background .15s}
.approvalGroupRow:hover,.approvalGroupRow:focus-visible{background:#ebf8f3;outline:2px solid #56aa99;outline-offset:-2px}
.approvalGroupRow.groupOpen{background:#eaf7f2}
.pendingQty{font-size:17px;color:#ba6821}
.requestStamp{white-space:nowrap;font-size:13px;font-weight:750;color:#395f6b}
.approvalDetail{margin-top:16px;padding-top:15px;border-top:2px solid #d7eae5}
.approvalDetailHeading{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;padding:4px 22px 12px}
.approvalDetailHeading h3{margin:0;font-size:19px;color:#174e46}
.approvalItemTable{min-width:1060px}
.approvalItemTable th,.approvalItemTable td{padding:12px 9px;font-size:14px;vertical-align:middle}
.approvalItemTable .alreadyProcessed{background:#f4f8f8;color:#647985}
.approvalItemTable .assignmentInput{min-width:100px;max-width:150px}
.clonePanel{max-width:1050px;width:min(96vw,1050px)}
.cloneTable{min-width:700px}
.cloneTable th,.cloneTable td{font-size:14px;padding:12px 9px}
.cloneTable input,.cloneTable select{width:100%;min-height:40px;font-size:15px;border-radius:8px;border:1px solid #b9d5d3;padding:8px}
.cloneHelp{padding:16px 4px 0;font-size:14px}
@media(max-width:850px){.approvalGroupTable{min-width:720px}.approvalDetailHeading{padding:12px}.cloneTable{min-width:700px}}

/* v3.4 PDA catalog two-way autocomplete: inline help remains inside the sheet. */
.catalogHint{font-size:11px;color:#247e6f;line-height:1.35;white-space:normal;overflow-wrap:anywhere;padding:3px 7px 5px;background:#f0faf6;border-radius:5px;margin-top:2px}
.catalogHint[hidden]{display:none!important}
.sheet td:has(.catalogHint:not([hidden])){vertical-align:top}
@media(max-width:790px){.catalogHint{font-size:11px}}

.pickerSearch{display:block;width:calc(100% - 12px);margin:7px 6px;padding:9px;border:1px solid #afd7c9;border-radius:7px;font-size:13px}
.pickerCount{font-size:11px;padding:0 8px 5px;color:#63867e}

/* v3.4: 자동 형태 / 데이터 관리 선택삭제 */
.sheet .autoTypeInput{background:#f0f7f5;color:#175e54;font-weight:800;text-align:center;cursor:default}
.sheet td:has(.autoTypeInput){background:#f8fbfa}
.dataTools #dataDeleteSelected:disabled{opacity:.45;cursor:not-allowed}
#dbBody td:first-child,#dbBody th:first-child{text-align:center}

/* v3.6: 승인 연장처리 + PDA 장비 1대 1행 실시간 관리 */
.extensionBox{min-width:260px;padding:9px 10px;border:1px solid #f0c36a;border-radius:9px;background:#fff9e8;display:grid;gap:6px}.extensionBox label{display:flex;align-items:center;gap:6px;color:#8a5a00}.extensionBox select{max-width:360px;width:100%}.extensionBox small{line-height:1.35;color:#7a6947}.deviceLiveTable{min-width:1050px}.deviceLiveTable th,.deviceLiveTable td{vertical-align:middle}.deviceLiveTable select{min-width:110px}.liveDeviceNote{width:100%;min-width:180px}.deviceLiveRow input[readonly]{background:#f2f4f6;color:#6b7280}

.tag-EXTENDED{background:#f3e8ff;color:#7e22ce}

/* v3.7 - inline editing + sorting/filtering */
.deviceLiveTable{min-width:1180px}
.deviceLiveTable .liveDeviceNo{width:92px;min-width:92px;text-align:center;font-weight:800}
.deviceLiveTable .liveDeviceNote{min-width:220px}
.deviceLiveTable th small{display:block;margin-top:2px;font-size:10px;font-weight:600;opacity:.72}
.usageToolbar{align-items:center;gap:8px;flex-wrap:wrap}
.usageToolbar select{min-height:38px}
.usageEditNotice{margin:8px 0 10px;padding:9px 12px;border:1px solid #d9e7e5;border-radius:9px;background:#f7fbfa;color:#49605d;font-size:13px}
.usageEditTable{min-width:1830px;table-layout:auto}
.usageEditTable th{position:sticky;top:0;z-index:2;background:#f7faf9;white-space:nowrap}
.usageEditTable td{vertical-align:middle;padding:6px}
.usageEditInput{width:100%;min-width:88px;box-sizing:border-box;padding:7px 8px;border:1px solid #cfdad8;border-radius:7px;background:#fff;font:inherit;color:inherit}
.usageEditInput:focus,.liveDeviceNo:focus,.liveDeviceNote:focus{outline:2px solid rgba(15,118,110,.18);border-color:#0f766e}
.usageEditCode{min-width:120px;min-height:54px;resize:vertical;white-space:pre-wrap;line-height:1.35}
.usageEditTable td:nth-child(6) .usageEditInput{min-width:170px}
.usageEditTable td:nth-child(7) .usageEditInput{min-width:170px}
.usageEditTable td:nth-child(11) .usageEditInput{min-width:160px}
.usageEditTable td:nth-child(13) .usageEditInput{min-width:120px}
.usageDerivedType{font-weight:800;white-space:nowrap;text-align:center}
.usageSave{white-space:nowrap}
@media(max-width:900px){.usageToolbar>*{flex:1 1 150px}.usageToolbar .rowCounter{flex:0 0 auto}.usageEditNotice{font-size:12px}}


/* v3.8 - row color coding + quick sort buttons */
.sortQuickBtn{min-height:40px;padding:9px 15px;border:1px solid #8fcabe;border-radius:9px;background:#eaf8f4;color:#0f6f60;font-size:14px;font-weight:850;cursor:pointer;white-space:nowrap;box-shadow:0 1px 0 rgba(15,118,110,.06)}
.sortQuickBtn:hover{background:#d8f2eb;border-color:#61b4a4}.sortQuickBtn:active{transform:translateY(1px)}
.statusColorRow>td{transition:background-color .12s ease}
.statusColorRow.rowCategory-overdue>td,.statusColorRow.rowCategory-overdue input,.statusColorRow.rowCategory-overdue select,.statusColorRow.rowCategory-overdue textarea{background:#fecaca!important}
.statusColorRow.rowCategory-extension>td,.statusColorRow.rowCategory-extension input,.statusColorRow.rowCategory-extension select,.statusColorRow.rowCategory-extension textarea{background:#dbeafe!important}
.statusColorRow.rowCategory-popup>td,.statusColorRow.rowCategory-popup input,.statusColorRow.rowCategory-popup select,.statusColorRow.rowCategory-popup textarea{background:#f3e8ff!important}
.statusColorRow.rowCategory-new>td,.statusColorRow.rowCategory-new input,.statusColorRow.rowCategory-new select,.statusColorRow.rowCategory-new textarea{background:#ffffff!important}
.statusColorRow.rowCategory-storage>td,.statusColorRow.rowCategory-storage input,.statusColorRow.rowCategory-storage select,.statusColorRow.rowCategory-storage textarea{background:#ffedd5!important}
.statusColorRow.rowCategory-other>td,.statusColorRow.rowCategory-other input,.statusColorRow.rowCategory-other select,.statusColorRow.rowCategory-other textarea{background:#dcfce7!important}
.statusColorRow.rowCategory-as>td,.statusColorRow.rowCategory-as input,.statusColorRow.rowCategory-as select,.statusColorRow.rowCategory-as textarea{background:#f1f5f9!important}
.statusColorRow.rowCategory-reserve>td,.statusColorRow.rowCategory-reserve input,.statusColorRow.rowCategory-reserve select,.statusColorRow.rowCategory-reserve textarea{background:#f8fafc!important}
.statusColorRow>td:first-child{box-shadow:inset 5px 0 0 rgba(15,23,42,.12)}
.statusColorRow.rowCategory-overdue>td:first-child{box-shadow:inset 5px 0 0 #dc2626}.statusColorRow.rowCategory-extension>td:first-child{box-shadow:inset 5px 0 0 #2563eb}.statusColorRow.rowCategory-popup>td:first-child{box-shadow:inset 5px 0 0 #9333ea}.statusColorRow.rowCategory-storage>td:first-child{box-shadow:inset 5px 0 0 #f97316}.statusColorRow.rowCategory-other>td:first-child{box-shadow:inset 5px 0 0 #22c55e}
@media(max-width:900px){.sortQuickBtn{flex:1 1 140px}}


/* v3.9 - compact PDA ledgers + stronger overdue red + dispatch signature only before handover */
.deviceLiveTable th,.deviceLiveTable td{padding:5px 7px!important;line-height:1.2}
.deviceLiveTable .liveDeviceNo,.deviceLiveTable .liveDeviceNote,.deviceLiveTable select{min-height:30px!important;height:30px;padding:3px 6px!important;font-size:13px!important;border-radius:6px}
.deviceLiveTable .smallAction{min-height:30px;padding:4px 9px;font-size:12px}
.deviceLiveTable input[type=checkbox]{width:16px;height:16px}
.deviceLiveTable .liveDeviceNote{min-width:180px}
.usageEditTable th,.usageEditTable td{padding:4px 5px!important;line-height:1.18}
.usageEditTable th{font-size:12px}
.usageEditTable td{font-size:12px}
.usageEditInput{min-height:30px!important;padding:3px 6px!important;font-size:12px!important;border-radius:6px}
.usageEditCode{min-height:34px!important;height:34px;line-height:1.15;resize:vertical}
.usageEditTable .smallAction{min-height:30px;padding:4px 8px;font-size:12px}
.dispatchOnlyBadge{display:inline-flex;align-items:center;min-height:36px;padding:7px 11px;border-radius:8px;background:#eaf8f4;border:1px solid #9dd3c6;color:#0e6d5d;font-size:13px;font-weight:850;white-space:nowrap}
.statusColorRow.rowCategory-overdue>td:first-child{box-shadow:inset 5px 0 0 #b91c1c}
@media(max-width:900px){.deviceLiveTable th,.deviceLiveTable td,.usageEditTable th,.usageEditTable td{padding:5px!important}}
