/* ===== board.css: 게시판 스킨(skin/board/portfolio, skin/board/inquiry)이 함께 쓰는 공통 스타일 =====
   수정 요령: 색·글자·간격은 layout/root.css, layout/theme.css 의 변수를 쓴다. 클래스는 모두 bo- 로 시작한다.
   구조: 상단 바(.bo-top) → 분류(.bo-cate) → 본문(스킨별) → 페이지(.pg_wrap) → 버튼(.bo-btns) */

/* ===== 틀 ===== */
.bo {width: 100%;}
.bo dl, .bo dd, .pf-view dl, .pf-view dd, .inq-view dl, .inq-view dd {margin: 0;}
.bo-top {display: flex;flex-wrap: wrap;align-items: center;justify-content: space-between;gap: 2rem;margin-bottom: 3.2rem;}
.bo-total {font-size: 2rem;color: var(--color-muted);}
.bo-total strong {font-weight: 800;color: var(--color-ink);}
.bo-hidden {position: absolute;width: .1rem;height: .1rem;overflow: hidden;clip: rect(0, 0, 0, 0);}

/* ===== 검색 ===== */
.bo-search {display: flex;flex-wrap: wrap;gap: 1rem;}
.bo-search select, .bo-search input[type="text"] {height: 5.6rem;padding: 0 2rem;border: .2rem solid var(--color-line);border-radius: 10rem;background: var(--color-white);font-size: 1.7rem;color: var(--color-ink);}
.bo-search select {appearance: none;-webkit-appearance: none;-moz-appearance: none;padding-right: 5.2rem;background: var(--color-white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235a5a63' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 2rem center / 1.8rem;cursor: pointer;}
.bo-search input[type="text"] {width: 28rem;}
.bo-search select:focus, .bo-search input[type="text"]:focus {outline: 0;border-color: var(--color-primary);box-shadow: 0 0 0 .4rem rgba(var(--primary-rgb), .14);}
.bo-search button {height: 5.6rem;padding: 0 3rem;border-radius: 10rem;background: var(--color-ink);color: #fff;font-size: 1.7rem;font-weight: 700;transition: background .3s;}
.bo-search button:hover {background: var(--color-primary);}

/* ===== 분류 칩 (그누보드 $category_option 이 li 를 만든다) ===== */
.bo-cate {display: flex;flex-wrap: wrap;gap: 1rem;margin-bottom: 3.6rem;}
.bo-cate li {list-style: none;}
.bo-cate a {display: block;padding: 1.1rem 2.4rem;border: .2rem solid var(--color-line);border-radius: 10rem;background: var(--color-white);font-size: 1.7rem;font-weight: 700;transition: background .3s, color .3s, border-color .3s;}
.bo-cate a:hover {border-color: var(--color-primary);color: var(--color-primary);}
.bo-cate a#bo_cate_on, .bo-cate a.on {background: var(--color-ink);border-color: var(--color-ink);color: #fff;}

/* ===== 빈 목록 / 알림 ===== */
.bo-empty {padding: 10rem 2rem;border: .2rem dashed var(--color-line);border-radius: var(--radius);background: rgba(255, 255, 255, .7);text-align: center;font-size: 2rem;color: var(--color-muted);}
.bo-notice {margin-bottom: 3.2rem;padding: 2.4rem 3rem;border-radius: var(--radius);background: var(--color-soft);font-size: 1.8rem;line-height: 1.7;}
.bo-notice strong {color: var(--color-primary);}

/* ===== 칩 / 상태 표시 ===== */
.bo-chip {display: inline-block;padding: .5rem 1.4rem;border-radius: 10rem;background: var(--color-soft);color: var(--color-primary);font-size: 1.4rem;font-weight: 800;white-space: nowrap;}
.bo-chip.is-done {background: var(--color-ink);color: #fff;}
.bo-chip.is-wait {background: var(--accent-wash);color: var(--color-ink);}
.bo-chip.is-notice {background: var(--color-accent);color: var(--color-ink);}

/* ===== 버튼 줄 (버튼 모양은 공용 .btn 을 쓴다) ===== */
.bo-btns {display: flex;flex-wrap: wrap;align-items: center;justify-content: space-between;gap: 1.6rem;margin-top: 4rem;}
.bo-btns-group {display: flex;flex-wrap: wrap;gap: 1rem;}
.bo-btns .btn {min-height: 5.6rem;}
.bo-admin {display: flex;flex-wrap: wrap;gap: 1rem;margin-top: 2.4rem;}
.bo-admin button {padding: 1rem 2rem;border: .2rem solid var(--color-line);border-radius: 10rem;font-size: 1.5rem;font-weight: 700;transition: border-color .3s, color .3s;}
.bo-admin button:hover {border-color: var(--color-primary);color: var(--color-primary);}

/* ===== 페이지 번호 (그누보드 get_paging 출력) ===== */
.pg_wrap {margin-top: 5rem;text-align: center;}
.pg_wrap .pg {display: inline-flex;flex-wrap: wrap;align-items: center;justify-content: center;gap: .8rem;}
.pg_wrap .pg a, .pg_wrap .pg strong {display: inline-flex;align-items: center;justify-content: center;min-width: 4.8rem;height: 4.8rem;padding: 0 1.2rem;border: .2rem solid var(--color-line);border-radius: 10rem;background: var(--color-white);font-size: 1.6rem;font-weight: 700;transition: background .3s, color .3s, border-color .3s;}
.pg_wrap .pg a:hover {border-color: var(--color-primary);color: var(--color-primary);}
.pg_wrap .pg .pg_current {background: var(--color-ink);border-color: var(--color-ink);color: #fff;}
.pg_wrap .sound_only, .sound_only {position: absolute;width: .1rem;height: .1rem;overflow: hidden;clip: rect(0, 0, 0, 0);}

/* ===== 글쓰기 폼 ===== */
.bo-form {display: grid;gap: 3.2rem;}
.bo-section {padding: 4.4rem;border: .1rem solid var(--color-line);border-radius: var(--radius);background: rgba(255, 255, 255, .86);}
.bo-section-title {display: flex;flex-wrap: wrap;align-items: center;gap: 1rem 1.6rem;margin-bottom: 3rem;font-size: 2.6rem;font-weight: 800;}
.bo-section-title small {display: block;margin-top: .4rem;font-size: 1.5rem;font-weight: 500;color: var(--color-muted);}
.bo-title-text {display: block;min-width: 0;}
.bo-grid {display: grid;grid-template-columns: repeat(2, 1fr);gap: 2.8rem 2.4rem;}
.bo-field {display: flex;flex-direction: column;gap: 1rem;min-width: 0;}
.bo-field.is-wide {grid-column: 1 / -1;}
.bo-label {font-size: 1.8rem;font-weight: 700;}
.req {margin-left: .4rem;color: #e02424;font-weight: 800;}
.bo-input, .bo-select, .bo-textarea {width: 100%;padding: 1.8rem 2.2rem;border: .2rem solid var(--color-line);border-radius: 1.4rem;background: var(--color-white);font-size: 1.9rem;color: var(--color-ink);transition: border-color .3s, box-shadow .3s;}
.bo-textarea {min-height: 28rem;line-height: 1.7;resize: vertical;}
.bo-select {appearance: none;-webkit-appearance: none;-moz-appearance: none;padding-right: 6.4rem;background: var(--color-white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235a5a63' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 2.6rem center / 2rem;cursor: pointer;}
.bo-input:focus, .bo-select:focus, .bo-textarea:focus {outline: 0;border-color: var(--color-primary);box-shadow: 0 0 0 .4rem rgba(var(--primary-rgb), .14);}
.bo-input::placeholder, .bo-textarea::placeholder {color: #9a9aa6;}
.bo-help {font-size: 1.5rem;line-height: 1.6;color: var(--color-muted);}
.bo-check {display: flex;align-items: center;gap: 1.2rem;font-size: 1.8rem;}
.bo-check input {flex: none;width: 2.4rem;height: 2.4rem;accent-color: var(--color-primary);}
.bo-options {display: flex;flex-wrap: wrap;gap: 1rem 3rem;}
.bo-options.is-top, .bo-field.is-top {margin-top: 2.4rem;}
.bo-file {padding: 1.6rem 2rem;border: .2rem dashed var(--color-line);border-radius: 1.4rem;background: var(--color-bg);font-size: 1.6rem;}
.bo-file + .bo-file {margin-top: 1rem;}
.bo-agree {padding: 3rem;border-radius: var(--radius);background: var(--color-bg);border: .1rem solid var(--color-line);}
.bo-agree p {margin-bottom: 1.6rem;font-size: 1.6rem;line-height: 1.7;color: var(--color-muted);}

/* ===== 아이콘 (Lucide 계열 선 아이콘 · ISC 라이선스는 납품 전 확인) =====
   쓰는 법: <span class="bo-ico i-user" aria-hidden="true"></span> — 색은 글자색(currentColor)을 따른다. 크기는 .bo-ico 의 width/height. */
:root {--ico-user: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");--ico-phone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E");--ico-mail: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E");--ico-lock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E");--ico-tag: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z'/%3E%3Ccircle cx='7.5' cy='7.5' r='.5'/%3E%3C/svg%3E");--ico-card: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='14' x='2' y='5' rx='2'/%3E%3Cpath d='M2 10h20'/%3E%3C/svg%3E");--ico-calendar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M16 2v4'/%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M3 10h18'/%3E%3C/svg%3E");--ico-link: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E");--ico-pen: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4z'/%3E%3C/svg%3E");--ico-message: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3C/svg%3E");--ico-upload: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpath d='m17 8-5-5-5 5'/%3E%3Cpath d='M12 3v12'/%3E%3C/svg%3E");--ico-shield: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E");--ico-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");--ico-info: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4'/%3E%3Cpath d='M12 8h.01'/%3E%3C/svg%3E");--ico-send: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m22 2-7 20-4-9-9-4z'/%3E%3Cpath d='M22 2 11 13'/%3E%3C/svg%3E");--ico-briefcase: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='14' x='2' y='7' rx='2'/%3E%3Cpath d='M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16'/%3E%3C/svg%3E");--ico-code: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m16 18 6-6-6-6'/%3E%3Cpath d='m8 6-6 6 6 6'/%3E%3C/svg%3E");--ico-flag: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z'/%3E%3Cpath d='M4 22v-7'/%3E%3C/svg%3E");--ico-list: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 6h13'/%3E%3Cpath d='M8 12h13'/%3E%3Cpath d='M8 18h13'/%3E%3Cpath d='M3 6h.01'/%3E%3Cpath d='M3 12h.01'/%3E%3Cpath d='M3 18h.01'/%3E%3C/svg%3E");--ico-clock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E");}
.bo-ico {display: inline-block;flex: none;width: 2.4rem;height: 2.4rem;background: currentColor;-webkit-mask: var(--i) center / contain no-repeat;mask: var(--i) center / contain no-repeat;}
.i-user {--i: var(--ico-user);}
.i-phone {--i: var(--ico-phone);}
.i-mail {--i: var(--ico-mail);}
.i-lock {--i: var(--ico-lock);}
.i-tag {--i: var(--ico-tag);}
.i-card {--i: var(--ico-card);}
.i-calendar {--i: var(--ico-calendar);}
.i-link {--i: var(--ico-link);}
.i-pen {--i: var(--ico-pen);}
.i-message {--i: var(--ico-message);}
.i-upload {--i: var(--ico-upload);}
.i-shield {--i: var(--ico-shield);}
.i-check {--i: var(--ico-check);}
.i-info {--i: var(--ico-info);}
.i-send {--i: var(--ico-send);}
.i-briefcase {--i: var(--ico-briefcase);}
.i-code {--i: var(--ico-code);}
.i-flag {--i: var(--ico-flag);}
.i-list {--i: var(--ico-list);}
.i-clock {--i: var(--ico-clock);}
:root {--ico-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='3' rx='2' ry='2'/%3E%3Ccircle cx='9' cy='9' r='2'/%3E%3Cpath d='m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21'/%3E%3C/svg%3E");--ico-file: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z'/%3E%3Cpath d='M14 2v4a2 2 0 0 0 2 2h4'/%3E%3Cpath d='M10 9H8'/%3E%3Cpath d='M16 13H8'/%3E%3Cpath d='M16 17H8'/%3E%3C/svg%3E");--ico-clip: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48'/%3E%3C/svg%3E");--ico-arrow-left: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m12 19-7-7 7-7'/%3E%3Cpath d='M19 12H5'/%3E%3C/svg%3E");--ico-arrow-right: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m12 5 7 7-7 7'/%3E%3C/svg%3E");--ico-external: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E");--ico-eye: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");}
.i-image {--i: var(--ico-image);}
.i-file {--i: var(--ico-file);}
.i-clip {--i: var(--ico-clip);}
.i-arrow-left {--i: var(--ico-arrow-left);}
.i-arrow-right {--i: var(--ico-arrow-right);}
.i-external {--i: var(--ico-external);}
.i-eye {--i: var(--ico-eye);}
.bo-title-ico {display: inline-flex;flex: none;align-items: center;justify-content: center;width: 5.2rem;height: 5.2rem;border-radius: 1.6rem;background: var(--color-soft);color: var(--color-primary);}
.bo-title-ico.is-sm {width: 4.4rem;height: 4.4rem;border-radius: 1.4rem;}
.bo-title-ico .bo-ico {width: 2.6rem;height: 2.6rem;}
.bo-input-wrap {position: relative;}
.bo-input-wrap > .bo-ico {position: absolute;left: 2.2rem;top: 50%;margin-top: -1.2rem;color: var(--color-muted);pointer-events: none;transition: color .3s;}
.bo-input-wrap:focus-within > .bo-ico {color: var(--color-primary);}
.bo-input-wrap .bo-input, .bo-input-wrap .bo-select {padding-left: 6.4rem;}
.bo-section.has-wm {overflow: hidden;}
.bo-section.has-wm::after {content: "";position: absolute;right: 3rem;top: 2.6rem;width: 13rem;height: 13rem;background: var(--color-primary);opacity: .07;-webkit-mask: var(--bo-wm) center / contain no-repeat;mask: var(--bo-wm) center / contain no-repeat;pointer-events: none;}
.bo-section.has-wm > * {position: relative;z-index: 1;}
.bo-section.is-contact {--bo-wm: var(--ico-user);}
.bo-section.is-project {--bo-wm: var(--ico-briefcase);}
.bo-section.is-content {--bo-wm: var(--ico-message);}
.bo-section.is-agree {--bo-wm: var(--ico-shield);}
.bo-notice.has-ico {display: flex;align-items: center;gap: 2rem;}
.bo-notice-ico {display: inline-flex;flex: none;align-items: center;justify-content: center;width: 5.2rem;height: 5.2rem;border-radius: 50%;background: var(--color-white);color: var(--color-primary);}
.bo-file {display: flex;align-items: center;gap: 1.4rem;}
.bo-file .bo-ico {color: var(--color-primary);}
/* ===== 보기 공통: 이전글/다음글, 첨부 ===== */
.bo-nav {margin-top: 5rem;border-top: .2rem solid var(--color-ink);}
.bo-nav li {display: flex;align-items: center;gap: 3rem;padding: 2.2rem .4rem;border-bottom: .1rem solid var(--color-line);font-size: 1.8rem;}
.bo-nav span {flex: none;width: 8rem;font-weight: 800;color: var(--color-muted);}
.bo-nav a {flex: 1;min-width: 0;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
.bo-nav a:hover {color: var(--color-primary);text-decoration: underline;}
.bo-attach {display: grid;gap: 1rem;margin-top: 4rem;padding: 3rem;border-radius: var(--radius);background: var(--color-bg);border: .1rem solid var(--color-line);}
.bo-attach a {font-size: 1.7rem;font-weight: 600;}
.bo-attach a:hover {color: var(--color-primary);text-decoration: underline;}
.bo-attach span {margin-left: 1rem;font-size: 1.4rem;font-weight: 400;color: var(--color-muted);}

/* ===== 반응형 ===== */
@media (max-width: 1024px) {
  .bo-section {padding: 3.2rem;}
}
@media (max-width: 768px) {
  .bo-top {flex-direction: column;align-items: stretch;}
  .bo-search {width: 100%;}
  .bo-search select, .bo-search input[type="text"], .bo-search button {flex: 1 1 100%;width: 100%;}
  .bo-section {padding: 2.4rem 2rem;}
  .bo-section-title {font-size: 2.2rem;}
  .bo-grid {grid-template-columns: 1fr;}
  .bo-btns .btn {flex: 1;}
  .bo-nav li {gap: 1.6rem;font-size: 1.6rem;}
  .bo-nav span {width: 6.4rem;}
}

/* Consistent text fields, including GNUboard's plain editor. */
.bo-form textarea#wr_content, .inq-answer-form textarea {display:block;width:100%;min-height:28rem;padding:1.8rem 2.2rem;border:.2rem solid var(--color-line);border-radius:1.4rem;background:#fff;color:var(--color-ink);font:400 1.9rem/1.75 var(--font-base);resize:vertical;}
.bo-form textarea#wr_content:focus, .inq-answer-form textarea:focus {outline:0;border-color:var(--color-primary);box-shadow:0 0 0 .4rem rgba(var(--primary-rgb),.12);}
.bo-form input, .bo-form select, .bo-search input, .bo-search select {font-family:var(--font-base);font-weight:500;}
.bo-form textarea::placeholder, .bo-form input::placeholder {font-family:var(--font-base);font-weight:400;color:#7c8799;opacity:1;}
.bo-section {box-shadow:0 .8rem 3.2rem rgba(28,62,116,.035);}
.bo-file {min-width:0;}
.bo-file input[type="file"] {max-width:100%;min-width:0;font:400 1.5rem/1.6 var(--font-base);}
.bo-file input::file-selector-button {padding:.8rem 1.4rem;margin-right:1rem;border:0;border-radius:.8rem;background:var(--color-soft);color:var(--color-primary);font-weight:700;cursor:pointer;}
@media(max-width:768px) {
  .bo-search {width:100%;display:grid;grid-template-columns:9rem minmax(0,1fr) auto;gap:.6rem;}
  .bo-search input[type="text"] {width:100%;min-width:0;}
  .bo-search select {min-width:0;padding-left:1.2rem;padding-right:2.8rem;background-position:right 1rem center;}
  .bo-search button {padding:0 1.6rem;}
  .bo-form textarea#wr_content {font-size:1.8rem;min-height:25rem;}
}
