/* 롤플레이 스튜디오 — 정적 SPA (다크 + 핫 마젠타, 시안 반영) */
:root {
  --rp-accent:#ff2d8e; --rp-accent2:#c724b1;
  --rp-grad:linear-gradient(135deg,#ff3d9a 0%,#c026b8 100%);
  --line:#26222c; --bg:#0c0a10; --panel:#16131c; --panel2:#1d1924; --text:#efe9f2; --dim:#9a93a6;
}
* { box-sizing:border-box; }
[hidden] { display:none !important; }
html,body { margin:0; }
body { background:var(--bg); color:var(--text); font-family:-apple-system,"Segoe UI","Apple SD Gothic Neo","Malgun Gothic",sans-serif; -webkit-font-smoothing:antialiased; }
body.rp-chatting { overflow:hidden; }
.field-sub { color:var(--dim); font-size:12px; font-weight:400; }
.rp-spacer { flex:1; }
.rp-row { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.rp-link { background:none; border:none; color:var(--rp-accent); font-size:13px; cursor:pointer; }

button { font-family:inherit; }
.btn-primary,.btn-secondary,.btn-grad { border:none; border-radius:11px; padding:10px 18px; font-size:14px; font-weight:600; cursor:pointer; transition:filter .12s, transform .05s; }
.btn-primary { background:var(--rp-grad); color:#fff; box-shadow:0 4px 16px rgba(255,45,142,.25); }
.btn-grad { background:var(--rp-grad); color:#fff; }
.btn-secondary { background:#241f2c; color:var(--text); border:1px solid var(--line); }
.btn-primary:hover,.btn-grad:hover { filter:brightness(1.08); }
.btn-primary:active { transform:translateY(1px); }
.btn-primary:disabled,.btn-secondary:disabled,.btn-grad:disabled { opacity:.5; cursor:default; }
.rp-profile-upload { display:inline-flex; align-items:center; justify-content:center; white-space:nowrap; }
.rp-generating { position:relative; overflow:hidden; isolation:isolate; opacity:1 !important; cursor:wait !important; border:1px solid rgba(255,255,255,.32) !important; color:#fff !important; background:linear-gradient(90deg,#2a1832 0%,#ff2d8e 38%,#9be8ff 54%,#2a1832 100%) !important; background-size:260% 100% !important; box-shadow:0 0 0 2px rgba(255,45,142,.34),0 0 24px rgba(255,45,142,.68),0 0 42px rgba(155,232,255,.34) !important; animation:rp-gen-bg 1.05s linear infinite,rp-gen-pulse .85s ease-in-out infinite; }
.rp-generating::after { content:""; position:absolute; inset:0; background:linear-gradient(115deg,transparent 0 35%,rgba(255,255,255,.22) 48%,transparent 61% 100%); transform:translateX(-110%); animation:rp-gen-sweep 1.05s linear infinite; pointer-events:none; }
@keyframes rp-gen-bg { to { background-position:260% 0; } }
@keyframes rp-gen-pulse { 0%,100% { filter:brightness(1); } 50% { filter:brightness(1.32); } }
@keyframes rp-gen-sweep { to { transform:translateX(110%); } }
.rp-block { width:100%; margin-bottom:14px; }

.rp-app { max-width:860px; margin:0 auto; padding:16px 16px calc(96px + env(safe-area-inset-bottom)); }
.rp-top { display:flex; align-items:center; gap:16px; margin-bottom:18px; }
.rp-title { font-size:19px; margin:0; font-weight:800; background:var(--rp-grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.rp-subnav { position:fixed; left:50%; bottom:0; transform:translateX(-50%); z-index:1200; display:grid; grid-template-columns:repeat(5,1fr); gap:0; width:min(860px,100vw); padding:8px 10px calc(8px + env(safe-area-inset-bottom)); margin:0; background:rgba(11,9,15,.96); border-top:1px solid var(--line); box-shadow:0 -14px 38px rgba(0,0,0,.48); backdrop-filter:blur(12px); }
.rp-subtab { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; min-width:0; background:transparent; border:0; color:#7f788a; border-radius:12px; padding:5px 4px; font-size:11px; font-weight:600; cursor:pointer; }
.rp-subtab span { display:block; font-size:21px; line-height:1; }
.rp-subtab b { font-size:11px; font-weight:700; }
.rp-subtab.active { color:var(--rp-accent); background:rgba(255,45,142,.08); }
body.rp-chatting .rp-subnav { display:none; }
.rp-user-chat-fab { position:fixed; right:max(18px,calc((100vw - 860px) / 2 + 18px)); bottom:calc(78px + env(safe-area-inset-bottom)); z-index:1220; width:54px; height:54px; display:inline-flex; align-items:center; justify-content:center; border:1px solid rgba(255,255,255,.2); border-radius:50%; background:linear-gradient(135deg,#ff2d8e,#7c3aed); color:#fff; font-size:24px; cursor:pointer; box-shadow:0 12px 30px rgba(0,0,0,.45),0 0 24px rgba(255,45,142,.34); animation:rp-fab-float 2.4s ease-in-out infinite; }
.rp-user-chat-fab:hover { transform:translateY(-2px); box-shadow:0 16px 34px rgba(0,0,0,.5),0 0 30px rgba(255,45,142,.42); }
.rp-user-chat-fab[hidden],body.rp-chatting .rp-user-chat-fab { display:none; }
.rp-user-chat-fab > span { line-height:1; transform:translateY(1px); }
.rp-user-chat-fab i { position:absolute; right:-4px; top:-5px; min-width:20px; height:20px; padding:0 5px; display:inline-flex; align-items:center; justify-content:center; border:2px solid #0c0a10; border-radius:999px; background:#ff1744; color:#fff; font-style:normal; font-size:11px; font-weight:800; line-height:1; box-shadow:0 4px 12px rgba(0,0,0,.45); }
.rp-user-chat-fab i[hidden] { display:none; }
@keyframes rp-fab-float { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-7px); } }
.rp-userbox { position:relative; flex:none; }
.rp-install-btn { flex:none; border:1px solid rgba(255,45,142,.38); background:rgba(255,45,142,.10); color:#ffd7eb; border-radius:999px; padding:8px 12px; font-size:12px; font-weight:800; cursor:pointer; }
.rp-install-btn:hover { background:rgba(255,45,142,.18); }
.rp-points-pill { flex:none; display:inline-flex; align-items:center; justify-content:center; min-width:64px; height:34px; padding:0 12px; border-radius:999px; border:1px solid rgba(255,207,109,.42); background:rgba(255,176,65,.12); color:#ffd77a; font-size:13px; font-weight:900; white-space:nowrap; }
.rp-userbtn { width:38px; height:38px; border-radius:50%; overflow:hidden; padding:0; border:1px solid var(--line); background:var(--panel2); color:var(--text); cursor:pointer; font-size:18px; }
.rp-userbtn span,.rp-userbtn img { display:block; width:100%; height:100%; object-fit:cover; }
.rp-usermenu { position:absolute; right:0; top:46px; z-index:100; min-width:150px; padding:6px; background:var(--panel2); border:1px solid var(--line); border-radius:12px; box-shadow:0 12px 30px rgba(0,0,0,.45); }
.rp-usermenu button { display:block; width:100%; border:0; background:transparent; color:var(--text); text-align:left; padding:10px 12px; border-radius:8px; cursor:pointer; }
.rp-usermenu button:hover { background:#2b2534; }
.rp-h3 { font-size:16px; margin:0 0 12px; font-weight:700; }

/* 히어로 */
.rp-hero { position:relative; border-radius:20px; overflow:hidden; margin-bottom:26px; background:var(--panel); border:1px solid var(--line); min-height:235px; }
.rp-hero::after { content:""; position:absolute; inset:0; z-index:1; pointer-events:none; background:
   linear-gradient(90deg, rgba(12,10,16,.92) 0%, rgba(12,10,16,.72) 38%, rgba(12,10,16,.20) 78%, rgba(12,10,16,.34) 100%),
   radial-gradient(120% 140% at 100% 0%, rgba(255,45,142,.26), transparent 55%),
   radial-gradient(120% 120% at 0% 100%, rgba(124,40,200,.28), transparent 50%); }
.rp-hero-bg { position:absolute; inset:0; z-index:0; overflow:hidden; }
.rp-hero-slide { position:absolute; inset:0; background-size:cover; background-position:center center; opacity:0; transform:scale(1.04); animation:rp-hero-roll 15s infinite; }
.rp-hero-slide:nth-child(1) { animation-delay:0s; }
.rp-hero-slide:nth-child(2) { animation-delay:3s; }
.rp-hero-slide:nth-child(3) { animation-delay:6s; }
.rp-hero-slide:nth-child(4) { animation-delay:9s; }
.rp-hero-slide:nth-child(5) { animation-delay:12s; }
@keyframes rp-hero-roll {
  0% { opacity:0; transform:scale(1.04); }
  3% { opacity:1; }
  18% { opacity:1; }
  22% { opacity:0; transform:scale(1.08); }
  100% { opacity:0; transform:scale(1.08); }
}
.rp-hero-body { position:relative; z-index:2; padding:26px 22px; }
.rp-hero-badge { display:inline-block; font-size:11px; font-weight:700; letter-spacing:.08em; color:var(--rp-accent); background:rgba(255,45,142,.12); border:1px solid rgba(255,45,142,.3); padding:4px 10px; border-radius:999px; }
.rp-hero-h { font-size:24px; line-height:1.3; margin:14px 0 8px; font-weight:800; }
.rp-hero-p { color:var(--dim); font-size:14px; margin:0 0 18px; }
.rp-hero-cta { font-size:15px; padding:11px 22px; }

/* 홈 섹션 */
.rp-hsec { margin-bottom:26px; }
.rp-hsec-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.rp-hsec-head .rp-h3 { margin:0; }
.rp-home-board-tip { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:-2px 0 12px; padding:10px 12px; border:1px solid rgba(163,95,255,.28); border-radius:12px; background:rgba(163,95,255,.08); color:#d8d0df; font-size:12px; line-height:1.45; }
.rp-home-board-tip .btn-secondary { flex:none; padding:8px 11px; border-radius:9px; font-size:12px; white-space:nowrap; }

/* 캐릭터 카드 그리드 */
.rp-pcard-grid { display:grid; grid-auto-flow:column; grid-template-rows:repeat(2,auto); grid-auto-columns:calc((100% - 24px) / 3); gap:12px; overflow-x:auto; overflow-y:hidden; padding-bottom:2px; scrollbar-width:none; -ms-overflow-style:none; scroll-snap-type:x proximity; }
.rp-pcard-grid::-webkit-scrollbar { display:none; }
.rp-pcard { position:relative; display:flex; flex-direction:column; gap:0; text-align:left; background:var(--panel); border:1px solid var(--line); border-radius:16px; overflow:hidden; cursor:pointer; color:var(--text); padding:0; }
.rp-pcard-grid .rp-pcard { scroll-snap-align:start; }
.rp-pcard:hover { border-color:var(--rp-accent); transform:translateY(-2px); transition:.15s; }
.rp-share-mini { position:absolute; top:8px; right:8px; z-index:2; width:32px; height:32px; border:0; border-radius:50%; background:rgba(0,0,0,.56); color:#fff; font-size:15px; cursor:pointer; backdrop-filter:blur(4px); }
.rp-share-mini:hover,.rp-caro-share:hover { background:var(--rp-grad); }
.rp-pcard-av { width:100%; aspect-ratio:1; overflow:hidden; display:flex; align-items:center; justify-content:center; font-size:30px; font-weight:800; color:#fff; background:var(--rp-grad); }
.rp-pcard-info { min-width:0; display:flex; flex-direction:column; gap:2px; padding:10px 12px 12px; }
.rp-pcard-name { font-size:14px; font-weight:700; }
.rp-pcard-world { font-size:11px; color:var(--rp-accent); }
.rp-pcard-desc { font-size:11px; color:var(--dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* 최근 대화 */
.rp-recent-list { display:flex; flex-direction:column; gap:8px; }
.rp-chat-queue-line { margin:0 0 14px; padding:10px 12px; display:flex; flex-direction:column; gap:2px; border:1px solid rgba(80,210,255,.26); border-radius:12px; background:rgba(80,210,255,.08); color:#ccefff; font-size:13px; font-weight:800; line-height:1.35; text-align:center; white-space:normal; }
.rp-queue-main,.rp-queue-wait { display:block; min-width:0; white-space:nowrap; overflow:visible; text-overflow:clip; }
.rp-queue-wait { color:#e7fbff; }
.rp-recent { display:flex; align-items:center; gap:12px; background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:10px 14px; cursor:pointer; color:var(--text); text-align:left; }
.rp-recent:hover { border-color:var(--rp-accent); }
.rp-recent-av { width:72px; height:96px; aspect-ratio:3/4; border-radius:12px; flex:none; overflow:hidden; display:flex; align-items:center; justify-content:center; font-weight:700; color:#fff; background:var(--rp-grad); }
.rp-recent-info { min-width:0; flex:1; }
.rp-recent-name { font-weight:700; font-size:14px; }
.rp-recent-snip { font-size:12px; color:var(--dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-recent-loc { font-size:11px; color:var(--rp-accent); flex:none; }

/* 게시판 */
.rp-board-hero { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; margin:2px 0 18px; }
.rp-board-hero h2 { margin:0 0 8px; font-size:27px; font-weight:900; background:var(--rp-grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.rp-board-hero p { margin:0; color:#c8c0cf; font-size:14px; line-height:1.55; }
.rp-board-title-row { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:8px; }
.rp-board-title-row h2 { margin:0; }
.rp-board-mode-tabs { display:inline-flex; align-items:center; padding:3px; border:1px solid var(--line); border-radius:10px; background:#111018; }
.rp-board-mode-tabs button { border:0; border-radius:8px; background:transparent; color:#a9a1b4; padding:7px 11px; font-size:12px; font-weight:800; cursor:pointer; white-space:nowrap; }
.rp-board-mode-tabs button.active { background:rgba(255,45,142,.18); color:#fff; box-shadow:inset 0 0 0 1px rgba(255,45,142,.25); }
.rp-board-actions { display:flex; align-items:center; gap:9px; flex:none; }
.rp-board-icon { width:42px; height:42px; border-radius:50%; border:1px solid var(--line); background:#111018; color:#ddd4e4; font-size:18px; cursor:pointer; }
.rp-board-write { height:42px; padding:0 18px; border-radius:11px; white-space:nowrap; }
.rp-point-notice { margin:-6px 0 14px; border:1px solid rgba(255,207,109,.32); border-radius:12px; overflow:hidden; background:linear-gradient(180deg,rgba(255,176,65,.11),rgba(255,176,65,.055)); }
.rp-point-notice-toggle { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:9px; width:100%; border:0; background:transparent; color:#ffe3a0; padding:10px 12px; text-align:left; cursor:pointer; }
.rp-point-notice-toggle b { display:inline-flex; align-items:center; height:22px; padding:0 8px; border-radius:999px; background:rgba(255,207,109,.16); color:#ffd77a; font-size:12px; }
.rp-point-notice-toggle span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; }
.rp-point-notice-toggle em { color:#ffcf6d; font-style:normal; font-size:12px; font-weight:800; }
.rp-point-notice-body { display:grid; gap:6px; padding:0 12px 12px 12px; color:#ead8b4; font-size:12px; line-height:1.45; }
.rp-board-notices { display:grid; gap:8px; margin:-6px 0 14px; }
.rp-board-notice { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:start; gap:9px; padding:10px 12px; border:1px solid rgba(80,210,255,.26); border-radius:12px; background:rgba(80,210,255,.075); color:#cdebf7; font-size:12px; line-height:1.5; }
.rp-board-notice b { display:inline-flex; align-items:center; height:22px; padding:0 8px; border-radius:999px; background:rgba(80,210,255,.14); color:#9be8ff; font-size:12px; white-space:nowrap; }
.rp-board-notice span { min-width:0; }
.rp-board-cats { display:flex; flex-wrap:wrap; gap:8px; overflow:visible; padding:0 0 12px; margin-bottom:8px; scrollbar-width:none; -ms-overflow-style:none; }
.rp-board-cats::-webkit-scrollbar { display:none; }
.rp-board-cat { flex:0 0 auto; border:0; border-radius:999px; padding:10px 18px; background:#15131b; color:#eee8f3; font-size:14px; font-weight:800; cursor:pointer; box-shadow:inset 0 0 0 1px rgba(255,255,255,.03); }
.rp-board-cat.active { background:var(--rp-grad); color:#fff; }
.rp-board-cat.star { color:#ffbe5c; }
.rp-board-cat.star.active { color:#fff; box-shadow:0 0 18px rgba(255,185,73,.18); }
.rp-board-search { display:grid; grid-template-columns:1fr 118px; gap:10px; margin-bottom:18px; }
.rp-board-search label { display:flex; align-items:center; gap:10px; min-width:0; background:#15131b; border:1px solid var(--line); border-radius:12px; padding:0 14px; color:#807789; }
.rp-board-search input,.rp-board-search select { width:100%; height:46px; border:0; outline:0; color:var(--text); background:transparent; font-family:inherit; font-size:14px; }
.rp-board-search select { border:1px solid var(--line); border-radius:12px; padding:0 12px; background:#15131b; }
.rp-board-write-form { display:grid; gap:12px; margin:0 0 18px; padding:14px; border:1px solid var(--line); border-radius:16px; background:linear-gradient(180deg,#17141d,#111018); }
.rp-board-write-head { display:flex; align-items:center; gap:10px; }
.rp-board-write-head h3 { margin:0; font-size:17px; }
.rp-board-write-form .rp-field { margin:0; }
.rp-board-write-form input,.rp-board-write-form select,.rp-board-write-form textarea { width:100%; background:#0f0c14; border:1px solid var(--line); color:var(--text); border-radius:11px; padding:11px 12px; font-family:inherit; font-size:14px; }
.rp-board-write-form textarea { resize:vertical; min-height:150px; line-height:1.55; }
.rp-board-attach input { padding:10px; cursor:pointer; }
.rp-board-attach small { display:block; margin-top:6px; color:var(--dim); font-size:12px; line-height:1.35; }
.rp-checkline { display:flex; align-items:flex-start; gap:9px; margin:2px 0 0; color:var(--text); font-size:13px; cursor:pointer; }
.rp-checkline input { width:auto; margin-top:2px; accent-color:var(--rp-accent); }
.rp-checkline small { display:block; margin-top:2px; color:var(--dim); font-size:11px; }
.rp-board-section-head { display:flex; align-items:center; justify-content:space-between; margin:0 0 11px; }
.rp-board-section-head h3 { margin:0; font-size:18px; }
.rp-board-featured-wrap { margin-bottom:20px; }
.rp-board-featured { display:grid; grid-auto-flow:column; grid-auto-columns:132px; gap:10px; overflow-x:auto; padding-bottom:12px; scrollbar-width:none; -ms-overflow-style:none; scroll-snap-type:x proximity; }
.rp-board-featured::-webkit-scrollbar { display:none; }
.rp-board-hot { position:relative; min-height:180px; border:0; border-radius:15px; overflow:hidden; padding:0; color:#fff; background:#09070d; text-align:left; cursor:pointer; scroll-snap-align:start; }
.rp-board-hot.admin-author,.rp-board-item.admin-author,.rp-board-item-l1.admin-author,.rp-board-post.admin-author { border:2px solid #ffd84d !important; box-shadow:0 0 0 1px rgba(255,216,77,.28),0 0 18px rgba(255,216,77,.18) !important; }
.rp-board-hot-img { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; background:var(--rp-grad); font-weight:900; font-size:32px; }
.rp-board-hot-img img { width:100%; height:100%; object-fit:cover; filter:brightness(.78); }
.rp-board-hot::after { content:""; position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.88),rgba(0,0,0,.08) 64%); }
.rp-board-rank { position:absolute; top:8px; left:8px; z-index:2; width:28px; height:28px; border-radius:50%; background:linear-gradient(135deg,#ffd56a,#ff9c3d); color:#3b2100; display:flex; align-items:center; justify-content:center; font-weight:900; }
.rp-board-hot-title { position:absolute; z-index:2; left:10px; right:10px; bottom:39px; font-size:13px; font-weight:800; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-board-hot-meta { position:absolute; z-index:2; left:10px; right:10px; bottom:13px; font-size:11px; color:#d8d0df; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-board-list { display:flex; flex-direction:column; gap:10px; }
.rp-board-item { display:flex; gap:12px; align-items:center; width:100%; padding:10px; text-align:left; color:var(--text); background:linear-gradient(180deg,#17141d,#121017); border:1px solid var(--line); border-radius:15px; cursor:pointer; }
.rp-board-item.master { border-color:rgba(255,176,65,.45); box-shadow:0 0 0 1px rgba(255,176,65,.13) inset; }
.rp-board-item:hover { border-color:var(--rp-accent); }
.rp-board-thumb { width:104px; height:82px; flex:none; border-radius:12px; overflow:hidden; display:flex; align-items:center; justify-content:center; background:var(--rp-grad); color:#fff; font-weight:800; }
.rp-board-thumb img { width:100%; height:100%; object-fit:cover; }
.rp-board-item-l1 { width:100%; color:var(--text); text-align:left; }
.rp-board-item-l1.share { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:10px; padding:10px; border:1px solid var(--line); border-radius:13px; background:linear-gradient(180deg,#17141d,#121017); }
.rp-board-item-l1.share.master { border-color:rgba(255,176,65,.45); box-shadow:0 0 0 1px rgba(255,176,65,.13) inset; }
.rp-board-item-l1.share.scene { border-color:rgba(125,211,252,.34); }
.rp-board-l1-main { display:flex; align-items:center; gap:12px; min-width:0; padding:0; border:0; background:transparent; color:inherit; text-align:left; cursor:pointer; }
.rp-board-thumb-l1 { width:96px; aspect-ratio:3/4; flex:none; border-radius:10px; overflow:hidden; display:flex; align-items:center; justify-content:center; background:var(--rp-grad); color:#fff; font-weight:800; }
.rp-board-thumb-l1 img { width:100%; height:100%; object-fit:cover; }
.rp-board-import-list { flex:none; min-width:82px; padding:9px 10px; border-radius:9px; white-space:nowrap; }
.rp-board-item-l1.text { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:9px; padding:11px 12px; border:1px solid var(--line); border-radius:10px; background:#15131b; cursor:pointer; }
.rp-board-item-l1.text:hover,.rp-board-item-l1.share:hover { border-color:var(--rp-accent); }
.rp-board-item-l1.text b { min-width:0; font-size:14px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-board-item-l1.text em { color:var(--dim); font-size:11px; font-style:normal; white-space:nowrap; }
.rp-board-line-cat { flex:none; }
.rp-board-ph { width:100%; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; color:#fff; background:radial-gradient(circle at 20% 15%,rgba(255,255,255,.18),transparent 34%),linear-gradient(135deg,rgba(168,85,247,.8),rgba(236,72,153,.66)); letter-spacing:.03em; }
.rp-board-ph b { font-size:18px; line-height:1; }
.rp-board-ph small { font-size:10px; color:rgba(255,255,255,.72); font-weight:700; }
.rp-board-ph.hot b { font-size:30px; }
.rp-board-ph.bug { background:linear-gradient(135deg,rgba(255,72,72,.82),rgba(122,30,30,.72)); }
.rp-board-ph.question { background:linear-gradient(135deg,rgba(70,137,255,.82),rgba(54,45,153,.72)); }
.rp-board-ph.suggest { background:linear-gradient(135deg,rgba(39,211,151,.78),rgba(19,99,95,.72)); }
.rp-board-ph.master { background:linear-gradient(135deg,rgba(255,183,77,.85),rgba(151,74,16,.75)); }
.rp-board-ph.scene { background:linear-gradient(135deg,rgba(56,189,248,.82),rgba(30,64,175,.72)); }
.rp-board-body { min-width:0; flex:1; display:flex; flex-direction:column; gap:4px; }
.rp-board-body>span { display:flex; align-items:center; gap:7px; }
.rp-board-body time { margin-left:auto; color:var(--dim); font-size:11px; }
.rp-board-body b { font-size:15px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-board-body small,.rp-board-body em { color:var(--dim); font-size:12px; font-style:normal; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-board-more-row { display:flex; justify-content:center; padding:10px 0 2px; }
.rp-board-more-btn { width:100%; border:1px solid rgba(163,95,255,.45); border-radius:13px; background:rgba(163,95,255,.12); color:#eadcff; padding:13px 14px; font-weight:800; cursor:pointer; }
.rp-board-more-btn:disabled { opacity:.6; cursor:wait; }
.rp-board-end { text-align:center; color:var(--dim); font-size:12px; padding:10px 0 2px; }
.rp-board-inline-actions { display:flex; justify-content:flex-end; margin-top:2px; }
.rp-board-import-detail { margin:8px 0 2px; }
.rp-board-badge { display:inline-flex; align-items:center; border:1px solid rgba(163,95,255,.45); color:#c18cff; background:rgba(112,50,180,.16); border-radius:6px; padding:1px 6px; font-style:normal; font-size:11px; line-height:1.35; }
.rp-board-badge.master { border-color:rgba(255,176,65,.6); color:#ffbe5c; background:rgba(255,176,65,.12); }
.rp-board-badge.bug { border-color:rgba(255,73,130,.55); color:#ff6e9e; background:rgba(255,45,142,.1); }
.rp-board-badge.question { border-color:rgba(116,190,255,.45); color:#8fcfff; background:rgba(50,136,210,.12); }
.rp-board-badge.suggest { border-color:rgba(145,255,190,.35); color:#9ee7bd; background:rgba(35,160,94,.11); }
.rp-board-badge.scene { border-color:rgba(125,211,252,.48); color:#8bdcff; background:rgba(14,116,144,.13); }
.rp-board-secret-badge { display:inline-flex; align-items:center; margin-right:6px; padding:1px 6px; border-radius:999px; border:1px solid rgba(255,207,109,.5); color:#ffcf6d; background:rgba(255,176,65,.13); font-size:11px; font-style:normal; vertical-align:middle; }
.rp-board-detail-head { display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.rp-board-post { background:var(--panel); border:1px solid var(--line); border-radius:16px; padding:16px; }
.rp-board-post h2 { margin:0 0 8px; font-size:20px; }
.rp-board-detail-actions { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin:10px 0 14px; }
.rp-board-detail-actions .btn-secondary.on { border-color:rgba(255,45,142,.6); color:#fff; background:rgba(255,45,142,.2); }
.rp-board-content { margin-top:16px; }
.rp-board-attachment { margin:12px 0; }
.rp-board-attachment figcaption { margin-top:5px; color:var(--dim); font-size:12px; text-align:center; word-break:break-word; }
.rp-board-content img { max-width:100%; height:auto; border-radius:14px; display:block; margin:10px auto; }
.rp-board-content img.rp-board-zoomable { cursor:zoom-in; }
.rp-board-img-zoom { position:fixed; inset:0; z-index:7600; display:flex; align-items:center; justify-content:center; padding:22px; background:rgba(0,0,0,.88); }
.rp-board-img-zoom[hidden] { display:none; }
.rp-board-img-zoom img { max-width:96vw; max-height:92vh; object-fit:contain; border-radius:12px; box-shadow:0 20px 60px rgba(0,0,0,.55); background:#07050b; }
.rp-board-img-x { position:fixed; right:18px; top:18px; width:42px; height:42px; border:1px solid rgba(255,255,255,.2); border-radius:50%; background:#15131b; color:#fff; font-size:28px; line-height:1; cursor:pointer; }
.rp-board-secret-locked { margin:10px 0; padding:22px 16px; border:1px dashed rgba(255,207,109,.45); border-radius:14px; background:rgba(255,176,65,.08); color:#ffe2a0; text-align:center; font-weight:800; }
.rp-board-comments { margin-top:18px; padding-top:16px; border-top:1px solid var(--line); }
.rp-board-comments-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.rp-board-comments-head h3 { margin:0; font-size:16px; }
.rp-board-comments-head span { color:var(--rp-accent); }
.rp-board-comment-form { display:grid; grid-template-columns:1fr auto; gap:8px; margin-bottom:12px; }
.rp-board-comment-form textarea { width:100%; min-height:54px; resize:vertical; background:#0f0c14; border:1px solid var(--line); border-radius:10px; color:var(--text); padding:10px 12px; font-family:inherit; font-size:14px; }
.rp-board-comment-list { display:flex; flex-direction:column; gap:8px; }
.rp-board-comment { position:relative; padding:11px 12px; border:1px solid var(--line); border-radius:12px; background:#100d15; }
.rp-board-comment>div { display:flex; align-items:center; gap:8px; margin-bottom:5px; }
.rp-board-comment b { font-size:13px; }
.rp-board-comment time { color:var(--dim); font-size:11px; }
.rp-board-comment p { margin:0; color:#ded7e5; font-size:13px; line-height:1.55; white-space:pre-wrap; word-break:break-word; }
.rp-board-comment .rp-mini { position:absolute; right:8px; top:8px; }
.rp-user-chat { display:grid; gap:10px; }
.rp-user-chat-head { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px; border:1px solid var(--line); border-radius:12px; background:#15131b; }
.rp-user-chat-head b { font-size:14px; }
.rp-user-chat-head span { color:var(--dim); font-size:12px; white-space:nowrap; }
.rp-user-chat-log { height:min(58vh,520px); min-height:330px; overflow-y:auto; display:flex; flex-direction:column; gap:8px; padding:12px; border:1px solid var(--line); border-radius:14px; background:linear-gradient(180deg,#121017,#0d0b11); }
.rp-user-chat-empty { margin:auto; color:var(--dim); font-size:13px; text-align:center; }
.rp-user-chat-msg { max-width:86%; display:grid; gap:4px; align-self:flex-start; padding:9px 11px; border:1px solid rgba(255,255,255,.06); border-radius:12px; background:#1a1620; }
.rp-user-chat-msg.mine { align-self:flex-end; background:rgba(255,45,142,.14); border-color:rgba(255,45,142,.24); }
.rp-user-chat-msg span { display:flex; align-items:center; gap:8px; color:#cfc7d9; font-size:11px; }
.rp-user-chat-msg span time { color:var(--dim); }
.rp-user-chat-msg p { margin:0; color:#f1ebf5; font-size:14px; line-height:1.45; word-break:break-word; white-space:pre-wrap; }
.rp-user-chat-form { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; }
.rp-user-chat-form input { width:100%; height:44px; border:1px solid var(--line); border-radius:12px; background:#0f0c14; color:var(--text); padding:0 13px; font-family:inherit; font-size:14px; outline:0; }
.rp-user-chat-form input:focus { border-color:rgba(255,45,142,.55); }
.rp-user-chat-form button { min-width:78px; height:44px; white-space:nowrap; }
.rp-share-post { display:flex; flex-direction:column; gap:14px; color:var(--text); }
.rp-share-character { display:flex; gap:14px; align-items:center; padding:12px; border:1px solid rgba(255,45,142,.32); border-radius:16px; background:linear-gradient(135deg,rgba(255,45,142,.14),rgba(92,31,136,.10)); }
.rp-share-avatar { width:88px; height:112px; border-radius:14px; overflow:hidden; flex:none; display:flex; align-items:center; justify-content:center; background:var(--rp-grad); color:#fff; font-size:34px; font-weight:800; }
.rp-share-avatar img { width:100%; height:100%; object-fit:cover; }
.rp-share-charbody strong { display:block; font-size:20px; }
.rp-share-charbody p { margin:4px 0 0; color:var(--dim); }
.rp-share-section { padding:14px; border:1px solid var(--line); border-radius:14px; background:#100d15; }
.rp-share-section h3 { margin:0 0 10px; font-size:16px; }
.rp-share-section h4 { margin:12px 0 6px; color:#d7cbe0; font-size:13px; }
.rp-share-section dl { margin:0; display:grid; gap:8px; }
.rp-share-section dt { color:var(--rp-accent); font-weight:700; }
.rp-share-section dd { margin:0; color:#d7d0dc; line-height:1.6; }
.rp-share-section pre { white-space:pre-wrap; word-break:break-word; margin:0; padding:12px; border-radius:10px; background:#09070d; color:#d7d0dc; font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:12px; line-height:1.55; }
.rp-share-chatset { display:grid; gap:12px; }
.rp-share-chatset figure { margin:0; border-radius:16px; overflow:hidden; background:#07050b; }
.rp-share-chatset figure img { width:100%; display:block; }
.rp-share-user,.rp-share-ai,.rp-share-noimg { padding:12px; border-radius:12px; background:#18131f; border:1px solid var(--line); }
.rp-share-user p,.rp-share-ai p { margin:6px 0 10px; line-height:1.65; }
.rp-share-ai small { display:block; color:#c59be8; line-height:1.5; }

/* 관리 필 탭 */
.rp-pills { display:flex; gap:6px; background:var(--panel); border:1px solid var(--line); border-radius:999px; padding:5px; margin-bottom:18px; }
.rp-pill { flex:1; background:transparent; border:none; color:var(--dim); border-radius:999px; padding:9px 12px; font-size:14px; font-weight:600; cursor:pointer; }
.rp-pill.active { background:var(--rp-grad); color:#fff; }

/* 폼 */
.rp-form { background:var(--panel); border:1px solid var(--line); border-radius:16px; padding:16px; margin-bottom:16px; }
.rp-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.rp-form-grid > * { min-width:0; }
.rp-field { display:flex; flex-direction:column; gap:5px; font-size:13px; color:var(--dim); }
.rp-field.rp-wide { grid-column:1 / -1; }
.rp-field-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.rp-lock { flex:none; display:inline-flex; align-items:center; gap:4px; color:var(--dim); font-size:12px; font-weight:500; cursor:pointer; user-select:none; }
.rp-field .rp-lock input { appearance:auto; width:14px; height:14px; min-width:14px; margin:0; padding:0; background:transparent; border:0; border-radius:3px; accent-color:#ff4d97; cursor:pointer; }
.rp-field input,.rp-field textarea,.rp-field select { background:#0f0c14; border:1px solid var(--line); border-radius:9px; color:var(--text); padding:9px 11px; font-size:14px; font-family:inherit; }
.rp-field input:focus,.rp-field textarea:focus,.rp-field select:focus { outline:none; border-color:var(--rp-accent); }
.rp-field textarea { resize:vertical; }
.rp-field textarea,.rp-board-write-form textarea,.rp-board-comment-form textarea { padding-right:24px; padding-bottom:24px; }
.rp-field textarea::-webkit-resizer,.rp-board-write-form textarea::-webkit-resizer,.rp-board-comment-form textarea::-webkit-resizer { width:20px; height:20px; background:linear-gradient(135deg,transparent 0 45%,rgba(255,45,142,.45) 46% 58%,transparent 59% 66%,rgba(255,255,255,.42) 67% 78%,transparent 79%); border-radius:0 0 8px 0; }
.rp-world-combo { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; align-items:center; }
.rp-world-combo select { min-width:0; width:100%; }
.rp-world-combo .btn-secondary { height:38px; padding:0 13px; border-radius:9px; white-space:nowrap; }
.rp-form-actions { display:flex; gap:8px; align-items:center; margin-top:14px; }
.rp-form-actions button,.rp-mini { white-space:nowrap; }
.rp-form-actions-top { margin:0 0 14px; padding-bottom:14px; border-bottom:1px solid var(--line); }

/* 캐릭터 카드(관리) */
.rp-char-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px; }
.rp-card { background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:12px; }
.rp-card-top { display:flex; gap:10px; align-items:center; }
.rp-avatar { width:52px; height:52px; border-radius:13px; flex:none; overflow:hidden; display:flex; align-items:center; justify-content:center; font-size:20px; font-weight:700; color:#fff; background:var(--rp-grad); }
.rp-card-name { font-size:15px; font-weight:700; margin:0; }
.rp-card-world { font-size:12px; color:var(--rp-accent); margin:2px 0 0; }
.rp-card-meta { font-size:11px; color:var(--dim); margin:8px 0; }
.rp-card-actions { display:flex; gap:6px; }
.rp-card-start { width:100%; margin-top:10px; padding:11px 12px; font-size:15px; font-weight:800; }
.rp-mini { background:#241f2c; border:1px solid var(--line); color:var(--text); border-radius:8px; padding:5px 10px; font-size:12px; cursor:pointer; }
.rp-mini.danger { color:#ff7a9a; }

.rp-world-list { display:flex; flex-wrap:wrap; gap:8px; }
.rp-world-chip { display:inline-flex; align-items:center; gap:8px; background:#241f2c; border:1px solid var(--line); border-radius:999px; padding:7px 14px; font-size:13px; }
.rp-world-x { cursor:pointer; color:var(--dim); }

.rp-scn-list { display:flex; flex-direction:column; gap:8px; }
.rp-scn-item { display:flex; align-items:center; gap:10px; background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:11px 14px; }
.rp-scn-info { flex:1; min-width:0; }
.rp-scn-name { font-weight:700; }
.rp-scn-sub { font-size:12px; color:var(--dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-scn-actions { display:flex; gap:6px; }

/* cast 타일 */
.rp-cast-pick { display:grid; grid-template-columns:repeat(auto-fill,58px); grid-auto-rows:58px; align-content:start; gap:10px; max-height:146px; min-width:0; padding:6px 2px; overflow-x:hidden; overflow-y:auto; scrollbar-width:thin; }
.rp-cast-pick::-webkit-scrollbar { width:8px; }
.rp-cast-pick::-webkit-scrollbar-thumb { background:#3b3346; border-radius:999px; }
.rp-cast-tile { width:58px; height:58px; min-width:0; border-radius:13px; overflow:hidden; padding:0; border:2px solid var(--line); background:var(--panel); cursor:pointer; flex:0 0 auto; }
.rp-cast-tile.on { border-color:var(--rp-accent); box-shadow:0 0 0 2px rgba(255,45,142,.35); }
.rp-cast-tile .rp-cropwrap { border-radius:11px; }

/* 프로필 미리보기 + 크롭 */
.rp-prof-prev { width:64px; height:64px; border-radius:12px; overflow:hidden; border:1px solid var(--line); background:var(--panel); cursor:pointer; flex:0 0 auto; }
.rp-char-image-panel { border:1px solid rgba(255,45,142,.18); background:rgba(255,45,142,.045); border-radius:14px; padding:12px; }
.rp-char-image-panel > .rp-field-head { align-items:flex-start; flex-wrap:wrap; }
.rp-char-image-panel > .rp-field-head > span { min-width:0; }
#rp-c-genimg { flex:0 0 auto; min-width:156px; padding:8px 14px; text-align:center; }
.rp-shot-mode { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; padding:4px; border:1px solid var(--line); border-radius:12px; background:#0f0c14; margin:8px 0 10px; }
.rp-shot-mode button { min-width:0; border:0; border-radius:9px; padding:8px 10px; background:transparent; color:var(--dim); font-size:13px; font-weight:800; cursor:pointer; white-space:nowrap; }
.rp-shot-mode button.on { background:var(--rp-grad); color:#fff; box-shadow:0 6px 18px rgba(255,45,142,.22); }
.rp-char-img-scrollwrap { position:relative; }
.rp-char-img-grid { display:grid; grid-auto-flow:column; grid-auto-columns:calc((100% - 16px) / 3); grid-template-rows:1fr; gap:8px; overflow-x:auto; overflow-y:hidden; padding-bottom:4px; scrollbar-width:thin; scroll-snap-type:x proximity; }
.rp-char-img-scrollwrap.has-scroll::before,.rp-char-img-scrollwrap.has-scroll::after { content:""; position:absolute; top:0; bottom:4px; width:34px; z-index:2; pointer-events:none; }
.rp-char-img-scrollwrap.has-scroll::before { left:0; background:linear-gradient(90deg,rgba(16,13,21,.82),transparent); }
.rp-char-img-scrollwrap.has-scroll::after { right:0; background:linear-gradient(270deg,rgba(16,13,21,.82),transparent); }
.rp-char-img-scroll { position:absolute; top:50%; transform:translateY(-50%); z-index:3; width:34px; height:54px; border:1px solid rgba(255,255,255,.28); border-radius:999px; background:rgba(0,0,0,.58); color:#fff; font-size:25px; font-weight:900; cursor:pointer; box-shadow:0 8px 24px rgba(0,0,0,.42),0 0 18px rgba(255,45,142,.26); backdrop-filter:blur(4px); }
.rp-char-img-scroll.prev { left:4px; }
.rp-char-img-scroll.next { right:4px; }
.rp-char-img-scroll:hover { background:var(--rp-grad); }
.rp-char-img-card { position:relative; aspect-ratio:3/4; min-height:0; border:1px solid var(--line); border-radius:12px; overflow:hidden; background:#0f0c14; color:var(--dim); scroll-snap-align:start; }
.rp-char-img-card.empty { display:flex; align-items:center; justify-content:center; font-size:12px; }
.rp-char-img-card.selected { border-color:var(--rp-accent); box-shadow:0 0 0 2px rgba(255,45,142,.25); }
.rp-char-img-card img { display:block; width:100%; height:100%; object-fit:cover; }
.rp-char-img-card img.rp-char-img-zoomable,.rp-zoomable-avatar { cursor:zoom-in; }
.rp-char-img-actions { position:absolute; inset:auto 5px 5px 5px; display:flex; gap:4px; justify-content:center; }
.rp-char-img-actions button { flex:1; border:0; border-radius:7px; padding:5px 3px; background:rgba(0,0,0,.72); color:#fff; font-size:11px; cursor:pointer; }
.rp-char-img-actions button.danger { color:#ff9db7; }
.rp-char-img-seed { position:absolute; top:5px; left:5px; right:5px; padding:4px 6px; border-radius:7px; background:rgba(0,0,0,.62); color:#fff; font-size:10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-c-seedinfo { display:block; margin-top:8px; line-height:1.45; }
.rp-char-seed-line { color:var(--dim); font-size:12px; }
.rp-char-prompt-debug { margin-top:6px; border:1px solid rgba(255,255,255,.12); border-radius:10px; background:rgba(0,0,0,.22); overflow:hidden; }
.rp-char-prompt-debug summary { cursor:pointer; padding:8px 10px; color:#f3d7e5; font-size:12px; font-weight:800; list-style:none; }
.rp-char-prompt-debug summary::-webkit-details-marker { display:none; }
.rp-char-prompt-debug summary::before { content:"▸"; display:inline-block; margin-right:6px; color:var(--rp-accent); }
.rp-char-prompt-debug[open] summary::before { transform:rotate(90deg); }
.rp-char-prompt-row { padding:8px 10px; border-top:1px solid rgba(255,255,255,.08); }
.rp-char-prompt-row b { display:block; margin-bottom:4px; color:#fff; font-size:11px; }
.rp-char-prompt-row pre { margin:0; max-height:160px; overflow:auto; white-space:pre-wrap; word-break:break-word; color:#cfd1df; font:11px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace; }
.rp-cropwrap { position:relative; display:block; width:100%; height:100%; overflow:hidden; border-radius:inherit; }
.rp-cropwrap img { position:absolute; height:auto; display:block; }
.rp-crop-modal { position:fixed; inset:0; z-index:4000; background:rgba(0,0,0,.88); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; padding:20px; }
.rp-crop-stage { position:relative; display:inline-block; line-height:0; }
.rp-crop-img { max-height:76vh; max-width:92vw; display:block; user-select:none; -webkit-user-drag:none; }
.rp-crop-box { position:absolute; box-sizing:border-box; border:2px solid var(--rp-accent); box-shadow:0 0 0 9999px rgba(0,0,0,.6); cursor:move; touch-action:none; }
.rp-crop-handle { position:absolute; right:-9px; bottom:-9px; width:18px; height:18px; border-radius:50%; background:var(--rp-accent); border:2px solid #fff; cursor:nwse-resize; }
.rp-crop-bar { display:flex; align-items:center; gap:12px; color:var(--text); flex-wrap:wrap; justify-content:center; }
.rp-crop-tip { font-size:13px; color:var(--dim); }

/* ── 전체화면 채팅 ── */
.rp-chat-view { position:fixed; inset:0; z-index:200; background:var(--bg); display:flex; flex-direction:column; }
.rp-cv-head { display:flex; align-items:center; gap:10px; padding:10px 12px; border-bottom:1px solid var(--line); background:var(--panel); }
.rp-cv-icon { background:#241f2c; border:1px solid var(--line); color:var(--text); width:36px; height:36px; border-radius:10px; font-size:18px; cursor:pointer; flex:none; }
.rp-cv-icon.rp-edit-hint { border-color:#ffcf6d; color:#fff; background:linear-gradient(135deg,#ff2d8e,#ffcf6d); box-shadow:0 0 0 3px rgba(255,207,109,.22),0 0 24px rgba(255,45,142,.62); animation:rp-edit-hint-pulse .65s ease-in-out 4; }
@keyframes rp-edit-hint-pulse { 0%,100% { transform:scale(1); filter:brightness(1); } 50% { transform:scale(1.16); filter:brightness(1.25); } }
.rp-cv-title { flex:1; min-width:0; display:flex; flex-direction:column; }
.rp-cv-name { font-weight:800; }
.rp-cv-state { font-size:12px; line-height:1.35; color:var(--dim); white-space:normal; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.rp-cv-queue { margin-top:2px; display:flex; flex-direction:column; gap:1px; font-size:12px; line-height:1.25; color:#9be8ff; font-weight:800; white-space:normal; overflow:visible; text-overflow:clip; }
.rp-cv-sel { background:#0f0c14; border:1px solid var(--line); color:var(--text); border-radius:8px; padding:6px 8px; font-size:13px; max-width:140px; }
.rp-log { flex:1; overflow-y:auto; padding:16px; display:flex; flex-direction:column; gap:14px; }
.rp-log-empty { color:var(--dim); text-align:center; margin:auto; line-height:1.7; }
.rp-msg-user { display:flex; justify-content:flex-end; }
.rp-ub { background:var(--rp-grad); color:#fff; padding:9px 14px; border-radius:16px 16px 5px 16px; max-width:78%; box-shadow:0 3px 12px rgba(255,45,142,.2); }
.rp-msg-ai { display:flex; flex-direction:column; }
.rp-ai-card.pending { display:flex; align-items:center; gap:10px; background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:14px; color:var(--dim); }

/* 캐러셀 */
.rp-carousel { position:relative; width:min(460px,90%); background:#0a0810; border:1px solid var(--line); border-radius:18px; overflow:hidden; }
.rp-caro-stage { position:relative; width:100%; aspect-ratio:832/1216; background:#0a0810; overflow:hidden; touch-action:pan-y; }
.rp-caro-stage.dragging { cursor:grabbing; }
.rp-slide { position:absolute; inset:0; background-size:cover; background-position:top center; }
.rp-carousel.has-img .rp-slide { cursor:pointer; }
.rp-slide-empty { position:absolute; inset:0; display:flex; align-items:flex-start; justify-content:center; gap:8px; padding-top:18px; box-sizing:border-box; color:var(--dim); font-size:13px; z-index:2; pointer-events:none; }
.rp-slide-empty:not(.failed) .rp-empty-txt { background:rgba(0,0,0,.62); color:#fff; padding:7px 11px; border-radius:999px; backdrop-filter:blur(4px); box-shadow:0 8px 24px rgba(0,0,0,.24); }
.rp-slide-empty.manual { pointer-events:auto; flex-direction:column; align-items:center; justify-content:flex-start; padding-top:16px; }
.rp-slide-empty.manual .rp-empty-txt { max-width:88%; text-align:center; white-space:normal; line-height:1.45; }
.rp-manual-image { margin-top:2px; border:1px solid rgba(255,255,255,.18); border-radius:999px; background:var(--rp-grad); color:#fff; padding:9px 16px; font-size:13px; font-weight:900; cursor:pointer; box-shadow:0 8px 24px rgba(255,45,142,.28); }
.rp-manual-image:disabled { opacity:.45; filter:grayscale(.3); cursor:default; box-shadow:none; }
.rp-caro-top { position:absolute; top:10px; right:10px; display:flex; align-items:center; gap:6px; z-index:3; }
.rp-caro-add-image { flex:none; border:1px solid rgba(255,255,255,.24); border-radius:999px; background:var(--rp-grad); color:#fff; min-width:86px; height:36px; padding:0 13px; font-size:12px; font-weight:900; cursor:pointer; box-shadow:0 8px 22px rgba(255,45,142,.28); white-space:nowrap; }
.rp-caro-add-image:disabled { opacity:.62; cursor:wait; filter:saturate(.75); }
.rp-caro-btn { background:rgba(0,0,0,.5); backdrop-filter:blur(4px); border:none; color:#fff; width:36px; height:36px; border-radius:50%; font-size:16px; cursor:pointer; }
.rp-caro-btn.rp-caro-heart.on { color:#ff4d97; }
.rp-caro-info { background:rgba(0,0,0,.5); color:#fff; font-size:11px; padding:5px 9px; border-radius:999px; }
.rp-caro-nav { position:absolute; top:50%; transform:translateY(-50%); background:rgba(0,0,0,.4); border:none; color:#fff; width:36px; height:50px; font-size:22px; cursor:pointer; z-index:3; }
.rp-caro-prev { left:0; border-radius:0 10px 10px 0; }
.rp-caro-next { right:0; border-radius:10px 0 0 10px; }
.rp-caro-dots { position:absolute; bottom:14px; left:0; right:0; display:flex; justify-content:center; gap:6px; z-index:3; }
.rp-dot { width:7px; height:7px; border-radius:50%; background:rgba(255,255,255,.4); }
.rp-dot.on { background:#fff; }
.rp-dot.h { background:#ff4d97; }
.rp-ai-cap { position:relative; z-index:1; padding:14px 16px 15px; border-top:1px solid rgba(255,255,255,.08); background:linear-gradient(180deg,rgba(20,15,27,.98),rgba(8,6,12,.98)); display:flex; flex-direction:column; gap:6px; font-size:14px; line-height:1.55; overflow:visible; touch-action:auto; }
.rp-carousel.clean .rp-ai-cap { display:none; }
.rp-carousel.clean .rp-caro-top, .rp-carousel.clean .rp-caro-dots { opacity:0; pointer-events:none; }
.rp-ov-narration { color:#d8d2e0; font-style:italic; }
.rp-ov-reply b { color:#ff9ed1; }
.rp-ov-state { font-size:12px; color:#d49bff; }
.rp-admin-scene { width:min(520px,94%); overflow:visible; background:transparent; border:0; border-radius:0; }
.rp-admin-scene .rp-caro-stage { border:1px solid var(--line); border-radius:18px; overflow:hidden; background:#0a0810; }
.rp-admin-scene .rp-slide-empty { align-items:center; justify-content:center; flex-direction:column; padding:18px; pointer-events:none; text-align:center; }
.rp-admin-scene .rp-slide-empty .rp-empty-txt { max-width:82%; white-space:normal; line-height:1.45; border-radius:14px; }
.rp-admin-narr { position:absolute; left:12px; right:12px; top:auto; bottom:0; height:auto; max-height:60%; box-sizing:border-box; z-index:4; padding:12px 44px 12px 14px; overflow:hidden; border-radius:14px 14px 0 0; background:linear-gradient(180deg,rgba(6,5,10,.72),rgba(6,5,10,.46) 72%,rgba(6,5,10,.18)); color:#eee8f4; font-size:14px; line-height:1.55; text-shadow:0 2px 8px rgba(0,0,0,.75); pointer-events:auto; }
.rp-admin-narr-text { overflow:hidden; }
.rp-admin-narr-toggle { position:absolute; right:8px; top:7px; width:28px; height:24px; border:1px solid rgba(255,255,255,.2); border-radius:8px; background:rgba(0,0,0,.45); color:#fff; font-size:18px; line-height:1; cursor:pointer; }
.rp-admin-narr-doc { position:absolute; right:12px; bottom:12px; z-index:5; width:38px; height:38px; border:1px solid rgba(255,255,255,.25); border-radius:12px; background:rgba(0,0,0,.58); color:#fff; font-size:20px; cursor:pointer; backdrop-filter:blur(5px); }
.rp-admin-scene.narr-collapsed .rp-admin-narr { display:none; }
.rp-admin-reply { display:grid; gap:5px; padding:12px 4px 10px; color:#efe9f2; font-size:14px; line-height:1.55; }
.rp-admin-reply b { color:#ff9ed1; }
.rp-admin-reply span { white-space:pre-wrap; }
.rp-admin-reply.muted { color:var(--dim); }
.rp-admin-actions { position:relative; top:auto; right:auto; display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:0; padding:14px 6px; border:1px solid rgba(255,255,255,.08); border-radius:20px; background:rgba(14,12,20,.96); box-shadow:0 12px 34px rgba(0,0,0,.42); backdrop-filter:blur(10px); }
.rp-admin-action { min-width:0; width:auto; height:auto; padding:4px 2px; border:0; border-radius:12px; background:transparent; box-shadow:none; color:#f5eef8; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; font-size:25px; cursor:pointer; white-space:nowrap; }
.rp-admin-icon { display:block; width:36px; height:36px; background-repeat:no-repeat; background-position:center; background-size:contain; filter:drop-shadow(0 1px 4px rgba(0,0,0,.4)); }
.rp-admin-icon-pin { background-image:url('/roleplay/assets/scene-action-pin.png?v=20260620u'); }
.rp-admin-icon-share { background-image:url('/roleplay/assets/scene-action-share.png?v=20260620u'); }
.rp-admin-icon-download { background-image:url('/roleplay/assets/scene-action-download.png?v=20260620u'); }
.rp-admin-icon-image { background-image:url('/roleplay/assets/scene-action-image.png?v=20260620u'); }
.rp-admin-icon-delete { display:grid; place-items:center; background:rgba(255,255,255,.08); border:2px solid rgba(255,255,255,.9); border-radius:11px; color:#fff; font-size:32px; font-weight:300; line-height:1; font-style:normal; box-sizing:border-box; }
.rp-admin-icon-prune { display:grid; place-items:center; border:2px solid rgba(255,255,255,.9); border-radius:50%; color:#fff; font-size:19px; font-weight:900; line-height:1; font-style:normal; box-sizing:border-box; }
.rp-admin-action span { display:block; font-size:13px; font-weight:800; line-height:1.1; color:#e7deed; }
.rp-admin-action:hover:not(:disabled) { background:rgba(255,255,255,.07); }
.rp-admin-action.on { color:#ff4d97; }
.rp-admin-action.on .rp-admin-icon { filter:brightness(.6) sepia(1) saturate(7) hue-rotate(290deg) drop-shadow(0 0 8px rgba(255,45,142,.55)); }
.rp-admin-action.primary { color:#fff; background:rgba(255,45,142,.16); box-shadow:0 0 0 1px rgba(255,45,142,.35) inset,0 0 20px rgba(255,45,142,.2); animation:rp-admin-add-pulse 1.25s ease-in-out infinite; }
.rp-admin-action:disabled,.rp-admin-action.disabled { opacity:.42; cursor:default; }
.rp-admin-actions .rp-caro-info { display:none; }
.rp-scene-generate-card { display:grid; justify-items:center; gap:10px; text-align:center; }
.rp-scene-generate-card h2 { margin:0; font-size:18px; }
.rp-scene-generate-card p { margin:0; color:#dcd3e4; font-size:14px; font-weight:800; }
.rp-scene-generate-cancel { margin-top:4px; min-width:120px; }
@keyframes rp-admin-add-pulse { 0%,100% { filter:brightness(1); } 50% { filter:brightness(1.3); } }

/* 생성정보 */
.rp-geninfo { background:var(--panel); border:1px solid var(--line); border-radius:11px; margin-top:6px; font-size:12px; align-self:flex-end; max-width:min(460px,90%); width:min(460px,90%); }
.rp-geninfo summary { cursor:pointer; padding:8px 12px; color:var(--dim); }
.rp-gi-body { padding:0 12px 10px; display:flex; flex-direction:column; gap:8px; color:var(--text); word-break:break-word; }
.rp-gi-meta { color:var(--dim); }
.rp-gi-neg { color:#caa; }
.rp-gen-edit { display:grid; gap:8px; padding-top:8px; border-top:1px solid rgba(255,255,255,.08); }
.rp-gen-edit b { color:#fff; font-size:12px; }
.rp-gen-edit textarea { width:100%; box-sizing:border-box; min-height:112px; resize:vertical; border:1px solid var(--line); border-radius:10px; background:#0f0c14; color:var(--text); padding:9px 10px; font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:12px; line-height:1.5; outline:0; }
.rp-gen-edit textarea:focus { border-color:rgba(255,45,142,.6); }
.rp-gen-edit button { justify-self:end; min-width:170px; padding:9px 12px; font-size:12px; white-space:nowrap; }

/* 추천 칩 */
.rp-suggest { display:flex; flex-wrap:nowrap; gap:8px; padding:8px 14px; align-items:center; border-top:1px solid var(--line); min-width:0; }
.rp-sug-label { font-size:12px; color:var(--dim); }
.rp-sug-toggle { flex:none; width:27px; height:27px; border-radius:50%; border:1px solid var(--line); background:#241f2c; color:var(--text); cursor:pointer; }
.rp-sug-list { display:flex; flex:1; min-width:0; gap:8px; overflow:hidden; }
.rp-sug-list.collapsed { display:none; }
.rp-sug-chip { min-width:0; flex:1 1 0; background:#241f2c; border:1px solid var(--line); color:var(--text); border-radius:999px; padding:7px 14px; font-size:13px; cursor:pointer; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-sug-chip:hover { border-color:var(--rp-accent); }

@media (min-width:900px) {
  .rp-log { align-items:center; }
  .rp-msg-user,.rp-msg-ai,.rp-geninfo { width:min(560px,100%); }
  .rp-msg-user,.rp-msg-ai,.rp-geninfo { align-self:center; }
  .rp-geninfo { max-width:min(560px,100%); }
}

/* 입력바 */
.rp-cv-form { display:flex; gap:8px; padding:12px 14px calc(12px + env(safe-area-inset-bottom)); border-top:1px solid var(--line); background:var(--panel); }
.rp-cv-form textarea { flex:1; min-height:46px; max-height:66px; resize:none; overflow-y:auto; background:#0f0c14; border:1px solid var(--line); color:var(--text); border-radius:14px; padding:11px 16px; font-size:15px; line-height:20px; font-family:inherit; }
.rp-cv-form textarea:focus { outline:none; border-color:var(--rp-accent); }
.rp-image-skip { display:flex; align-items:flex-start; gap:9px; padding:9px 14px; border-top:1px solid rgba(255,255,255,.05); background:rgba(80,210,255,.055); color:#cdebf7; font-size:12px; line-height:1.45; cursor:pointer; }
.rp-image-skip input { flex:none; width:17px; height:17px; margin-top:1px; accent-color:var(--rp-accent); }
.rp-image-skip b { color:#fff; margin-right:4px; }
.btn-send { flex:none; width:46px; height:46px; border:none; border-radius:50%; background:var(--rp-grad); color:#fff; font-size:17px; cursor:pointer; box-shadow:0 4px 14px rgba(255,45,142,.35); }
.btn-send:disabled { opacity:.5; }

.rp-spinner { width:16px; height:16px; border:2px solid rgba(255,255,255,.25); border-top-color:#fff; border-radius:50%; display:inline-block; animation:rp-spin .8s linear infinite; }
@keyframes rp-spin { to { transform:rotate(360deg); } }

/* 토스트 */
#rp-toast-host { position:fixed; left:50%; top:50%; transform:translate(-50%,-50%); z-index:9000; display:flex; flex-direction:column; gap:8px; align-items:center; width:min(86vw,420px); pointer-events:none; }
.rp-toast { max-width:100%; background:rgba(29,25,36,.96); border:1px solid var(--line); color:var(--text); padding:13px 18px; border-radius:13px; font-size:14px; font-weight:800; line-height:1.45; text-align:center; word-break:keep-all; overflow-wrap:anywhere; box-shadow:0 18px 48px rgba(0,0,0,.62); backdrop-filter:blur(10px); transition:opacity .22s,transform .22s; }
.rp-toast.err { border-color:#ff5d86; color:#ffd6e1; box-shadow:0 18px 52px rgba(255,45,142,.24),0 18px 48px rgba(0,0,0,.62); }
.rp-toast.ok { border-color:#4fd98a; color:#d6ffe5; }
.rp-toast.out { opacity:0; transform:scale(.96); }

@media (max-width:640px) {
  .rp-form-grid { grid-template-columns:1fr; }
  .rp-carousel,.rp-geninfo { width:100%; max-width:100%; }
  .rp-hero-h { font-size:21px; }
  .rp-cv-scn { max-width:96px; }
  .rp-pcard-grid { grid-auto-columns:calc((100% - 16px) / 3); gap:8px; }
  .rp-pcard-info { padding:8px 8px 10px; }
  .rp-pcard-name { font-size:13px; }
  .rp-pcard-desc { display:none; }
  .rp-recent { gap:9px; padding:9px 10px; }
  .rp-recent-av { width:66px; height:88px; }
}

/* 최근 대화 오버플로우 방지 */
.rp-recent { overflow:hidden; }
.rp-recent-info { overflow:hidden; }
.rp-recent-name { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-recent-loc { max-width:84px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* 프로필 필드(라벨 아님 — 클릭 전파 방지) */
.rp-profile-field { cursor:default; }

/* 대화 편집/삭제 */
.rp-editbar { display:flex; align-items:center; flex-wrap:wrap; gap:10px; padding:8px 14px; background:var(--panel2); border-bottom:1px solid var(--line); }
.rp-editbar-txt { font-size:13px; color:var(--dim); }
.rp-edit-count { font-size:13px; color:var(--rp-accent); font-weight:700; }
.rp-edit-share { background:#17324b; border:1px solid #2c8ccc; color:#b9ecff; border-radius:9px; padding:7px 14px; font-size:13px; font-weight:700; cursor:pointer; }
.rp-edit-del { background:#5a1226; border:1px solid #a33; color:#ff97b0; border-radius:9px; padding:7px 14px; font-size:13px; font-weight:600; cursor:pointer; }
.rp-edit-share:disabled,.rp-edit-del:disabled { opacity:.45; cursor:default; }
.rp-cv-icon.on { background:var(--rp-grad); color:#fff; border-color:transparent; }
/* 편집 모드: 카드 선택 */
.rp-chat-view.rp-edit .rp-carousel { cursor:pointer; }
.rp-chat-view.rp-edit .rp-msg-ai,.rp-chat-view.rp-edit .rp-msg-user { position:relative; cursor:pointer; }
.rp-chat-view.rp-edit .rp-msg-ai::after,.rp-chat-view.rp-edit .rp-msg-user::after { content:"○"; position:absolute; top:8px; z-index:6; width:26px; height:26px; line-height:24px; text-align:center; border-radius:50%; background:rgba(0,0,0,.6); color:#fff; font-size:15px; pointer-events:none; }
.rp-chat-view.rp-edit .rp-msg-ai::after { left:8px; }
.rp-chat-view.rp-edit .rp-msg-user::after { right:8px; }
.rp-chat-view.rp-edit .rp-msg-ai.sel::after,.rp-chat-view.rp-edit .rp-msg-user.sel::after { content:"✓"; background:var(--rp-grad); }
.rp-chat-view.rp-edit .rp-msg-ai.sel .rp-carousel { outline:3px solid var(--rp-accent); outline-offset:-1px; }
.rp-chat-view.rp-edit .rp-msg-user.sel .rp-ub { outline:3px solid var(--rp-accent); outline-offset:2px; }

/* 이미지 재시도(먹통 복구) */
.rp-retry { margin-top:10px; background:var(--rp-grad); color:#fff; border:none; border-radius:10px; padding:8px 16px; font-size:13px; font-weight:600; cursor:pointer; }
.rp-fail-actions { display:flex; align-items:center; justify-content:center; gap:10px; flex-wrap:wrap; }
.rp-delete-current { margin-top:10px; background:#3a1722; color:#ffb4c5; border:1px solid #8b2940; border-radius:999px; padding:12px 18px; font-size:14px; font-weight:900; cursor:pointer; box-shadow:0 10px 24px rgba(0,0,0,.28); }
.rp-delete-current:hover { filter:brightness(1.12); }
.rp-slide-empty.failed { align-items:center; justify-content:center; flex-direction:column; gap:6px; padding-top:0; pointer-events:auto; }
.rp-slide-empty.failed .rp-retry { display:inline-flex; align-items:center; justify-content:center; min-width:150px; padding:13px 20px; border-radius:999px; font-size:15px; font-weight:900; box-shadow:0 0 0 3px rgba(255,45,142,.18),0 10px 28px rgba(255,45,142,.34); animation:rp-retry-pulse 1.2s infinite; }
.rp-slide-empty.failed .rp-empty-txt { max-width:78%; text-align:center; color:#ffd7e8; line-height:1.5; font-weight:700; }
@keyframes rp-retry-pulse { 0%,100% { transform:scale(1); filter:brightness(1); } 50% { transform:scale(1.035); filter:brightness(1.16); } }

/* 로그인/가입 페이지 */
.rp-auth { position:fixed; inset:0; z-index:7000; background:
   radial-gradient(120% 90% at 50% -10%, rgba(255,45,142,.22), transparent 55%), var(--bg);
   display:flex; align-items:center; justify-content:center; padding:24px; overflow-y:auto; }
.rp-auth-card { width:100%; max-width:380px; background:var(--panel); border:1px solid var(--line); border-radius:20px; padding:28px 24px; }
.rp-auth-brand { font-size:22px; font-weight:800; text-align:center; background:var(--rp-grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.rp-auth-sub { text-align:center; color:var(--dim); font-size:13px; margin:6px 0 20px; }
.rp-auth-tabs { display:flex; gap:6px; background:#0f0c14; border:1px solid var(--line); border-radius:999px; padding:5px; margin-bottom:18px; }
.rp-auth-tab { flex:1; background:transparent; border:none; color:var(--dim); border-radius:999px; padding:9px; font-size:14px; font-weight:700; cursor:pointer; }
.rp-auth-tab.active { background:var(--rp-grad); color:#fff; }
.rp-auth-form { display:flex; flex-direction:column; gap:10px; }
.rp-auth-form input[type=email],.rp-auth-form input[type=text],.rp-auth-form input[type=password],.rp-auth-form input[type=number],.rp-auth-form select {
   background:#0f0c14; border:1px solid var(--line); border-radius:11px; color:var(--text); padding:12px 14px; font-size:15px; font-family:inherit; }
.rp-auth-form input:focus { outline:none; border-color:var(--rp-accent); }
.rp-auth-hint { margin:-6px 2px 2px; color:var(--dim); font-size:11px; }
.rp-auth-guide { margin:4px 2px 2px; padding:9px 11px; border-radius:9px; background:rgba(255,45,142,.08); color:#c9c1d0; font-size:11px; line-height:1.5; }
.rp-auth-chk { display:flex; align-items:center; gap:8px; font-size:13px; color:var(--dim); cursor:pointer; }
.rp-auth-chk input { accent-color:var(--rp-accent); width:16px; height:16px; }
.rp-auth-msg { margin-top:14px; font-size:13px; text-align:center; min-height:18px; }
.rp-auth-msg.err { color:#ff8aa6; }
.rp-auth-msg.ok { color:#7be0a0; }
.rp-forgot-btn { margin-top:-4px; border:0; background:transparent; color:var(--rp-accent); font-size:13px; cursor:pointer; align-self:center; }
.rp-forgot-form { margin-top:8px; }

/* 내 정보 페이지 / 관리자 모달 */
.rp-profile-page { padding-bottom:10px; }
.rp-profile-panel { background:var(--panel); border:1px solid var(--line); border-radius:18px; padding:18px; }
.rp-page-head { margin:0 0 16px; }
.rp-page-head h2 { margin:0 0 6px; font-size:24px; font-weight:900; background:var(--rp-grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.rp-page-head p { margin:0; color:var(--dim); font-size:13px; line-height:1.55; }
.rp-modal { position:fixed; inset:0; z-index:6500; display:flex; align-items:center; justify-content:center; padding:20px; background:rgba(0,0,0,.78); }
.rp-modal-card { width:100%; max-width:480px; max-height:92vh; overflow-y:auto; background:var(--panel); border:1px solid var(--line); border-radius:18px; padding:20px; }
.rp-modal-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }
.rp-modal-head h2 { margin:0; font-size:19px; }
.rp-modal-x { border:0; background:transparent; color:var(--dim); font-size:28px; cursor:pointer; }
.rp-gift-card { max-width:430px; text-align:center; border-color:rgba(255,207,109,.36); box-shadow:0 20px 70px rgba(255,176,65,.14),0 24px 80px rgba(0,0,0,.55); }
.rp-gift-card h2 { margin:4px 0 10px; color:#ffd77a; font-size:24px; }
.rp-gift-card p { margin:0 0 16px; color:#eee1be; line-height:1.6; font-size:15px; }
.rp-gift-badge { display:inline-flex; align-items:center; justify-content:center; min-width:108px; height:44px; margin:6px 0 18px; border-radius:999px; background:rgba(255,176,65,.16); border:1px solid rgba(255,207,109,.45); color:#ffd77a; font-weight:900; font-size:20px; }
.rp-monitor-card { max-width:560px; }
.rp-monitor-tools { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:12px 0 4px; }
.rp-monitor-tools .danger { border-color:rgba(255,90,130,.72); background:rgba(255,45,90,.13); color:#ffd7e1; }
#rp-image-service-toggle.paused { border-color:rgba(255,90,130,.75); background:rgba(255,45,90,.14); color:#ffd7e1; }
.rp-ai-provider-buttons { display:grid; grid-template-columns:1fr; gap:6px; }
.rp-ai-provider-choice { min-width:0; padding-left:8px; padding-right:8px; white-space:nowrap; font-size:12px; }
.rp-ai-provider-choice.active { border-color:rgba(255,45,142,.82); background:linear-gradient(135deg,rgba(255,45,142,.26),rgba(124,58,237,.18)); color:#fff; box-shadow:0 0 0 1px rgba(255,45,142,.22),0 0 18px rgba(255,45,142,.22); }
.rp-image-service-note { margin:8px 0 4px; color:#cfc5dc; font-size:12px; line-height:1.45; }
.rp-admin-gift-box { display:flex; flex-direction:column; gap:10px; margin:10px 0 4px; padding:12px; border:1px solid rgba(255,207,109,.28); border-radius:12px; background:rgba(255,176,65,.07); }
.rp-admin-gift-box[hidden] { display:none; }
.rp-admin-gift-box .rp-field { margin:0; }
.rp-admin-gift-box input,.rp-admin-gift-box textarea { width:100%; }
.rp-admin-gift-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.rp-monitor-stop-top { margin:12px 0 0; }
#rp-signup-toggle.closed { border-color:rgba(255,90,130,.7); background:rgba(255,45,90,.13); color:#ffd7e1; }
.rp-monitor-list { display:flex; flex-direction:column; gap:8px; max-height:58vh; overflow-y:auto; margin:14px 0; padding-right:2px; }
.rp-monitor-user { display:flex; flex-direction:column; gap:5px; width:100%; border:1px solid var(--line); border-radius:12px; background:#100d15; color:var(--text); padding:11px 12px; text-align:left; cursor:pointer; }
.rp-monitor-user:hover,.rp-monitor-user.active { border-color:var(--rp-accent); background:rgba(255,45,142,.1); }
.rp-monitor-user span { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.rp-monitor-user b { font-size:14px; }
.rp-monitor-user small,.rp-monitor-user em { color:var(--dim); font-size:12px; font-style:normal; }
.rp-monitor-points { flex:none; margin-left:auto; padding:2px 7px; border:1px solid rgba(255,207,109,.38); border-radius:999px; background:rgba(255,176,65,.12); color:#ffd77a; font-size:12px; font-style:normal; font-weight:900; white-space:nowrap; }
.rp-repair-banner { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:8px; margin:0 0 12px; padding:9px 11px; border:1px solid rgba(236,72,153,.35); border-radius:12px; background:rgba(236,72,153,.1); color:var(--text); font-size:13px; }
.rp-repair-toggle { width:28px; height:28px; border:1px solid var(--line); border-radius:9px; background:#12101a; color:var(--text); cursor:pointer; }
.rp-repair-text { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.rp-repair-count { color:#f9a8d4; font-weight:700; white-space:nowrap; }
.rp-repair-detail { grid-column:1 / -1; color:var(--dim); font-size:12px; line-height:1.5; padding:3px 2px 0 36px; }
.rp-admin-queue { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:10px; margin:0 0 12px; padding:9px 11px; border:1px solid rgba(80,210,255,.28); border-radius:12px; background:linear-gradient(135deg,rgba(80,210,255,.09),rgba(255,45,142,.07)); color:var(--text); }
.rp-admin-queue-toggle { width:28px; height:28px; border:1px solid rgba(255,255,255,.16); border-radius:9px; background:#101621; color:#9be8ff; font-size:18px; line-height:1; cursor:pointer; }
.rp-admin-queue div { display:flex; align-items:center; gap:9px; min-width:0; }
.rp-admin-queue b { font-size:13px; color:#9be8ff; white-space:nowrap; }
.rp-admin-queue span { min-width:0; font-size:13px; white-space:normal; overflow:visible; text-overflow:clip; }
#rp-admin-queue-text { display:flex; flex-direction:column; gap:2px; line-height:1.35; }
.rp-admin-queue small { color:var(--dim); font-size:11px; white-space:nowrap; text-align:right; }
.rp-admin-queue.collapsed { width:max-content; margin-left:0; grid-template-columns:auto; }
.rp-admin-queue.collapsed div,.rp-admin-queue.collapsed small { display:none; }
.rp-admin-queue.collapsed .rp-admin-queue-toggle { transform:rotate(180deg); }
@media (max-width:520px) {
  .rp-admin-queue { grid-template-columns:auto minmax(0,1fr); }
  .rp-admin-queue small { grid-column:2; text-align:left; white-space:normal; line-height:1.35; }
}
.rp-invite-box { margin:10px 0 4px; padding:11px; border:1px solid rgba(255,45,142,.25); border-radius:12px; background:#100d15; font-size:13px; line-height:1.5; }
.rp-invite-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:8px; }
.rp-invite-head b { font-size:14px; }
.rp-invite-head .btn-secondary { padding:7px 11px; font-size:12px; white-space:nowrap; }
.rp-invite-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:6px; }
.rp-invite-actions .premium { border-color:rgba(255,207,109,.46); color:#ffd77a; background:rgba(255,176,65,.1); }
.rp-invite-code { display:flex; align-items:center; justify-content:space-between; gap:10px; width:100%; padding:9px 10px; margin:8px 0; border-radius:10px; background:#08070c; border:1px solid var(--line); font-family:ui-monospace,SFMono-Regular,Consolas,monospace; color:#fff; cursor:pointer; text-align:left; }
.rp-invite-code:hover { border-color:var(--rp-accent); background:#120d16; }
.rp-invite-code.copied { border-color:#57d98c; box-shadow:0 0 0 2px rgba(87,217,140,.16); }
.rp-invite-code.premium { border-color:rgba(255,207,109,.48); background:rgba(255,176,65,.08); }
.rp-invite-code b { overflow:hidden; text-overflow:ellipsis; }
.rp-invite-code i,
.rp-invite-premium { display:inline-flex; align-items:center; margin-left:6px; padding:1px 5px; border-radius:999px; border:1px solid rgba(255,207,109,.44); color:#ffd77a; background:rgba(255,176,65,.12); font-size:10px; font-style:normal; font-family:inherit; font-weight:900; letter-spacing:.04em; }
.rp-invite-code small { color:var(--dim); font-family:inherit; white-space:nowrap; }
.rp-invite-list { display:flex; flex-direction:column; gap:5px; margin-top:8px; color:var(--dim); font-size:12px; }
.rp-invite-list span { display:grid; grid-template-columns:minmax(0,1fr) auto auto auto; align-items:center; gap:8px; }
.rp-invite-list .rp-link { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:left; }
.rp-invite-list em { white-space:nowrap; }
.rp-invite-list span.used em { color:#ffb86b; }
.rp-invite-del { width:26px; height:26px; border:1px solid rgba(255,255,255,.16); border-radius:50%; background:#1d1620; color:#ff8aa6; font-size:18px; line-height:1; cursor:pointer; }
.rp-invite-del:hover { border-color:#ff8aa6; background:#2a1621; }
.rp-auth-hint.ok { color:#7be0a0; }
.rp-auth-hint.warn { color:#ffd27a; }
.rp-auth-hint.err { color:#ff8aa6; }
.rp-guide-fab { position:fixed; right:max(18px,calc((100vw - 860px) / 2 + 18px)); bottom:calc(78px + env(safe-area-inset-bottom)); z-index:1300; width:46px; height:46px; border-radius:50%; border:1px solid rgba(255,255,255,.16); background:var(--rp-grad); color:#fff; font-size:22px; font-weight:900; cursor:pointer; box-shadow:0 12px 30px rgba(255,45,142,.34); animation:rp-guide-float 2.4s ease-in-out infinite; }
@keyframes rp-guide-float { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-7px); } }
.rp-guide-layer { position:fixed; inset:0; z-index:6600; background:transparent; pointer-events:none; }
.rp-guide-close { position:fixed; right:18px; top:18px; z-index:7100; width:38px; height:38px; border:1px solid var(--line); border-radius:50%; background:#15131b; color:#fff; font-size:24px; cursor:pointer; pointer-events:auto; box-shadow:0 12px 28px rgba(0,0,0,.34); }
.rp-guide-items { position:absolute; inset:0; pointer-events:none; }
.rp-guide-tag { position:fixed; width:min(290px,calc(100vw - 16px)); min-height:42px; display:block; padding:9px 11px 10px; border:1px solid rgba(255,45,142,.42); border-radius:8px; background:rgba(18,14,24,.94); color:#efe9f2; box-shadow:0 12px 30px rgba(0,0,0,.42),0 0 0 1px rgba(255,255,255,.04) inset; font-size:12px; line-height:1.45; text-align:left; cursor:pointer; pointer-events:auto; }
.rp-guide-tag b { display:block; margin-bottom:3px; color:#ff9ccc; font-size:13px; }
.rp-guide-tag span { display:block; max-height:72px; overflow:hidden; }
.rp-guide-tag.front { border-color:#ff8ec8; background:#17111f; box-shadow:0 18px 42px rgba(0,0,0,.56),0 0 0 2px rgba(255,45,142,.18); }
.rp-guide-tag.front span { max-height:160px; overflow:auto; }
.rp-guide-tag::before { content:""; position:absolute; top:15px; width:8px; height:8px; background:inherit; border:inherit; transform:rotate(45deg); }
.rp-guide-tag.right::before { left:-5px; border-top:0; border-right:0; }
.rp-guide-tag.left::before { right:-5px; border-bottom:0; border-left:0; }
@media (max-width:520px) {
  .rp-home-board-tip { align-items:stretch; flex-direction:column; }
  .rp-home-board-tip .btn-secondary { width:100%; }
  .rp-board-item-l1.share { grid-template-columns:1fr; align-items:stretch; }
  .rp-board-import-list { width:100%; }
  .rp-board-item-l1.text { grid-template-columns:auto minmax(0,1fr); }
  .rp-board-item-l1.text em { grid-column:2; overflow:hidden; text-overflow:ellipsis; }
}
.rp-guide-card { position:fixed; z-index:1; width:min(250px,calc(100vw - 28px)); padding:11px 13px; border:1px solid rgba(255,45,142,.35); border-radius:12px; background:#15111b; color:#efe9f2; box-shadow:0 16px 38px rgba(0,0,0,.48); font-size:12px; line-height:1.45; pointer-events:auto; }
.rp-guide-card b { display:block; margin-bottom:3px; color:#ff9ccc; font-size:13px; }
.rp-guide-card::after { content:""; position:absolute; width:38px; height:2px; background:#ff70b6; box-shadow:0 0 12px rgba(255,45,142,.8); transform-origin:left center; }
.rp-guide-card.left::after { left:100%; top:20px; }
.rp-guide-card.right::after { right:100%; top:20px; }
.rp-guide-card.down::after { left:24px; top:100%; width:2px; height:34px; }
.rp-account-summary { display:flex; align-items:center; gap:12px; padding:12px; margin-bottom:16px; background:#0f0c14; border-radius:13px; }
.rp-account-avatar { width:56px; height:56px; border-radius:50%; overflow:hidden; display:flex; align-items:center; justify-content:center; background:var(--rp-grad); font-size:24px; }
.rp-account-avatar img { width:100%; height:100%; object-fit:cover; }
.rp-account-summary small { display:block; margin-top:3px; color:var(--dim); }
.rp-profile-form { display:flex; flex-direction:column; gap:10px; }
.rp-profile-form>input,.rp-profile-form input[type=password] { background:#0f0c14; border:1px solid var(--line); border-radius:10px; color:var(--text); padding:11px 13px; font-size:14px; }
.rp-profile-ai { display:flex; flex-direction:column; gap:9px; padding:12px; border:1px solid var(--line); border-radius:14px; background:#100d15; }
.rp-profile-ai-head { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.rp-profile-ai-head .btn-secondary { margin:0; }
.rp-profile-ai-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:8px; }
.rp-profile-ai-card { min-width:0; display:flex; flex-direction:column; gap:6px; padding:6px; border:1px solid var(--line); border-radius:12px; background:var(--panel); }
.rp-profile-ai-card.selected { border-color:var(--rp-accent); box-shadow:0 0 0 2px rgba(255,45,142,.22); }
.rp-profile-ai-card.empty { opacity:.45; }
.rp-profile-ai-img { width:100%; aspect-ratio:1; border-radius:10px; overflow:hidden; display:flex; align-items:center; justify-content:center; background:#09070d; color:var(--dim); font-size:20px; }
.rp-profile-ai-img img { width:100%; height:100%; object-fit:cover; }
.rp-account-avatar img,.rp-profile-ai-img img,.rp-share-avatar img { cursor:zoom-in; }
.rp-profile-ai-meta { min-height:16px; font-size:10px; color:var(--dim); text-align:center; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-profile-ai-meta b { color:var(--rp-accent); }
.rp-profile-ai-actions { display:flex; flex-direction:column; gap:4px; }
.rp-profile-ai-actions .rp-mini { width:100%; padding:5px 4px; font-size:11px; }
.rp-profile-section { margin-top:18px; padding-top:18px; border-top:1px solid var(--line); }
.rp-profile-section h3 { margin:0 0 10px; font-size:15px; }
.rp-danger-zone p { color:var(--dim); font-size:12px; }
.rp-danger-btn { border:1px solid #8b2940; background:#491423; color:#ff9ab1; border-radius:10px; padding:9px 14px; cursor:pointer; }

@media (max-width:640px) {
  .rp-title { font-size:16px; }
  .rp-subnav { gap:0; padding-left:6px; padding-right:6px; }
  .rp-subtab { padding:5px 2px; }
  .rp-subtab span { font-size:20px; }
  .rp-subtab b { font-size:10px; }
  .rp-board-hero { align-items:flex-start; }
  .rp-board-hero h2 { font-size:25px; }
  .rp-board-hero p { font-size:13px; }
  .rp-board-actions { gap:7px; }
  .rp-board-icon { width:39px; height:39px; }
  .rp-board-write { height:39px; padding:0 12px; font-size:13px; }
  .rp-board-cat { padding:9px 18px; }
  .rp-board-search { grid-template-columns:1fr 104px; gap:8px; }
  .rp-board-featured { grid-auto-columns:124px; }
  .rp-board-hot { min-height:170px; }
  .rp-board-thumb { width:94px; height:78px; }
  .rp-board-comment-form { grid-template-columns:1fr; }
  .rp-board-comment .rp-mini { position:static; margin-top:8px; }
  .rp-form-actions-top { position:sticky; top:0; z-index:5; background:var(--panel); }
  .rp-sug-label { display:none; }
  .rp-profile-ai-grid { gap:5px; }
  .rp-profile-ai-card { padding:4px; border-radius:10px; }
  .rp-profile-ai-actions .rp-mini { font-size:10px; padding:4px 2px; }
  .rp-profile-ai-meta { font-size:9px; }
}

@media (min-width:1024px) {
  .rp-app { max-width:1080px; padding-left:24px; padding-right:24px; }
  .rp-subnav { width:min(1080px,100vw); }
  .rp-top { gap:18px; }
  .rp-hero { min-height:280px; }
  .rp-hero-body { padding:34px 30px; }
  .rp-hero-h { font-size:32px; }
  .rp-form-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .rp-field.rp-wide { grid-column:1 / -1; }
  .rp-char-grid { grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); }
  .rp-board-featured { grid-auto-columns:168px; }
  .rp-board-hot { min-height:220px; }
  .rp-board-thumb { width:132px; height:104px; }
  .rp-board-post { padding:22px; }
}
