@charset "utf-8";
/* ============================================================================
   in-erp CSS 앵커: theme/inerp/css/default.css
   ============================================================================
   ★ 파일명 고정. head.sub.php 의 `</title>` 직후 첫 <link> 이며,
     html_process(lib/common.lib.php:3383) 의 CSS 삽입 앵커다.
     정규식 #(</title>[^<]*<link[^>]+>)# 이 이 <link> 를 찾아 그 뒤에
     add_stylesheet() 결과를 밀어 넣는다. 순서를 우리가 완전히 통제한다.

   ★ 이 파일은 "캐스케이드 층위 선언 + 그누보드 격리 + !important 창구" 전용이다.
     실제 스타일은 tokens/base/layout/components/board/print 에 쓴다.

   ── 격리 전략: @layer 캐스케이드 역전 (ADR D-72 · 10_CSS.md §1.5 D안)
      [normal 선언]     언레이어드  >  마지막 레이어  >  …  >  첫 레이어
      [!important 선언] 첫 레이어   >  …            >  마지막 레이어  >  언레이어드
                        └ 순서가 뒤집힌다. 이게 핵심이다.

      · normal   : 우리 CSS 는 언레이어드라 **특이도와 무관하게 항상 이긴다.**
                   `#hd,#wrapper,#ft{min-width:1200px}`(1,0,0) 조차 `.ie-shell`(0,1,0) 에 진다.
      · important: 순서가 반대이므로 `gnu` 보다 **먼저 선언한** `in-force` 안의 !important 가
                   그누보드의 !important 13곳을 이긴다.
   ============================================================================ */

/* ── 1) 레이어 순서 확정. 문서 전체에서 최초 등장이어야 한다 ──────────────── */
@layer in-force, gnu;

/* ── 2) 그누보드 코어 CSS 를 gnu 레이어에 가둔다 ──────────────────────────────
   ★ 복사해서 감싸지 마라. url('../img/captcha2.png') 같은 상대경로는 "가져온 파일 자신"을
     기준으로 해석되므로 @import 로는 그대로 살아나지만, 파일을 복사하면 8개가 전부 깨진다.
   ★ HTML <link> 에는 레이어 지정 속성이 없다(2026-08 기준). @import 가 유일한 수단이라
     이 프로젝트에서 @import 가 허용되는 **단 한 곳**이다. 체인 깊이는 1로 고정된다.
   ★ ?v 는 그누보드 코어 버전. 코어 업그레이드 때만 손으로 올린다. */
@import url("../../../css/default.css?v=g5-5.6.34") layer(gnu);

/* ── 3) !important 창구: 이 프로젝트에서 !important 가 허용되는 유일한 곳 ─────
   여기 들어오는 규칙마다 "무엇을 이기려는지"를 파일:줄 근거와 함께 반드시 남긴다.
   근거 없는 !important 는 코드 리뷰 반려 사유다. */
@layer in-force {

  /* [1] css/default.css:35 `input[type=text],input[type=password],textarea{outline:none}`
         css/default.css:38~43 `:focus{box-shadow:0 0 5px #9ed4ff; border:1px solid #558ab7 !important}`
     포커스 링 제거 + 파란 테두리 강제 = 키보드 접근성 파괴(WCAG 2.4.7 / 1.4.11).
     특이도로는 못 이긴다(!important). 브랜드 포커스로 되돌린다. */
  .ie-shell :focus-visible,
  .ie-input:focus-visible,
  .ie-select:focus-visible,
  .ie-textarea:focus-visible,
  .ie-content input[type="text"]:focus,
  .ie-content input[type="password"]:focus,
  .ie-content input[type="search"]:focus,
  .ie-content input[type="email"]:focus,
  .ie-content textarea:focus,
  .ie-content select:focus {
    outline: 2px solid var(--ie-c-focus) !important;
    outline-offset: 1px !important;
    border-color: var(--ie-c-focus) !important;
    box-shadow: 0 0 0 3px rgba(23, 144, 138, .22) !important;   /* color-mix 폴백 병기 */
  }

  /* [2] css/default.css:65~66 `.mobile-only{display:block!important}` (≤768px)
     그누보드 브레이크포인트(769px)와 우리 것(768/1024)이 어긋나 예상 밖 구간에서 튀어나온다.
     테마는 모바일 전용 마크업을 쓰지 않으므로 상시 차단한다. */
  .ie-shell .mobile-only { display: none !important; }

  /* [3] css/default.css:371 `.required{background-image/repeat/position !important ×3}`
     우리가 만들지 않는 레거시 폼(회원가입·비번찾기)에서 필수표시 배경이미지를 지운다.
     별표는 우리 마크업이 담당한다. */
  .ie-legacy .required { background-image: none !important; }

  /* [4] FOUC 방지. 첫 페인트에서 사이드바 240→60 애니메이션이 보이면 안 된다.
     모든 transition 을 이겨야 하므로 여기(in-force)에만 둔다. */
  .ie-preboot .ie-sidebar,
  .ie-preboot .ie-nav__label,
  .ie-preboot .ie-nav__caret,
  .ie-preboot .ie-sidebar__title { transition: none !important; }

  /* [5] 게시판 스킨이 `style="width:100%"` 를 **인라인**으로 박는다
         (bo_table_width → skin/board/*/list.skin.php:16 `style="width:<?php echo $width ?>"`).
     인라인 스타일은 레이어 밖이라 !important 외에는 이길 방법이 없다. */
  .ie-content #bo_list,
  .ie-content #bo_v,
  .ie-content #bo_w,
  .ie-content #bo_w form[name="fwrite"] { width: 100% !important; max-width: 100% !important; }
}
