:root{--bg:#f4f6f9;--card:#fff;--line:#e1e5eb;--text:#1f2933;--muted:#7b8794;--primary:#2563eb;--danger:#dc2626;--ok:#16a34a;--warn:#d97706}*{box-sizing:border-box}body{margin:0;font-family:"Pretendard","Malgun Gothic",sans-serif;background:var(--bg);color:var(--text);font-size:14px}a{color:var(--primary);text-decoration:none}h1{font-size:20px;margin:0}h3{margin:0 0 10px;font-size:15px}.muted{color:var(--muted)}.err{color:var(--danger)}.topbar{display:flex;align-items:center;gap:24px;padding:10px 20px;background:#111827;color:#fff}.topbar a{color:#e5e7eb}.topbar .brand{font-weight:700;color:#fff}.topbar nav{display:flex;gap:16px}.topbar .right{margin-left:auto;display:flex;gap:12px;align-items:center}.container{max-width:1400px;margin:0 auto;padding:20px 16px}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;flex-wrap:wrap;gap:10px}.actions{display:flex;gap:8px;flex-wrap:wrap}.actions form{margin:0}.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:16px;margin-bottom:14px}.btn{display:inline-block;padding:8px 14px;border:1px solid var(--line);background:#fff;border-radius:6px;cursor:pointer;font-size:14px;color:var(--text)}.btn:hover{background:#f3f4f6}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.danger{color:var(--danger);border-color:#fca5a5}.flash{padding:10px 14px;border-radius:6px;margin-bottom:8px;background:#eef2ff}.flash.error{background:#fee2e2;color:#991b1b}.flash.success{background:#dcfce7;color:#166534}fieldset.card{border:1px solid var(--line)}legend{font-weight:700;padding:0 6px}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:12px}.field{display:flex;flex-direction:column;gap:4px}.w1{grid-column:span 1}.w2{grid-column:span 2}.w3{grid-column:span 3}.w4{grid-column:span 4}.w5{grid-column:span 5}.w6{grid-column:span 6}.w7{grid-column:span 7}.w8{grid-column:span 8}.w9{grid-column:span 9}.w10{grid-column:span 10}.w11{grid-column:span 11}.w12{grid-column:span 12}.field label{font-weight:600;font-size:13px}.field.required>label::after{content:" *";color:var(--danger)}.field small{color:var(--muted);font-size:12px}input,select,textarea{padding:8px;border:1px solid #cbd2d9;border-radius:6px;font:inherit;width:100%}input[type=checkbox],input[type=radio]{width:auto}.choices{display:flex;flex-wrap:wrap;gap:4px 14px;padding:6px 0}.chk{display:inline-flex;align-items:center;gap:4px;font-weight:400!important}.form-actions{display:flex;justify-content:flex-end;gap:8px;position:sticky;bottom:0;background:var(--bg);padding:12px 0}.summary{font-size:16px}.tabs{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}.tabs a{padding:6px 12px;border-radius:16px;background:#fff;border:1px solid var(--line);color:var(--text)}.tabs a.on{background:var(--text);color:#fff}.table-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:8px}table.list{width:100%;border-collapse:collapse;white-space:nowrap}table.list th,table.list td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left}table.list th{background:#f9fafb;font-size:13px}table.list tbody tr{cursor:pointer}table.list tbody tr:hover{background:#f8fafc}.empty{text-align:center;color:var(--muted);padding:30px!important}table.mini{width:100%;border-collapse:collapse}table.mini th,table.mini td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}tr.bad{background:#fef2f2}.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;background:#e5e7eb;margin:1px}.badge.warn{background:var(--warn);color:#fff}.st-대기{background:#e5e7eb}.st-등록중{background:#dbeafe;color:#1e40af}.st-배차완료{background:#dcfce7;color:#166534}.st-취소{background:#fee2e2;color:#991b1b}.ps-등록됨{background:#dbeafe;color:#1e40af}.ps-배차됨{background:#dcfce7;color:#166534}.ps-취소됨{background:#f3f4f6;color:#6b7280}.ps-실패{background:#fee2e2;color:#991b1b}.ps-중복배차{background:#dc2626;color:#fff;font-weight:700}.btn.sm{padding:4px 8px;font-size:12px;margin-top:4px}.card-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.inline-form{display:inline-flex;gap:4px;align-items:center;margin:0}.inline-form .btn.sm{margin-top:0}.users-table input{width:auto;padding:4px 6px}.users-table tbody tr{cursor:default}tr.muted td{color:var(--muted)}.two-col{display:grid;grid-template-columns:3fr 2fr;gap:14px}dl.kv{display:grid;grid-template-columns:140px 1fr;gap:6px 10px;margin:0}dl.kv dt{color:var(--muted)}dl.kv dd{margin:0}.dispatched{background:#f0fdf4;border-color:#86efac;font-size:15px}.post-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px}.logs{list-style:none;padding:0;margin:0;max-height:400px;overflow:auto}.logs li{padding:5px 0;border-bottom:1px dashed var(--line);font-size:13px}.logs time{color:var(--muted);margin-right:6px}.upload-form{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.login{max-width:340px;margin:80px auto;display:flex;flex-direction:column;gap:12px}.login label{display:flex;flex-direction:column;gap:4px}@media (max-width:800px){.grid{grid-template-columns:1fr}.field{grid-column:span 1!important}.two-col{grid-template-columns:1fr}.topbar{flex-wrap:wrap;gap:10px}}.timepick{display:flex;gap:4px}.timepick select{flex:1;min-width:0;padding:8px 4px}.datepick{display:flex;gap:4px;align-items:center}.datepick input[type=date]{flex:1 1 auto;min-width:0;max-width:150px;cursor:pointer}.datepick .quick-date{flex:none;padding:6px 8px;white-space:nowrap}.addr-wrap{display:flex;gap:4px}.addr-wrap input{flex:1}.addr-btn{padding:6px 12px}.modal{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:100}.modal[hidden]{display:none}.modal-box{background:#fff;border-radius:10px;width:min(520px,94vw);height:min(560px,86vh);display:flex;flex-direction:column;overflow:hidden}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line)}.modal-head .btn{padding:4px 10px}.addr-layer{flex:1}.notify-btn{background:transparent;border:1px solid #4b5563;color:#e5e7eb;border-radius:14px;padding:3px 10px;cursor:pointer;font-size:13px}.notify-btn:hover{background:#1f2937}.dispatched{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.copy-btn{padding:5px 12px;white-space:nowrap}.ctx-menu{position:fixed;z-index:200;list-style:none;margin:0;padding:6px 0;min-width:210px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.15);font-size:14px}.ctx-menu[hidden]{display:none}.ctx-menu li{padding:8px 14px;cursor:pointer;display:flex;flex-direction:column;gap:2px}.ctx-menu li:hover{background:#eff6ff}.ctx-menu li small{color:var(--muted);font-size:12px}.ctx-menu li.sep{padding:0;margin:5px 0;border-top:1px solid var(--line);cursor:default}.ctx-menu li.sep:hover{background:none}table.list tbody tr.ctx-selected{background:#dbeafe!important}.ctx-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:300;background:#111827;color:#fff;padding:10px 18px;border-radius:8px;font-size:14px}.ctx-toast[hidden]{display:none}.hint{font-size:12px;margin-top:8px}.created-by{font-size:13px;font-weight:400;margin-left:8px}.filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px}.filter-bar select,.filter-bar input[type=date]{width:auto;padding:6px 8px}.filter-bar .btn{padding:6px 12px}.filter-bar .btn.on{background:var(--text);color:#fff;border-color:var(--text)}table.list.colcfg{table-layout:fixed;width:auto}table.list.colcfg th{position:relative;overflow:hidden;text-overflow:ellipsis;cursor:grab;user-select:none}table.list.colcfg td{overflow:hidden;text-overflow:ellipsis}table.list.colcfg td.k-posts,table.list.colcfg td.k-driver{white-space:normal}.col-resizer{position:absolute;top:0;right:0;width:8px;height:100%;cursor:col-resize;z-index:2}.col-resizer:hover,.col-resizing .col-resizer{background:rgba(37,99,235,.25)}.col-resizing,.col-resizing *{cursor:col-resize!important;user-select:none}table.list.colcfg th.dragging{opacity:.4}table.list.colcfg th.drop-left{box-shadow:inset 3px 0 0 var(--primary)}table.list.colcfg th.drop-right{box-shadow:inset -3px 0 0 var(--primary)}.col-panel{height:auto;max-height:86vh}.col-help{margin:8px 14px 0;font-size:12px}.col-list{list-style:none;margin:8px 0;padding:0 14px;overflow:auto;flex:1}.col-list li{display:flex;justify-content:space-between;align-items:center;padding:5px 8px;border:1px solid var(--line);border-radius:6px;margin-bottom:4px;background:#fff;cursor:grab}.col-list li.dragging{opacity:.4}.col-list li label{display:flex;align-items:center;gap:6px;cursor:pointer}.col-list li .btn{padding:2px 8px;font-size:11px;margin-left:2px}.col-actions{display:flex;justify-content:space-between;padding:10px 14px;border-top:1px solid var(--line)}.container.wide{max-width:none}table.list.colcfg.measuring th,table.list.colcfg.measuring td{white-space:nowrap!important}table.list th{text-align:center}table.list td.k-id,table.list td.k-status{text-align:center}table.list.colcfg th{cursor:pointer}table.list.colcfg th .sort-ind{color:var(--primary);font-size:11px}.addr-btn{white-space:nowrap}.book-box{height:min(600px,86vh);width:min(620px,94vw)}.book-top{padding:10px 14px 0}.book-list{list-style:none;margin:8px 0;padding:0 14px;overflow:auto;flex:1}.book-item{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;margin-bottom:6px}.book-item:hover{background:#f8fafc}.book-item.editing{flex-wrap:wrap;background:#fffbeb}.book-item.editing input{flex:1 1 45%}.book-info{min-width:0;cursor:pointer}.book-addr{font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-btns{display:flex;gap:4px;flex-shrink:0}.book-btns .btn{padding:5px 10px}.book-empty{color:var(--muted);text-align:center;padding:30px 0}.book-bottom{padding:10px 14px;border-top:1px solid var(--line)}.owner-box{font-size:14px;color:var(--muted)}.owner-box b{color:var(--text,#111827)}.tabs .mine-toggle{margin-left:auto}.test-site-bar{background:#dc2626;color:#fff;text-align:center;font-weight:700;padding:6px 10px;font-size:14px}