/* ============================================================
   사이트 공용 디자인 토큰 + 관리자 화면 디자인 시스템 (Admin UI)
   - 색 토큰(--aui-*)은 :root에 전역으로 선언해 네비게이션 등 어디서든
     var(--aui-accent)처럼 바로 쓸 수 있다.
   - 접두사 "aui-"를 쓰는 컴포넌트 클래스는 .aui 래퍼 안에서만 의미를 갖는다.
   - 다크모드는 사이트 전역 토글([data-bs-theme="dark"])에 맞춰 색만
     재매핑해두었을 뿐, 별도로 다듬지는 않았다(후순위).
   ============================================================ */

:root {
    --aui-ink: #22262B;
    --aui-muted: #6B7280;
    --aui-line: #DEE1E4;
    --aui-well: #F4F5F6;
    --aui-accent: #F58220;
    --aui-accent-well: rgba(245,130,32,.10);
    --aui-success: #2F6B4F;
    --aui-risk: #C4362D;
    --aui-risk-well: rgba(196,54,45,.08);
}
[data-bs-theme="dark"] {
    --aui-ink: #E7E9EC;
    --aui-muted: #9AA3AD;
    --aui-line: #3A3F45;
    --aui-well: #2A2E33;
    --aui-accent-well: rgba(245,130,32,.16);
    --aui-success: #7FBE9C;
    --aui-risk: #E2685F;
    --aui-risk-well: rgba(226,104,95,.14);
}
.aui {
    color: var(--aui-ink);
    font-size: .925rem;
    line-height: 1.5;
}

/* ── 헤더 ── */
.aui-head { display:flex; justify-content:space-between; align-items:flex-start; flex-wrap:wrap; gap:1rem 1.5rem; margin-bottom:1.25rem; }
.aui-title { font-size:1.375rem; font-weight:700; margin:0 0 .25rem; color:var(--aui-ink); }
.aui-sub { font-size:.825rem; color:var(--aui-muted); margin:0; max-width:60ch; }
.aui-actions { display:flex; flex-wrap:wrap; gap:.4rem; }

.aui-btn {
    display:inline-flex; align-items:center; gap:.4em;
    padding:.4rem .75rem; font-size:.8125rem; font-weight:500;
    color:var(--aui-ink); background:transparent; border:1px solid var(--aui-line);
    border-radius:6px; text-decoration:none; white-space:nowrap; cursor:pointer;
    transition:border-color .15s, background-color .15s;
}
.aui-btn:hover { border-color:var(--aui-muted); color:var(--aui-ink); background:var(--aui-well); }
.aui-btn-primary { background:var(--aui-accent); border-color:var(--aui-accent); color:#fff; }
.aui-btn-primary:hover { background:#dd7415; border-color:#dd7415; color:#fff; }
.aui-btn-sm { padding:.3rem .6rem; font-size:.75rem; }

/* ── 탭 ── */
.aui-tabs { display:flex; gap:1.5rem; border-bottom:1px solid var(--aui-line); margin-bottom:1.25rem; }
.aui-tab { padding:.6rem .1rem; font-size:.875rem; font-weight:600; color:var(--aui-muted); text-decoration:none; border-bottom:2px solid transparent; margin-bottom:-1px; }
.aui-tab:hover { color:var(--aui-ink); }
.aui-tab.is-active { color:var(--aui-ink); border-bottom-color:var(--aui-accent); }

/* ── 안내문 ── */
.aui-note { font-size:.8125rem; color:var(--aui-muted); margin:0 0 1.25rem; }
.aui-note i { margin-right:.35em; }

/* ── 통계 스트립 ── */
.aui-stats { display:flex; flex-wrap:wrap; gap:0; border:1px solid var(--aui-line); border-radius:8px; margin-bottom:.75rem; overflow:hidden; }
.aui-stat { flex:1 1 120px; padding:.85rem 1.1rem; border-right:1px solid var(--aui-line); }
.aui-stat:last-child { border-right:none; }
.aui-stat-num { display:block; font-size:1.5rem; font-weight:700; font-variant-numeric:tabular-nums; line-height:1.1; }
.aui-stat-label { display:block; font-size:.75rem; color:var(--aui-muted); margin-top:.15rem; }

/* ── 조치 필요 알림 ── */
.aui-alerts { display:flex; flex-wrap:wrap; gap:.6rem; margin-bottom:1.25rem; }
.aui-alert {
    display:flex; align-items:baseline; gap:.4em;
    padding:.5rem .85rem; border-radius:6px; text-decoration:none;
    background:var(--aui-accent-well); color:var(--aui-ink); font-size:.8125rem;
}
.aui-alert i { color:var(--aui-accent); }
.aui-alert strong { font-variant-numeric:tabular-nums; }
.aui-alert-note { color:var(--aui-muted); }
.aui-alert:hover { color:var(--aui-ink); }

/* ── 설정 패널(접기) ── */
.aui-panel { border:1px solid var(--aui-line); border-radius:8px; margin-bottom:1.25rem; }
.aui-panel > summary { list-style:none; cursor:pointer; padding:.7rem 1rem; font-size:.8125rem; font-weight:600; color:var(--aui-muted); display:flex; align-items:center; gap:.5em; }
.aui-panel > summary::-webkit-details-marker { display:none; }
.aui-panel > summary::before { content:"\f105"; font-family:"Font Awesome 6 Free"; font-weight:900; transition:transform .15s; }
.aui-panel[open] > summary::before { transform:rotate(90deg); }
.aui-panel[open] > summary { border-bottom:1px solid var(--aui-line); }
.aui-panel-body { padding:1rem; }
.aui-hr { border:none; border-top:1px solid var(--aui-line); margin:1rem 0; }
.aui-row { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem; }
.aui-field-label { font-size:.8125rem; font-weight:600; color:var(--aui-muted); }
.aui-hint { font-size:.75rem; color:var(--aui-muted); margin:.5rem 0 0; }
.aui-hint-inline { font-size:.75rem; color:var(--aui-muted); }
.aui-input { font-size:.8125rem; padding:.35rem .55rem; border:1px solid var(--aui-line); border-radius:6px; background:transparent; color:var(--aui-ink); }
.aui-input-num { width:70px; }
.aui-input:focus, .aui-select:focus { outline:2px solid var(--aui-accent); outline-offset:1px; }

/* ── 상태 세그먼트 + 필터 ── */
.aui-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:.75rem 1rem; margin-bottom:.5rem; }
.aui-segmented { display:inline-flex; border:1px solid var(--aui-line); border-radius:6px; overflow:hidden; }
.aui-seg { padding:.35rem .8rem; font-size:.8125rem; color:var(--aui-muted); text-decoration:none; border-right:1px solid var(--aui-line); }
.aui-seg:last-child { border-right:none; }
.aui-seg:hover { color:var(--aui-ink); }
.aui-seg.is-active { background:var(--aui-accent-well); color:var(--aui-ink); font-weight:600; }
.aui-filters { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem; }
.aui-select { font-size:.8125rem; padding:.35rem .55rem; border:1px solid var(--aui-line); border-radius:6px; background:transparent; color:var(--aui-ink); }
.aui-check { display:flex; align-items:center; gap:.35em; font-size:.8125rem; color:var(--aui-muted); }
.aui-reset-link { font-size:.8125rem; color:var(--aui-muted); text-decoration:underline; }

/* ── 일괄 처리 바 ── */
.aui-bulkbar { display:flex; flex-wrap:wrap; align-items:center; gap:.35rem .6rem; padding:.6rem .75rem; background:var(--aui-well); border:1px solid var(--aui-line); border-radius:8px; margin-bottom:.75rem; }
.aui-bulk-label { font-size:.8125rem; font-weight:600; }
.aui-bulk-group { display:flex; align-items:center; gap:.35rem; padding-right:.5rem; margin-right:.15rem; border-right:1px solid var(--aui-line); }
.aui-bulk-group:last-of-type { border-right:none; }
.aui-bulk-group-label { font-size:.75rem; color:var(--aui-muted); }
.aui-chip-btn { font-size:.75rem; padding:.3rem .6rem; border:1px solid var(--aui-line); border-radius:5px; background:#fff; color:var(--aui-ink); cursor:pointer; }
[data-bs-theme="dark"] .aui-chip-btn { background:transparent; }
.aui-chip-btn:hover { border-color:var(--aui-accent); }
.aui-chip-btn-danger:hover { border-color:var(--aui-risk); color:var(--aui-risk); }

/* ── 카드형 컨테이너(표가 아닌 목록에 사용) ── */
.aui-card { border:1px solid var(--aui-line); border-radius:8px; padding:1rem; }
.aui-card + .aui-card { margin-top:.75rem; }

/* ── 표 ── */
.aui-table-wrap { border:1px solid var(--aui-line); border-radius:8px; overflow:hidden; }
.aui-table { width:100%; margin:0; border-collapse:collapse; font-size:.8125rem; }
.aui-table th { text-align:left; font-weight:600; color:var(--aui-muted); padding:.6rem .75rem; border-bottom:1px solid var(--aui-line); white-space:nowrap; }
.aui-table td { padding:.6rem .75rem; border-bottom:1px solid var(--aui-line); vertical-align:middle; }
.aui-table tbody tr:last-child td { border-bottom:none; }
.aui-table tbody tr:hover { background:var(--aui-well); }
.aui-table td.num, .aui-table th.num { font-variant-numeric:tabular-nums; }
.aui-table th.sortable { cursor:pointer; user-select:none; }
.aui-table th.sortable:hover { background:var(--aui-well); }
.aui-table th.sortable .sort-icon { opacity:.4; font-size:.7rem; margin-left:4px; }
.aui-table th.sortable.asc .sort-icon::after { content:'▲'; opacity:1; }
.aui-table th.sortable.desc .sort-icon::after { content:'▼'; opacity:1; }

.aui-dot { display:inline-flex; align-items:center; gap:.45em; white-space:nowrap; }
.aui-dot::before { content:""; width:6px; height:6px; border-radius:50%; background:var(--aui-line); flex:none; }
.aui-dot.is-accent::before { background:var(--aui-accent); }
.aui-dot.is-success::before { background:var(--aui-success); }
.aui-dot.is-risk::before { background:var(--aui-risk); }
.aui-dot.is-success { color:var(--aui-success); }
.aui-dot.is-risk { color:var(--aui-risk); font-weight:600; }
.aui-subtext { display:block; font-size:.7rem; color:var(--aui-muted); margin-top:.15rem; }
.aui-flag { display:block; font-size:.7rem; color:var(--aui-risk); font-weight:600; margin-top:.15rem; }

.aui-risk-chip { display:inline-block; padding:.1rem .45rem; border-radius:4px; font-size:.7rem; font-weight:600; background:var(--aui-risk-well); color:var(--aui-risk); margin-left:.35em; }
.aui-count-note { font-size:.7rem; color:var(--aui-muted); margin-left:.35em; }

.aui-icon-btn { display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:5px; border:1px solid var(--aui-line); background:transparent; color:var(--aui-muted); text-decoration:none; }
.aui-icon-btn:hover { border-color:var(--aui-ink); color:var(--aui-ink); }
.aui-icon-btn-danger:hover { border-color:var(--aui-risk); color:var(--aui-risk); }

.aui-empty { text-align:center; color:var(--aui-muted); padding:3rem 1rem; font-size:.875rem; }

/* ── 체크 가능한 선택 카드(심사위원 배정 등) ── */
.aui-check-card { display:block; border:1px solid var(--aui-line); border-radius:6px; padding:.75rem; height:100%; cursor:pointer; transition:border-color .15s, background-color .15s; }
.aui-check-card.is-selected { background:var(--aui-accent-well); border-color:var(--aui-accent); }
.aui-check-card .form-check-input { margin-top:.2rem; }

/* ── 경로(브레드크럼) ── */
.aui-crumbs { font-size:.8125rem; color:var(--aui-muted); margin-bottom:1rem; }
.aui-crumbs a { color:var(--aui-muted); text-decoration:none; }
.aui-crumbs a:hover { color:var(--aui-ink); text-decoration:underline; }
.aui-crumbs .sep { margin:0 .4em; opacity:.5; }
.aui-crumbs .current { color:var(--aui-ink); font-weight:600; }

/* ── 전역 네비게이션(상단바 드롭다운) ── */
.aui-nav-dropdown .dropdown-header { color:var(--aui-muted); font-weight:700; font-size:.75rem; }
.aui-nav-dropdown .dropdown-item i { color:var(--aui-muted); width:1.1em; text-align:center; }
.aui-nav-dropdown .dropdown-item.text-danger i { color:inherit; }
.aui-admin-badge { display:inline-flex; align-items:center; gap:.35em; padding:.25rem .6rem; border-radius:5px; border:1px solid var(--aui-line); color:var(--aui-ink); font-weight:600; }

/* ── 진행률 바(예산 집행률 등) ── */
.aui-progress { height:6px; border-radius:3px; background:var(--aui-line); overflow:hidden; }
.aui-progress-bar { height:100%; background:var(--aui-accent); }
.aui-progress-bar.is-risk { background:var(--aui-risk); }

@media (max-width: 767.98px) {
    .aui-stat { flex:1 1 45%; border-bottom:1px solid var(--aui-line); }
    .aui-bulk-group { border-right:none; padding-right:0; }
}
