/* ============================================================================
   NLR Framework — Bootstrap CSS 대체 레이어
   ----------------------------------------------------------------------------
   부트스트랩 CDN CSS 를 제거하고, 이 사이트가 실제 사용하는 클래스(약 300개)만
   디자인 토큰(var(--*)) 위에 재구현했다. Bootstrap 5 JS(bundle)는 그대로 쓰므로
   JS 가 토글하는 상태 클래스(.show/.fade/.collapsing 등)의 규약을 따른다.

   구성: 리셋 → 그리드 → 유틸리티 → 컴포넌트 구조(모달/드롭다운/콜랩스/툴팁 등)
   시각(색·모서리·그림자)은 app.css 가 담당 — 여기는 구조와 기본값만.
   ============================================================================ */

/* ── 0. 리셋 ────────────────────────────────────────────────────────────── */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{ margin:0; }
h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd{ margin:0 0 .5rem; }
h1,h2,h3,h4,h5,h6{ margin-bottom:.5rem; }
p{ margin-bottom:1rem; }
ul,ol{ margin:0 0 1rem; padding-left:2rem; }
ul ul,ol ol,ul ol,ol ul{ margin-bottom:0; }
img,svg{ vertical-align:middle; }
table{ caption-side:bottom; border-collapse:collapse; }
th{ text-align:inherit; }
label{ display:inline-block; }
button{ border-radius:0; }
button,input,optgroup,select,textarea{ margin:0; font-family:inherit; font-size:inherit; line-height:inherit; }
button,select{ text-transform:none; }
button,[type="button"],[type="submit"]{ -webkit-appearance:button; cursor:pointer; }
button:disabled{ cursor:default; }
a{ background-color:transparent; }
hr{ margin:1rem 0; border:0; border-top:1px solid; opacity:.25; }
small{ font-size:.875em; }
strong,b{ font-weight:bolder; }
[hidden]{ display:none!important; }

/* ── 1. 컨테이너 + 그리드 (12col · 사용 브레이크포인트 sm576/md768/lg992/xl1200) ── */
.container{ width:100%; margin-left:auto; margin-right:auto; padding-left:var(--gutter,24px); padding-right:var(--gutter,24px); }

.row{ display:flex; flex-wrap:wrap; margin-left:calc(var(--nlr-gx,1.5rem) / -2); margin-right:calc(var(--nlr-gx,1.5rem) / -2); row-gap:var(--nlr-gy,0); }
.row > *{ flex-shrink:0; width:100%; max-width:100%; padding-left:calc(var(--nlr-gx,1.5rem) / 2); padding-right:calc(var(--nlr-gx,1.5rem) / 2); }
.g-1{ --nlr-gx:.25rem; --nlr-gy:.25rem; } .g-2{ --nlr-gx:.5rem; --nlr-gy:.5rem; }
.g-3{ --nlr-gx:1rem;  --nlr-gy:1rem; }  .g-4{ --nlr-gx:1.5rem; --nlr-gy:1.5rem; }

.col{ flex:1 0 0%; }
.col-auto{ flex:0 0 auto; width:auto; }
.col-4{ flex:0 0 auto; width:33.3333%; }
.col-6{ flex:0 0 auto; width:50%; }
.col-12{ flex:0 0 auto; width:100%; }

@media (min-width:576px){
  .col-sm-6{ flex:0 0 auto; width:50%; }
  .d-sm-block{ display:block!important; }
  .d-sm-inline{ display:inline!important; }
  .flex-sm-nowrap{ flex-wrap:nowrap!important; }
}
@media (min-width:768px){
  .col-md{ flex:1 0 0%; }
  .col-md-2{ flex:0 0 auto; width:16.6667%; } .col-md-3{ flex:0 0 auto; width:25%; }
  .col-md-4{ flex:0 0 auto; width:33.3333%; } .col-md-5{ flex:0 0 auto; width:41.6667%; }
  .col-md-6{ flex:0 0 auto; width:50%; }      .col-md-7{ flex:0 0 auto; width:58.3333%; }
  .col-md-8{ flex:0 0 auto; width:66.6667%; } .col-md-9{ flex:0 0 auto; width:75%; }
  .d-md-block{ display:block!important; } .d-md-flex{ display:flex!important; } .d-md-none{ display:none!important; }
  .flex-md-row{ flex-direction:row!important; }
  .g-md-3{ --nlr-gx:1rem; --nlr-gy:1rem; }
  .gap-md-3{ gap:1rem!important; }
  .p-md-3{ padding:1rem!important; } .p-md-4{ padding:1.5rem!important; } .p-md-5{ padding:3rem!important; }
  .px-md-4{ padding-left:1.5rem!important; padding-right:1.5rem!important; }
  .align-items-md-center{ align-items:center!important; }
}
@media (min-width:992px){
  .col-lg{ flex:1 0 0%; }
  .col-lg-2{ flex:0 0 auto; width:16.6667%; } .col-lg-3{ flex:0 0 auto; width:25%; }
  .col-lg-4{ flex:0 0 auto; width:33.3333%; } .col-lg-5{ flex:0 0 auto; width:41.6667%; }
  .col-lg-6{ flex:0 0 auto; width:50%; }      .col-lg-7{ flex:0 0 auto; width:58.3333%; }
  .col-lg-8{ flex:0 0 auto; width:66.6667%; } .col-lg-9{ flex:0 0 auto; width:75%; }
  .col-lg-10{ flex:0 0 auto; width:83.3333%; }
  .d-lg-block{ display:block!important; } .d-lg-inline{ display:inline!important; }
  .align-items-lg-center{ align-items:center!important; }
  .ms-lg-2{ margin-left:.5rem!important; } .me-lg-1{ margin-right:.25rem!important; }
}
@media (min-width:1200px){
  .col-xl-3{ flex:0 0 auto; width:25%; } .col-xl-4{ flex:0 0 auto; width:33.3333%; }
}

/* ── 2. 디스플레이/플렉스 유틸 ─────────────────────────────────────────── */
.d-none{ display:none!important; } .d-block{ display:block!important; }
.d-inline{ display:inline!important; } .d-inline-block{ display:inline-block!important; }
.d-flex{ display:flex!important; } .d-inline-flex{ display:inline-flex!important; }
.d-grid{ display:grid!important; }
.flex-column{ flex-direction:column!important; } .flex-wrap{ flex-wrap:wrap!important; }
.flex-fill{ flex:1 1 auto!important; } .flex-grow-1{ flex-grow:1!important; } .flex-shrink-0{ flex-shrink:0!important; }
.justify-content-between{ justify-content:space-between!important; }
.justify-content-center{ justify-content:center!important; }
.justify-content-end{ justify-content:flex-end!important; }
.align-items-center{ align-items:center!important; } .align-items-start{ align-items:flex-start!important; }
.align-items-end{ align-items:flex-end!important; } .align-items-baseline{ align-items:baseline!important; }
.align-self-center{ align-self:center!important; }
.align-middle{ vertical-align:middle!important; } .align-top{ vertical-align:top!important; }
.gap-1{ gap:.25rem!important; } .gap-2{ gap:.5rem!important; } .gap-3{ gap:1rem!important; }
.row-gap-2{ row-gap:.5rem!important; } .column-gap-4{ column-gap:1.5rem!important; }
.gap-x-3{ column-gap:1rem!important; } .gap-y-1{ row-gap:.25rem!important; }
.order-first{ order:-1!important; }

/* ── 3. 스페이싱 (BS 스케일: 1=.25 2=.5 3=1 4=1.5 5=3rem) ───────────────── */
.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}
.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}
.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}
.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-4{margin-left:1.5rem!important}.ms-auto{margin-left:auto!important}
.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-auto{margin-right:auto!important}
.mx-auto{margin-left:auto!important;margin-right:auto!important}
.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}
.my-3{margin-top:1rem!important;margin-bottom:1rem!important}
.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}
.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}
.pt-3{padding-top:1rem!important}.pb-2{padding-bottom:.5rem!important}
.ps-2{padding-left:.5rem!important}.ps-4{padding-left:1.5rem!important}
.px-0{padding-left:0!important;padding-right:0!important}
.px-1{padding-left:.25rem!important;padding-right:.25rem!important}
.px-2{padding-left:.5rem!important;padding-right:.5rem!important}
.px-3{padding-left:1rem!important;padding-right:1rem!important}
.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}
.py-0{padding-top:0!important;padding-bottom:0!important}
.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}
.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}
.py-3{padding-top:1rem!important;padding-bottom:1rem!important}
.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}
.py-5{padding-top:3rem!important;padding-bottom:3rem!important}

/* ── 4. 텍스트/크기 유틸 ───────────────────────────────────────────────── */
.text-center{text-align:center!important}.text-start{text-align:left!important}.text-end{text-align:right!important}
.text-nowrap{white-space:nowrap!important}
.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.text-decoration-none{text-decoration:none!important}
.text-reset{color:inherit!important}
.text-body{color:var(--ink-1)!important}
.text-white{color:var(--surface)!important}
.text-primary-emphasis{color:var(--primary-press)!important}
.fw-normal{font-weight:400!important}
.w-100{width:100%!important}.h-100{height:100%!important}
.min-vh-100{min-height:100vh!important}
.min-w-0,.min-width-0{min-width:0!important}
.overflow-hidden{overflow:hidden!important}
.position-relative{position:relative!important}.position-absolute{position:absolute!important}
.top-0{top:0!important}.start-0{left:0!important}.end-0{right:0!important}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.rounded-circle{border-radius:50%!important}
.border{border:1px solid var(--rule)!important}
.border-0{border:0!important}
.border-top{border-top:1px solid var(--rule)!important}
.border-start{border-left:1px solid var(--rule)!important}
.border-primary{border-color:var(--primary)!important}
.border-danger{border-color:var(--st-crit)!important}
.border-success{border-color:var(--st-good)!important}
.border-warning{border-color:var(--st-warn)!important}
.vr{ display:inline-block; align-self:stretch; width:1px; min-height:1em; background:currentColor; opacity:.25; }
.ratio{ position:relative; width:100%; }
.ratio::before{ display:block; content:""; padding-top:var(--nlr-ratio,100%); }
.ratio > *{ position:absolute; top:0; left:0; width:100%; height:100%; }
.ratio-1x1{ --nlr-ratio:100%; }

/* ── 5. 버튼/폼 구조 ───────────────────────────────────────────────────── */
.btn{ display:inline-block; text-align:center; text-decoration:none; vertical-align:middle;
  user-select:none; border:1px solid transparent; }
.btn-group{ display:inline-flex; vertical-align:middle; }
.btn-group > .btn{ position:relative; flex:1 1 auto; }
.form-control,.form-select{ display:block; width:100%; }
.form-select{ display:block; width:100%; }
.form-check{ display:block; min-height:1.5rem; padding-left:1.6em; }
.form-check .form-check-input{ float:left; margin-left:-1.6em; }
.form-check-input{ width:1.05em; height:1.05em; margin-top:.25em; vertical-align:top;
  appearance:none; -webkit-appearance:none; border:1px solid var(--rule-strong);
  background:var(--surface) center/contain no-repeat; }
.form-check-input[type="checkbox"]{ border-radius:.25em; }
.form-check-input[type="radio"]{ border-radius:50%; }
.form-check-input:checked{ background-color:var(--primary); border-color:var(--primary); }
.form-check-input[type="checkbox"]:checked{
  background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"); }
.form-check-input[type="radio"]:checked{
  background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); }
.form-switch{ padding-left:2.6em; }
.form-switch .form-check-input{ width:2.1em; margin-left:-2.6em; border-radius:2.1em;
  background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba(0,0,0,.25)'/%3e%3c/svg%3e");
  background-position:left center; background-size:contain; transition:background-position .15s ease-in-out; }
.form-switch .form-check-input:checked{ background-position:right center;
  background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); }
.input-group{ position:relative; display:flex; flex-wrap:wrap; align-items:stretch; width:100%; }
.input-group > .form-control,.input-group > .form-select{ position:relative; flex:1 1 auto; width:1%; min-width:0; }
.input-group > :not(:first-child){ margin-left:-1px; border-top-left-radius:0; border-bottom-left-radius:0; }
.input-group > :not(:last-child){ border-top-right-radius:0; border-bottom-right-radius:0; }

/* ── 6. 카드/리스트/표 구조 ────────────────────────────────────────────── */
.card{ position:relative; display:flex; flex-direction:column; min-width:0; word-wrap:break-word;
  background-clip:border-box; }
.card-body{ flex:1 1 auto; }
.card-header{ padding:.75rem 1.25rem; border-bottom:1px solid var(--rule); display:flex; }
.card-footer{ padding:.75rem 1.25rem; border-top:1px solid var(--rule); }
.card-title{ margin-bottom:.5rem; }
.list-group{ display:flex; flex-direction:column; padding-left:0; margin-bottom:0; }
.list-group-item{ position:relative; display:block; padding:.6rem 1rem;
  border:1px solid var(--rule); border-width:1px 0 0; text-decoration:none; }
.list-group-item:first-child{ border-top:0; }
.list-group-flush > .list-group-item{ border-left:0; border-right:0; }
.list-group-item-action{ width:100%; text-align:inherit; cursor:pointer; }
.list-group-numbered{ list-style-type:none; counter-reset:section; }
.list-group-numbered > .list-group-item::before{ content:counters(section, ".") ". "; counter-increment:section; }
.table{ width:100%; vertical-align:top; }
.table > :not(caption) > * > *{ padding:.5rem; border-bottom:1px solid var(--rule); }
.table-sm > :not(caption) > * > *{ padding:.25rem .5rem; }
.table-bordered > :not(caption) > * > *{ border:1px solid var(--rule); }
.table-responsive{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
.table-success{ background:var(--st-good-wash); }
.table-warning{ background:var(--st-warn-wash); }
caption{ padding:.5rem 0; }

/* ── 7. 배지/알림/프로그레스 구조 ──────────────────────────────────────── */
.badge{ display:inline-block; line-height:1; text-align:center; white-space:nowrap; vertical-align:baseline; }
.alert{ position:relative; margin-bottom:1rem; }
.alert-link{ font-weight:600; }
.progress{ display:flex; height:.9rem; overflow:hidden; font-size:.7rem; }
.progress-bar{ display:flex; flex-direction:column; justify-content:center; overflow:hidden;
  color:var(--surface); text-align:center; white-space:nowrap; transition:width .4s ease; }
.progress-bar-striped{ background-image:linear-gradient(45deg,rgba(255,255,255,.18) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.18) 50%,rgba(255,255,255,.18) 75%,transparent 75%,transparent); background-size:1rem 1rem; }
.progress-bar-animated{ animation:nlr-stripes 1s linear infinite; }
@keyframes nlr-stripes{ 0%{ background-position-x:1rem; } }
.spinner-border{ display:inline-block; width:1.6rem; height:1.6rem; vertical-align:-.125em;
  border:.2em solid currentColor; border-right-color:transparent; border-radius:50%;
  animation:nlr-spin .75s linear infinite; }
.spinner-border-sm{ width:1rem; height:1rem; border-width:.15em; }
@keyframes nlr-spin{ to{ transform:rotate(360deg); } }

/* ── 8. 내비게이션 구조 ────────────────────────────────────────────────── */
.nav{ display:flex; flex-wrap:wrap; padding-left:0; margin-bottom:0; list-style:none; }
.nav-link{ display:block; text-decoration:none; }
.navbar{ position:relative; display:flex; flex-wrap:wrap; align-items:center;
  justify-content:space-between; padding-top:.5rem; padding-bottom:.5rem; }
.navbar > .container{ display:flex; flex-wrap:inherit; align-items:center; justify-content:space-between; }
.navbar-brand{ margin-right:1rem; white-space:nowrap; text-decoration:none; }
.navbar-nav{ display:flex; flex-direction:column; padding-left:0; margin-bottom:0; list-style:none; }
.navbar-collapse{ flex-basis:100%; flex-grow:1; align-items:center; }
.navbar-toggler{ padding:.35rem .7rem; background:transparent; border:1px solid var(--rule-strong);
  border-radius:var(--r-sm); line-height:1; }
.navbar-toggler-icon{ display:inline-block; width:1.4em; height:1.4em; vertical-align:middle; }
@media (min-width:992px){
  .navbar-expand-lg{ flex-wrap:nowrap; justify-content:flex-start; }
  .navbar-expand-lg .navbar-nav{ flex-direction:row; }
  .navbar-expand-lg .navbar-collapse{ display:flex!important; flex-basis:auto; }
  .navbar-expand-lg .navbar-toggler{ display:none; }
}

/* ── 9. 드롭다운 (BS5 JS 규약: .show 토글, Popper 인라인 배치) ──────────── */
.dropdown{ position:relative; }
.dropdown-toggle{ white-space:nowrap; }
.dropdown-toggle::after{ display:inline-block; margin-left:.35em; vertical-align:.15em;
  content:""; border-top:.32em solid; border-right:.32em solid transparent;
  border-left:.32em solid transparent; }
.dropdown-menu{ position:absolute; z-index:1000; display:none; min-width:10rem;
  padding:.5rem 0; margin:0; text-align:left; list-style:none; }
.dropdown-menu.show{ display:block; top:100%; }
.dropdown-menu-end{ right:0; left:auto; }
.dropdown-item{ display:block; width:100%; padding:.4rem 1rem; clear:both;
  text-align:inherit; white-space:nowrap; background:transparent; border:0; text-decoration:none; }
.dropdown-divider{ height:0; margin:.5rem 0; overflow:hidden; border-top:1px solid var(--rule); }

/* ── 10. 콜랩스/아코디언 (BS5 JS 규약) ─────────────────────────────────── */
.collapse:not(.show){ display:none; }
.collapsing{ height:0; overflow:hidden; transition:height .3s ease; }
.accordion-button{ position:relative; display:flex; align-items:center; width:100%; text-align:left; }
.accordion-button::after{ flex-shrink:0; width:1.1rem; height:1.1rem; margin-left:auto; content:"";
  background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23666'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") center/1.1rem no-repeat;
  transition:transform .2s ease-in-out; }
.accordion-button:not(.collapsed)::after{ transform:rotate(-180deg); }
.accordion-header{ margin-bottom:0; }
.accordion-collapse{ }

/* ── 11. 모달 (BS5 JS 규약: .show/.fade + backdrop) ────────────────────── */
.modal{ position:fixed; top:0; left:0; z-index:1055; display:none; width:100%; height:100%;
  overflow-x:hidden; overflow-y:auto; outline:0; }
.modal.show{ display:block; }
.modal.fade .modal-dialog{ transform:translateY(-24px); transition:transform .2s ease-out; }
.modal.show .modal-dialog{ transform:none; }
.modal-dialog{ position:relative; width:auto; margin:1.75rem auto; max-width:520px; pointer-events:none; }
.modal-lg{ max-width:800px; } .modal-xl{ max-width:1140px; }
.modal-dialog-centered{ display:flex; align-items:center; min-height:calc(100% - 3.5rem); }
.modal-dialog-scrollable{ height:calc(100% - 3.5rem); }
.modal-dialog-scrollable .modal-content{ max-height:100%; overflow:hidden; }
.modal-dialog-scrollable .modal-body{ overflow-y:auto; }
.modal-content{ position:relative; display:flex; flex-direction:column; width:100%;
  pointer-events:auto; outline:0; }
.modal-header{ display:flex; flex-shrink:0; align-items:center; justify-content:space-between;
  padding:1rem 1.25rem; }
.modal-title{ margin-bottom:0; line-height:1.4; }
.modal-body{ position:relative; flex:1 1 auto; padding:1.25rem; }
.modal-footer{ display:flex; flex-wrap:wrap; flex-shrink:0; align-items:center;
  justify-content:flex-end; gap:.5rem; padding:.9rem 1.25rem; }
.modal-backdrop{ position:fixed; top:0; left:0; z-index:1050; width:100vw; height:100vh;
  background:#000; }
.modal-backdrop.fade{ opacity:0; }
.modal-backdrop.show{ opacity:.5; }
.modal-open{ overflow:hidden; }
@media (max-width:575.98px){ .modal-dialog{ margin:.5rem; max-width:none; } }

/* ── 12. 페이드/닫기버튼/툴팁 ──────────────────────────────────────────── */
.fade{ transition:opacity .15s linear; }
.fade:not(.show){ opacity:0; }
.btn-close{ box-sizing:content-box; width:1em; height:1em; padding:.25em; color:var(--ink-2);
  background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;
  border:0; border-radius:var(--r-sm); opacity:.55; }
.btn-close:hover{ opacity:.85; }
.tooltip{ position:absolute; z-index:1080; display:block; margin:0; font-family:var(--font-sans);
  font-size:.8rem; word-wrap:break-word; opacity:0; }
.tooltip.show{ opacity:.95; }
.tooltip .tooltip-arrow{ display:block; width:.8rem; height:.4rem; }
.tooltip-inner{ max-width:220px; padding:.35rem .6rem; text-align:center; }

/* ── 13. 페이지네이션 구조 ─────────────────────────────────────────────── */
.pagination{ display:flex; padding-left:0; list-style:none; }
.page-link{ position:relative; display:block; text-decoration:none; padding:.35rem .7rem; }
.page-item.disabled .page-link{ pointer-events:none; }

/* ── 14. 반응형 display 재선언 — 기본 유틸(.d-none 등)보다 뒤에 와야
   같은 !important 에서 소스 순서로 이긴다(부트스트랩과 동일한 우선순위). ── */
@media (min-width:576px){
  .d-sm-block{ display:block!important; } .d-sm-inline{ display:inline!important; }
}
@media (min-width:768px){
  .d-md-block{ display:block!important; } .d-md-flex{ display:flex!important; }
  .d-md-none{ display:none!important; }
}
@media (min-width:992px){
  .d-lg-block{ display:block!important; } .d-lg-inline{ display:inline!important; }
}
