/* 集训营宿舍管理模块样式（dorm- 前缀隔离）。复用线上品牌深绿 #1A5F4F / 金 #FFB81C。 */
.dorm { --d-primary:#1A5F4F; --d-primary-dark:#134539; --d-primary-50:#E0F2EC; --d-gold:#FFB81C;
  --d-line:#eceef1; --d-sh:0 1px 4px rgba(0,0,0,.06); }
.dorm-top { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:18px; flex-wrap:wrap; }
.dorm-h1 { font-size:20px; font-weight:700; }
.dorm-sub { font-size:12px; color:#888; margin-top:4px; }
.dorm-tools { display:flex; gap:10px; }
.dorm-btn { border:1px solid #ddd; background:#fff; color:#222; padding:8px 14px; border-radius:8px; cursor:pointer; font-size:13px; transition:.15s; }
.dorm-btn:hover { border-color:var(--d-primary); }
.dorm-btn.primary { background:var(--d-primary); border-color:var(--d-primary); color:#fff; }
.dorm-btn.primary:hover { background:var(--d-primary-dark); }
.dorm-btn.sm { padding:4px 10px; font-size:12px; }
.dorm-btn.danger { color:#e8453c; border-color:#f2c4c1; }
.dorm-btn.danger:hover { background:#fdecea; border-color:#e8453c; }

.dorm-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:16px; margin-bottom:20px; }
.dorm-card { background:#fff; border-radius:12px; padding:16px 18px; box-shadow:var(--d-sh); }
.dorm-num { font-size:26px; font-weight:700; color:var(--d-primary); }
.dorm-lbl { color:#888; font-size:12px; margin-top:2px; }

.dorm-viewtabs { display:flex; gap:6px; margin:8px 0 16px; }
.dorm-vt { padding:8px 16px; border-radius:8px; cursor:pointer; font-size:13px; background:#fff; border:1px solid #ddd; }
.dorm-vt.active { background:var(--d-primary); color:#fff; border-color:var(--d-primary); font-weight:600; }

.dorm-sec { font-size:15px; font-weight:600; margin:22px 0 10px; display:flex; align-items:center; gap:8px; }
.dorm-sec::before { content:""; width:4px; height:16px; background:var(--d-primary); border-radius:2px; }
.dorm-tag { display:inline-block; font-size:11px; padding:1px 8px; border-radius:8px; background:#f0f1f3; color:#888; font-weight:400; }

.dorm-dist { background:#fff; border-radius:10px; box-shadow:var(--d-sh); padding:16px; }
.dorm-bar { display:flex; align-items:center; gap:10px; margin:8px 0; }
.dorm-bl { width:52px; color:#888; font-size:12px; text-align:right; flex:none; }
.dorm-bt { flex:1; background:#f0f1f3; border-radius:6px; height:20px; overflow:hidden; }
.dorm-bt i { display:block; height:100%; border-radius:6px; transition:width .5s; }
.dorm-bv { width:44px; font-size:12px; color:#888; flex:none; }
.dorm-legend { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
.dorm-cl { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:#888; background:#f5f6f8; padding:4px 10px; border-radius:20px; }
.dorm-cl i { width:10px; height:10px; border-radius:50%; }

.dorm-controls { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:16px 0; }
.dorm-tabs { display:flex; flex-wrap:wrap; gap:6px; }
.dorm-tab { background:#fff; border:1px solid #ddd; padding:7px 14px; border-radius:20px; cursor:pointer; font-size:13px; transition:.15s; }
.dorm-tab:hover { border-color:var(--d-primary); }
.dorm-tab.active { background:var(--d-primary); border-color:var(--d-primary); color:#fff; font-weight:600; }
.dorm-tab .c { color:#888; font-size:11px; margin-left:4px; }
.dorm-tab.active .c { color:#cdeee2; }
.dorm-search { margin-left:auto; background:#fff; border:1px solid #ddd; padding:8px 12px; border-radius:20px; width:220px; outline:none; font-size:13px; }
.dorm-search:focus { border-color:var(--d-primary); }

.dorm-floor { margin-bottom:24px; }
.dorm-wing { margin-bottom:16px; }
.dorm-wh { display:flex; align-items:center; gap:8px; color:#888; font-size:12px; margin-bottom:8px; }
.dorm-entry { background:var(--d-primary); color:#fff; font-weight:700; padding:2px 8px; border-radius:6px; font-size:11px; }
.dorm-corr { flex:1; height:1px; background:repeating-linear-gradient(90deg,#d5d8de,#d5d8de 6px,transparent 6px,transparent 12px); }
.dorm-rooms { display:grid; grid-template-columns:repeat(auto-fill,minmax(158px,1fr)); gap:10px; }
.dorm-room { background:#fff; border:1px solid var(--d-line); border-radius:10px; padding:10px; display:flex; flex-direction:column; min-height:98px; transition:.15s; position:relative; overflow:hidden; box-shadow:var(--d-sh); }
.dorm-room::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:#b9bfc9; }
.dorm-room.occ::before { background:var(--d-primary); }
.dorm-room.empty { opacity:.55; }
.dorm-room.dim { opacity:.2; }
.dorm-room.hit { box-shadow:0 0 0 2px var(--d-primary); opacity:1; }
.dorm-room.drop { outline:2px dashed var(--d-gold); outline-offset:2px; }
.dorm-rt { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:6px; }
.dorm-rno { font-weight:700; font-size:15px; }
.dorm-rtype { font-size:11px; color:#888; }
.dorm-cnt { font-size:10px; color:#888; margin-left:4px; }
.dorm-rn { font-size:10px; color:var(--d-primary-dark); background:var(--d-primary-50); padding:1px 6px; border-radius:4px; margin-bottom:6px; display:inline-block; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dorm-people { display:flex; flex-wrap:wrap; gap:4px; margin-top:auto; }
.dorm-chip { font-size:12px; padding:2px 7px; border-radius:12px; cursor:grab; border:1px solid transparent; user-select:none; }
.dorm-chip:active { cursor:grabbing; }
.dorm-chip .dorm-pn { font-size:9px; opacity:.75; margin-left:3px; }
.dorm-chip.hit { outline:2px solid var(--d-primary); outline-offset:1px; }
.dorm-chip.dragging { opacity:.4; }
.dorm-addbed { font-size:11px; color:#888; border:1px dashed #ccc; border-radius:12px; padding:1px 8px; cursor:pointer; }
.dorm-addbed:hover { border-color:var(--d-primary); color:var(--d-primary); }
.dorm-unplaced { background:#fff; border-radius:10px; box-shadow:var(--d-sh); padding:14px; display:flex; flex-wrap:wrap; gap:6px; }

/* 花名册 */
.dorm-filters { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:12px 0; }
.dorm-filters .dorm-search { margin-left:0; }
.dorm-filters select { padding:8px 10px; border:1px solid #ddd; border-radius:8px; font-size:13px; outline:none; }
.dorm-filters select:focus { border-color:var(--d-primary); }
.dorm-tablewrap { background:#fff; border-radius:10px; box-shadow:var(--d-sh); overflow:hidden; }
.dorm-tcount { padding:10px 12px; color:#888; font-size:12px; }
.dorm-table { width:100%; border-collapse:collapse; font-size:13px; }
.dorm-table th, .dorm-table td { padding:10px 12px; text-align:left; border-bottom:1px solid var(--d-line); }
.dorm-table th { background:#fafbfc; color:#888; font-weight:600; font-size:12px; cursor:pointer; user-select:none; white-space:nowrap; }
.dorm-table th:hover { color:var(--d-primary); }
.dorm-table tbody tr:hover { background:var(--d-primary-50); }
.dorm-pill { font-size:11px; padding:1px 8px; border-radius:10px; color:#fff; }
.dorm-ck { font-size:10px; padding:1px 6px; border-radius:8px; margin-left:4px; white-space:nowrap; }
.dorm-ck.ok { background:var(--d-primary-50); color:var(--d-primary-dark); }
.dorm-ck.warn { background:#fff3e0; color:#a86400; }
.dorm-act { display:flex; gap:6px; }

/* 弹窗 */
.dorm-mask { position:fixed; inset:0; background:rgba(0,0,0,.4); display:flex; align-items:center; justify-content:center; z-index:1000; }
.dorm-modal { background:#fff; border-radius:14px; width:440px; max-width:92vw; padding:22px; box-shadow:0 20px 60px rgba(0,0,0,.3); }
.dorm-modal h3 { font-size:16px; margin-bottom:16px; }
.dorm-field { margin-bottom:12px; }
.dorm-field2 { display:flex; gap:10px; margin-bottom:12px; }
.dorm-field label, .dorm-field2 label { display:block; font-size:12px; color:#666; margin-bottom:5px; }
.dorm-field input, .dorm-field select, .dorm-field2 input, .dorm-field2 select { width:100%; padding:10px; border:1px solid #ddd; border-radius:8px; font-size:14px; outline:none; }
.dorm-field input:focus, .dorm-field select:focus, .dorm-field2 select:focus { border-color:var(--d-primary); }
.dorm-mact { display:flex; gap:10px; align-items:center; margin-top:18px; }

.dorm-toast { position:fixed; bottom:24px; left:50%; transform:translateX(-50%); background:#222; color:#fff; padding:10px 18px; border-radius:8px; font-size:13px; z-index:1001; opacity:0; transition:.25s; pointer-events:none; }
.dorm-toast.show { opacity:1; }
