*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --c-bg:#fff;--c-bg2:#f5f5f3;--c-bg3:#efefed;
  --c-bg-info:#e6f1fb;--c-bg-ok:#eaf3de;--c-bg-warn:#faeeda;--c-bg-err:#fcebeb;
  --c-tx:#1a1a18;--c-tx2:#73726c;--c-tx3:#b0b0a8;
  --c-tx-info:#185fa5;--c-tx-ok:#3b6d11;--c-tx-warn:#854f0b;--c-tx-err:#a32d2d;
  --c-bd:rgba(0,0,0,.09);--c-bd2:rgba(0,0,0,.16);
  --accent:#1a3a6b;--accent-l:#e8edf5;
  --r-sm:6px;--r-md:8px;--r-lg:12px;
  --sb-w:210px;--tb-h:48px;
  --font:-apple-system,'Pretendard','Apple SD Gothic Neo','Segoe UI',sans-serif;
}
@media(prefers-color-scheme:dark){:root{
  --c-bg:#1c1c1a;--c-bg2:#252523;--c-bg3:#2c2c2a;
  --c-bg-info:#0c2a46;--c-bg-ok:#132607;--c-bg-warn:#2d1c04;--c-bg-err:#2c0f0f;
  --c-tx:#f0efe8;--c-tx2:#a8a79f;--c-tx3:#606060;
  --c-tx-info:#85b7eb;--c-tx-ok:#97c459;--c-tx-warn:#fac775;--c-tx-err:#f09595;
  --c-bd:rgba(255,255,255,.09);--c-bd2:rgba(255,255,255,.16);--accent-l:#1a2a40;
}}
html,body{height:100%;font-family:var(--font);font-size:13px;color:var(--c-tx);background:var(--c-bg3)}
button,select,input,textarea{font-family:inherit;font-size:12px;outline:none}
button{cursor:pointer}
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-thumb{background:var(--c-bd2);border-radius:2px}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* ══ AUTH ══ */
.auth-wrap{position:fixed;inset:0;background:var(--accent);display:flex;align-items:center;justify-content:center;padding:20px;z-index:1000;overflow-y:auto}
.auth-card{background:var(--c-bg);border-radius:18px;width:100%;max-width:460px;padding:36px;animation:fadeUp .4s ease}
.auth-logo{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:24px}
.auth-logo img{height:32px;object-fit:contain}
.logo-fallback{display:none;align-items:center;gap:10px}
.logo-svg{width:30px;height:30px}
.logo-name{font-size:17px;font-weight:700;color:var(--accent);letter-spacing:-.02em}
.auth-subtitle{font-size:11px;color:var(--c-tx2);text-align:center}
.auth-tabs{display:flex;border:.5px solid var(--c-bd2);border-radius:var(--r-md);overflow:hidden;margin-bottom:22px}
.auth-tab{flex:1;padding:9px;text-align:center;font-size:12px;font-weight:500;cursor:pointer;color:var(--c-tx2);background:var(--c-bg);transition:all .15s}
.auth-tab.active{background:var(--accent);color:#fff}
.fg{margin-bottom:13px}
.fl{display:block;font-size:11px;color:var(--c-tx2);margin-bottom:4px;font-weight:500}
.fi{width:100%;padding:9px 11px;border:1px solid var(--c-bd2);border-radius:var(--r-md);background:var(--c-bg);color:var(--c-tx);font-size:13px;transition:border-color .15s}
.fi:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(26,58,107,.08)}
.fi-hint{font-size:10px;color:var(--c-tx3);margin-top:3px}
.fi-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:400px){.fi-row{grid-template-columns:1fr}}
.auth-btn{width:100%;padding:11px;border:none;border-radius:var(--r-md);background:var(--accent);color:#fff;font-size:13px;font-weight:600;cursor:pointer;margin-top:4px;transition:opacity .15s;display:flex;align-items:center;justify-content:center;gap:7px}
.auth-btn:hover{opacity:.88}
.auth-btn:disabled{opacity:.5;cursor:not-allowed}
.auth-err{text-align:center;font-size:11px;color:var(--c-tx-err);margin-top:9px;min-height:16px}
.auth-ok{text-align:center;font-size:11px;color:var(--c-tx-ok);margin-top:9px;min-height:16px}

/* Pending */
.pending-wrap{position:fixed;inset:0;background:var(--accent);display:flex;align-items:center;justify-content:center;padding:20px;z-index:1000;display:none}
.pending-card{background:var(--c-bg);border-radius:18px;width:100%;max-width:420px;padding:36px;text-align:center;animation:fadeUp .4s ease}
.pending-icon{font-size:48px;margin-bottom:16px}
.pending-title{font-size:17px;font-weight:600;margin-bottom:8px}
.pending-desc{font-size:12px;color:var(--c-tx2);line-height:1.7;margin-bottom:20px}
.pending-info{background:var(--c-bg2);border-radius:var(--r-md);padding:12px 16px;font-size:11px;color:var(--c-tx2);text-align:left;margin-bottom:20px;line-height:1.8}
.pending-info strong{color:var(--c-tx)}

/* Site Select */
.sitesel-wrap{position:fixed;inset:0;background:var(--accent);display:flex;align-items:center;justify-content:center;padding:20px;z-index:1000;display:none;overflow-y:auto}
.sitesel-card{background:var(--c-bg);border-radius:18px;width:100%;max-width:540px;padding:36px;animation:fadeUp .4s ease}
.sitesel-title{font-size:17px;font-weight:600;text-align:center;margin-bottom:6px}
.sitesel-desc{font-size:11px;color:var(--c-tx2);text-align:center;margin-bottom:20px}
.sitesel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-bottom:20px}
.sitesel-item{border:1.5px solid var(--c-bd2);border-radius:var(--r-lg);padding:16px;cursor:pointer;transition:all .15s}
.sitesel-item:hover{border-color:var(--accent);background:var(--accent-l)}
.sitesel-item .si-name{font-size:14px;font-weight:600;margin-bottom:4px}
.sitesel-item .si-addr{font-size:10px;color:var(--c-tx2);line-height:1.5}
.sitesel-item .si-type{display:inline-block;font-size:9px;padding:2px 7px;border-radius:5px;background:var(--c-bg-info);color:var(--c-tx-info);margin-top:6px}
.sitesel-footer{display:flex;align-items:center;justify-content:space-between}
.sitesel-footer .sf-user{font-size:11px;color:var(--c-tx2)}

/* ══ APP LAYOUT ══ */
.app{display:flex;height:100vh;overflow:hidden;display:none}
.sidebar{width:var(--sb-w);flex-shrink:0;background:var(--c-bg);border-right:.5px solid var(--c-bd);display:flex;flex-direction:column;transition:width .22s ease;position:relative;z-index:20}
.sidebar.collapsed{width:52px}
@media(max-width:768px){.sidebar{position:fixed;top:0;left:0;height:100%;transform:translateX(-100%);width:var(--sb-w)!important;box-shadow:4px 0 20px rgba(0,0,0,.15)}.sidebar.mobile-open{transform:translateX(0)}}
.sb-logo{height:var(--tb-h);display:flex;align-items:center;gap:10px;padding:0 14px;border-bottom:.5px solid var(--c-bd);flex-shrink:0;overflow:hidden}
.sb-logo img{height:20px;object-fit:contain;flex-shrink:0}
.sb-logo-t{overflow:hidden;transition:opacity .15s;white-space:nowrap}
.sidebar.collapsed .sb-logo-t{opacity:0;pointer-events:none}
.sb-appname{font-size:10px;font-weight:600;color:var(--c-tx2);letter-spacing:.04em;margin-top:1px}
.col-btn{position:absolute;top:13px;right:-11px;width:22px;height:22px;border-radius:50%;background:var(--c-bg);border:.5px solid var(--c-bd2);display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--c-tx2);cursor:pointer;z-index:5}
.col-btn:hover{background:var(--c-bg2)}
@media(max-width:768px){.col-btn{display:none}}
.sb-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:8px 0}
.sb-sec{padding:10px 14px 3px;font-size:9px;color:var(--c-tx3);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;transition:opacity .15s}
.sidebar.collapsed .sb-sec{opacity:0}
.ni{display:flex;align-items:center;gap:10px;padding:7px 14px;cursor:pointer;transition:background .1s;user-select:none;position:relative}
.ni:hover{background:var(--c-bg2)}
.ni.active{background:var(--c-bg-info)}
.ni.active .nic,.ni.active .nil{color:var(--c-tx-info)}
.ni.active .nil{font-weight:500}
.ni.locked{opacity:.3;pointer-events:none}
.nic{width:18px;height:18px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--c-tx2)}
.nil{font-size:12px;color:var(--c-tx2);white-space:nowrap;overflow:hidden;transition:opacity .15s}
.sidebar.collapsed .nil{opacity:0;pointer-events:none}
.nb{margin-left:auto;font-size:9px;padding:1px 6px;border-radius:10px;flex-shrink:0;transition:opacity .15s}
.sidebar.collapsed .nb{opacity:0}
.nb-r{background:var(--c-bg-err);color:var(--c-tx-err)}
.nb-a{background:var(--c-bg-warn);color:var(--c-tx-warn)}
.nb-g{background:var(--c-bg-ok);color:var(--c-tx-ok)}
.sb-footer{border-top:.5px solid var(--c-bd);padding:10px 14px;display:flex;align-items:center;gap:9px;cursor:pointer;transition:background .1s;overflow:hidden}
.sb-footer:hover{background:var(--c-bg2)}
.avatar{width:28px;height:28px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600}
.av-a{background:var(--c-bg-info);color:var(--c-tx-info)}.av-m{background:var(--c-bg-ok);color:var(--c-tx-ok)}.av-w{background:var(--c-bg-warn);color:var(--c-tx-warn)}.av-v{background:var(--c-bg2);color:var(--c-tx2)}
.sb-site-sel{padding:6px 12px;border-bottom:.5px solid var(--c-bd);background:var(--accent-l)}
.sb-site-sel select{width:100%;padding:5px 8px;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);background:var(--c-bg);color:var(--c-tx);font-size:11px;font-weight:500}
.sb-site-sel .site-label{font-size:9px;color:var(--c-tx2);margin-bottom:3px;letter-spacing:.03em}
.sb-user{overflow:hidden;transition:opacity .15s;min-width:0}
.sidebar.collapsed .sb-user{opacity:0}
.sb-uname{font-size:11px;font-weight:500;white-space:nowrap}
.sb-urole{font-size:9px;color:var(--c-tx3);white-space:nowrap}

/* Topbar */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.topbar{height:var(--tb-h);flex-shrink:0;background:var(--c-bg);border-bottom:.5px solid var(--c-bd);display:flex;align-items:center;padding:0 16px;gap:10px;position:relative}
.hamburger{display:none;width:32px;height:32px;border:none;background:none;flex-direction:column;align-items:center;justify-content:center;gap:5px;cursor:pointer}
.hamburger span{width:18px;height:2px;background:var(--c-tx2);border-radius:1px;display:block}
@media(max-width:768px){.hamburger{display:flex}}
.bc{display:flex;align-items:center;gap:5px;font-size:12px}
.bc-root{color:var(--c-tx3);font-size:11px}.bc-sep{color:var(--c-tx3)}.bc-cur{font-weight:500}
.tb-right{margin-left:auto;display:flex;align-items:center;gap:7px;flex-shrink:0}
.fc{padding:5px 8px;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);background:var(--c-bg);color:var(--c-tx);font-size:11px}
.notif-btn{position:relative;width:32px;height:32px;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;background:var(--c-bg);transition:background .1s}
.notif-btn:hover{background:var(--c-bg2)}
.notif-pip{position:absolute;top:5px;right:5px;width:7px;height:7px;border-radius:50%;background:#e24b4a;border:1.5px solid var(--c-bg)}
.notif-drop{position:absolute;top:calc(var(--tb-h) + 6px);right:8px;width:320px;max-width:calc(100vw - 20px);background:var(--c-bg);border:.5px solid var(--c-bd2);border-radius:var(--r-lg);box-shadow:0 6px 24px rgba(0,0,0,.1);z-index:100;display:none}
.notif-drop.open{display:block}
.nd-hd{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:.5px solid var(--c-bd)}
.nd-title{font-size:13px;font-weight:500}.nd-clear{font-size:11px;color:var(--c-tx-info);cursor:pointer}
.nd-item{display:flex;gap:9px;padding:9px 14px;border-bottom:.5px solid var(--c-bd);cursor:pointer;transition:background .1s}
.nd-item:hover{background:var(--c-bg2)}.nd-item.unread{background:var(--c-bg-info)}.nd-item:last-child{border-bottom:none}
.nd-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;margin-top:4px}
.nd-msg{font-size:11px;line-height:1.5}.nd-time{font-size:10px;color:var(--c-tx3);margin-top:2px}
.nd-ft{padding:9px;text-align:center;font-size:11px;color:var(--c-tx-info);cursor:pointer;border-top:.5px solid var(--c-bd)}
.tb-btn{padding:5px 10px;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);background:var(--c-bg);color:var(--c-tx2);font-size:11px;transition:background .1s}
.tb-btn:hover{background:var(--c-bg2)}
.tb-primary{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:500}
.tb-primary:hover{opacity:.88}
.logout-btn{padding:4px 9px;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);background:none;color:var(--c-tx2);font-size:11px;cursor:pointer;transition:background .1s}
.logout-btn:hover{background:var(--c-bg-err);color:var(--c-tx-err)}
.site-switch-btn{padding:4px 9px;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);background:none;color:var(--c-tx-info);font-size:11px;cursor:pointer;transition:background .1s}
.site-switch-btn:hover{background:var(--c-bg-info)}
@media(max-width:560px){.tb-primary,.logout-btn,.site-switch-btn{display:none}}
.mob-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:19}
.mob-overlay.open{display:block}

/* Content */
.content{flex:1;overflow-y:auto;padding:16px}
@media(max-width:600px){.content{padding:12px}}
.screen{display:none}.screen.active{display:block;animation:fadeUp .2s ease}

/* Common */
.btn{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);background:var(--c-bg);color:var(--c-tx2);transition:background .1s;cursor:pointer;font-size:11px}
.btn:hover{background:var(--c-bg2)}
.btn-p{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:500}.btn-p:hover{opacity:.88}
.btn-ok{background:var(--c-bg-ok);color:var(--c-tx-ok);border-color:rgba(59,109,17,.25)}
.btn-err{border-color:rgba(162,45,45,.3);color:var(--c-tx-err)}
.btn-sm{padding:3px 8px;font-size:10px}
.card{background:var(--c-bg);border:.5px solid var(--c-bd);border-radius:var(--r-lg);padding:14px}
.card-title{font-size:12px;font-weight:500;color:var(--c-tx2);margin-bottom:10px}
.kpi-g{display:grid;gap:8px;margin-bottom:12px}
.kpi-g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.kpi-g8{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:900px){.kpi-g4,.kpi-g8{grid-template-columns:repeat(2,1fr)}}
@media(max-width:500px){.kpi-g4,.kpi-g8{grid-template-columns:repeat(2,1fr)}}
.kpi{background:var(--c-bg2);border-radius:var(--r-md);padding:11px 13px}
.kpi-l{font-size:10px;color:var(--c-tx2);margin-bottom:3px}.kpi-v{font-size:20px;font-weight:500;line-height:1.1}.kpi-s{font-size:9px;color:var(--c-tx3);margin-top:3px}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
@media(max-width:800px){.g2,.g3{grid-template-columns:1fr}}
table{width:100%;border-collapse:collapse;font-size:11px}
th{padding:7px 9px;text-align:left;font-weight:500;color:var(--c-tx2);border-bottom:.5px solid var(--c-bd);background:var(--c-bg2);white-space:nowrap}
td{padding:7px 9px;border-bottom:.5px solid var(--c-bd);white-space:nowrap;vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover td{background:var(--c-bg2);cursor:pointer}
.tw{border:.5px solid var(--c-bd);border-radius:var(--r-lg);overflow:hidden;background:var(--c-bg)}.ts{overflow-x:auto}
.tag{display:inline-block;font-size:9px;padding:2px 7px;border-radius:5px;font-weight:500;white-space:nowrap}
.t-bl{background:var(--c-bg-info);color:var(--c-tx-info)}.t-gn{background:var(--c-bg-ok);color:var(--c-tx-ok)}.t-am{background:var(--c-bg-warn);color:var(--c-tx-warn)}.t-rd{background:var(--c-bg-err);color:var(--c-tx-err)}.t-gy{background:var(--c-bg2);color:var(--c-tx2)}
.t-long{background:#f3e8ff;color:#7c3aed}
.pb{height:4px;background:var(--c-bd);border-radius:2px;margin-top:4px}.pf{height:100%;border-radius:2px}
.tabs-bar{display:flex;border-bottom:.5px solid var(--c-bd);margin-bottom:14px;overflow-x:auto}
.tab{padding:8px 14px;font-size:12px;cursor:pointer;color:var(--c-tx2);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;flex-shrink:0;transition:color .1s}
.tab:hover{color:var(--c-tx)}.tab.active{color:var(--c-tx);border-bottom-color:var(--accent);font-weight:500}
.tab-body{display:none}.tab-body.active{display:block}
.sfc{width:100%;padding:7px 10px;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);background:var(--c-bg);color:var(--c-tx)}
.sfc:focus{border-color:var(--accent)}
.sfl{display:block;font-size:10px;color:var(--c-tx2);margin-bottom:3px}
.sfg{margin-bottom:12px}
textarea.sfc{resize:vertical;line-height:1.6}
.p-overlay{position:fixed;inset:0;background:rgba(0,0,0,.15);z-index:50;display:none}
.p-overlay.open{display:block}
.sp{position:fixed;top:0;right:-560px;width:540px;max-width:100vw;height:100%;background:var(--c-bg);border-left:.5px solid var(--c-bd2);z-index:51;transition:right .22s ease;overflow-y:auto;padding:0}
.sp.open{right:0}
.sp-hd{display:flex;align-items:flex-start;justify-content:space-between;padding:16px 18px;border-bottom:.5px solid var(--c-bd)}
.sp-close{background:none;border:none;font-size:20px;color:var(--c-tx2);cursor:pointer;padding:0 4px;line-height:1}
.ptabs{display:flex;border-bottom:.5px solid var(--c-bd);overflow-x:auto}
.ptab{padding:6px 11px;font-size:11px;cursor:pointer;color:var(--c-tx2);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.ptab.active{color:var(--c-tx);border-bottom-color:var(--accent);font-weight:500}
.ptab-body{display:none;padding:16px 18px}.ptab-body.active{display:block}
.ir{display:flex;gap:8px;padding:5px 0;border-bottom:.5px solid var(--c-bd);font-size:11px}
.ir:last-child{border-bottom:none}.il{color:var(--c-tx2);min-width:72px;flex-shrink:0}
.mo{position:fixed;inset:0;background:rgba(0,0,0,.25);z-index:200;display:none;align-items:center;justify-content:center;padding:16px}
.mo.open{display:flex}
.modal{background:var(--c-bg);border:.5px solid var(--c-bd2);border-radius:var(--r-lg);padding:22px;width:520px;max-width:100%;max-height:90vh;overflow-y:auto}
.modal-title{font-size:14px;font-weight:500;margin-bottom:16px}
.mf{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--c-tx);color:var(--c-bg);font-size:12px;padding:9px 18px;border-radius:var(--r-md);z-index:999;opacity:0;transition:opacity .2s;pointer-events:none;white-space:nowrap;max-width:90vw;text-align:center}
.toast.show{opacity:1}
.chip{font-size:11px;padding:5px 14px;border:.5px solid var(--c-bd2);border-radius:20px;cursor:pointer;color:var(--c-tx2);background:var(--c-bg);transition:all .1s}
.chip:hover{background:var(--c-bg2)}.chip.active{background:var(--c-bg-info);color:var(--c-tx-info);border-color:rgba(24,95,165,.3)}
.fl-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:.5px solid var(--c-bd);font-size:11px}
.fl-row:last-child{border-bottom:none}
.fl-name{min-width:64px;color:var(--c-tx2)}.fl-bw{flex:1;height:7px;background:var(--c-bg2);border-radius:4px;overflow:hidden}.fl-b{height:100%;border-radius:4px;background:var(--accent)}
.cb-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:.5px solid var(--c-bd);font-size:11px}
.cb-row:last-child{border-bottom:none}.cb-name{min-width:100px}.cb-bw{flex:1;height:7px;background:var(--c-bg2);border-radius:4px;overflow:hidden}.cb-b{height:100%;border-radius:4px}.cb-amt{min-width:55px;text-align:right;font-size:10px;color:var(--c-tx2)}
.db-g{display:grid;grid-template-columns:1.4fr 1fr;gap:14px}
@media(max-width:960px){.db-g{grid-template-columns:1fr}}
.btm-g{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px;margin-top:14px}
@media(max-width:900px){.btm-g{grid-template-columns:1fr}}
.cw{position:relative}
.rp{display:inline-flex;align-items:center;font-size:10px;padding:3px 9px;border-radius:12px;font-weight:500}
.rp-a{background:var(--c-bg-info);color:var(--c-tx-info)}.rp-m{background:var(--c-bg-ok);color:var(--c-tx-ok)}.rp-w{background:var(--c-bg-warn);color:var(--c-tx-warn)}.rp-v{background:var(--c-bg2);color:var(--c-tx2)}
.rp-hq{background:#f0e6ff;color:#6b21a8}.rp-site{background:var(--c-bg-info);color:var(--c-tx-info)}.rp-partner{background:var(--c-bg-warn);color:var(--c-tx-warn)}.rp-etc{background:var(--c-bg2);color:var(--c-tx2)}
.pm{border:.5px solid var(--c-bd);border-radius:var(--r-lg);overflow:hidden;overflow-x:auto}
.pm-hd{display:grid;grid-template-columns:180px repeat(4,1fr);background:var(--c-bg2);border-bottom:.5px solid var(--c-bd);min-width:560px}
.pm-hc{padding:9px 10px;font-size:11px;font-weight:500;color:var(--c-tx2);display:flex;align-items:center;justify-content:center;border-right:.5px solid var(--c-bd)}
.pm-hc:first-child{justify-content:flex-start}.pm-hc:last-child{border-right:none}
.pm-row{display:grid;grid-template-columns:180px repeat(4,1fr);border-bottom:.5px solid var(--c-bd);min-width:560px}
.pm-row:last-child{border-bottom:none}
.pm-cell{padding:8px 10px;display:flex;align-items:center;justify-content:center;border-right:.5px solid var(--c-bd);font-size:11px;color:var(--c-tx2)}
.pm-cell:first-child{justify-content:flex-start}.pm-cell:last-child{border-right:none}
.toggle{width:34px;height:19px;border-radius:10px;position:relative;cursor:pointer;transition:background .15s;border:none}
.toggle::after{content:'';position:absolute;top:2.5px;width:14px;height:14px;border-radius:50%;background:#fff;transition:left .15s}
.toggle.on{background:var(--accent)}.toggle.on::after{left:17px}
.toggle.off{background:var(--c-bd2)}.toggle.off::after{left:2.5px}
.appr-card{border:.5px solid var(--c-bd);border-radius:var(--r-lg);overflow:hidden;background:var(--c-bg);margin-bottom:10px}
.appr-row{display:flex;align-items:center;gap:12px;padding:13px 16px;border-bottom:.5px solid var(--c-bd);flex-wrap:wrap}
.appr-row:last-child{border-bottom:none}
.appr-av{width:38px;height:38px;border-radius:50%;background:var(--accent-l);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;color:var(--accent);flex-shrink:0}
.appr-info{flex:1;min-width:0}
.appr-name{font-size:13px;font-weight:500}
.appr-meta{font-size:10px;color:var(--c-tx2);margin-top:2px;line-height:1.6}
.appr-actions{display:flex;gap:6px;align-items:center;flex-shrink:0;flex-wrap:wrap}
.appr-role-sel{font-size:11px;padding:4px 8px;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);background:var(--c-bg);color:var(--c-tx)}
.appr-date{font-size:10px;color:var(--c-tx3);white-space:nowrap}
.setup-panel{background:var(--accent-l);border:.5px solid rgba(26,58,107,.2);border-radius:var(--r-lg);padding:16px;margin-bottom:16px}
.setup-title{font-size:13px;font-weight:600;color:var(--accent);margin-bottom:8px}
.setup-step{display:flex;gap:10px;padding:6px 0;font-size:11px;color:var(--c-tx2);line-height:1.6}
.setup-num{width:20px;height:20px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;flex-shrink:0;margin-top:1px}
.setup-input-row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.setup-input{flex:1;min-width:140px;padding:7px 10px;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);background:var(--c-bg);color:var(--c-tx);font-size:12px}
.setup-saved{font-size:10px;color:var(--c-tx-ok);margin-top:5px}
.email-status{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:4px 10px;border-radius:12px}
.email-on{background:var(--c-bg-ok);color:var(--c-tx-ok)}.email-off{background:var(--c-bg2);color:var(--c-tx2)}
.urow{display:flex;align-items:center;gap:11px;padding:11px 16px;border-bottom:.5px solid var(--c-bd);transition:background .1s}
.urow:hover{background:var(--c-bg2)}.urow:last-child{border-bottom:none}
.uav{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;flex-shrink:0}
.rs-sec{margin-bottom:16px}
.rs-hd{font-size:12px;font-weight:500;padding:5px 10px;background:var(--c-bg2);border-left:3px solid var(--accent);border-radius:0 4px 4px 0;margin-bottom:8px}
.report-sheet{background:var(--c-bg);border:.5px solid var(--c-bd);border-radius:var(--r-lg);padding:24px}
.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}
.ms-wrap{display:flex;flex-wrap:wrap;gap:6px;padding:4px 0}
.ms-item{display:flex;align-items:center;gap:5px;font-size:11px;padding:4px 10px;border:.5px solid var(--c-bd2);border-radius:16px;cursor:pointer;transition:all .12s;user-select:none}
.ms-item:hover{background:var(--c-bg2)}
.ms-item.checked{background:var(--c-bg-info);border-color:rgba(24,95,165,.3);color:var(--c-tx-info)}
.ms-item input{display:none}
.site-card{border:.5px solid var(--c-bd);border-radius:var(--r-lg);padding:14px;background:var(--c-bg);transition:box-shadow .15s}
.site-card:hover{box-shadow:0 2px 12px rgba(0,0,0,.06)}
.site-card-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.site-card-name{font-size:14px;font-weight:600}
.site-card-meta{font-size:10px;color:var(--c-tx2);line-height:1.7}
.site-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}

/* ══ ORDER LIST FILTERS ══ */
.stat-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.stat-chip{font-size:12px;padding:6px 16px;border:1.5px solid var(--c-bd);border-radius:20px;cursor:pointer;color:var(--c-tx2);background:var(--c-bg);transition:all .12s;font-weight:500}
.stat-chip:hover{background:var(--c-bg2)}.stat-chip.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.filter-bar{background:var(--c-bg);border:.5px solid var(--c-bd);border-radius:var(--r-lg);padding:14px;margin-bottom:12px}
.filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.filter-row:last-child{margin-bottom:0}
.period-chips{display:flex;gap:0;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);overflow:hidden}
.period-chip{padding:5px 12px;font-size:11px;cursor:pointer;color:var(--c-tx2);background:var(--c-bg);border-right:.5px solid var(--c-bd2);transition:all .1s}
.period-chip:last-child{border-right:none}
.period-chip:hover{background:var(--c-bg2)}.period-chip.active{background:var(--accent);color:#fff}
.search-input{padding:6px 10px;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);background:var(--c-bg);color:var(--c-tx);font-size:11px;min-width:0}
.list-meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:11px}
.view-toggle{display:flex;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);overflow:hidden}
.view-toggle-btn{padding:5px 10px;font-size:11px;cursor:pointer;color:var(--c-tx2);background:var(--c-bg);border-right:.5px solid var(--c-bd2);transition:all .1s}
.view-toggle-btn:last-child{border-right:none}
.view-toggle-btn:hover{background:var(--c-bg2)}
.view-toggle-btn.active{background:var(--accent);color:#fff}

/* ══ Calendar ══ */
.cal-wrap{display:none}
.cal-wrap.active{display:block}
.cal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.cal-nav{display:flex;align-items:center;gap:10px}
.cal-nav button{width:28px;height:28px;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);background:var(--c-bg);color:var(--c-tx2);display:flex;align-items:center;justify-content:center;cursor:pointer}
.cal-nav button:hover{background:var(--c-bg2)}
.cal-month{font-size:14px;font-weight:600;min-width:120px;text-align:center}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);border:.5px solid var(--c-bd);border-radius:var(--r-lg);overflow:hidden}
.cal-day-hd{background:var(--c-bg2);padding:6px;text-align:center;font-size:10px;font-weight:500;color:var(--c-tx2);border-bottom:.5px solid var(--c-bd);border-right:.5px solid var(--c-bd)}
.cal-day-hd:nth-child(7n){border-right:none}
.cal-day-hd:first-child{color:#e24b4a}
.cal-cell{min-height:80px;padding:4px;border-bottom:.5px solid var(--c-bd);border-right:.5px solid var(--c-bd);background:var(--c-bg);font-size:10px;cursor:pointer;transition:background .1s;overflow:hidden}
.cal-cell:nth-child(7n+1){border-right:none;border-right:.5px solid var(--c-bd)}
.cal-cell:nth-child(7n){border-right:none}
.cal-cell:hover{background:var(--c-bg2)}
.cal-cell.other{background:var(--c-bg2);color:var(--c-tx3)}
.cal-cell.today .cal-num{background:var(--accent);color:#fff;border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center}
.cal-num{font-size:11px;font-weight:500;padding:2px;margin-bottom:2px}
.cal-item{font-size:9px;padding:1px 4px;border-radius:3px;margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.cal-item.st-접수{background:var(--c-bg-info);color:var(--c-tx-info)}
.cal-item.st-진행{background:var(--c-bg-warn);color:var(--c-tx-warn)}
.cal-item.st-완료{background:var(--c-bg-ok);color:var(--c-tx-ok)}
.cal-item.st-장기{background:#f3e8ff;color:#7c3aed}
.cal-item.st-대기{background:var(--c-bg2);color:var(--c-tx2)}

/* ══ Detail Panel Process ══ */
.process-bar{display:flex;align-items:center;padding:12px 18px;border-bottom:.5px solid var(--c-bd);gap:0;overflow-x:auto}
.process-step{display:flex;align-items:center;gap:4px;padding:5px 14px;border-radius:20px;font-size:11px;font-weight:500;cursor:pointer;transition:all .12s;white-space:nowrap;border:1.5px solid var(--c-bd)}
.process-step:hover{background:var(--c-bg2)}
.process-step.active{border-color:var(--accent);background:var(--accent);color:#fff}
.process-step.done{border-color:#3b6d11;background:var(--c-bg-ok);color:var(--c-tx-ok)}
.process-arrow{color:var(--c-tx3);font-size:14px;margin:0 4px;flex-shrink:0}
.deadline-tag{margin-left:auto;font-size:11px;padding:4px 12px;border:1.5px solid var(--c-bd);border-radius:6px;white-space:nowrap;font-weight:500}

/* Media upload */
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px;margin-top:8px}
.media-thumb{width:100%;aspect-ratio:1;background:var(--c-bg2);border-radius:var(--r-md);overflow:hidden;display:flex;align-items:center;justify-content:center;border:.5px solid var(--c-bd);position:relative}
.media-thumb img{width:100%;height:100%;object-fit:cover}
.media-thumb .del-media{position:absolute;top:3px;right:3px;width:18px;height:18px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;border:none;font-size:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .15s}
.media-thumb:hover .del-media{opacity:1}
.media-add{cursor:pointer;color:var(--c-tx3);font-size:20px;border:2px dashed var(--c-bd2);border-radius:var(--r-md)}
.media-label{display:flex;align-items:center;gap:4px;font-size:10px;color:var(--c-tx3);margin-top:2px}

/* Progress notes */
.note-item{border:.5px solid var(--c-bd);border-radius:var(--r-md);padding:10px;margin-bottom:8px;background:var(--c-bg)}
.note-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.note-author{font-size:11px;font-weight:500}
.note-date{font-size:10px;color:var(--c-tx3)}
.note-content{font-size:11px;line-height:1.7;color:var(--c-tx2);white-space:pre-wrap}
.note-actions{display:flex;gap:4px;margin-top:6px}

/* Evaluation */
.eval-card{border:.5px solid var(--c-bd);border-radius:var(--r-lg);padding:16px;background:var(--c-bg);margin-bottom:12px}
.eval-grade{display:flex;gap:8px;margin:10px 0}
.eval-grade-btn{width:56px;height:56px;border-radius:var(--r-lg);border:2px solid var(--c-bd2);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:all .15s;background:var(--c-bg);font-size:18px;font-weight:700}
.eval-grade-btn:hover{border-color:var(--accent);background:var(--accent-l)}
.eval-grade-btn.sel-A{border-color:#3b6d11;background:var(--c-bg-ok);color:#3b6d11}
.eval-grade-btn.sel-B{border-color:#854f0b;background:var(--c-bg-warn);color:#854f0b}
.eval-grade-btn.sel-C{border-color:#a32d2d;background:var(--c-bg-err);color:#a32d2d}
.eval-grade-btn .eval-label{font-size:8px;font-weight:500;margin-top:2px}
.eval-saved{background:var(--c-bg2);border-radius:var(--r-lg);padding:16px}
.eval-saved-grade{font-size:28px;font-weight:700;margin-bottom:4px}
.eval-saved-reason{font-size:11px;color:var(--c-tx2);line-height:1.7;white-space:pre-wrap}

/* Contract info in detail */
.contract-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;font-size:11px}
.contract-grid .cg-item{padding:6px 0;border-bottom:.5px solid var(--c-bd)}
.contract-grid .cg-label{color:var(--c-tx2);font-size:10px}
.contract-grid .cg-val{font-weight:500;margin-top:1px}

/* File attachment list */
.file-list{margin-top:8px}
.file-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border:.5px solid var(--c-bd);border-radius:var(--r-sm);margin-bottom:4px;font-size:11px;background:var(--c-bg)}
.file-item .file-icon{font-size:14px;flex-shrink:0}
.file-item .file-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-item .file-del{background:none;border:none;color:var(--c-tx3);cursor:pointer;font-size:12px;padding:0 4px}
.file-item .file-del:hover{color:var(--c-tx-err)}

/* Dashboard category cards */
.db-cat-tabs{display:flex;gap:0;border:.5px solid var(--c-bd2);border-radius:var(--r-md);overflow:hidden;margin-bottom:14px}
.db-cat-tab{flex:1;padding:10px 14px;text-align:center;font-size:12px;font-weight:500;cursor:pointer;color:var(--c-tx2);background:var(--c-bg);transition:all .12s;border-right:.5px solid var(--c-bd2)}
.db-cat-tab:last-child{border-right:none}
.db-cat-tab:hover{background:var(--c-bg2)}
.db-cat-tab.active{background:var(--accent);color:#fff}
.db-cat-tab .cat-count{font-size:16px;font-weight:700;display:block;line-height:1.2}
.db-site-card{background:var(--c-bg);border:.5px solid var(--c-bd);border-radius:var(--r-lg);padding:14px;cursor:pointer;transition:box-shadow .15s,border-color .15s}
.db-site-card:hover{box-shadow:0 3px 12px rgba(0,0,0,.07);border-color:var(--accent)}
.db-site-card-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.db-site-card-name{font-size:13px;font-weight:600}
.db-site-card-cat{font-size:9px;padding:2px 8px;border-radius:10px}
.cat-본부회관{background:#dbeafe;color:#1e40af}
.cat-지점회관{background:#fef3c7;color:#92400e}
.cat-기술교육원{background:#ede9fe;color:#5b21b6}
.db-status-bar{display:flex;gap:2px;height:8px;border-radius:4px;overflow:hidden;margin-bottom:8px}
.db-status-bar div{height:100%;border-radius:2px}
.db-status-counts{display:flex;gap:0;border:.5px solid var(--c-bd);border-radius:var(--r-sm);overflow:hidden;font-size:10px}
.db-sc-item{flex:1;text-align:center;padding:4px 2px;border-right:.5px solid var(--c-bd);color:var(--c-tx2)}
.db-sc-item:last-child{border-right:none}
.db-sc-item strong{display:block;font-size:13px;color:var(--c-tx)}
.db-sites-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;margin-bottom:14px}

/* Report dynamic sections */
.rp-cat-select{display:flex;gap:0;border:.5px solid var(--c-bd2);border-radius:var(--r-sm);overflow:hidden;margin-bottom:10px}
.rp-cat-btn{flex:1;padding:6px 8px;text-align:center;font-size:11px;cursor:pointer;color:var(--c-tx2);background:var(--c-bg);border-right:.5px solid var(--c-bd2);transition:all .1s}
.rp-cat-btn:last-child{border-right:none}
.rp-cat-btn:hover{background:var(--c-bg2)}
.rp-cat-btn.active{background:var(--accent);color:#fff}
.rp-section{margin-bottom:16px;page-break-inside:avoid}
.rp-section-hd{font-size:12px;font-weight:500;padding:5px 10px;background:var(--c-bg2);border-left:3px solid var(--accent);border-radius:0 4px 4px 0;margin-bottom:8px}
.rp-tbl{width:100%;border-collapse:collapse;font-size:10px;margin-top:6px}
.rp-tbl th,.rp-tbl td{padding:5px 7px;border:.5px solid var(--c-bd);text-align:left}
.rp-tbl th{background:var(--c-bg2);font-weight:500;color:var(--c-tx2)}
.rp-photo-grid{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.rp-photo{width:60px;height:60px;background:var(--c-bg2);border-radius:var(--r-sm);border:.5px solid var(--c-bd);overflow:hidden}
.rp-photo img{width:100%;height:100%;object-fit:cover}
