.loading{padding:40px;text-align:center;color:#9ca3af;font-size:14px}.dt-wrap{font-family:system-ui,sans-serif;max-width:100%}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:8px}.toolbar input{padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;flex:1;max-width:280px;font-size:14px;outline:none}.toolbar input:focus{border-color:#93c5fd;box-shadow:0 0 0 3px #eff6ff}.toolbar-right{display:flex;align-items:center;gap:8px}.btn-ghost{background:none;border:none;color:#6b7280;cursor:pointer;font-size:13px;padding:6px 8px;border-radius:6px}.btn-ghost:hover{background:#f3f4f6;color:#111827}.btn-outline{padding:6px 12px;border:1px solid #d1d5db;background:#fff;border-radius:6px;cursor:pointer;font-size:13px}.btn-outline:hover{background:#f9fafb}.sel-count{font-size:13px;color:#2563eb;font-weight:500}.col-menu{display:flex;flex-wrap:wrap;gap:4px 16px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:12px 16px;margin-bottom:10px}.col-toggle{display:flex;align-items:center;gap:6px;font-size:13px;cursor:pointer;-webkit-user-select:none;user-select:none}.table-scroll{overflow-x:auto}.dt{width:100%;border-collapse:collapse;font-size:14px}.dt th{background:#f9fafb;padding:10px 12px;text-align:left;font-weight:600;border-bottom:2px solid #e5e7eb;white-space:nowrap;-webkit-user-select:none;user-select:none;position:relative;overflow:hidden}.dt th.sortable{cursor:pointer}.dt th.sortable:hover{background:#f3f4f6}.dt th.sorted{color:#2563eb}.resize-handle{position:absolute;right:0;top:0;height:100%;width:5px;cursor:col-resize;background:transparent;touch-action:none}.resize-handle:hover{background:#93c5fd}.filter-row th{background:#f3f4f6;padding:5px 8px}.filter-row input,.filter-row select{width:100%;padding:4px 6px;border:1px solid #d1d5db;border-radius:4px;font-size:12px;background:#fff;box-sizing:border-box}.filter-row input:focus,.filter-row select:focus{outline:none;border-color:#93c5fd}.dt td{padding:10px 12px;border-bottom:1px solid #f3f4f6;vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dt .row:last-child td{border-bottom:none}.dt .row.selected td{background:#eff6ff}.dt tbody .row:hover td{background:#f9fafb;cursor:pointer}.dt .row.selected:hover td{background:#dbeafe}.expand-btn{background:none;border:none;cursor:pointer;font-size:11px;padding:2px 4px;color:#6b7280;border-radius:4px}.expand-btn:hover{background:#e5e7eb}.detail-row td{background:#f8fafc!important;padding:0!important;border-bottom:2px solid #e5e7eb!important}.detail-card{padding:16px 20px}.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.detail-item{display:flex;flex-direction:column;gap:2px}.detail-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#9ca3af;font-weight:600}.detail-item span:last-child{font-size:14px;color:#111827;font-weight:500}.empty{text-align:center;color:#9ca3af;padding:40px!important}.pager{display:flex;align-items:center;justify-content:space-between;margin-top:14px;gap:12px;flex-wrap:wrap}.pager-btns{display:flex;gap:4px}.pager-btns button{padding:6px 12px;border:1px solid #d1d5db;background:#fff;border-radius:6px;cursor:pointer;font-size:16px;line-height:1}.pager-btns button:disabled{opacity:.35;cursor:not-allowed}.pager-btns button:not(:disabled):hover{background:#f3f4f6}.pager-info{font-size:13px;color:#6b7280}.pager select{padding:6px 8px;border:1px solid #d1d5db;border-radius:6px;font-size:13px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:system-ui,sans-serif;background:#f8fafc;padding:40px 24px;color:#111827}h1{font-size:22px;font-weight:700;margin-bottom:4px}.sub{color:#6b7280;font-size:14px;margin-bottom:20px}.nav{display:flex;gap:16px;margin-bottom:20px}.nav a{color:#2563eb;font-size:14px;text-decoration:none}.nav a:hover{text-decoration:underline}.badges{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}.badge{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:500}.card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:24px;box-shadow:0 1px 3px #00000012}
