/* ===== apqs 관리자 패널 ===== */
*{box-sizing:border-box}
.admin-body{margin:0;background:#eef1f4;color:#2d3238;
  font-family:"Pretendard","맑은 고딕","Malgun Gothic",AppleGothic,sans-serif;font-size:14px}
a{text-decoration:none;color:inherit}

.admin-shell{display:flex;min-height:100vh}

/* 사이드바 */
.admin-side{width:220px;background:#1f3d2b;color:#cde3d4;flex-shrink:0;
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.side-brand{padding:22px 20px;border-bottom:1px solid rgba(255,255,255,.08);
  display:flex;align-items:baseline;gap:8px}
.brand-mark{font-size:22px;font-weight:800;color:#fff;letter-spacing:1px}
.brand-sub{font-size:12px;color:#7fb98f}
.side-nav{padding:12px 0;overflow-y:auto;flex:1}
.side-nav a{display:flex;align-items:center;gap:10px;padding:11px 20px;
  color:#b5d4bf;font-size:14px;transition:.15s}
.side-nav a .ic{width:18px;text-align:center;font-size:14px;opacity:.9}
.side-nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.side-nav a.on{background:#4a8f45;color:#fff;font-weight:600;
  box-shadow:inset 3px 0 0 #a8e6a0}
.nav-group{padding:14px 20px 6px;font-size:11px;color:#5f8a6c;
  text-transform:uppercase;letter-spacing:.5px;font-weight:700}

/* 메인 */
.admin-main{flex:1;display:flex;flex-direction:column;min-width:0}
.admin-top{background:#fff;border-bottom:1px solid #e2e6ea;
  padding:0 28px;height:60px;display:flex;align-items:center;
  justify-content:space-between;position:sticky;top:0;z-index:100}
.top-title{margin:0;font-size:19px;font-weight:700;color:#1f3d2b}
.top-user{display:flex;align-items:center;gap:14px;font-size:13px}
.top-user .u-name{color:#555}
.top-user .u-logout{padding:6px 14px;border:1px solid #d0d7dd;border-radius:5px;
  color:#555;transition:.15s}
.top-user .u-logout:hover{background:#f5f7f9;border-color:#4a8f45;color:#4a8f45}

.admin-content{padding:28px;flex:1}

/* 카드 */
.card{background:#fff;border:1px solid #e6eaee;border-radius:10px;
  padding:24px;margin-bottom:20px;box-shadow:0 1px 3px rgba(0,0,0,.03)}
.card h2{margin:0 0 18px;font-size:16px;color:#1f3d2b;
  padding-bottom:12px;border-bottom:2px solid #eef2ee}

/* 대시보드 통계 */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:16px;margin-bottom:24px}
.stat{background:#fff;border:1px solid #e6eaee;border-radius:10px;padding:22px;
  box-shadow:0 1px 3px rgba(0,0,0,.03);position:relative;overflow:hidden}
.stat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#4a8f45}
.stat .s-label{font-size:13px;color:#7a828a;margin-bottom:8px}
.stat .s-num{font-size:30px;font-weight:800;color:#1f3d2b;line-height:1}
.stat .s-num small{font-size:14px;font-weight:400;color:#9aa2aa;margin-left:4px}
.stat .s-actions{margin-top:14px;display:flex;gap:8px}

/* 버튼 */
.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;
  border:1px solid #d0d7dd;background:#fff;color:#3d454d;border-radius:6px;
  font-size:14px;cursor:pointer;transition:.15s;font-family:inherit;text-align:center}
.btn:hover{background:#f5f7f9;border-color:#b8c0c8}
.btn.primary{background:#4a8f45;color:#fff;border-color:#4a8f45}
.btn.primary:hover{background:#3d7a39;border-color:#3d7a39}
.btn.danger{background:#e04e3d;color:#fff;border-color:#e04e3d}
.btn.danger:hover{background:#c63d2e}
.btn.sm{padding:6px 12px;font-size:13px}
.btn.block{width:100%;justify-content:center}

/* 테이블 */
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th,.tbl td{padding:13px 12px;border-bottom:1px solid #eef1f4;text-align:left}
.tbl th{background:#f7f9fa;color:#5a636b;font-weight:600;font-size:13px}
.tbl td.c,.tbl th.c{text-align:center}
.tbl .col-num{width:70px;text-align:center;color:#9aa2aa}
.tbl .col-wr{width:110px;text-align:center;color:#6a727a}
.tbl .col-dt{width:120px;text-align:center;color:#9aa2aa}
.tbl tr:hover td{background:#fafcfb}
.tbl a{color:#2d3238;font-weight:500}
.tbl a:hover{color:#4a8f45}
.tbl .empty{text-align:center;color:#aab2ba;padding:48px}
.badge{display:inline-block;padding:3px 9px;border-radius:20px;font-size:12px;font-weight:600}
.badge.green{background:#e6f4e6;color:#2f7a2a}
.badge.gray{background:#eceff1;color:#78828a}
.badge.orange{background:#fdf0e0;color:#c67a1e}
.badge.red{background:#fdeae7;color:#c63d2e}
.badge.lock{background:#f0f0f0;color:#999}

/* 폼 */
.form-row{margin-bottom:20px}
.form-row label.lbl{display:block;font-size:13px;font-weight:600;color:#48515a;margin-bottom:7px}
.form-row .hint{font-size:12px;color:#9aa2aa;margin-top:5px}
.inp,.txt,select.inp{width:100%;padding:11px 13px;border:1px solid #d3dae0;
  border-radius:7px;font-size:14px;font-family:inherit;color:#2d3238;transition:.15s}
.inp:focus,.txt:focus{outline:none;border-color:#4a8f45;box-shadow:0 0 0 3px rgba(74,143,69,.12)}
.txt{resize:vertical;min-height:160px;line-height:1.7}
.check{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:#48515a;cursor:pointer}
.form-actions{display:flex;gap:10px;justify-content:flex-end;
  padding-top:20px;margin-top:8px;border-top:1px solid #eef1f4}
.form-grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}

/* 파일 첨부 */
.file-box{border:2px dashed #d3dae0;border-radius:8px;padding:18px;
  text-align:center;color:#7a828a;font-size:13px;background:#fafbfc}
.file-box input[type=file]{margin-top:8px}
.exist-files{margin-top:12px}
.exist-files .ef{display:flex;align-items:center;gap:10px;padding:8px 12px;
  background:#f7f9fa;border-radius:6px;margin-bottom:6px;font-size:13px}
.exist-files .ef .del{margin-left:auto;color:#c63d2e;cursor:pointer;font-size:12px}

/* 알림 메시지 */
.flash{padding:13px 18px;border-radius:8px;margin-bottom:20px;font-size:14px}
.flash.ok{background:#e6f4e6;color:#2f7a2a;border:1px solid #c3e6c0}
.flash.err{background:#fdeae7;color:#c63d2e;border:1px solid #f3c9c2}

/* 게시글 보기 */
.view-head{border-bottom:2px solid #eef2ee;padding-bottom:16px;margin-bottom:20px}
.view-head h2{margin:0 0 10px;font-size:20px;color:#1f3d2b;border:0;padding:0}
.view-meta{color:#9aa2aa;font-size:13px}
.view-meta span{margin-right:16px}
.view-files{background:#f7f9fa;border:1px solid #e6eaee;border-radius:8px;
  padding:14px 16px;margin-bottom:20px}
.view-files .vf{display:block;padding:5px 0;color:#4a8f45;font-size:14px}
.view-body{line-height:1.85;font-size:15px;color:#2d3238;min-height:150px;padding:4px}
.view-body img{max-width:100%;height:auto}

/* 팝업 미리보기 */
.pp-preview{border:1px solid #e6eaee;border-radius:8px;background:#f7f9fa;
  padding:20px;text-align:center;min-height:200px;display:flex;
  align-items:center;justify-content:center;color:#aab2ba}
.pp-preview img{max-width:100%;max-height:280px;border:1px solid #ddd;border-radius:4px}
.pp-thumb{width:90px;height:auto;border:1px solid #e0e0e0;border-radius:4px}
.pos-pick{display:flex;gap:8px;flex-wrap:wrap}
.pos-pick label{flex:0 0 auto}
.pos-pick input{display:none}
.pos-pick .opt{display:inline-block;padding:8px 14px;border:1px solid #d3dae0;
  border-radius:6px;cursor:pointer;font-size:13px;transition:.15s}
.pos-pick input:checked + .opt{background:#4a8f45;color:#fff;border-color:#4a8f45}

/* 페이지네이션 */
.pager{display:flex;gap:6px;align-items:center}
.pager a,.pager strong{padding:7px 13px;border:1px solid #e0e5ea;border-radius:6px;
  font-size:14px;color:#5a636b;background:#fff}
.pager strong{background:#4a8f45;color:#fff;border-color:#4a8f45}
.list-foot{display:flex;justify-content:space-between;align-items:center;margin-top:20px}

/* 반응형 */
@media(max-width:860px){
  .admin-side{width:60px}
  .side-brand .brand-sub,.side-nav a span:not(.ic),.nav-group{display:none}
  .side-nav a{justify-content:center;padding:14px 0}
  .form-grid2,.form-grid3{grid-template-columns:1fr}
}
