/* /owner only (space owner page): sections, the one-time key and the change log inside the phone width. */
.owner { overflow-wrap: anywhere; }
.owner-box { border-top: 1px solid var(--rule); padding-block: 18px 6px; }
.owner-box h2 { font-size: 1.1rem; margin: 0 0 8px; }
.owner-box p { margin: 0 0 12px; }
.owner-dm { background: var(--surface); border: 1px solid var(--rule); border-radius: 12px; padding: 14px 16px; margin-block: 16px; }
.owner-img { margin: 0 0 14px; }
.owner-img img { display: block; width: 100%; height: auto; max-width: 480px; aspect-ratio: 1200 / 630; object-fit: cover; border-radius: 10px; border: 1px solid var(--rule); }
.owner-key { margin-top: 12px; }
.owner-key code { display: block; max-width: 100%; padding: 10px 12px; margin-bottom: 8px; border: 1px solid var(--rule); border-radius: 10px; background: var(--surface); font-size: 0.85rem; word-break: break-all; }
.owner-log { margin: 0 0 14px; padding-left: 1.1em; color: var(--ink-2); font-size: 0.9rem; }
/* 연락 메일 (owner.js fillContact): the masked address, then save and delete side by side, wrapping on a narrow phone. */
.owner-contact-now strong { overflow-wrap: anywhere; }
.owner-contact-btns { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 4px; }

/* 정각 모임 fields (owner.js fillMeetup) */
.meetup-row { border: 0; padding: 0; margin: 0; display: grid; gap: 10px; }
.meetup-row legend { font-weight: 700; font-size: 0.95rem; margin-bottom: 6px; }
.site-ways { display: grid; gap: 12px; padding-left: 1.2em; }
.site-code { display: block; margin-top: 6px; padding: 8px 10px; border-radius: 8px; background: var(--surface); border: 1px solid var(--rule); font-size: 0.85rem; overflow-wrap: anywhere; user-select: all; }
/* Copy and 파일 다운로드 under each code (owner.js loadSite); the file line's one-line guide below it. */
.site-ways .btn { margin-top: 8px; padding: 6px 14px; font-size: 0.85rem; }
.site-how { display: block; margin-top: 8px; color: var(--ink-2); font-size: 0.9rem; }
/* 운영자 메일 right under 공간 관리 (owner 11/10 「위로 올려」), a card of its own so it is not missed. */
.owner-must { margin-block: 12px; padding: 14px 16px 8px; border: 2px solid var(--lantern); border-radius: 12px; background: var(--surface); }
.owner-must .status:empty { display: none; }
/* The in-page warning when leaving without the operator mail (owner.js leave). */
.owner-warn { width: min(420px, calc(100% - 32px)); padding: 20px; border: 1px solid var(--rule); border-radius: 14px; background: var(--surface); color: var(--ink); box-shadow: var(--shadow); }
.owner-warn::backdrop { background: rgba(21, 18, 31, 0.5); }
.owner-warn p { margin: 0 0 16px; font-weight: 700; line-height: 1.5; }
.owner-warn-btns { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; }
.find-list { display: grid; gap: 6px; padding-left: 1.2em; }
.guide-text { width: 100%; font: 0.85rem/1.55 ui-monospace, SFMono-Regular, Menlo, monospace; padding: 12px; border-radius: 10px; border: 1px solid var(--rule); background: var(--surface); color: var(--ink); resize: vertical; }
.linkish { background: none; border: 0; padding: 4px 0; color: var(--lantern); text-decoration: underline; cursor: pointer; font: inherit; text-align: left; }
#guide-note { font-weight: 700; }

/* 메타모아 파트너사 특전 (owner.js loadSell): fee lines, the product form and each product's copyable button code. */
.sell-fees { margin: 0 0 12px; padding-left: 1.1em; }
.sell-hrum-links { display: flex; flex-wrap: wrap; gap: 8px; }
.sell-state strong { color: var(--lantern); }
#sell-form { margin-top: 14px; }
.sell-products, .portal-items { list-style: none; margin: 14px 0 0; padding: 0; display: grid; gap: 12px; }
.sell-products li, .portal-items li { border: 1px solid var(--rule); border-radius: 10px; padding: 10px 12px; background: var(--surface); }
.sell-products code { display: block; margin: 6px 0 8px; font-size: 0.85rem; overflow-wrap: anywhere; user-select: all; }
.sell-products .btn + .btn { margin-left: 8px; }
/* Toss mini app tier picker: 「받는 돈 약 N원」 under the select, each product's Toss tier line. */
.sell-receive { display: block; margin: -4px 0 10px; color: var(--lantern); font-weight: 700; }
.sell-toss { display: block; margin-top: 4px; font-size: 0.85rem; }

/* 공간 관리 (owner tg 10508): the jump list on top, the visitor-count example under the key. */
.manage-links { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0 0 12px; padding: 0; }
.manage-links a { display: inline-block; padding: 6px 12px; border: 1px solid var(--rule); border-radius: 999px; background: var(--surface); text-decoration: none; font-size: 0.9rem; }
.manage-links a:hover, .manage-links a:focus-visible { border-color: var(--lantern); }
.owner-live-ex { max-width: 100%; margin: 0 0 8px; padding: 10px 12px; border: 1px solid var(--rule); border-radius: 10px; background: var(--surface); font-size: 0.8rem; white-space: pre-wrap; overflow-wrap: anywhere; }

/* 계좌번호 대신, 공간에서 결제 받기 (owner.html #hrum-card): a short card under 포탈 연결 pointing to #sell-box. */
.hrum-card { background: var(--surface); border: 1px solid var(--rule); border-left: 3px solid var(--lantern); border-radius: 12px; padding: 14px 16px 4px; margin-block: 16px; }
.hrum-card-btns { display: flex; flex-wrap: wrap; gap: 8px; }

/* 대표 캐릭터 보내기 (owner.html #char-card, owner.js loadChar): the goblin swap card under 포탈 연결, file picker and send. */
.char-card { background: var(--surface); border: 1px solid var(--rule); border-left: 3px solid var(--lantern); border-radius: 12px; padding: 14px 16px 4px; margin-block: 16px; }
.char-files { margin: 0 0 12px; padding-left: 1.1em; display: grid; gap: 4px; }
.char-form { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px; margin-bottom: 8px; }
.char-form label { flex: 1 1 220px; min-width: 0; }
.char-form input[type="file"] { display: block; width: 100%; max-width: 100%; margin-top: 4px; }

/* 3D 광고 (public/owner.js <ads>): 재동의, 광고 게재 동의, 광고 API, 광고 자리, 30일 집계. */
.ads-notice { padding: 12px 14px; border-radius: 10px; background: var(--chip, rgba(226, 102, 58, 0.1)); border-left: 4px solid #e2663a; }
.ads-switch { align-items: flex-start; gap: 10px; }
.ads-switch input { margin-top: 4px; }
.ads-agreed, .ads-size, .ads-filtered { font-size: 0.88rem; opacity: 0.8; }
.ads-api pre { overflow-x: auto; }
.ads-slot-list { list-style: none; padding: 0; display: grid; gap: 8px; }
.ads-slot-list li { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 10px 12px; border: 1px solid rgba(127, 127, 127, 0.25); border-radius: 10px; }
.ads-slot-list li strong { min-width: 8em; }
.ads-slot-list .ads-off { opacity: 0.6; }
.ads-slot-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px 12px; align-items: end; margin-top: 10px; }
.ads-nums { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 8px; margin: 0; }
.ads-nums div { padding: 10px 12px; border-radius: 10px; background: rgba(127, 127, 127, 0.08); }
.ads-nums dt { font-size: 0.8rem; opacity: 0.75; }
.ads-nums dd { margin: 2px 0 0; font-size: 1.25rem; font-weight: 700; }
