/*!
 * 물류 예약 시스템 — 스타일시트
 * Copyright (c) 2026 iLABS Korea (㈜아이랩스코리아).
 * All Rights Reserved. PROPRIETARY AND CONFIDENTIAL.
 * 본 파일은 ㈜아이랩스코리아의 자산이며 무단 복제·전재·재배포를 금합니다.
 * Contact: zeno.k@ilabskorea.com
 */

/* ── 디자인 토큰 (프로토타입에서 누락되어 있던 변수 정의) ── */
:root{
  --font-sans:-apple-system,BlinkMacSystemFont,'Segoe UI','Apple SD Gothic Neo','Malgun Gothic','Noto Sans KR',Roboto,'Helvetica Neue',Arial,sans-serif;
  --color-text-primary:#1F1E1B;
  --color-text-secondary:#6E6D67;
  --color-background-primary:#FFFFFF;
  --color-background-secondary:#F4F3EE;
  --color-border-tertiary:#E3E2DB;
  --border-radius-md:8px;
  --border-radius-lg:12px;
}

*{box-sizing:border-box;margin:0;padding:0;font-family:var(--font-sans);}
:root{--B50:#E6F1FB;--B100:#B5D4F4;--B400:#378ADD;--B600:#185FA5;--B800:#0C447C;--T50:#E1F5EE;--T100:#9FE1CB;--T600:#0F6E56;--T800:#085041;--A50:#FAEEDA;--A100:#FAC775;--A400:#BA7517;--A600:#854F0B;--R50:#FCEBEB;--R100:#F7C1C1;--R400:#E24B4A;--R600:#A32D2D;--G50:#EAF3DE;--G100:#C0DD97;--G600:#3B6D11;--P50:#EEEDFE;--P100:#CECBF6;--P400:#7F77DD;--P600:#534AB7;--P800:#3C3489;--C50:#FAECE7;--C100:#F5C4B3;--C600:#993C1D;--GR50:#F1EFE8;--GR100:#D3D1C7;--GR400:#888780;--GR600:#5F5E5A;}
html,body{background:var(--color-background-secondary);}
.app{max-width:400px;margin:0 auto;padding-bottom:64px;min-height:600px;background:var(--color-background-primary);}
.screen{display:none;}.screen.active{display:block;}
.lw{padding:32px 18px 20px;}
.logo-box{text-align:center;margin-bottom:22px;}
.logo-ic{width:56px;height:56px;background:var(--B600);border-radius:14px;margin:0 auto 9px;display:flex;align-items:center;justify-content:center;font-size:24px;}
.brand-logo{display:block;height:54px;width:auto;margin:0 auto 10px;}
.logo-t{font-size:18px;font-weight:500;color:var(--color-text-primary);}
.logo-s{font-size:11px;color:var(--color-text-secondary);margin-top:2px;}

/* 브랜드 푸터 (로고 + 카피라이트) */
.brand-footer{text-align:center;padding:18px 14px 14px;}
.brand-footer-app{padding:14px 14px 10px;border-top:0.5px solid var(--color-border-tertiary);margin-top:8px;background:var(--color-background-primary);}
.brand-logo-sm{display:block;height:22px;width:auto;margin:0 auto 6px;opacity:.85;}
.copyright{font-size:10px;color:var(--color-text-secondary);letter-spacing:.2px;}
.copyright-sub{font-size:9px;color:var(--color-text-secondary);margin-top:4px;line-height:1.5;opacity:.8;}

/* 헤더 로고 (메인 화면 상단) */
.hdr-brand{display:inline-flex;align-items:center;background:rgba(255,255,255,.92);border-radius:4px;padding:2px 6px;margin-right:7px;vertical-align:middle;}
.hdr-logo{height:14px;width:auto;display:block;}
.lcard{background:var(--color-background-primary);border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:16px;}
.rg{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:14px;}
.rb.rb-wide{grid-column:1/-1;}
.rb{padding:10px 5px;border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);text-align:center;cursor:pointer;background:var(--color-background-primary);}
.rb.sel{border-color:var(--B600);background:var(--B50);}
.rb .ri{font-size:16px;margin-bottom:2px;}.rb .rn{font-size:11px;font-weight:500;color:var(--color-text-primary);}.rb.sel .rn{color:var(--B800);}.rb .rd{font-size:10px;color:var(--color-text-secondary);}
.lf{margin-bottom:10px;}.ll{font-size:11px;color:var(--color-text-secondary);margin-bottom:3px;}
.li{width:100%;padding:8px 11px;border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);font-size:13px;background:var(--color-background-primary);color:var(--color-text-primary);}
.lb{width:100%;padding:11px;background:var(--B600);color:white;border:none;border-radius:var(--border-radius-md);font-size:14px;font-weight:500;cursor:pointer;margin-top:3px;}
.llink{font-size:11px;color:var(--B600);text-align:center;margin-top:10px;cursor:pointer;}
.demo-tip{font-size:10px;color:var(--color-text-secondary);text-align:center;margin-top:8px;line-height:1.6;}
/* 가입 동의 체크박스 */
.reg-agree{margin:10px 0 8px;padding:10px 12px;background:var(--color-background-secondary);border-radius:var(--border-radius-md);}
.agree-row{display:flex;align-items:flex-start;gap:8px;font-size:11px;color:var(--color-text-primary);margin:3px 0;cursor:pointer;line-height:1.5;}
.agree-row input[type="checkbox"]{margin-top:2px;flex-shrink:0;}
.agree-row a{color:var(--B600);text-decoration:underline;}
.reg-sec{font-size:11px;font-weight:500;color:var(--color-text-secondary);margin:12px 0 7px;}
.login-err{font-size:11px;color:var(--R600);background:var(--R50);border:0.5px solid var(--R100);border-radius:var(--border-radius-md);padding:8px 10px;text-align:center;margin-top:10px;display:none;}
.login-err.show{display:block;}
.login-err.info{color:var(--B800);background:var(--B50);border-color:var(--B100);}
.hdr{background:var(--B600);padding:12px 14px 10px;}
.hdr-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px;}
.hdr h1{font-size:15px;font-weight:500;color:white;}.hdr-date{font-size:11px;color:rgba(255,255,255,.72);}
.urow{display:flex;align-items:center;gap:6px;}.ulbl{font-size:11px;color:rgba(255,255,255,.85);}
.lout-btn{font-size:10px;padding:2px 8px;border-radius:20px;background:rgba(255,255,255,.2);color:white;cursor:pointer;border:none;}
.tab-bar{display:flex;background:var(--color-background-primary);border-bottom:0.5px solid var(--color-border-tertiary);}
.tab{flex:1;padding:8px 2px;font-size:11px;color:var(--color-text-secondary);text-align:center;cursor:pointer;border-bottom:2px solid transparent;}
.tab.on{color:var(--B600);border-bottom-color:var(--B600);font-weight:500;}
.page{display:none;}.page.active{display:block;}
.wstrip{display:flex;padding:7px 8px;gap:3px;align-items:stretch;}
.wnav{flex:0 0 22px;width:22px;border:none;background:var(--color-background-secondary);color:var(--color-text-secondary);border-radius:var(--border-radius-md);font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}
.wnav:hover{background:var(--B50);color:var(--B600);}
.wnav.prev{margin-right:2px;}.wnav.next{margin-left:2px;}
.dpill{flex:1;display:flex;flex-direction:column;align-items:center;padding:5px 2px;border-radius:var(--border-radius-md);cursor:pointer;min-width:0;}
.dname{font-size:10px;color:var(--color-text-secondary);}.dnum{font-size:13px;color:var(--color-text-primary);margin-top:1px;}
.ddot{width:4px;height:4px;border-radius:50%;margin-top:2px;background:transparent;}
.dpill.today{background:var(--B600);}.dpill.today .dname,.dpill.today .dnum{color:white;}.ddot.has{background:var(--B400);}
.dpill.is-today{background:var(--B50);}.dpill.is-today .dnum{color:var(--B600);font-weight:500;}
.stat-row{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:7px 14px;}
.sc{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:8px 11px;}
.sl{font-size:11px;color:var(--color-text-secondary);margin-bottom:2px;}.sn{font-size:19px;font-weight:500;}.ss{font-size:10px;color:var(--color-text-secondary);margin-top:1px;}
.cb{color:var(--B600);}.ct{color:var(--T600);}.ca{color:var(--A400);}.cr{color:var(--R400);}
.divx{height:0.5px;background:var(--color-border-tertiary);margin:2px 14px 7px;}
.frow{display:flex;gap:5px;padding:4px 14px 7px;overflow-x:auto;}
.fchip{padding:4px 10px;border-radius:20px;font-size:11px;cursor:pointer;flex-shrink:0;border:0.5px solid var(--color-border-tertiary);background:var(--color-background-primary);color:var(--color-text-secondary);}
.fchip.on{background:var(--B600);color:white;border-color:var(--B600);}
.tgrid{display:flex;flex-direction:column;gap:3px;padding:0 14px 12px;}
.tslot{display:flex;align-items:flex-start;gap:7px;}
.tlbl{font-size:11px;color:var(--color-text-secondary);width:38px;flex-shrink:0;padding-top:9px;text-align:right;}
.sarea{flex:1;display:flex;flex-direction:column;gap:3px;}
.sempty{border:0.5px dashed var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:7px 9px;font-size:11px;color:var(--color-text-secondary);cursor:pointer;background:transparent;width:100%;text-align:left;}
.sempty:hover{background:var(--color-background-secondary);}
/* 매니저 시점: 한 줄에 [+ 입고] [+ 출고] [🔒] 3개 들어가도록 flex 로 */
.sempty-row{display:flex;gap:4px;}
.sempty-row .sempty{flex:1 1 0;min-width:0;padding:6px 4px;font-size:10px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sempty-in{border-color:var(--B100);color:var(--B600);}.sempty-in:hover{background:var(--B50);}
.sempty-out{border-color:var(--T100);color:var(--T600);}.sempty-out:hover{background:var(--T50);}
.btype-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.btype-opt{padding:8px 6px;text-align:center;font-size:12px;border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);cursor:pointer;background:var(--color-background-primary);color:var(--color-text-primary);font-weight:500;}
.btype-opt[data-type="in"].sel{background:var(--B50);border-color:var(--B400);color:var(--B800);}
.btype-opt[data-type="out"].sel{background:var(--T50);border-color:var(--T600);color:var(--T800);}
/* 차단 모달 토글 — 의미별 색상: 둘 다(빨강) / 입고(파랑) / 출고(청록) */
.btype-opt[data-bt="all"].sel{background:var(--R50);border-color:var(--R400);color:var(--R600);}
.btype-opt[data-bt="in"].sel{background:var(--B50);border-color:var(--B400);color:var(--B800);}
.btype-opt[data-bt="out"].sel{background:var(--T50);border-color:var(--T600);color:var(--T800);}
/* 퀵/택배 등록 모달의 방향 토글 — data-dir */
.btype-opt[data-dir="in"].sel{background:var(--B50);border-color:var(--B400);color:var(--B800);}
.btype-opt[data-dir="out"].sel{background:var(--T50);border-color:var(--T600);color:var(--T800);}
.bcard{display:block;border-radius:var(--border-radius-md);padding:6px 9px;cursor:pointer;}
.bcard.taken{background:var(--GR50);border:0.5px solid var(--GR100);color:var(--GR600);font-size:11px;font-weight:500;text-align:center;}
.bcard.busy{background:repeating-linear-gradient(45deg,var(--GR50),var(--GR50) 6px,#EBEAE3 6px,#EBEAE3 12px);border:0.5px dashed var(--GR100);color:var(--GR600);font-size:11px;font-weight:500;text-align:center;padding:7px 9px;cursor:not-allowed;}
/* 차단 슬롯 카드 */
.bcard.blk{background:repeating-linear-gradient(45deg,#FCEBEB,#FCEBEB 6px,#F7C1C1 6px,#F7C1C1 12px);border:0.5px solid var(--R100);color:var(--R600);padding:7px 9px;}
.bcard.blk .bco{color:var(--R600);font-weight:500;}
.bcard.blk .bdet{color:var(--R600);}
.blk-rm-btn{font-size:10px;padding:2px 9px;border:0.5px solid var(--R100);background:var(--color-background-primary);color:var(--R600);border-radius:20px;cursor:pointer;}
.blk-rm-btn:hover{background:var(--R50);}
/* 빈 슬롯 우측 자물쇠 막기 버튼 — 자물쇠만 고정 폭, 입고·출고는 1fr 으로 자동 분배 */
.sempty-row .sempty.sempty-block{flex:0 0 30px;text-align:center;border-color:var(--R100);color:var(--R600);background:transparent;font-size:12px;padding:6px 0;}
.sempty.sempty-block:hover{background:var(--R50);}
.bcard.in{background:var(--B50);border:0.5px solid var(--B100);}.bcard.pend{background:var(--A50);border:0.5px solid var(--A100);}.bcard.out{background:var(--T50);border:0.5px solid var(--T100);}.bcard.rej{background:var(--R50);border:0.5px solid var(--R100);}.bcard.qwait{background:var(--P50);border:0.5px solid var(--P100);}
.brow{display:flex;justify-content:space-between;align-items:center;gap:4px;}
.bco{font-weight:500;font-size:12px;}
.bcard.in .bco{color:var(--B800);}.bcard.pend .bco{color:var(--A600);}.bcard.out .bco{color:var(--T800);}.bcard.rej .bco{color:var(--R600);}.bcard.qwait .bco{color:var(--P800);}
.bdet{font-size:10px;margin-top:2px;}
.bcard.in .bdet{color:var(--B600);}.bcard.pend .bdet{color:var(--A400);}.bcard.out .bdet{color:var(--T600);}.bcard.rej .bdet{color:var(--R400);}.bcard.qwait .bdet{color:var(--P600);}
.sbadge{font-size:10px;padding:2px 6px;border-radius:20px;flex-shrink:0;white-space:nowrap;}
.sb-app{background:var(--B600);color:white;}.sb-pend{background:var(--A400);color:white;}.sb-out{background:var(--T600);color:white;}.sb-rej{background:var(--R400);color:white;}.sb-qwait{background:var(--P400);color:white;}
.abtns{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;margin-top:6px;}
.abtn{height:26px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:500;border-radius:var(--border-radius-md);cursor:pointer;color:white;line-height:1;padding:0;border:none;}
.abtn.apv{background:var(--B600);}.abtn.rej{background:var(--R400);}.abtn.adj{background:var(--GR600);}
.qcrow{display:flex;align-items:center;gap:4px;margin-top:4px;flex-wrap:wrap;}
.qclbl{font-size:10px;color:var(--color-text-secondary);}
.qcb{font-size:10px;padding:2px 7px;border-radius:20px;cursor:pointer;border:0.5px solid;}
.qcb.pass{background:var(--G50);color:var(--G600);border-color:var(--G100);}.qcb.fail{background:var(--R50);color:var(--R600);border-color:var(--R100);}.qcb.cust{background:var(--P50);color:var(--P600);border-color:var(--P100);}.qcb.wait{background:var(--GR50);color:var(--GR600);border-color:var(--GR100);}.qcb.hold{background:var(--A50);color:var(--A600);border-color:var(--A100);}.qcb.remove{background:var(--C50);color:var(--C600);border-color:var(--C100);}
.empty-state{padding:40px 20px;text-align:center;color:var(--color-text-secondary);font-size:13px;}
.empty-ic{font-size:32px;margin-bottom:10px;}
.empty-t{font-size:13px;font-weight:500;color:var(--color-text-primary);margin-bottom:4px;}
.empty-s{font-size:11px;color:var(--color-text-secondary);}
.wk-nav{display:flex;align-items:center;justify-content:space-between;padding:9px 14px 7px;}
.wk-arrow{background:var(--color-background-secondary);border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:5px 11px;font-size:11px;cursor:pointer;color:var(--color-text-primary);}
.wk-ctr{text-align:center;}.wk-ttl{font-size:13px;font-weight:500;color:var(--color-text-primary);}
.wk-badge{display:inline-block;font-size:10px;padding:2px 8px;border-radius:20px;margin-top:2px;font-weight:500;}
.wb-last{background:var(--GR50);color:var(--GR600);}.wb-curr{background:var(--B50);color:var(--B800);}.wb-next{background:var(--T50);color:var(--T800);}.wb-oth{background:var(--GR50);color:var(--GR600);}
.wk-chips{display:flex;gap:5px;padding:0 14px 7px;overflow-x:auto;}
.wk-chip{padding:4px 11px;border-radius:20px;font-size:11px;cursor:pointer;flex-shrink:0;border:0.5px solid var(--color-border-tertiary);background:var(--color-background-primary);color:var(--color-text-secondary);}
.wk-chip.on{background:var(--B600);color:white;border-color:var(--B600);}
.wk-sum{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:0 14px 9px;}
.wk-sc{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:8px 11px;}
.wk-sl{font-size:11px;color:var(--color-text-secondary);margin-bottom:2px;}.wk-sn{font-size:17px;font-weight:500;}.wk-ss{font-size:10px;color:var(--color-text-secondary);margin-top:1px;}
.legend{display:flex;gap:12px;padding:0 14px 7px;}
.leg-i{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--color-text-secondary);}
.ld{width:9px;height:9px;border-radius:2px;}.ld-in{background:var(--B50);border:0.5px solid var(--B100);}.ld-out{background:var(--T50);border:0.5px solid var(--T100);}
.tbl-wrap{overflow-x:auto;padding:0 14px 14px;}
.wtbl{width:100%;border-collapse:collapse;table-layout:fixed;}
.wtbl th{font-size:11px;font-weight:500;color:var(--color-text-secondary);padding:5px 2px;text-align:center;border-bottom:0.5px solid var(--color-border-tertiary);background:var(--color-background-primary);}
.wtbl th.th-t{text-align:left;width:44px;padding-left:0;}
.wtbl td{font-size:11px;padding:4px 2px;text-align:center;vertical-align:top;border-bottom:0.5px solid var(--color-border-tertiary);}
.wtbl td.td-t{font-size:11px;color:var(--color-text-secondary);text-align:left;vertical-align:middle;padding-left:0;}
.wtbl tr.tot td{background:var(--color-background-secondary);font-weight:500;}.wtbl tr.tot td.td-t{color:var(--color-text-primary);}
.ci{background:var(--B50);border-radius:3px;padding:2px 3px;margin-bottom:2px;}.co{background:var(--T50);border-radius:3px;padding:2px 3px;}
.cv{font-size:11px;font-weight:500;color:var(--B800);display:block;}.cvs{font-size:10px;color:var(--B600);display:block;}
.cvo{font-size:11px;font-weight:500;color:var(--T800);display:block;}.cvos{font-size:10px;color:var(--T600);display:block;}
.sec-t{font-size:11px;font-weight:500;color:var(--color-text-secondary);padding:8px 14px 4px;text-transform:uppercase;letter-spacing:.4px;}
.qcard{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:8px 11px;display:flex;justify-content:space-between;align-items:center;margin-bottom:5px;}
/* 퀵 / 택배 카드 */
.pcl-card{background:var(--color-background-primary);border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:9px 11px;margin-bottom:7px;}
.pcl-card.cb{border-left:3px solid var(--B600);}
.pcl-card.cr{border-left:3px solid var(--R400);}
.pcl-hd{display:flex;align-items:center;gap:7px;margin-bottom:4px;}
.pcl-ic{font-size:14px;}
.pcl-t{flex:1;font-size:12px;font-weight:500;color:var(--color-text-primary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pcl-qty{font-size:11px;color:var(--color-text-secondary);background:var(--color-background-secondary);padding:1px 7px;border-radius:20px;flex-shrink:0;}
.pcl-office{font-size:10px;padding:1px 6px;border-radius:20px;margin-left:6px;font-weight:500;flex-shrink:0;}
.pcl-office.hq{background:var(--B50);color:var(--B800);border:0.5px solid var(--B100);}
.pcl-office.br{background:var(--T50);color:var(--T800);border:0.5px solid var(--T100);}
.pcl-trk{font-size:11px;color:var(--B800);background:var(--B50);border:0.5px solid var(--B100);border-radius:4px;padding:2px 7px;margin:3px 0;display:inline-block;font-family:Consolas,Menlo,monospace;}
.pcl-line{font-size:11px;color:var(--color-text-primary);margin-top:2px;line-height:1.4;}
.pcl-status{margin-top:6px;background:var(--T50);border:0.5px solid var(--T100);border-radius:4px;padding:5px 8px;display:flex;justify-content:space-between;align-items:center;gap:8px;}
.pcl-status-l{font-size:11px;font-weight:500;color:var(--T800);}
.pcl-status-at{font-size:10px;color:var(--T600);}
.pcl-actions{display:flex;gap:6px;margin-top:6px;}
.pcl-btn{flex:1;padding:5px;border-radius:var(--border-radius-md);font-size:11px;font-weight:500;cursor:pointer;border:0.5px solid;background:transparent;}
.pcl-btn-refresh{border-color:var(--B100);color:var(--B600);background:var(--B50);}
.pcl-btn-refresh:hover{background:var(--B100);}
.pcl-btn-del{border-color:var(--R100);color:var(--R600);background:var(--R50);}
.pcl-btn-del:hover{background:var(--R100);}
.ql{display:flex;align-items:center;gap:9px;}
.qic{width:29px;height:29px;border-radius:var(--border-radius-md);display:flex;align-items:center;justify-content:center;font-size:13px;}
.qt{font-size:12px;font-weight:500;color:var(--color-text-primary);}.qs{font-size:11px;color:var(--color-text-secondary);margin-top:1px;}.qn{font-size:18px;font-weight:500;}
.ni-item{padding:10px 14px;border-bottom:0.5px solid var(--color-border-tertiary);display:flex;gap:8px;align-items:flex-start;}
.ndot{width:7px;height:7px;border-radius:50%;flex-shrink:0;margin-top:4px;}.ndot.ur{background:var(--B400);}.ndot.rd{background:var(--color-border-tertiary);}
.ntxt{font-size:12px;color:var(--color-text-primary);line-height:1.4;}.ntime{font-size:11px;color:var(--color-text-secondary);margin-top:2px;}
.nch{font-size:10px;padding:2px 5px;border-radius:20px;margin-left:4px;}.nch-k{background:var(--A50);color:var(--A600);}.nch-s{background:var(--G50);color:var(--G600);}
/* ── 리포트 페이지 ── */
.report-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px 6px;}
.report-ttl{font-size:13px;font-weight:500;color:var(--color-text-primary);}
.report-ctrl{display:flex;align-items:center;gap:5px;}
.rpt-nav{width:26px;height:26px;border:none;background:var(--color-background-secondary);color:var(--color-text-secondary);border-radius:var(--border-radius-md);font-size:15px;cursor:pointer;line-height:1;padding:0;}
.rpt-nav:hover{background:var(--B50);color:var(--B600);}
.rpt-month{padding:5px 8px;border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);font-size:12px;background:var(--color-background-primary);color:var(--color-text-primary);min-width:120px;}
.report-cards{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:4px 14px 4px;}
.rpt-card{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:9px 11px;}
.rpt-l{font-size:11px;color:var(--color-text-secondary);}
.rpt-n{font-size:18px;font-weight:500;margin-top:1px;}
.rpt-s{font-size:10px;color:var(--color-text-secondary);margin-top:1px;}
.chart-wrap{padding:6px 14px 0;}
.chart{width:100%;height:160px;display:block;background:var(--color-background-primary);}
.chart-legend{display:flex;gap:14px;flex-wrap:wrap;padding:4px 14px 8px;font-size:11px;color:var(--color-text-secondary);}
.leg-i{display:flex;align-items:center;gap:5px;}
.leg-sw{width:10px;height:10px;border-radius:2px;display:inline-block;}
.leg-sw.cb{background:#185FA5;}.leg-sw.ct{background:#0F6E56;}.leg-sw.ca{background:#BA7517;}.leg-sw.cr{background:#A32D2D;}
.rpt-actions{padding:8px 14px 4px;}
.rpt-actions .btn{width:100%;}
.rpt-note{font-size:10px;color:var(--color-text-secondary);padding:0 14px 10px;text-align:center;line-height:1.5;}

/* ── 알림 환경설정 카드 ── */
.np-card{margin:0 14px 12px;background:var(--color-background-primary);border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:12px 14px;}
.np-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--color-text-primary);margin:4px 0;cursor:pointer;line-height:1.5;}
.np-row.np-main{font-size:13px;}
.np-row input{flex-shrink:0;}
.np-perm{font-size:11px;color:var(--color-text-secondary);padding:4px 0 0 24px;}
.np-sub-t{font-size:11px;font-weight:500;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.4px;margin:12px 0 6px;}
.np-modes{display:grid;grid-template-columns:1fr 1fr;gap:5px;}
.np-mode{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--color-text-primary);padding:7px 9px;border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);cursor:pointer;background:var(--color-background-primary);}
.np-mode.sel{background:var(--B50);border-color:var(--B400);color:var(--B800);}
.np-mode input{margin:0;}
.np-kinds{display:grid;grid-template-columns:1fr 1fr;gap:4px;}
.np-kinds .np-row{font-size:11px;background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:6px 8px;margin:0;}

/* ── 회원 관리 (admin 알림 탭) ── */
.mem-list{padding:0 14px 8px;display:flex;flex-direction:column;gap:6px;}
.mem-i{background:var(--color-background-secondary);border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:9px 11px;}
.mem-top{display:flex;align-items:center;gap:7px;margin-bottom:3px;}
.mem-uid{font-size:12px;font-weight:500;color:var(--color-text-primary);}
.mem-badge{font-size:10px;padding:1px 6px;border-radius:20px;background:var(--B50);color:var(--B800);}
.mem-meta{font-size:11px;color:var(--color-text-secondary);}
.mem-row{display:flex;align-items:center;gap:6px;margin-top:6px;}
.mem-row label{font-size:11px;color:var(--color-text-secondary);}
.mem-role{flex:1;padding:5px 8px;border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);font-size:11px;background:var(--color-background-primary);}
.mem-role:disabled{opacity:.6;cursor:not-allowed;}
.mem-kick{padding:5px 10px;border:0.5px solid var(--R100);background:var(--R50);color:var(--R600);border-radius:var(--border-radius-md);font-size:10px;cursor:pointer;}
.mem-kick:hover{background:var(--R100);}
.mem-self{font-size:10px;color:var(--color-text-secondary);padding:5px 8px;}

/* ── 감사 로그 (admin 알림 탭) ── */
.audit-list{padding:0 14px 8px;display:flex;flex-direction:column;gap:5px;}
.audit-empty{padding:14px;text-align:center;color:var(--color-text-secondary);font-size:11px;}
.audit-i{display:flex;gap:9px;background:var(--color-background-secondary);border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:8px 10px;}
.audit-ic{font-size:15px;line-height:1.2;flex-shrink:0;width:22px;text-align:center;}
.audit-body{flex:1;min-width:0;}
.audit-top{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:11px;}
.audit-actor{font-weight:500;color:var(--color-text-primary);}
.audit-role{font-size:10px;padding:1px 6px;border-radius:20px;background:var(--B50);color:var(--B800);}
.audit-act{font-size:10px;padding:1px 6px;border-radius:20px;background:var(--P50);color:var(--P600);}
.audit-detail{font-size:11px;color:var(--color-text-primary);margin-top:3px;line-height:1.4;}
.audit-time{font-size:10px;color:var(--color-text-secondary);margin-top:2px;}

.alert-box{margin:10px 14px;background:var(--A50);border:0.5px solid var(--A100);border-radius:var(--border-radius-md);padding:11px;}
.alert-t{font-size:12px;font-weight:500;color:var(--A600);margin-bottom:4px;}.alert-b{font-size:11px;color:var(--A400);line-height:1.6;}
.bot-nav{position:sticky;bottom:0;background:var(--color-background-primary);border-top:0.5px solid var(--color-border-tertiary);display:flex;padding:5px 0 9px;z-index:40;}
.nv{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;padding:3px;}.nv-ic{font-size:15px;}.nv-lb{font-size:10px;color:var(--color-text-secondary);}.nv.on .nv-lb{color:var(--B600);font-weight:500;}
.fab-wrap{display:flex;justify-content:flex-end;padding:0 14px;margin-top:-18px;position:relative;z-index:30;}
.fab{width:46px;height:46px;border-radius:50%;background:var(--B600);color:white;border:none;font-size:21px;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.42);display:flex;align-items:flex-end;justify-content:center;z-index:100;}
.modal{background:var(--color-background-primary);border-radius:16px 16px 0 0;padding:16px 15px 26px;width:100%;max-width:400px;max-height:85vh;overflow-y:auto;}
.mh{width:32px;height:4px;background:var(--color-border-tertiary);border-radius:2px;margin:0 auto 13px;}
.mt{font-size:14px;font-weight:500;margin-bottom:13px;color:var(--color-text-primary);}.mf{margin-bottom:10px;}.mlb{font-size:11px;color:var(--color-text-secondary);margin-bottom:3px;}
.min{width:100%;padding:8px 10px;border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);font-size:13px;background:var(--color-background-primary);color:var(--color-text-primary);}
.msel{width:100%;padding:8px 10px;border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);font-size:13px;background:var(--color-background-primary);color:var(--color-text-primary);}
.prod-box{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:10px;margin-bottom:10px;}
.prod-t{font-size:11px;font-weight:500;color:var(--color-text-primary);margin:10px 0 8px;}
/* 다중 제품 카드 (모달) */
.prod-card{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:10px;margin-bottom:7px;border:0.5px solid var(--color-border-tertiary);}
.prod-card-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.prod-card-t{font-size:11px;font-weight:500;color:var(--color-text-primary);}
.prod-rm{background:transparent;border:0.5px solid var(--R100);color:var(--R600);border-radius:20px;padding:2px 9px;font-size:10px;cursor:pointer;}
.prod-rm:hover{background:var(--R50);}
.btn-add-prod{width:100%;background:var(--B50);border:0.5px dashed var(--B100);color:var(--B600);border-radius:var(--border-radius-md);padding:8px;font-size:12px;font-weight:500;cursor:pointer;margin-top:2px;}
.btn-add-prod:hover{background:var(--B100);}
/* 출고 메타 박스 */
.ship-box{background:var(--T50);border:0.5px solid var(--T100);border-radius:var(--border-radius-md);padding:10px;margin:0 0 10px;}
.ship-box .prod-t{margin-top:0;color:var(--T800);}
/* 상세 모달 제품 테이블 */
.prod-tbl{width:100%;border-collapse:collapse;font-size:11px;margin-top:4px;}
.prod-tbl th{background:var(--color-background-secondary);color:var(--color-text-secondary);font-weight:500;padding:5px 6px;text-align:left;border-bottom:0.5px solid var(--color-border-tertiary);}
.prod-tbl td{padding:5px 6px;border-bottom:0.5px solid var(--color-border-tertiary);color:var(--color-text-primary);}
.prod-tbl tr.prod-tot td{background:var(--B50);font-weight:500;color:var(--B800);}
/* 일일 카드 부적합 사유 */
.bdet-fail{color:var(--R600);background:var(--R50);border:0.5px solid var(--R100);border-radius:4px;padding:3px 6px;margin-top:3px;font-weight:500;}
.bdet-more{font-style:italic;opacity:.85;}
.mr2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:7px;}
.mr4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;}
.tgsel{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;max-height:200px;overflow-y:auto;}
.topt{padding:6px 2px;text-align:center;font-size:11px;border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);cursor:pointer;color:var(--color-text-primary);background:var(--color-background-primary);}
.topt.sel{background:var(--B600);color:white;border-color:var(--B600);}.topt.ti{background:var(--B50);color:var(--B800);border-color:var(--B100);}.topt.to{background:var(--T50);color:var(--T800);border-color:var(--T100);}.topt.tb{background:var(--A50);color:var(--A600);border-color:var(--A100);}.topt.tt{background:var(--GR50);color:var(--GR600);border-color:var(--GR100);}
.topt.busy,.fine-opt.busy{background:repeating-linear-gradient(45deg,#F1EFE8,#F1EFE8 4px,#E3E2DB 4px,#E3E2DB 8px);color:#888780;border-color:#D3D1C7;cursor:not-allowed;opacity:.75;}
.muted-hint{font-size:10px;color:var(--color-text-secondary);font-weight:400;}
.adj-preview{font-size:11px;color:var(--B800);background:var(--B50);border:0.5px solid var(--B100);border-radius:var(--border-radius-md);padding:6px 10px;margin-top:8px;text-align:center;min-height:14px;}
.auto-val{background:var(--B50);border-color:var(--B100);color:var(--B800);font-weight:500;}
.calc-hint{font-size:10px;color:var(--color-text-secondary);margin-top:4px;text-align:center;}
.btn-row{display:flex;gap:7px;margin-top:13px;}
.btn{flex:1;padding:10px;border-radius:var(--border-radius-md);font-size:13px;font-weight:500;cursor:pointer;border:none;}
.btn-p{background:var(--B600);color:white;}.btn-s{background:var(--color-background-secondary);color:var(--color-text-primary);}.btn-d{background:var(--R400);color:white;}
.fine-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;max-height:180px;overflow-y:auto;}
.fine-opt{padding:6px 2px;text-align:center;font-size:11px;border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);cursor:pointer;color:var(--color-text-primary);background:var(--color-background-primary);}
.fine-opt.sel{background:var(--B600);color:white;border-color:var(--B600);}
.dur-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-top:6px;}
.dur-opt{padding:5px 2px;text-align:center;font-size:11px;border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);cursor:pointer;color:var(--color-text-primary);background:var(--color-background-primary);}
.dur-opt.sel{background:var(--T600);color:white;border-color:var(--T600);}
.info-tbl{width:100%;font-size:12px;border-collapse:collapse;}.info-tbl td{padding:4px 0;vertical-align:top;color:var(--color-text-primary);}.info-tbl td:first-child{color:var(--color-text-secondary);width:70px;}
.qc-ar{display:flex;gap:5px;margin-bottom:7px;flex-wrap:wrap;}
.qca{padding:6px 14px;border-radius:20px;font-size:12px;cursor:pointer;border:0.5px solid;font-weight:500;}
.qca-hold{background:var(--A50);color:var(--A600);border-color:var(--A100);}.qca-cust{background:var(--P50);color:var(--P600);border-color:var(--P100);}.qca-rm{background:var(--C50);color:var(--C600);border-color:var(--C100);}
.push-banner{position:fixed;top:46px;left:0;right:0;margin:0 auto;max-width:380px;z-index:200;background:var(--color-background-primary);border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:10px 13px;display:flex;align-items:flex-start;gap:10px;opacity:0;transform:translateY(-8px);transition:opacity .35s,transform .35s;pointer-events:none;box-shadow:0 4px 16px rgba(0,0,0,.12);}
.push-banner.show{opacity:1;transform:translateY(0);pointer-events:auto;}
.push-app-icon{width:32px;height:32px;background:var(--B600);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;}
.push-body{flex:1;min-width:0;}.push-hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px;}
.push-app-name{font-size:10px;font-weight:500;color:var(--color-text-secondary);}
.push-title{font-size:12px;font-weight:500;color:var(--color-text-primary);margin-bottom:1px;}
.push-msg{font-size:11px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.push-close{font-size:14px;color:var(--color-text-secondary);cursor:pointer;flex-shrink:0;}
.toast{position:fixed;top:8px;left:0;right:0;margin:0 auto;max-width:372px;background:#2C2C2A;color:white;padding:8px 14px;border-radius:var(--border-radius-md);font-size:11px;z-index:300;opacity:0;transition:opacity .3s;pointer-events:none;text-align:center;}
.toast.show{opacity:1;}
.reg-hint{font-size:10px;color:var(--color-text-secondary);margin-top:4px;line-height:1.5;}
.pacc{background:var(--A50);border:0.5px solid var(--A100);border-radius:var(--border-radius-md);padding:10px 12px;margin:0 14px 7px;}
.pacc-t{font-size:12px;font-weight:500;color:var(--A600);}
.pacc-s{font-size:11px;color:var(--A400);margin-top:2px;line-height:1.5;}
.pacc-btns{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px;}
.pacc-btn{padding:7px;border-radius:var(--border-radius-md);font-size:12px;font-weight:500;border:none;cursor:pointer;}
.pacc-btn.ok{background:var(--B600);color:white;}
.pacc-btn.no{background:var(--color-background-primary);color:var(--color-text-primary);border:0.5px solid var(--color-border-tertiary);}

/* ════════════════════════════════════════════════
   예약 현황 페이지
   ════════════════════════════════════════════════ */
.status-toolbar{padding:10px 14px 8px;}
.status-filters{display:grid;grid-template-columns:1fr 1fr;gap:7px;}
.sf{display:flex;flex-direction:column;gap:3px;}
.sf label{font-size:11px;color:var(--color-text-secondary);}
.sf input{padding:8px 10px;border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);font-size:13px;font-family:inherit;background:var(--color-background-primary);}
.sf-grow{grid-column:1/-1;}
.sf-presets{grid-column:1/-1;display:flex;gap:5px;margin-top:2px;flex-wrap:wrap;}
.stp{flex:1;min-width:60px;padding:5px 8px;font-size:11px;border:0.5px solid var(--color-border-tertiary);background:var(--color-background-primary);color:var(--color-text-secondary);border-radius:20px;cursor:pointer;}
.stp.stp-wide{flex:1.4;background:var(--B50);color:var(--B600);border-color:var(--B100);font-weight:500;}
.stp:hover{background:var(--B50);color:var(--B600);border-color:var(--B100);}
.status-meta{font-size:11px;color:var(--color-text-secondary);margin-top:10px;padding:6px 10px;background:var(--color-background-secondary);border-radius:var(--border-radius-md);text-align:center;}
.status-split{display:grid;grid-template-columns:1fr;gap:14px;padding:0 14px 14px;}
.status-split.single{grid-template-columns:1fr;}
@media (min-width: 760px){
  .status-split{grid-template-columns:1fr 1fr;}
  .status-split.single{grid-template-columns:1fr;}
}
.status-col{min-width:0;}
.status-col-hd{font-size:13px;font-weight:600;padding:8px 10px;border-radius:var(--border-radius-md) var(--border-radius-md) 0 0;margin-bottom:6px;display:flex;align-items:center;gap:6px;}
.status-col-hd.cb{background:var(--B50);color:var(--B800);border:0.5px solid var(--B100);border-bottom:2px solid var(--B600);}
.status-col-hd.cr{background:var(--R50);color:var(--R600);border:0.5px solid var(--R100);border-bottom:2px solid var(--R400);}
.status-col-cnt{font-size:11px;font-weight:400;opacity:.8;}
.st-day-hd{font-size:12px;font-weight:600;color:var(--B800);padding:14px 4px 6px;border-bottom:1px solid var(--B100);margin-bottom:7px;}
.st-day-cnt{font-size:10px;color:var(--color-text-secondary);font-weight:400;margin-left:4px;}
.st-card{background:var(--color-background-primary);border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:10px 12px;margin-bottom:8px;}
.st-card.cb{border-left:3px solid var(--B600);}
.st-card.cr{border-left:3px solid var(--R400);}
.st-hd{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap;}
.st-time{font-weight:600;font-size:13px;color:var(--color-text-primary);min-width:55px;}
.st-co{flex:1;font-size:12px;color:var(--color-text-primary);font-weight:500;min-width:140px;}
.st-st{font-size:10px;padding:2px 8px;border-radius:20px;font-weight:500;flex-shrink:0;}
.st-st.sb-pending{background:var(--A50);color:var(--A600);}
.st-st.sb-approved{background:var(--G50);color:var(--G600);}
.st-st.sb-rejected{background:var(--R50);color:var(--R600);}
.st-prod-tbl{width:100%;border-collapse:collapse;font-size:11px;margin-top:4px;}
.st-prod-tbl th{background:var(--color-background-secondary);color:var(--color-text-secondary);font-weight:500;padding:5px 7px;text-align:left;border-bottom:0.5px solid var(--color-border-tertiary);font-size:10px;}
.st-prod-tbl td{padding:5px 7px;border-bottom:0.5px solid var(--color-border-tertiary);color:var(--color-text-primary);}
.st-prod-tbl td.num,.st-prod-tbl th.num{text-align:right;}
.st-extra{font-size:11px;color:var(--T800);background:var(--T50);border:0.5px solid var(--T100);padding:5px 9px;border-radius:var(--border-radius-md);margin-top:6px;}
.st-reject{font-size:11px;color:var(--R600);background:var(--R50);border:0.5px solid var(--R100);padding:5px 9px;border-radius:var(--border-radius-md);margin-top:6px;}

/* 데스크탑 폭에서 status 페이지 가독성 */
@media (min-width: 900px){
  #page-status .status-toolbar{padding:14px 28px 10px;}
  #page-status .status-split{padding:0 28px 14px;}
  #page-status .status-filters{grid-template-columns:160px 160px 1fr auto;align-items:end;}
  #page-status .sf-grow{grid-column:auto;}
  #page-status .sf-presets{grid-column:auto;margin-top:0;}
  #page-status .stp{padding:8px 14px;font-size:12px;}
}

/* ════════════════════════════════════════════════
   반응형 — 데스크탑/태블릿 와이드 레이아웃 (≥ 900px)
   PC 에서는 화면을 가득 채우고, 콘텐츠 가독성을 위해
   섹션별로 적절한 폭 제한만 둠. 모바일은 변경 없음.
   ════════════════════════════════════════════════ */
@media (min-width: 900px) {
  html, body { background: var(--color-background-primary); }
  .app {
    max-width: none;            /* 전체 폭 사용 */
    width: 100%;
    margin: 0;
    padding-bottom: 24px;
    border-radius: 0;
    box-shadow: none;
  }

  /* 로그인 화면은 가독성 위해 좁게 유지, 가운데 정렬 */
  #loginScreen .lw { max-width: 420px; margin: 0 auto; padding-top: 60px; padding-bottom: 60px; }
  #loginScreen .brand-footer { max-width: 420px; margin: 0 auto; }

  /* 헤더 — 전체 폭, 패딩만 늘림 */
  .hdr { padding: 14px 28px 12px; }
  .hdr h1 { font-size: 17px; }
  .hdr-date { font-size: 12px; }

  /* 상단 탭 바 — 더 큰 폰트, 풀폭 */
  .tab { padding: 12px 4px; font-size: 14px; }

  /* 통계 행 — 전체 폭 활용 */
  .stat-row { padding: 12px 28px; gap: 12px; }
  .stat-row .sc { padding: 14px 18px; }
  .stat-row .sn { font-size: 24px; }

  /* 주간 캘린더 스트립 — 풀폭 */
  .wstrip { padding: 12px 28px; }

  /* 빈 슬롯·예약 카드 영역 — 풀폭 + 적당한 좌우 패딩 */
  #bookingList, #weekContent, #reportContent { padding: 0 28px; }

  /* 퀵 / 택배 리스트 — auto-fill 그리드 (창 폭에 따라 컬럼 수 자동) */
  #parcelList {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
    gap: 12px;
    padding: 0 28px 10px;
  }
  #parcelList .pcl-card { margin-bottom: 0; }
  #parcelList .empty-state { grid-column: 1 / -1; }

  /* 퀵·택배 탭 상단 영역 — 풀폭 */
  #page-quick > .frow, #page-quick > .divx { padding-left: 28px; padding-right: 28px; }

  /* 알림 페이지 카드들 — 가독성 위해 폭 제한 + 가운데 (긴 텍스트가 너무 늘어지지 않게) */
  #page-notif { padding: 0 28px; }
  #page-notif > * { max-width: 920px; margin-left: auto; margin-right: auto; }

  /* 모달 — 가운데 다이얼로그 */
  .modal-bg { align-items: center; }
  .modal {
    max-width: 620px;
    border-radius: 16px;
    padding: 22px 24px 26px;
    max-height: 88vh;
  }
  .mh { display: none; }

  /* 푸시 배너·토스트 — 더 크게, 가운데 */
  .push-banner { max-width: 520px; left: 50%; right: auto; transform: translate(-50%, -8px); }
  .push-banner.show { transform: translate(-50%, 0); }
  .toast { max-width: 480px; font-size: 12px; padding: 10px 18px; top: 14px; }

  /* 하단 네비 바 — 풀폭, sticky 해제 (PC 에서는 컨텐츠 아래 자연 위치) */
  .bot-nav { position: static; padding: 8px 0 12px; }
  .nv-lb { font-size: 12px; }
  .nv-ic { font-size: 19px; }

  /* FAB — 우측 끝 (앱 폭 안에서) */
  .fab-wrap { padding: 0 32px; }
}

/* 알림 페이지 회원 관리 그리드 — 와이드 화면에서 2~3컬럼 */
@media (min-width: 1100px) {
  .members-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
}
@media (min-width: 1600px) {
  .members-list { grid-template-columns: repeat(3, 1fr); }
}
