/* 관리자 편집 모드: Cargo 편집기와 같은 배치·모양 (_ref/10~15, 20~32, EDITOR_SPEC.md)
   위 흰 도구막대 36px + 오른쪽 세로 레일 36px. 패널 = 연회색 둥근 카드 + 흰 행, 값은 오른쪽 고정폭 회색, 선택은 파란 채움 #0a6cff */
body.editing:not(.ed-preview) { --ed-top: 36px; --ed-right: 36px; }
.ed-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.ed-ui, .ed-ui * { box-sizing: border-box; }
.ed-ui { font: 12px/1.3 -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Apple SD Gothic Neo", Arial, sans-serif; color: #333; }

/* ---------- 위 도구막대 ---------- */
.ed-bar { position: fixed; z-index: 4000; top: 0; left: 0; right: 0; height: 36px; display: flex; align-items: stretch; background: #fff; border-bottom: 1px solid #e3e3e3; color: #6f6f6f; }
.ed-rail { position: fixed; z-index: 4000; top: 36px; right: 0; bottom: 0; width: 36px; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 0; background: #fff; border-left: 1px solid #e3e3e3; }
body.ed-preview .ed-bar { transform: translateY(-100%); opacity: 0; pointer-events: none; }
body.ed-preview .ed-rail { transform: translateX(100%); opacity: 0; pointer-events: none; }
body.ed-preview .ed-hand { opacity: 1 !important; pointer-events: auto !important; transform: none !important; }
.ed-bar, .ed-rail { transition: transform .2s, opacity .2s; }
.ed-grp { display: flex; align-items: stretch; border-right: 1px solid #ececec; }
.ed-grp.first { padding: 0 4px 0 0; }
.ed-mid { flex: 1; display: flex; justify-content: center; align-items: stretch; gap: 0; }
.ed-end { display: flex; align-items: stretch; border-left: 1px solid #ececec; }
.ed-b { position: relative; width: 31px; border: none; background: none; color: #7a7a7a; display: grid; place-items: center; padding: 0; cursor: pointer; }
.ed-b svg { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 1.25; stroke-linecap: round; stroke-linejoin: round; }
.ed-b:hover:not(:disabled) { color: #111; }
.ed-b:disabled { color: #cfcfcf; cursor: default; }
.ed-b.on { background: #0a6cff; color: #fff; }
.ed-b.sites { width: 40px; }
.ed-b.view.on { background: none; color: #0a6cff; }
.ed-b.view.on svg { stroke-width: 1.5; }
.ed-txt { font: 10px/1 -apple-system, Arial, sans-serif; letter-spacing: .02em; }
.ed-txt.big { font-size: 15px; font-family: Georgia, serif; }
.ed-style { display: flex; align-items: center; width: 86px; padding: 0 6px; position: relative; }
.ed-style select { appearance: none; -webkit-appearance: none; width: 100%; border: none; background: transparent; color: #8a8a8a; font: 11.5px -apple-system, Arial, sans-serif; padding-right: 14px; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='11'%3E%3Cpath d='M1 4l3-3 3 3M1 7l3 3 3-3' fill='none' stroke='%23999' stroke-width='1.2'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right center; }
.ed-style select:disabled { color: #cfcfcf; cursor: default; }
body.ed-txtfocus .ed-style select { color: #0a6cff; }
.ed-addw { display: flex; align-items: center; border-left: 1px solid #ececec; border-right: 1px solid #ececec; position: relative; }
.ed-addbtn { display: inline-flex; align-items: center; gap: 5px; height: 100%; padding: 0 10px; border: none; background: none; color: #444; font: 11.5px -apple-system, Arial, sans-serif; cursor: pointer; }
.ed-addbtn svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.3; }
.ed-addbtn .ud { width: 10px; height: 10px; color: #aaa; margin-left: 14px; }
.ed-addbtn.on { color: #0a6cff; }
.ed-pages { display: inline-flex; align-items: center; gap: 9px; min-width: 150px; padding: 0 12px; border: none; background: none; color: #444; font: 12px -apple-system, Arial, sans-serif; cursor: pointer; }
.ed-pages svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.5; }
.ed-pages.on { background: #0a6cff; color: #fff; }
.ed-hand { width: 38px; border-left: 1px solid #ececec; }
.ed-rail .ed-b { width: 30px; height: 30px; border-radius: 50%; }
.ed-rail .ed-b.on { background: #0a6cff; color: #fff; }
.ed-rail .ed-b svg { width: 20px; height: 20px; }
.ed-flex { flex: 1; }
.ed-aa { font: 300 17px/1 -apple-system, Arial, sans-serif; }
.ed-dot { position: absolute; right: 2px; bottom: 3px; width: 8px; height: 8px; border-radius: 50%; background: #0a6cff; border: 1.5px solid #fff; }
@media (max-width: 980px) { .ed-grp.tools .ed-b.opt, .ed-style { display: none; } .ed-pages { min-width: 0; } .ed-pages span { max-width: 70px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } }

/* ---------- 패널 카드 ---------- */
.ed-card { position: fixed; z-index: 4100; top: 42px; width: 214px; max-height: calc(100vh - 54px); overflow: auto; padding: 9px 9px 10px; background: #f3f3f3; border-radius: 10px; box-shadow: 0 8px 28px rgba(0, 0, 0, .18), 0 0 0 1px rgba(0, 0, 0, .05); }
.ed-card.left { left: 9px; }
.ed-card.right { right: 46px; }
.ed-card.wide { width: 352px; }
.ed-card.code { width: min(700px, calc(100vw - 100px)); height: 264px; padding: 0; overflow: hidden; display: flex; flex-direction: column; background: #fff; }
.ec-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 6px; margin: 0 0 8px; padding: 0 1px; }
.ec-title { margin: 0; font-size: 12px; color: #444; font-weight: 500; }
.ec-title .orange { display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: #f28a1f; color: #fff; margin-right: 6px; vertical-align: middle; }
.ec-title .orange svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.ec-sub { display: block; margin-top: 1px; color: #a6a6a6; font-size: 11px; font-weight: 400; }
.ec-help { width: 15px; height: 15px; border-radius: 50%; border: 1px solid #c8c8c8; color: #aaa; font-size: 10px; line-height: 13px; text-align: center; flex: none; cursor: pointer; background: none; padding: 0; }
.ec-grp { background: #fff; border-radius: 6px; margin-bottom: 8px; overflow: visible; }
.ec-grp > * + * { border-top: 1px solid #ededed; }
.ec-row { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 6px; min-height: 26px; padding: 0 8px; }
.ec-row > .lb { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #333; }
.ec-row.dot::before { content: ""; position: absolute; left: -7px; top: 50%; width: 4px; height: 4px; margin-top: -2px; border-radius: 50%; background: #0a6cff; }
.ec-num { width: 44px; border: none; background: transparent; text-align: right; font: 10.5px "SF Mono", Menlo, Consolas, monospace; color: #8c8c8c; outline: none; cursor: ew-resize; padding: 0; }
.ec-num:focus { color: #222; cursor: text; }
.ec-input { flex: 1.3; min-width: 0; border: none; background: transparent; text-align: right; font: inherit; color: #666; outline: none; }
.ec-input.boxed { text-align: left; background: #fff; border: 1px solid #e3e3e3; border-radius: 3px; padding: 3px 5px; color: #333; }
.ec-input:focus { color: #111; }
.ec-ghost { color: #aaa; font-size: 11px; }
.ec-check { position: relative; width: 15px; height: 15px; flex: none; }
.ec-check input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.ec-check i { position: absolute; inset: 0; border-radius: 50%; border: 1px solid #d2d2d2; pointer-events: none; }
.ec-check i::after { content: ""; position: absolute; left: 4.3px; top: 2.3px; width: 3px; height: 6.5px; border: solid #d2d2d2; border-width: 0 1.3px 1.3px 0; transform: rotate(45deg); }
.ec-check input:checked + i { background: #0a6cff; border-color: #0a6cff; }
.ec-check input:checked + i::after { border-color: #fff; }
.ec-check.orange input:checked + i { background: #f28a1f; border-color: #f28a1f; }
.ec-seg { display: flex; align-self: stretch; margin-right: -8px; }
.ec-seg button { width: 26px; border: none; border-left: 1px solid #ededed; background: #fff; display: grid; place-items: center; cursor: pointer; padding: 0; color: #333; }
.ec-seg button svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 1.4; }
.ec-seg button.on { background: #0a6cff; color: #fff; }
.ec-more { width: 22px; height: 22px; border: none; background: none; color: #555; display: grid; place-items: center; padding: 0; cursor: pointer; margin-right: -4px; }
.ec-more svg { width: 14px; height: 14px; fill: currentColor; }
.ec-color { position: relative; width: 17px; height: 17px; border-radius: 50%; flex: none; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .12); background: var(--c, transparent); }
.ec-color.clear { background: conic-gradient(#ccc 25%, #fff 0 50%, #ccc 0 75%, #fff 0) 0 0 / 6px 6px; }
.ec-color input { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; border: none; padding: 0; }
.ec-sel { position: relative; display: flex; align-items: center; height: 28px; padding: 0 10px; background: #fff; border-radius: 14px; margin-bottom: 8px; }
.ec-sel select { appearance: none; -webkit-appearance: none; width: 100%; border: none; background: transparent; font: inherit; color: #333; cursor: pointer; outline: none; }
.ec-sel::after { content: ""; position: absolute; right: 10px; top: 9px; width: 7px; height: 10px; pointer-events: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='11'%3E%3Cpath d='M1 4l3-3 3 3M1 7l3 3 3-3' fill='none' stroke='%23777' stroke-width='1.2'/%3E%3C/svg%3E") no-repeat; }
.ec-selrow { display: flex; align-items: center; gap: 4px; margin-bottom: 8px; }
.ec-selrow .ec-sel { flex: 1; margin: 0; }
.ec-fold > summary { list-style: none; display: flex; align-items: center; gap: 5px; min-height: 26px; padding: 0 8px; cursor: pointer; position: relative; }
.ec-fold > summary::-webkit-details-marker { display: none; }
.ec-fold > summary::before { content: ""; width: 5px; height: 5px; border: solid #888; border-width: 0 1.2px 1.2px 0; transform: rotate(-45deg); margin-right: 3px; }
.ec-fold[open] > summary::before { transform: rotate(45deg); margin-top: -3px; }
.ec-fold.dot > summary::after { content: ""; position: absolute; left: -7px; top: 50%; width: 4px; height: 4px; margin-top: -2px; border-radius: 50%; background: #333; }
.ec-fold .ec-in { border-top: 1px solid #ededed; padding: 2px 0 2px 10px; }
.ec-fold .ec-in > * + * { border-top: 1px solid #f2f2f2; }
.ec-btnrow { display: flex; align-items: center; justify-content: space-between; min-height: 26px; padding: 0 8px; width: 100%; border: none; background: #fff; font: inherit; color: #333; cursor: pointer; text-align: left; }
.ec-btnrow:hover { color: #0a6cff; }
.ec-btnrow svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.4; }
.ec-foot { display: flex; align-items: center; gap: 10px; padding: 1px 2px; color: #999; font-size: 11px; }
.ec-foot button { border: none; background: none; padding: 0; color: #999; font: inherit; cursor: pointer; }
.ec-foot button:hover { color: #0a6cff; }
.ec-foot .sp { flex: 1; }
.ec-note { margin: 0 2px 8px; color: #999; font-size: 10.5px; line-height: 1.45; }
.ec-split { display: grid; grid-template-columns: 1fr 1fr; }
.ec-split > * + * { border-left: 1px solid #ededed; }
.ec-publish { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }
.ec-pill { flex: 1; display: flex; align-items: center; justify-content: space-between; height: 30px; padding: 0 12px; border: none; border-radius: 15px; background: #2b2b2b; color: #fff; font: 600 12px -apple-system, Arial, sans-serif; cursor: pointer; }
.ec-pill kbd { font: 10px -apple-system, Arial, sans-serif; color: #999; }
.ec-pill:disabled { background: #9a9a9a; cursor: default; }
.ec-last { margin: 0 0 10px; text-align: center; font-size: 10px; color: #999; }
.ec-thumb { height: 74px; margin: 0 0 8px; border-radius: 6px; background: #ddd center / cover no-repeat; }
.ec-overlays { display: flex; gap: 2px; margin-right: -6px; }
.ec-overlays button { width: 22px; height: 22px; border: 1px solid #ddd; padding: 0; cursor: pointer; background-color: #fff; }
.ec-overlays button.on { outline: 2px solid #0a6cff; outline-offset: -1px; }
.ec-wide2 { display: grid; grid-template-columns: 1fr 1fr; }
.ec-wide2 > button { background: #fff; border: none; padding: 7px 8px; font: inherit; color: #333; cursor: pointer; }
.ec-wide2 > button.on { background: #0a6cff; color: #fff; }
.ec-remove { border: none; background: none; color: #999; font: 11px -apple-system, Arial, sans-serif; padding: 2px; cursor: pointer; }
.ec-remove:hover { color: #d33; }
.ec-list > .ec-row { cursor: default; }
.ec-badge { font-size: 10px; color: #999; }
.ec-btn { border: 1px solid #d7d7d7; background: #fff; border-radius: 4px; padding: 3px 8px; font: inherit; cursor: pointer; }
.ec-btn.primary { background: #0a6cff; border-color: #0a6cff; color: #fff; }

/* Pages */
.ec-pages .pg-row { position: relative; display: flex; align-items: center; min-height: 26px; padding: 0 6px 0 8px; background: #fff; cursor: pointer; }
.ec-pages .pg-row.cur::before { content: ""; position: absolute; left: -7px; top: 50%; width: 4px; height: 4px; margin-top: -2px; border-radius: 50%; background: #333; }
.ec-pages .pg-row:hover { color: #0a6cff; }
.ec-pages .pg-row.drag { opacity: .4; }
.ec-pages .pg-row.over { box-shadow: inset 0 2px 0 #0a6cff; }
.pg-name { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pg-ic { display: flex; gap: 3px; color: #bbb; }
.pg-ic svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.4; }
.pg-ic .k { display: none; }
.pg-ic .k.on { display: block; }
.pg-row:hover .pg-ic .k { display: block; }
.pg-ic .k.on { color: #8a8a8a; }
.pg-ic .k:not(.on) { opacity: .6; }
.pg-act { border: none; background: none; padding: 0 2px; color: #aaa; cursor: pointer; display: grid; place-items: center; opacity: 0; }
.pg-row:hover .pg-act { opacity: 1; }
.pg-act svg { width: 13px; height: 13px; fill: currentColor; }
.ec-dots-btn { width: 20px; height: 20px; border-radius: 50%; border: none; background: #c1c1c1; color: #fff; display: grid; place-items: center; padding: 0; cursor: pointer; }
.ec-dots-btn svg { width: 13px; height: 13px; fill: currentColor; }
.ec-pagesbox { min-height: 420px; }

/* Images & Files */
.ec-imghead { display: flex; align-items: center; justify-content: space-between; margin-bottom: 9px; }
.ec-upload { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
.ec-upload svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.4; }
.ec-upload input { display: none; }
.ec-tabs { display: flex; gap: 11px; }
.ec-tabs button { border: none; background: none; padding: 0; font: inherit; color: #999; cursor: pointer; }
.ec-tabs button.on { color: #333; }
.ec-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; }
.ec-img { position: relative; aspect-ratio: 1; border: none; border-radius: 4px; background: #fff; padding: 3px; cursor: grab; }
.ec-img img { width: 100%; height: 100%; object-fit: contain; pointer-events: none; }
.ec-img:hover { outline: 2px solid #0a6cff; }
.ec-img .rm { position: absolute; right: -4px; top: -4px; width: 14px; height: 14px; border-radius: 50%; background: #555; color: #fff; font: 9px/14px Arial; text-align: center; display: none; }
.ec-img:hover .rm { display: block; }

/* Code View */
.ec-codetabs { display: grid; grid-template-columns: 1fr 1fr; background: #ececec; }
.ec-codetabs button { height: 26px; border: none; background: #ececec; font: inherit; color: #666; text-align: left; padding: 0 9px; cursor: pointer; }
.ec-codetabs button.on { background: #fff; color: #333; }
.ec-codebar { padding: 7px 8px 4px; }
.ec-update { border: 1px solid #d0d0d0; background: #fff; border-radius: 12px; padding: 2px 9px; font: 11px -apple-system, Arial, sans-serif; cursor: pointer; }
.ec-update:hover { border-color: #0a6cff; color: #0a6cff; }
.ec-code { flex: 1; width: 100%; border: none; resize: none; outline: none; padding: 6px 8px 10px; font: 10.5px/1.55 "SF Mono", Menlo, Consolas, monospace; color: #2a7f62; white-space: pre; tab-size: 2; }
.ec-codeerr { margin: 0; padding: 4px 9px; color: #d33; font-size: 11px; border-top: 1px solid #f2d0d0; }

/* Add... 메뉴 (macOS 메뉴 모양) */
.ed-menu { position: fixed; z-index: 4300; min-width: 136px; padding: 4px; background: rgba(246, 246, 246, .97); border-radius: 6px; box-shadow: 0 6px 22px rgba(0, 0, 0, .2), 0 0 0 1px rgba(0, 0, 0, .08); }
.ed-menu button { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 2px 9px; height: 20px; border: none; border-radius: 4px; background: none; font: 11.5px -apple-system, Arial, sans-serif; color: #222; cursor: pointer; text-align: left; }
.ed-menu button:hover:not(:disabled), .ed-menu button.hi { background: #0a6cff; color: #fff; }
.ed-menu button:disabled { color: #b5b5b5; cursor: default; }
.ed-menu hr { border: none; border-top: 1px solid #ddd; margin: 4px 6px; }
.ed-menu .arr { font-size: 10px; }

/* ---------- 선택 표시 ---------- */
.ed-frame { position: absolute; z-index: 45; border: 1px dashed #0a6cff; pointer-events: none; }
.ed-frame.solid { border-style: solid; }
.ed-frame-l { position: absolute; right: -1px; top: -1px; background: #0a6cff; color: #fff; font: 600 8.5px/1 -apple-system, Arial, sans-serif; padding: 3px 4px; pointer-events: auto; }
.ed-frame-more { position: absolute; left: 6px; top: 6px; width: 16px; height: 16px; border-radius: 50%; border: none; background: rgba(255, 255, 255, .95); color: #333; display: grid; place-items: center; padding: 0; cursor: pointer; pointer-events: auto; box-shadow: 0 1px 3px rgba(0, 0, 0, .3); }
.ed-frame-more svg { width: 11px; height: 11px; fill: currentColor; }
body.editing:not(.ed-preview) .g-item { cursor: default; }
body.editing:not(.ed-preview) .g-freeform .g-item { cursor: move; }
body.editing:not(.ed-preview) .g-item:hover .d-img, body.editing:not(.ed-preview) .g-item:hover .g-cell { outline: 1px solid rgba(10, 108, 255, .5); }
.g-item.ed-sel .d-img, .g-item.ed-sel .g-cell { position: relative; outline: 1px solid #0a6cff; }
.g-item.ed-sel .d-img::after, .g-item.ed-sel .g-cell::after { content: ""; position: absolute; inset: 0; background: rgba(10, 108, 255, .3); pointer-events: none; z-index: 2; }
.ed-imore { position: absolute; left: 4px; top: 4px; z-index: 6; width: 16px; height: 16px; border-radius: 50%; border: none; background: rgba(255, 255, 255, .95); color: #333; display: grid; place-items: center; padding: 0; cursor: pointer; box-shadow: 0 1px 3px rgba(0, 0, 0, .3); }
.ed-imore svg { width: 11px; height: 11px; fill: currentColor; }
.ed-handle { position: absolute; right: -5px; bottom: -5px; z-index: 6; width: 10px; height: 10px; background: #fff; border: 1.5px solid #0a6cff; cursor: nwse-resize; }
body.editing:not(.ed-preview) [data-edit-text], body.editing:not(.ed-preview) [data-zedit] { outline: 1px dashed transparent; outline-offset: 2px; cursor: text; }
body.editing:not(.ed-preview) [data-edit-text]:hover { outline-color: rgba(10, 108, 255, .35); }
body.editing:not(.ed-preview) [data-edit-text]:focus, body.editing:not(.ed-preview) [data-zedit]:focus { outline: 1px solid rgba(10, 108, 255, .7); }
body.editing:not(.ed-preview) .blk:not(.blk-text):not(.blk-gallery):hover { outline: 1px dashed rgba(10, 108, 255, .4); }
body.editing:not(.ed-preview) .blk-app .app-body { pointer-events: auto; }
.blk.ed-drop { box-shadow: inset 0 0 0 2px #0a6cff; }

/* 이미지·블록 옵션 팝오버 (15, 31) */
.ed-pop { position: fixed; z-index: 4200; width: 212px; padding: 8px; background: #f3f3f3; border-radius: 9px; box-shadow: 0 8px 26px rgba(0, 0, 0, .2), 0 0 0 1px rgba(0, 0, 0, .05); }
.ed-pop .ec-h { margin: 10px 2px 7px; color: #888; font-size: 11px; }

/* 모바일 미리보기 (32) */
.ed-mobile { position: fixed; z-index: 3500; top: 36px; right: 36px; bottom: 0; left: 0; background: conic-gradient(#ededed 25%, #f7f7f7 0 50%, #ededed 0 75%, #f7f7f7 0) 0 0 / 14px 14px; display: grid; place-items: center; }
/* Cargo 처럼 375px 폰 화면을 60% 로 줄여 가운데에 띄운다 */
.ed-mobile iframe { position: absolute; top: 14px; left: calc(50% - 187.5px); width: 375px; height: calc((100vh - 36px - 50px) / .6); transform: scale(.6); transform-origin: top center; border: none; border-radius: 10px; background: #fff; box-shadow: 0 2px 14px rgba(0, 0, 0, .3); }
.ed-b.view[data-view="mobile"].on { color: #f0892a; }

/* 로그인·비밀번호 */
.ed-gate { position: fixed; inset: 0; z-index: 5000; display: grid; place-items: center; background: rgba(0, 0, 0, .25); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.ed-gate-card { width: 280px; padding: 16px; background: #f3f3f3; border-radius: 10px; box-shadow: 0 10px 40px rgba(0, 0, 0, .3); display: grid; gap: 8px; }
.ed-gate-card p { margin: 0; }
.ed-gate-t { font-size: 13px; font-weight: 600; }
.ed-gate-card input { height: 28px; border: none; border-radius: 5px; padding: 0 9px; background: #fff; font: inherit; outline: none; }
.ed-gate-card input:focus { box-shadow: 0 0 0 2px #0a6cff; }
.ed-gate-err { color: #d33; }
.ed-gate-row { display: flex; justify-content: space-between; align-items: center; }
.ed-gate-row a { color: #888; }
.ed-gate-row button { border: none; background: #0a6cff; color: #fff; border-radius: 5px; padding: 6px 13px; font: inherit; cursor: pointer; }
.ed-modal { position: fixed; inset: 0; z-index: 4600; display: grid; place-items: center; background: rgba(0, 0, 0, .25); }
.ed-modal-card { width: min(460px, calc(100vw - 30px)); background: #f3f3f3; border-radius: 10px; padding: 12px; box-shadow: 0 10px 40px rgba(0, 0, 0, .3); display: grid; gap: 8px; }
.ed-modal-card textarea { min-height: 140px; border: 1px solid #ddd; border-radius: 5px; padding: 8px; font: 12px/1.5 -apple-system, Arial, sans-serif; resize: vertical; outline: none; }
.ed-modal-card .row { display: flex; justify-content: flex-end; gap: 6px; }
.ed-preview-badge { position: fixed; z-index: 3000; right: 10px; bottom: 10px; padding: 5px 10px; border-radius: 6px; background: #0a6cff; color: #fff; font: 600 11px -apple-system, Arial, sans-serif; }
