/* =====================================================================
   포털 기본 규칙 — OutSystems 플랫폼이 넣는 기본 스타일(_Basic.css, 위젯 기본 CSS) 중
   원본 포털 화면이 실제로 쓰는 것만 같은 동작으로 직접 작성했다 (플랫폼 파일은 복사하지 않는다).
   로드 순서(원본과 동일): portal-base.css → font-awesome → OutSystemsUI.css → portal.css
   ===================================================================== */

body { margin: 0; padding: 0; }

/* 화면 전체가 아니라 screen-container 안에서 스크롤 (OSUI 는 html 의 overflow 를 숨긴다) */
.screen-container { height: 100vh; overflow-y: auto; }

/* 위젯 배치 클래스 */
.OSFillParent { display: block; width: 100%; }
input.OSFillParent, select.OSFillParent, button.OSFillParent, textarea.OSFillParent { box-sizing: border-box; display: inline-block; }
.OSInline { display: inline-block; vertical-align: top; }
.OSBlockWidget { display: inline; }
[class*="ThemeGrid_Width"] { box-sizing: border-box; display: inline-block; }
div[class*="ThemeGrid_Width"] { vertical-align: top; }

/* 숨김: 원본은 보이지 않는 위젯을 아예 그리지 않는다. 클래스의 display 값이 hidden 을 이기지 않게 */
[hidden] { display: none !important; }

/* 입력칸 기본 (원본 data-input) */
[data-input] { border: 1px solid #aaa; margin: 0; }
[data-input]::-ms-clear { display: none; }

/* 팝업 (원본 Popup 위젯) — 모양은 OSUI .popup-backdrop / .popup-dialog 가 덮어쓴다 */
[data-popup-backdrop] {
    align-items: center; background-color: rgba(0, 0, 0, 0.3); bottom: 0; display: flex; justify-content: center;
    left: 0; position: fixed; right: 0; text-align: center; top: 0; z-index: 100;
}
[data-popup] {
    background-clip: padding-box; background-color: #fff; border: 1px solid rgba(0, 0, 0, 0.2); border-radius: 6px;
    max-height: 90%; max-width: 300px; min-height: 100px; min-width: 300px; overflow: auto; padding: 10px;
    position: relative; text-align: left;
}

/* 값 표시 위젯(원본 Expression) — 공백·줄바꿈을 그대로, 빈 값이어도 한 줄 높이 */
[data-expression] { white-space: pre-wrap; }
[data-expression]:empty:after { content: "\200b"; }
