/* 포털 단발 화면 공용 부품 — 인라인 style 속성 외부화(CSP style-src 'self' 대응).

   한 화면에 한두 자리씩만 있어 미러를 여섯 벌로 쪼개는 대신 한 벌로 묶었다.
   **규칙마다 뿌리가 다르고 전부 자기 화면의 고유 id 로 시작하므로 교차 매칭이 0이다** — 이 시트를
   함께 싣는 다른 화면에도 걸리지 않는다. 담는 뷰와 자리:

     app/Views/portal/contact/complete.php   1자리   뿌리 #contact_complete (뷰 1)
     app/Views/portal/intro/case.php         1자리   뿌리 #case             (뷰 1)
     app/Views/portal/intro/main.php         1자리   뿌리 #feature          (뷰 1)
     app/Views/portal/main.php               2자리   뿌리 #main             (뷰 1)
     app/Views/portal/notice/view.php        1자리   뿌리 #notice_v         (뷰 1)
     app/Views/portal/secure/firewall.php    1자리   뿌리 section#firewall  (뷰 3 — 아래 주의)

   `app/Views/portal/main.php` 를 뷰-경로 미러로 두면 `public/css/portal/main.css` 가 되는데
   **그 파일은 이미 있고 `style.css` 가 `@import` 하는 전역 시트**다. 거기에 얹으면 `?v=` 토큰을 줄 수
   없어 반영이 0이 된다(이 회차의 근본 제약). 그래서 뷰-경로 미러를 만들지 않고 이 공용 부품으로 받았다.

   ⚠ `#firewall` 은 세 뷰가 쓴다(`console/server/modify_firewall.php`,
   `console/subnet/modify_firewall.php`, `portal/secure/firewall.php`). 다만 콘솔 둘은
   `<select id="firewall">` 이고 포털만 `<section class="subContents" id="firewall">` 이라 **태그가 갈린다**.
   선택자에 `section` 을 붙여 교차 매칭을 0으로 만들었다. 게다가 콘솔은 이 시트를 싣지 않는다. */

/* 문의 접수 완료 — 상단 배너 문구 간격. 경쟁: basic.css `#mainVisual .cont{padding-top:60px}` (1,1,0).
   `#mainVisual` 은 **40뷰가 공유**하므로 뿌리로 쓸 수 없다 → 화면 id 를 앞에 붙여 (2,2,0) 으로 이긴다. */
#contact_complete #mainVisual .cont.cc-visual {
	padding-top: 46px;
	line-height: 58px;
	text-align: center;
}

/* 고객사례 — 외부 사이트로 나가는 넓은 버튼.
   경쟁: basic.css `.btn-iteasy{display:inline-block;height:42px;line-height:42px;font-weight:600;font-size:1.4em;cursor:pointer}` (0,1,0).
   인라인은 그중 height·line-height·font-weight·font-size 를 **다른 값**으로 덮고 있었다.
   `display:inline-block` 과 `cursor:pointer` 는 시트와 **같은 값**이라 효력이 없으나 지우지 않고 함께
   가둔다(정리 후보). 선택자는 (2,3,1). */
#case #sub1 .btnBox a.btn-iteasy.case-btn-wide {
	display: inline-block;
	width: 295px;
	height: 50px;
	line-height: 50px;
	font-weight: 400;
	border-radius: 8px;
	text-align: center;
	font-size: 16px;
	cursor: pointer;
}

/* 서비스 소개 — 유튜브 삽입 틀. 경쟁 0건. */
#feature #sub1 .intro_cont01 iframe.ift-rounded {
	border-radius: 20px;
	overflow: hidden;
	margin-bottom: 50px;
}

/* 포털 첫 화면 — 유튜브 삽입 틀(가운데 정렬). 경쟁 0건. */
#main #sub1 iframe.main-video {
	border-radius: 20px;
	overflow: hidden;
	display: block;
	margin: 0 auto;
	margin-top: 60px;
}

/* 포털 첫 화면 — 본문 상하 여백을 전역 절반으로.
   경쟁: basic.css `.wrap_cont .cont{padding:120px 0}` (0,2,0) → (2,2,0) 으로 이긴다. */
#main #sub1 .cont.main-pad-60 { padding: 60px 0; }

/* 공지 상세 — 긴급 말머리 색.
   ⚠ 저장소에서 **유일하게 Parser 조건이 style 속성값 안에 있던 자리**다(`notice/view.php`).
   조건을 class 속성 안으로 옮겼으므로 컨트롤러 변경이 없다. 조건이 거짓이면 `class=""` 가 남고
   이 규칙은 매칭되지 않는다 — 종전에는 `style=" "`(공백만 든 빈 선언 — 빈 `style` 속성도 CSP 위반이다)이 남았다.
   경쟁: customer.css `#notice_v #sub1 .subject h3 b{color:rgb(155,154,154)}` **(2,1,2)** → 아래는 (2,2,2). */
#notice_v #sub1 .subject h3 b.ntc-urgent { color: #ff6c6c; }

/* 보안 서비스 소개 — 버튼 줄 가운데 정렬. 경쟁 0건. */
section#firewall #sub2 .cont div.fw-center {
	display: flex;
	justify-content: center;
}
