/* feature-v2-web-editor.css
 * Track: web-editor-mirror-markup (Phase C) — markup-only
 * Scope: ① PDF 첨부 editor (s1-web-step25/27) + ⑤ web mirror (s5-web-mirror)
 * Source: PDF v2 영역 ② FR-PWA2·3·5·6·7·8·15 + Edge cases / 영역 ④ FR2·3·4
 * BAN1: no border-left/right >= 2px color stripes. BAN2: no gradient text + background-clip:text.
 * BEM: .fv2-editor__<element>--<modifier>, .fv2-mirror__<element>--<modifier>
 * iOS zoom-avoidance + ≥44px touch targets aligned with feature-v2-web-mailbox/registry.
 */

/* ============================================================
 * shell + tokens (shared between editor + mirror)
 * origin 편집기 레이아웃(header.css):
 *   header.fixed h:90px / nav.fixed left:0 w:300px / .content float left:300px
 * → body 레벨 오버라이드 금지. .fv2-editor 토큰만 정의하고 .content 안에서만 적용.
 * ============================================================ */
.fv2-editor {
    --fv2ed-bg:#f7f8fa; --fv2ed-surface:#fff; --fv2ed-border:#e5e8ee; --fv2ed-border-strong:#c8cdd6;
    --fv2ed-text:#111; --fv2ed-text-sub:#777; --fv2ed-text-muted:#aaa;
    /* origin step2 버튼 컬러(#111 검정) 정합 — 오렌지는 보조 강조용으로만 */
    --fv2ed-primary:#111; --fv2ed-primary-soft:#f4f4f4;
    --fv2ed-accent:#FF6262; --fv2ed-accent-soft:#fff1e6;
    --fv2ed-danger:#d4303a; --fv2ed-danger-soft:#fde8ea;
    --fv2ed-info:#2566d4; --fv2ed-info-soft:#e6efff;
    --fv2ed-success:#1f8a4a; --fv2ed-success-soft:#e3f5ea;
    --fv2ed-warning:#b76900; --fv2ed-warning-soft:#fff3df;
    --fv2ed-radius:12px; --fv2ed-radius-sm:8px;
    --fv2ed-shadow:0 1px 2px rgba(20,24,32,.04),0 4px 14px rgba(20,24,32,.06);
    --fv2ed-focus:0 0 0 3px rgba(17,17,17,.18);
    color:var(--fv2ed-text); font-size:14px; line-height:1.55;
}
/* origin .content .cont 패턴 1:1 흡수 — height:100%; overflow-y:scroll */
.fv2-editor .cont.fv2-editor__cont { height:100%; overflow-y:auto; padding:0; }
.fv2-editor .cont.fv2-editor__cont::-webkit-scrollbar { display:none; }
.fv2-editor__container { padding:0 0 60px; }
.fv2-editor__header { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:20px; flex-wrap:wrap; }
.fv2-editor__title { font-size:22px; font-weight:700; letter-spacing:-.02em; margin:0; }
.fv2-editor__subtitle { color:var(--fv2ed-text-sub); margin:4px 0 0; font-size:13px; }

/* hero — origin .content .step2 .img_banner 1:1 매칭
   margin:35px 40px; height:210px; bg:#F3EDEA; padding:40px 70px;
   h3 20px/#111/600, p 15px/#777/300, illust 우측 absolute */
.fv2-editor__hero {
    margin:35px 40px; height:210px;
    background:#F3EDEA;
    position:relative; overflow:hidden;
    padding:40px 70px;
    display:flex; align-items:center;
}
.fv2-editor__hero-body { max-width:calc(100% - 200px); }
.fv2-editor__hero-title { font-size:20px; color:#111; font-weight:600; margin:0; line-height:1.3; }
.fv2-editor__hero-desc { margin-top:10px; font-size:15px; color:#777; line-height:1.4em; font-weight:300; }
.fv2-editor__hero-illust { position:absolute; right:-3px; top:-25px; width:auto; height:260px; opacity:.92; }
/* hero 내부 CTA — origin step_2 .add_img (검정 버튼) 1:1 매칭. hero 좌하단 단일 primary action. */
.fv2-editor__hero-cta {
    display:inline-flex; align-items:center; justify-content:center;
    height:41px; min-width:145px; padding:0 18px;
    background:#111; color:#fff; font-size:15px; font-weight:500;
    border:none; border-radius:0; cursor:pointer; text-decoration:none;
    margin-top:20px;
}
.fv2-editor__hero-cta:hover { background:#000; color:#fff; }
.fv2-editor__hero-cta:focus-visible { outline:2px solid #ff5b00; outline-offset:2px; }
/* origin .content .step2 .img_info 바 패턴 1:1 매칭 — hero 직하 카운터 영역 */
.fv2-editor__bar {
    border-top:1px solid #e8e8e8; border-bottom:1px solid #e8e8e8;
    padding:15px 40px; background:#fff;
}
.fv2-editor__bar p { display:inline-block; font-size:13px; color:#aaa; margin:0; }
.fv2-editor__bar p b { color:#111; font-weight:600; }
.fv2-editor__bar p b abbr { text-decoration:none; }
.fv2-editor__bar p span { margin-left:4px; }
@media (max-width:768px) { .fv2-editor__bar { padding:15px 20px; } }
/* origin .no_data 패턴 — empty illustration + 안내 카피 */
.fv2-editor__empty { padding:80px 20px 60px; text-align:center; }
.fv2-editor__empty img { display:inline-block; max-width:120px; height:auto; opacity:.95; }
.fv2-editor__empty p { margin-top:18px; font-size:13px; color:#aaa; font-weight:300; line-height:1.55; }
/* 보유 항목 노출 시 empty 숨김 — JS 토글 패턴 */
.fv2-editor__empty.fv2-editor__empty--hidden,
.fv2-editor__empty[hidden] { display:none; }
/* hidden file input — sr-only, hero CTA(label[for]) 가 트리거 */
.fv2-editor__file-input-sr {
    position:absolute; width:1px; height:1px; padding:0; margin:-1px;
    overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
@media (max-width:768px) {
    .fv2-editor__hero { margin:20px 16px; height:auto; padding:24px 24px; }
    .fv2-editor__hero-body { max-width:100%; }
    .fv2-editor__hero-title { font-size:18px; }
    .fv2-editor__hero-desc { font-size:13px; }
    .fv2-editor__hero-desc br { display:none; }
    .fv2-editor__hero-illust { position:static; width:84px; height:auto; margin-top:14px; display:block; }
}

/* sr-only — 진행단계는 SR에만 노출 (origin 편집기에 breadcrumb 패턴 없음 → 시각 제거하되 a11y 보존) */
.fv2-editor__sr-only {
    position:absolute !important; width:1px; height:1px; padding:0; margin:-1px;
    overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

/* breadcrumb-style mini stepper (편지지→편지→사진→PDF→등기→주소+결제) */
.fv2-editor__steps:not(.fv2-editor__sr-only) { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-bottom:16px; padding:0; list-style:none; font-size:12px; color:var(--fv2ed-text-muted); }
.fv2-editor__steps:not(.fv2-editor__sr-only) li { display:inline-flex; align-items:center; gap:6px; }
.fv2-editor__steps:not(.fv2-editor__sr-only) li[aria-current="step"] { color:var(--fv2ed-primary); font-weight:700; }
.fv2-editor__steps-divider { color:var(--fv2ed-text-muted); }

/* ============================================================
 * panel — origin .img_list 패턴(padding:30px 40px) 흡수
 * ============================================================ */
.fv2-editor__panel {
    background:var(--fv2ed-surface); border-bottom:1px solid var(--fv2ed-border);
    padding:30px 40px; margin:0;
}
.fv2-editor__panel--no-border { border-bottom:0; }

/* 사이드 패널 "현재 편지지" 배지 — origin은 isCurrent != true 일 때 .hide class 로 숨김.
   preview는 th:classappend 미처리라 항상 노출되어 origin과 다름 → 기본 숨김 처리. */
nav .pro_info .img > span { display:none; }
@media (max-width:768px) { .fv2-editor__panel { padding:24px 16px; } }
.fv2-editor__panel-title { font-size:15px; font-weight:700; margin:0 0 8px; color:var(--fv2ed-text); }
.fv2-editor__panel-desc { font-size:13px; color:var(--fv2ed-text-sub); margin:0 0 12px; line-height:1.6; }

/* notice — origin .img_info 패턴(border-top/bottom + padding:15px 40px) + 부드러운 베이지 */
.fv2-editor__notice {
    background:#fafaf8; border:1px solid #e8e8e8; border-radius:10px;
    padding:18px 22px; margin:24px 40px;
    color:#555; font-size:13px; line-height:1.65;
}
.fv2-editor__notice-title { display:block; font-weight:600; margin-bottom:8px; color:#111; font-size:13px; }
.fv2-editor__notice-list { margin:0; padding-left:14px; color:#777; list-style:none; }
.fv2-editor__notice-list li { margin-top:3px; position:relative; padding-left:10px; }
.fv2-editor__notice-list li:before { content:"•"; position:absolute; left:0; top:0; color:#aaa; font-weight:700; }
@media (max-width:768px) {
    .fv2-editor__notice { padding:16px 18px; margin:20px 16px; }
}

/* ============================================================
 * dropzone (FR-PWA2 .pdf only / FR-PWA3 20MB·30p / FR-PWA7 progress)
 * ============================================================ */
.fv2-editor__dropzone {
    position:relative;
    border:1px dashed var(--fv2ed-border-strong); background:#fafbfd;
    border-radius:var(--fv2ed-radius); padding:36px 20px; text-align:center;
    transition:background .15s ease, border-color .15s ease;
}
.fv2-editor__dropzone[data-state="dragover"] { background:#f4f4f4; border-color:#111; }
.fv2-editor__dropzone[data-state="error"] { background:var(--fv2ed-danger-soft); border-color:#f0b9bd; }
.fv2-editor__dropzone-icon {
    position:relative;
    width:64px; height:64px; margin:0 auto 12px;
    display:inline-flex; align-items:center; justify-content:center;
}
.fv2-editor__dropzone-icon img { width:100%; height:100%; object-fit:contain; }
.fv2-editor__dropzone-icon-tag {
    position:absolute; right:-6px; bottom:-2px;
    background:#111; color:#fff;
    font-size:10px; font-weight:700; letter-spacing:.04em;
    padding:2px 6px; border-radius:3px;
}
.fv2-editor__dropzone-title { font-size:15px; font-weight:700; margin:0 0 4px; color:var(--fv2ed-text); }
.fv2-editor__dropzone-hint { font-size:12px; color:var(--fv2ed-text-muted); margin:0 0 14px; }
.fv2-editor__dropzone-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
.fv2-editor__dropzone-input:focus-visible + .fv2-editor__dropzone-cta,
.fv2-editor__dropzone-input:focus + .fv2-editor__dropzone-cta {
    outline: 2px solid #ff5b00;
    outline-offset: 2px;
}
.fv2-editor__dropzone-cta {
    display:inline-flex; align-items:center; justify-content:center;
    min-height:41px; padding:0 22px; border-radius:0;
    background:#111; color:#fff; font-weight:500; font-size:15px;
    border:0; cursor:pointer; text-decoration:none;
}
.fv2-editor__dropzone-cta:hover { background:#000; }
.fv2-editor__dropzone-cta:focus-visible { outline:none; box-shadow:var(--fv2ed-focus); }
.fv2-editor__dropzone-limits {
    display:flex; gap:6px; flex-wrap:wrap; justify-content:center; margin-top:12px;
    font-size:12px; color:var(--fv2ed-text-muted);
}
.fv2-editor__dropzone-limit {
    background:#eef0f4; border-radius:999px; padding:3px 10px;
}

/* progress (FR-PWA7) */
/* [hidden] 우선순위 보장 — display:grid/flex 가 hidden 을 덮어쓰는 것 방지 */
.fv2-editor__progress[hidden],
.fv2-editor__file[hidden],
.fv2-editor__panel[hidden] { display:none !important; }
.fv2-editor__progress { margin-top:16px; display:grid; gap:6px; }
.fv2-editor__progress-row { display:flex; justify-content:space-between; font-size:12px; color:var(--fv2ed-text-sub); }
.fv2-editor__progress-bar {
    width:100%; height:8px; appearance:none; -webkit-appearance:none;
    border:0; border-radius:999px; background:#eef0f4; overflow:hidden;
}
.fv2-editor__progress-bar::-webkit-progress-bar { background:#eef0f4; border-radius:999px; }
.fv2-editor__progress-bar::-webkit-progress-value { background:#111; border-radius:999px; transition:width .2s ease; }
.fv2-editor__progress-bar::-moz-progress-bar { background:#111; border-radius:999px; }

/* file summary (FR-PWA6: 문서 종 수 + 총 페이지 수) */
.fv2-editor__file {
    margin-top:16px;
    background:#f7f8fa; border:1px solid var(--fv2ed-border);
    border-radius:var(--fv2ed-radius-sm); padding:14px 16px;
}
.fv2-editor__file-row { display:flex; justify-content:space-between; gap:12px; align-items:baseline; flex-wrap:wrap; }
.fv2-editor__file-meta { font-size:12px; color:var(--fv2ed-text-sub); }
.fv2-editor__file-meta b { color:var(--fv2ed-text); }

/* file card list — origin step_2 .img_list li 패턴(box-shadow 카드) 흡수.
   PDF 1개 단일 카드 → horizontal 레이아웃. */
.fv2-editor__file-list { list-style:none; margin:0; padding:0; }
.fv2-editor__file-card {
    display:flex; align-items:center; gap:18px;
    padding:14px 16px;
    box-shadow:0 0 8px rgba(0,0,0,.1);
    background:#fff;
}
.fv2-editor__file-thumb {
    position:relative;
    flex:none; width:64px; height:80px;
    background:#fafaf8; border:1px solid #e8e8e8;
    display:inline-flex; align-items:center; justify-content:center;
}
.fv2-editor__file-thumb img { width:36px; height:36px; opacity:.6; }
.fv2-editor__file-thumb-tag {
    position:absolute; left:50%; bottom:-8px; transform:translateX(-50%);
    background:#111; color:#fff; font-size:10px; font-weight:700; letter-spacing:.05em;
    padding:2px 8px; border-radius:3px;
}
.fv2-editor__file-info { flex:1 1 auto; min-width:0; }
.fv2-editor__file-name {
    margin:0; font-size:14px; font-weight:600; color:#111;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.fv2-editor__file-meta-line, .fv2-editor__file-card .fv2-editor__file-meta {
    margin:6px 0 0; font-size:12px; color:#777;
}
.fv2-editor__file-card .fv2-editor__file-meta b { color:#111; font-weight:600; }
.fv2-editor__file-actions { display:flex; gap:8px; flex-wrap:wrap; flex:none; }
@media (max-width:768px) {
    .fv2-editor__file-card { flex-wrap:wrap; }
    .fv2-editor__file-actions { width:100%; }
}

/* ============================================================
 * registry attach (s1-web-step27): selection list + 부수 stepper
 * ============================================================ */
.fv2-editor__catalog { display:grid; gap:12px; list-style:none; margin:0; padding:0; }
.fv2-editor__catalog-item {
    background:var(--fv2ed-surface); border:1px solid var(--fv2ed-border);
    border-radius:var(--fv2ed-radius); padding:14px 16px;
    display:grid; grid-template-columns:64px 1fr auto; gap:14px; align-items:center;
}
.fv2-editor__catalog-thumb {
    width:64px; height:80px; border-radius:var(--fv2ed-radius-sm);
    background:#f0f2f6 center/cover no-repeat; border:1px solid var(--fv2ed-border);
    overflow:hidden;
}
/* #358: <img> 전환(3ee0039e) 시 누락된 cover 사이징 복원 — 원본 해상도 이미지가 64×80 영역을
   넘어 카드 콘텐츠를 덮던 회귀를 막는다. overflow:hidden 과 함께 이중 방어. */
.fv2-editor__catalog-thumb img {
    width:100%; height:100%; object-fit:cover; display:block;
}
.fv2-editor__catalog-thumb-empty {
    display:flex; align-items:center; justify-content:center;
    width:100%; height:100%; text-align:center;
    color:var(--fv2ed-text-sub); font-size:12px;
}
.fv2-editor__catalog-meta { min-width:0; }
.fv2-editor__catalog-name { font-weight:700; margin:0 0 2px; color:var(--fv2ed-text); font-size:14px; }
.fv2-editor__catalog-desc { color:var(--fv2ed-text-sub); font-size:12px; margin:0; }
.fv2-editor__catalog-price { font-size:12px; color:var(--fv2ed-text); margin-top:4px; font-weight:600; }
/* actions 슬롯(grid 3번째 칸) — 선택 토글 + 카드별 부수 스텝퍼를 세로로 정렬(#401 다중선택).
   step_2_5(PDF) 의 단일 actions 와 동일한 grid 칸을 차지하되 다중선택 컨트롤을 수용. */
.fv2-editor__catalog-actions { display:flex; flex-direction:column; align-items:flex-end; gap:8px; }

/* 카드별 선택 토글 — checkbox + 라벨. 다중선택이므로 여러 카드가 동시에 켜질 수 있다. */
.fv2-editor__catalog-toggle {
    display:inline-flex; align-items:center; gap:6px; cursor:pointer;
    font-size:13px; font-weight:600; color:var(--fv2ed-text-sub); user-select:none;
}
.fv2-editor__catalog-check {
    width:18px; height:18px; accent-color:var(--fv2ed-primary); cursor:pointer; margin:0;
}
/* 다중선택 활성 상태 — JS(T013)가 카드에 is-selected 토글. 선택된 카드를 시각적으로 강조. */
.fv2-editor__catalog-item.is-selected {
    border-color:var(--fv2ed-primary); box-shadow:var(--fv2ed-shadow);
}
.fv2-editor__catalog-item.is-selected .fv2-editor__catalog-toggle { color:var(--fv2ed-primary); }
/* 미선택 카드는 부수 스텝퍼를 비활성 톤으로(동작 비활성은 JS 가 disabled 로 제어). */
.fv2-editor__catalog-item:not(.is-selected) .fv2-editor__qty { opacity:.5; }

/* qty stepper */
.fv2-editor__qty { display:inline-flex; align-items:center; gap:0; border:1px solid var(--fv2ed-border); border-radius:8px; overflow:hidden; background:#fff; }
.fv2-editor__qty button {
    width:36px; height:36px; border:0; background:#fff; color:var(--fv2ed-text); cursor:pointer; font-size:16px; font-weight:700;
}
.fv2-editor__qty button:focus-visible { outline:none; box-shadow:var(--fv2ed-focus); }
.fv2-editor__qty input {
    min-width:56px; height:36px; border:0; border-left:1px solid var(--fv2ed-border); border-right:1px solid var(--fv2ed-border);
    text-align:center; font-size:16px; color:var(--fv2ed-text); background:#fff; appearance:textfield;
}
@media (min-width:768px) { .fv2-editor__qty input { font-size:14px; } }
.fv2-editor__qty input::-webkit-outer-spin-button,
.fv2-editor__qty input::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }

/* selected summary panel — origin 톤(검정+은은한 회색 배경) */
.fv2-editor__selected {
    background:transparent; border:0;
    border-top:1px solid #e8e8e8;
    border-radius:0; padding:14px 0 0; margin-top:16px;
    display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap;
}
.fv2-editor__selected-label { font-weight:500; color:#111; }
.fv2-editor__selected-amount { font-size:18px; font-weight:700; color:#111; }
.fv2-editor__selected-amount b { color:#FF6262; }

/* footer actions (skip + next) — origin 패딩 40px 매칭 */
.fv2-editor__actions { display:flex; gap:8px; justify-content:space-between; flex-wrap:wrap; margin:24px 40px 0; }
@media (max-width:768px) { .fv2-editor__actions { margin:20px 16px 0; } }
.fv2-editor__btn {
    display:inline-flex; align-items:center; justify-content:center;
    min-height:44px; padding:0 16px; border-radius:8px;
    font-size:14px; font-weight:600; border:1px solid var(--fv2ed-border);
    background:#fff; color:var(--fv2ed-text); cursor:pointer; text-decoration:none;
}
.fv2-editor__btn:hover { background:#f4f6fa; }
.fv2-editor__btn:focus-visible { outline:none; box-shadow:var(--fv2ed-focus); }
.fv2-editor__btn--primary { background:#111; color:#fff; border-color:#111; border-radius:0; }
.fv2-editor__btn--primary:hover { background:#000; }
.fv2-editor__btn--ghost { background:transparent; }
.fv2-editor__btn--danger { color:var(--fv2ed-danger); border-color:#f0b9bd; }
.fv2-editor__btn--danger:hover { background:var(--fv2ed-danger-soft); }
.fv2-editor__btn--sm { min-height:38px; padding:0 14px; font-size:13px; }

/* responsive */
@media (max-width:768px) {
    .fv2-editor { padding:20px 0 48px; }
    .fv2-editor__catalog-item { grid-template-columns:56px 1fr; }
    /* 모바일: actions 가 전체 폭을 차지 → 토글+스텝퍼를 한 줄로 정렬. */
    .fv2-editor__catalog-actions { grid-column:1 / -1; flex-direction:row; justify-content:space-between; align-items:center; }
    .fv2-editor__catalog-thumb { width:56px; height:70px; }
}

/* ============================================================
 * mirror (s5-web-mirror): 가드 + 배너 + 카운터 (PDF v2 영역 ④)
 * ============================================================ */
.fv2-mirror {
    --fv2mr-text:#1a1d22; --fv2mr-text-sub:#5b626d;
    --fv2mr-warning-soft:#fff3df; --fv2mr-warning:#7a4500; --fv2mr-warning-bd:#f3dca1;
    --fv2mr-info-soft:#e6efff; --fv2mr-info:#1a3f86; --fv2mr-info-bd:#c5d8f5;
    --fv2mr-danger-soft:#fde8ea; --fv2mr-danger:#9a1f27; --fv2mr-danger-bd:#f0b9bd;
    --fv2mr-radius:10px;
}

/* banner (FR2/FR3/FR4 — 대봉투 자동 전환 안내). hidden by default; impl track toggles.
   origin 편집기 따뜻한 톤(#F3EDEA, 오렌지)에 맞춰 warning-soft 계열 사용. */
.fv2-mirror__banner {
    display:flex; align-items:flex-start; gap:10px;
    background:var(--fv2mr-warning-soft); border:1px solid var(--fv2mr-warning-bd);
    border-radius:var(--fv2mr-radius); padding:12px 14px; margin:0 40px 16px;
    color:var(--fv2mr-warning); font-size:13px; line-height:1.55;
}
.fv2-mirror__banner[hidden] { display:none; }
.fv2-mirror__banner-icon {
    flex-shrink:0; width:22px; height:22px; border-radius:999px;
    background:#fff; color:var(--fv2mr-warning); border:1px solid var(--fv2mr-warning-bd);
    display:inline-flex; align-items:center; justify-content:center;
    font-size:12px; font-weight:800;
}
.fv2-mirror__banner-body { min-width:0; }
.fv2-mirror__banner-title { font-weight:700; margin:0 0 2px; }
.fv2-mirror__banner-desc { margin:0; color:var(--fv2mr-warning); opacity:.9; }

/* counter (구성 요소 합계 표시 — 편지지/사진/PDF/등기 = ?/150) */
.fv2-mirror__counter {
    display:flex; align-items:center; justify-content:flex-end; gap:10px;
    margin:0 40px 12px; padding:0 4px;
    font-size:12px; color:var(--fv2mr-text-sub);
}
.fv2-mirror__counter-num { font-weight:800; color:var(--fv2mr-text); }
.fv2-mirror__counter-num--over { color:var(--fv2mr-danger); }
.fv2-mirror__counter[hidden] { display:none; }

/* step3 .box1 .btn — 사서함 서비스 버튼 추가(4개)로 origin 3-button float 그리드 깨짐.
   :has()로 한정 적용하여 2×2 flex 그리드 + gap:5px 부여. recipient(.box2)는 그대로 3-button 유지. */
.content .step3 .post_box .box1 .btn:has(.fv2-mailbox-editor-btn) {
    display:flex; flex-wrap:wrap; gap:5px;
}
.content .step3 .post_box .box1 .btn:has(.fv2-mailbox-editor-btn) button {
    float:none; width:calc((100% - 5px) / 2); margin:0;
}

/* nav .bt_box .bt — origin float 그리드(2-button) 보강: row-gap.
   디자인 프리뷰 fallback 또는 step별 숨김 처리 후 잔여 버튼 wrap 시 5px row-gap 적용. */
nav .bt_box .bt { display:flex; flex-wrap:wrap; gap:5px; }
nav .bt_box .bt:after { display:none; }
nav .bt_box .bt button { float:none !important; width:calc((100% - 5px) / 2) !important; margin:0 !important; }

/* guard (FR-011 — 150장 초과 차단). hidden by default. role="alert" */
.fv2-mirror__guard {
    display:flex; align-items:flex-start; gap:10px;
    background:var(--fv2mr-danger-soft); border:1px solid var(--fv2mr-danger-bd);
    border-radius:var(--fv2mr-radius); padding:12px 14px; margin:0 40px 16px;
    color:var(--fv2mr-danger); font-size:13px; line-height:1.55; font-weight:600;
}
.fv2-mirror__guard[hidden] { display:none; }
.fv2-mirror__guard-icon {
    flex-shrink:0; width:22px; height:22px; border-radius:999px;
    background:#fff; color:var(--fv2mr-danger); border:1px solid var(--fv2mr-danger-bd);
    display:inline-flex; align-items:center; justify-content:center;
    font-size:12px; font-weight:800;
}
